diff --git a/source/app/controllers/main.py b/source/app/controllers/main.py
index 1003d85..738f551 100644
--- a/source/app/controllers/main.py
+++ b/source/app/controllers/main.py
@@ -514,3 +514,16 @@ class AppDocumentos(object):
'attachment; filename={}'.format(file_name))
resp.content_type = content_type
resp.status = falcon.HTTP_200
+
+
+# ~ Revisado
+class AppInvoicePay(object):
+
+ def __init__(self, db):
+ self._db = db
+
+ def on_get(self, req, resp):
+ values = req.params
+ req.context['result'] = self._db.get_invoicepay(values)
+ resp.status = falcon.HTTP_200
+
diff --git a/source/app/main.py b/source/app/main.py
index b43ff83..2edf61a 100644
--- a/source/app/main.py
+++ b/source/app/main.py
@@ -16,7 +16,8 @@ from controllers.main import (AppEmpresas,
AppLogin, AppLogout, AppAdmin, AppEmisor, AppConfig,
AppMain, AppValues, AppPartners, AppProducts, AppInvoices, AppFolios,
AppDocumentos, AppFiles, AppPreInvoices, AppCuentasBanco,
- AppMovimientosBanco, AppTickets, AppStudents, AppEmployees, AppNomina
+ AppMovimientosBanco, AppTickets, AppStudents, AppEmployees, AppNomina,
+ AppInvoicePay
)
@@ -55,6 +56,7 @@ api.add_route('/movbanco', AppMovimientosBanco(db))
api.add_route('/students', AppStudents(db))
api.add_route('/employees', AppEmployees(db))
api.add_route('/nomina', AppNomina(db))
+api.add_route('/cfdipay', AppInvoicePay(db))
# ~ Activa si usas waitress y NO estas usando servidor web
diff --git a/source/app/models/db.py b/source/app/models/db.py
index 41ff929..c45a566 100644
--- a/source/app/models/db.py
+++ b/source/app/models/db.py
@@ -412,3 +412,7 @@ class StorageEngine(object):
def importar_bdfl(self):
return main.importar_bdfl()
+
+ # ~ Revisado
+ def get_invoicepay(self, values):
+ return main.FacturasPagos.get_values(values)
diff --git a/source/app/models/main.py b/source/app/models/main.py
index 8c72e33..7ef098a 100644
--- a/source/app/models/main.py
+++ b/source/app/models/main.py
@@ -5222,6 +5222,37 @@ class FacturasPagos(BaseModel):
cls._actualizar_saldo_cliente(cls, fac.cliente, importe * -1)
return
+ def _get_related(self, values):
+ id = int(values['id'])
+ filters = (FacturasPagos.movimiento==id)
+
+ rows = tuple(FacturasPagos
+ .select(
+ Facturas.id,
+ Facturas.serie,
+ Facturas.folio,
+ Facturas.uuid,
+ Facturas.fecha,
+ Facturas.tipo_comprobante,
+ Facturas.estatus,
+ Socios.nombre.alias('cliente'),
+ Facturas.total,
+ FacturasPagos.saldo,
+ FacturasPagos.importe,
+ )
+ .join(Facturas).switch(FacturasPagos)
+ .join(Socios, on=(Facturas.cliente==Socios.id))
+ .where(filters)
+ .dicts()
+ )
+
+ return {'ok': True, 'rows': rows}
+
+ @classmethod
+ def get_values(cls, values):
+ opt = values.pop('opt')
+ return getattr(cls, '_get_{}'.format(opt))(cls, values)
+
class PreFacturasImpuestos(BaseModel):
factura = ForeignKeyField(PreFacturas)
diff --git a/source/static/js/controller/bancos.js b/source/static/js/controller/bancos.js
index 21ca59a..8f9bfc5 100644
--- a/source/static/js/controller/bancos.js
+++ b/source/static/js/controller/bancos.js
@@ -695,6 +695,8 @@ function filter_cuenta_dates_change(range){
function set_data_pay(row){
var form = $$('form_banco_pagos')
var dt = row.fecha.split(' ')
+ var grid = $$('grid_pay_related')
+ grid.clearAll()
set_way_payment('pay_way_payment')
var wp = table_waypayment.findOne({'value': row.way_payment})
@@ -708,6 +710,20 @@ function set_data_pay(row){
pay_import: row.deposito,
pay_description: row.descripcion
})
+
+ webix.ajax().get('/cfdipay', {'opt': 'related', 'id': row.id}, {
+ error:function(text, data, XmlHttpRequest){
+ msg = 'Ocurrio un error, consulta a soporte técnico'
+ msg_error(msg)
+ },
+ success:function(text, data, XmlHttpRequest){
+ var values = data.json()
+ if(values.ok){
+ grid.parse(values.rows, 'json')
+ }
+ }
+ })
+
}
diff --git a/source/static/js/ui/bancos.js b/source/static/js/ui/bancos.js
index 5d778b5..5247687 100644
--- a/source/static/js/ui/bancos.js
+++ b/source/static/js/ui/bancos.js
@@ -140,7 +140,7 @@ var grid_cfdi_pago_cols = [
]
-var grid_pago_relacionadas_cols = [
+var grid_pay_related_cols = [
{id: 'index', header: '#', adjust: 'data', css: 'right'},
{id: 'id', header: 'ID', hidden: true},
{id: 'serie', header: 'Serie', adjust: 'data'},
@@ -153,9 +153,11 @@ var grid_pago_relacionadas_cols = [
{id: 'total', header: ['Total'], width: 125, sort: 'int',
format: webix.i18n.priceFormat, css: 'right'},
{id: 'saldo', header: ['Saldo'], width: 125, sort: 'int',
- format: webix.i18n.priceFormat, css: 'right'},
+ format: webix.i18n.priceFormat, css: 'right', css: 'right',
+ footer: 'Importe Depósito'},
{id: 'importe', header: ['Este pago'], width: 125, sort: 'int',
- format: webix.i18n.priceFormat, css: 'right', editor: 'text'},
+ format: webix.i18n.priceFormat, css: 'right',
+ footer: {content: 'summColumn', css: 'right'}},
]
@@ -223,16 +225,17 @@ var grid_cfdi_pago = {
}
-var grid_pago_relacionadas = {
+var grid_pay_related = {
view: 'datatable',
- id: 'grid_pago_relacionadas',
+ id: 'grid_pay_related',
select: 'row',
autoConfig: false,
adjust: true,
autoheight: true,
resizeColumn: true,
headermenu: true,
- columns: grid_pago_relacionadas_cols,
+ footer: true,
+ columns: grid_pay_related_cols,
on:{
'data->onStoreUpdated':function(){
this.data.each(function(obj, i){
@@ -362,7 +365,7 @@ var controls_banco_pagos = [
label: 'Referencia', labelAlign: 'right', readonly: true},
]},
{cols: [
- {view: 'richselect', id: 'pay_way_payment', readonly: false,
+ {view: 'richselect', id: 'pay_way_payment', readonly: true,
name: 'pay_way_payment', label: 'Forma de Pago', required: true,
options: [], labelWidth: 125, labelAlign: 'right'},
{view: 'currency', type: 'text', id: 'pay_import', name: 'pay_import',
@@ -377,7 +380,7 @@ var controls_banco_pagos = [
{view: 'label', label: 'Facturas de pago de este depósito: '},
grid_cfdi_pago,
{view: 'label', label: 'Facturas relacionadas en este pago: '},
- grid_pago_relacionadas
+ grid_pay_related
]