From d795069b38f3563092783687e8e689cdcffeba57 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 28 Sep 2018 02:17:17 -0500 Subject: [PATCH] Mejoras #280 #288 --- docs/empresalibre/docs/img/error.png | Bin 0 -> 712 bytes docs/empresalibre/docs/img/notice.png | Bin 0 -> 476 bytes docs/empresalibre/docs/img/success.png | Bin 0 -> 704 bytes docs/empresalibre/docs/img/warning.png | Bin 0 -> 483 bytes source/app/controllers/util.py | 6 +- source/app/models/main.py | 91 ++++++++++++++++----- source/static/js/controller/bancos.js | 104 ++++++++++++++++++++--- source/static/js/controller/util.js | 14 +++- source/static/js/ui/bancos.js | 109 ++++++++++++++++++++++++- source/static/js/ui/partners.js | 5 ++ 10 files changed, 290 insertions(+), 39 deletions(-) create mode 100644 docs/empresalibre/docs/img/error.png create mode 100644 docs/empresalibre/docs/img/notice.png create mode 100644 docs/empresalibre/docs/img/success.png create mode 100644 docs/empresalibre/docs/img/warning.png diff --git a/docs/empresalibre/docs/img/error.png b/docs/empresalibre/docs/img/error.png new file mode 100644 index 0000000000000000000000000000000000000000..a9dd94184f2c3c754020366d8d5fa6dee5ea7319 GIT binary patch literal 712 zcmV;(0yq7MP)cmsS?wo4lcYIkX2Dcyy(gr(!z))qnE_>z+|`^|pe%+A?E5D`uS<~R{0gyT4v z0EW3|v|8&ZRe6v|@Ic6nK{L);6-EAAaHNBu6^!3dTQgPGKV&goz5;~h3JFbveSwF} zo7XZV75}+d{6kS=CQYf0#&DMh`|I?_Ck%MLs8jy63maVs7tN+Uxk28Sn0pRiM2HBB8w6JrE*aWP+Y zZDJfw*H%NNr3Tg>P5>Pu%`JdQ?|@-8bNet`>Of!XgS~#qe>=PCb=5(&sOe!in*rZ3IU@BMR`PJ-Vj@Qc(lL?V;`0000bIzyoa218B+vYtI8}%>;4T1%2%TWW(?E`@hxe1$*fMUAY8x-xPo31aH+*k1$W~DX2%0=)aByR0a>v`qx#|A&cNIB z09C63WyS<>*8yO?=j7D|eCrm4?o_DtLXg|z;LzRL%rb=227vMbT(;`x*}>raHJkZU zpy&c)#6gSF@Av-&cH!pZ)G>U==;hZCVzX18|!UgwoR0(?lR&`$L8MdcVSiGAbR4va7Ys6)pdYK*^2lL?024*cH7T) zDtcWOUr?uM_Z9@(5t%0bgpeBLQjQ~P?6$6#1{$`#M;)&Z z0|X`@L=mnxas|ZI(*J-!8;YutT&63NP9>7@=7#2|tk1CYBg^Y6gA2vQiMy{XB% z3by3dhL+KDeP^>Olo+!abX(tAYfN`^HzwPY9dGB}jaE&6-VX_FZs=?XMRI3)2eNj} zis`xzN@*R>dLDzBPV8j*L^eXgIqB>KFfrV-zdKEJ8Z!(7rfJr3w|m6jHg$O13t_QT zJeihGFyM5eDG{$$tFSD~M^>@+dkr_ESI|~&LZMK=wU@UrJ2wkXd0aZdfCCDYsO!4; ze0~aAS;NY&6{JWPPPHG0s;U@Ueu@{RS8zfOs7<5N2?l_<3^xv5#>~tNrVfqcXrdnv z`|tVk>(YBXD2@R!_%N0E&Q5?MR!hb@9r<<#ilQJK4&zbpeT3C87HdCodwB%BnS1{N zJ~pwabb=LpTwB*FN?gIKeY!HwYi?dT^(T>w zNv2u&`&`RKvQ6norZKLlYE&+{8;sfuwTeA&EOAHV(W-c-knB3jeh4qIFZ9jEu*dGp mq>u@;D8-;c_IjQF2`~VU=ra3;9NQxR0000d@1Dh0^Abt>J0}4S=#35+0g@P6V3!7jm2o@Ip1A-Qo60Jil1dI3w z1kwpAnpz7J5HwZTML}g}-@S4e!WK>u*b9d_oOABs-C}~fGtPvMkMl~y%ud$AUf+2__O`bBi z|6gEgj@hfu@;&(S6pDTR4w4`)4SC8aJ1Q7Gee>ATEn;s2{(OVx6u*8Kg19t!D5LDb zDY1Nd>Q1&h-S)yX^xs2c0_rVZKiCt*rO87XWwoQ-=;jbxo2Rc|gS~agCLwD 0: - msg = 'El movimiento tiene Factura de Pago, no se puede cancelar' - return {'ok': False, 'msg': msg} + # ~ filters = (CfdiPagos.movimiento==obj) + # ~ cp = CfdiPagos.select().where(filters).count() + # ~ if cp > 0: + # ~ msg = 'El movimiento tiene Factura de Pago, no se puede cancelar' + # ~ return {'ok': False, 'msg': msg} with database_proxy.transaction(): obj.cancelado = True @@ -2481,6 +2485,7 @@ class Socios(BaseModel): auto_round=True) web = TextField(default='') correo_facturas = TextField(default='') + correo_facturasp = TextField(default='') forma_pago = ForeignKeyField(SATFormaPago, null=True) condicion_pago = ForeignKeyField(CondicionesPago, null=True) addenda = ForeignKeyField(Addendas, null=True) @@ -2525,6 +2530,7 @@ class Socios(BaseModel): 'correo_facturas', 'plantilla', 'id_fiscal') for name in ft: fields[name] = values.get(name, '') + fields['correo_facturasp'] = values.pop('partner_email_fp', '') if fields['pais'] != 'México': fields['pais'] = fields['pais'].upper() @@ -2543,6 +2549,7 @@ class Socios(BaseModel): row['condicion_pago'] = \ str(CondicionesPago.get(id=row['condicion_pago'])) row['partner_balance'] = row.pop('saldo_cliente') + row['partner_email_fp'] = row.pop('correo_facturasp') return row #~ return {'data': data['rows'][:100], 'pos':0, 'total_count': 1300} @@ -5680,7 +5687,8 @@ class CfdiPagos(BaseModel): impuestos = {} mov = invoice.movimiento - currency = mov.cuenta.moneda.key + # ~ currency = mov.cuenta.moneda.key + currency = mov.moneda related_docs = self._get_related_xml(self, invoice.movimiento, currency) pagos = { 'FechaPago': mov.fecha.isoformat()[:19], @@ -5709,6 +5717,7 @@ class CfdiPagos(BaseModel): def _stamp(self, values): id_mov = int(values['id_mov']) + send_email = util.get_bool(Configuracion.get_('correo_directo')) auth = Emisor.get_auth() filters = ( (CfdiPagos.movimiento==id_mov) & @@ -5742,7 +5751,8 @@ class CfdiPagos(BaseModel): 'row': row, } if result['ok']: - self._sync(self, obj.id) + self._sync(self, obj.id, send_email) + return result def _get_related(self, values): @@ -5833,9 +5843,10 @@ class CfdiPagos(BaseModel): return doc, name @util.run_in_thread - def _sync(self, id): - CfdiPagos.get_file_xml(id) - CfdiPagos.get_file_pdf(id) + def _sync(self, id, send_email=False): + files = (CfdiPagos.get_file_xml(id), CfdiPagos.get_file_pdf(id)) + if send_email: + self._send(self, {'id': id}, files) return @util.run_in_thread @@ -5848,7 +5859,45 @@ class CfdiPagos(BaseModel): opt = values.pop('opt') return getattr(cls, '_get_{}'.format(opt))(cls, values) - def _send(self, values): + def _get_table(self, values): + # ~ print('\n\n', values, '\n') + if 'start' in values: + filters = CfdiPagos.fecha.between( + util.get_date(values['start']), + util.get_date(values['end'], True)) + else: + if values['year'] == '-1': + fy = (CfdiPagos.fecha.year > 0) + else: + fy = (CfdiPagos.fecha.year == int(values['year'])) + if values['month'] == '-1': + fm = (CfdiPagos.fecha.month > 0) + else: + fm = (CfdiPagos.fecha.month == int(values['month'])) + filters = (fy & fm) + + rows = tuple(CfdiPagos.select( + CfdiPagos.id, + CfdiPagos.serie, + CfdiPagos.folio, + CfdiPagos.uuid, + CfdiPagos.fecha, + CfdiPagos.tipo_comprobante, + CfdiPagos.estatus, + case(MovimientosBanco.cancelado, ( + (True, 'Cancelado'), + (False, 'Activo'), + )).alias('movimiento'), + MovimientosBanco.deposito.alias('total'), + MovimientosBanco.moneda.alias('currency'), + (MovimientosBanco.deposito * MovimientosBanco.tipo_cambio).alias('total_mn'), + Socios.nombre.alias('cliente')) + .join(MovimientosBanco).switch(CfdiPagos) + .join(Socios).switch(CfdiPagos) + .where(filters).dicts()) + return {'ok': True, 'rows': rows} + + def _send(self, values, files=()): id = int(values['id']) values = Configuracion.get_({'fields': 'correo'}) @@ -5861,12 +5910,13 @@ class CfdiPagos(BaseModel): msg = 'La factura no esta timbrada' return {'ok': False, 'msg': msg} - to = obj.socio.correo_facturas + to = obj.socio.correo_facturasp or obj.socio.correo_facturas if not to: msg = 'El cliente no tiene configurado el correo para facturas' return {'ok': False, 'msg': msg} - files = (self.get_file_pdf(id), self.get_file_xml(id)) + if not files: + files = (self.get_file_pdf(id), self.get_file_xml(id)) fields = util.make_fields(obj.xml) server = { @@ -8142,12 +8192,15 @@ def _migrate_tables(rfc=''): if not 'id_fiscal' in columns: id_fiscal = TextField(default='') migrations.append( - migrator.add_column( - 'socios', 'id_fiscal', id_fiscal)) + migrator.add_column('socios', 'id_fiscal', id_fiscal)) if not 'plantilla' in columns: plantilla = TextField(default='') migrations.append( migrator.add_column('socios', 'plantilla', plantilla)) + if not 'correo_facturasp' in columns: + correo_facturasp = TextField(default='') + migrations.append( + migrator.add_column('socios', 'correo_facturasp', correo_facturasp)) columns = [c.name for c in database_proxy.get_columns('folios')] if not 'plantilla' in columns: diff --git a/source/static/js/controller/bancos.js b/source/static/js/controller/bancos.js index 6c490aa..1506565 100644 --- a/source/static/js/controller/bancos.js +++ b/source/static/js/controller/bancos.js @@ -25,6 +25,7 @@ function init_config_bank(){ var multi_currency = get_config('multi_currency') var g1 = $$('grid_cfdi_por_pagar') var g2 = $$('grid_cfdi_este_deposito') + var g3 = $$('grid_bank_invoice_pay') if(multi_currency){ g1.showColumn('total') @@ -33,9 +34,11 @@ function init_config_bank(){ g2.showColumn('currency') g2.showColumn('this_pay') g2.showColumn('type_change') + g3.showColumn('total') + g3.showColumn('currency') } show('cmd_complemento_pago', get_config('used_cfdi_pays')) - //~ show('cmd_show_invoice_pay', get_config('used_cfdi_pays')) + show('cmd_show_invoice_pay', get_config('used_cfdi_pays')) set_year_month() } @@ -52,6 +55,7 @@ var bancos_controllers = { $$('cmd_invoice_payed').attachEvent('onItemClick', cmd_invoice_payed_click) $$('txt_retiro_importe').attachEvent('onChange', txt_retiro_importe_change) $$('txt_deposito_importe').attachEvent('onChange', txt_deposito_importe_change) + $$('deposit_type_change').attachEvent('onChange', deposit_type_change_change) $$('grid_cfdi_este_deposito').attachEvent('onAfterDrop', grid_cfdi_este_deposito_after_drop) $$('grid_cfdi_por_pagar').attachEvent('onAfterDrop', grid_cfdi_por_pagar_after_drop) $$('grid_cfdi_este_deposito').attachEvent('onBeforeEditStop', grid_cfdi_este_deposito_before_edit_stop) @@ -66,6 +70,10 @@ var bancos_controllers = { $$('grid_cfdi_pay').attachEvent('onItemClick', grid_cfdi_pay_click) $$('grid_cfdi_por_pagar').attachEvent('onItemDblClick', grid_cfdi_por_pagar_double_click) $$('grid_cfdi_este_deposito').attachEvent('onItemDblClick', grid_cfdi_este_deposito_double_click) + $$('cmd_show_invoice_pay').attachEvent('onItemClick', cmd_show_invoice_pay_click) + $$('filter_invoice_pay_year').attachEvent('onChange', filter_invoice_pay_change) + $$('filter_invoice_pay_month').attachEvent('onChange', filter_invoice_pay_change) + $$('grid_bank_invoice_pay').attachEvent('onItemClick', grid_bank_invoice_pay_click) init_config_bank() } @@ -75,6 +83,7 @@ var bancos_controllers = { function set_year_month(){ var d = new Date() var y = $$('filter_cuenta_year') + var y2 = $$('filter_invoice_pay_year') var m = $$('filter_cuenta_month') webix.ajax().get('/values/cuentayears', { @@ -85,6 +94,7 @@ function set_year_month(){ success:function(text, data, XmlHttpRequest){ var values = data.json() y.getList().parse(values) + y2.getList().parse(values) y.blockEvent() m.blockEvent() y.setValue(d.getFullYear()) @@ -378,14 +388,22 @@ function cmd_guardar_retiro_click(){ function txt_retiro_importe_change(new_value, old_value){ - if(!isFinite(new_value)){ + if(!isFinite(new_value) || !new_value){ this.config.value = old_value this.refresh() } } function txt_deposito_importe_change(new_value, old_value){ - if(!isFinite(new_value)){ + if(!isFinite(new_value) || !new_value){ + this.config.value = old_value + this.refresh() + } +} + + +function deposit_type_change_change(new_value, old_value){ + if(!isFinite(new_value) || !new_value){ this.config.value = old_value this.refresh() } @@ -525,7 +543,7 @@ function grid_cfdi_este_deposito_before_edit_stop(state, editor){ function validate_deposito(values){ var grid = $$('grid_cfdi_este_deposito') var importe = values.deposito_importe.to_float() - var type_change = values.deposit_type_change.to_float() + var type_change = values.deposit_type_change.to_float4() var msg_tc = '' if(!importe){ @@ -642,7 +660,7 @@ function guardar_deposito(values){ data['numero_operacion'] = values.deposito_referencia.trim() data['forma_pago'] = $$('lst_deposito_forma_pago').getValue() data['deposito'] = values.deposito_importe.to_float() - data['tipo_cambio'] = values.deposit_type_change.to_float() + data['tipo_cambio'] = values.deposit_type_change.to_float4() data['retiro'] = 0.0 data['descripcion'] = values.deposito_descripcion @@ -768,8 +786,9 @@ function cmd_cancelar_movimiento_click(){ return } - var msg = '¿Estás seguro de cancelar el movimiento seleccionado?' - msg += '

ESTA ACCIÓN NO SE PUEDE DESHACER

' + var msg = '¿Estás seguro de cancelar el movimiento seleccionado?

' + msg += 'SI EL MOVIMIENTO TIENE FACTURA DE PAGO, QUEDARÁ HUERFANA

' + msg += 'ESTA ACCIÓN NO SE PUEDE DESHACER

' webix.confirm({ title: 'Cancelar Movimiento', ok: 'Si', @@ -841,6 +860,11 @@ function filter_cuenta_change(){ } +function filter_invoice_pay_change(){ + get_invoices_pay() +} + + function filter_cuenta_dates_change(range){ if(range.start != null && range.end != null){ get_estado_cuenta(range) @@ -955,6 +979,8 @@ function send_stamp_cfdi_pay(id_mov){ var g = $$('grid_cfdi_pay') var data = {'opt': 'stamp', 'id_mov': id_mov} + //~ ToDo Actualizar cantidad de facturas de pago en el movimiento + webix.ajax().sync().post('cfdipay', data, { error:function(text, data, XmlHttpRequest){ msg = 'Ocurrio un error, consulta a soporte técnico' @@ -1156,6 +1182,20 @@ function grid_cfdi_pay_click(id, e, node){ } +function grid_bank_invoice_pay_click(id, e, node){ + var row = this.getItem(id) + + if(id.column == 'xml'){ + location = '/doc/xmlpago/' + row.id + }else if(id.column == 'pdf'){ + window.open('/doc/pdfpago/' + row.id, '_blank') + }else if(id.column == 'email'){ + send_cfdi_email(row) + } + +} + + function grid_cfdi_por_pagar_double_click(id, e, node){ var grid = $$('grid_cfdi_este_deposito') @@ -1172,9 +1212,47 @@ function grid_cfdi_este_deposito_double_click(id, e, node){ } -//~ function set_is_mn(){ - //~ var c = $$('txt_cuenta_moneda').getValue() - //~ if(c!=CURRENCY_MN){ - //~ is_mn = false - //~ } -//~ } +function cmd_show_invoice_pay_click(){ + var y = $$('filter_invoice_pay_year') + var m = $$('filter_invoice_pay_month') + y.blockEvent() + m.blockEvent() + y.setValue($$('filter_cuenta_year').getValue()) + m.setValue($$('filter_cuenta_month').getValue()) + y.unblockEvent() + m.unblockEvent() + get_invoices_pay() + $$('multi_bancos').setValue('bank_invoice_pay') +} + + +function get_invoices_pay(rango){ + if(rango == undefined){ + var filtro = { + opt: 'table', + year: $$('filter_invoice_pay_year').getValue(), + month: $$('filter_invoice_pay_month').getValue(), + } + }else{ + var filtro = { + opt: 'table', + fechas: rango, + } + } + + var grid = $$('grid_bank_invoice_pay') + + webix.ajax().get('/cfdipay', filtro, { + 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() + grid.clearAll() + if (values.ok){ + grid.parse(values.rows, 'json') + } + } + }) +} diff --git a/source/static/js/controller/util.js b/source/static/js/controller/util.js index 9ad7812..2d31f05 100644 --- a/source/static/js/controller/util.js +++ b/source/static/js/controller/util.js @@ -154,10 +154,20 @@ String.prototype.to_float4 = function(){ function get_float(value){ - return parseFloat(value.replace('$', '').replace(',', '').trim()).round(DECIMALES) + var f = parseFloat(value.replace('$', '').replace(',', '').trim()).round(DECIMALES) + if(!f){ + f = 0.00 + } + return f } + + function get_float4(value){ - return parseFloat(value.replace('$', '').replace(',', '').trim()).round(DECIMALES_TAX) + var f = parseFloat(value.replace('$', '').replace(',', '').trim()).round(DECIMALES_TAX) + if(!f){ + f = 0.00 + } + return f } diff --git a/source/static/js/ui/bancos.js b/source/static/js/ui/bancos.js index 4d94adc..a88099b 100644 --- a/source/static/js/ui/bancos.js +++ b/source/static/js/ui/bancos.js @@ -41,10 +41,10 @@ var toolbar_movimientos_banco = [ {view: 'button', id: 'cmd_agregar_deposito', label: 'Depósito', type: 'iconButton', autowidth: true, icon: 'plus'}, {}, - {view: 'button', id: 'cmd_complemento_pago', label: 'Factura de Pago', + {view: 'button', id: 'cmd_complemento_pago', label: 'Generar Factura de Pago', type: 'iconButton', autowidth: true, icon: 'file-code-o'}, {view: 'button', id: 'cmd_show_invoice_pay', label: 'Ver Facturas de Pago', - type: 'iconButton', autowidth: true, icon: 'table', hidden: true}, + type: 'iconButton', autowidth: true, icon: 'table'}, {}, {view: 'button', id: 'cmd_cancelar_movimiento', label: 'Cancelar', type: 'iconButton', autowidth: true, icon: 'ban'}, @@ -258,6 +258,69 @@ var grid_pay_related = { } +var grid_bank_invoice_pay_cols = [ + {id: 'index', header: '#', adjust: 'data', css: 'right', + footer: {content: 'countRows', colspan: 3, css: 'right'}}, + {id: "id", header:"ID", hidden:true}, + {id: 'serie', header: ["Serie"], adjust: "data", sort: 'string', + template: '{common.subrow()} #serie#'}, + {id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'header', + sort: 'int', css: 'right', footer: {text: 'Facturas', colspan: 3}}, + {id: "uuid", header: ["UUID", {content: "textFilter"}], adjust: "data", + sort:"string", hidden:true}, + {id: "fecha", header: ["Fecha y Hora"], width: 135, + sort: "string"}, + {id: "tipo_comprobante", header: ["Tipo"], adjust: 'data', + sort: 'string'}, + {id: "estatus", header: ["Estatus", {content: "selectFilter"}], + adjust: "header", sort:"string"}, + {id: 'movimiento', header: ['Movimiento', {content: "selectFilter"}], + adjust: 'data', sort: 'string'}, + {id: 'total', header: ['Total', {content: 'numberFilter'}], + width: 125, sort: 'int', format: webix.i18n.priceFormat, css: 'right', + hidden: true}, + {id: 'currency', header: ['Moneda', {content: 'selectFilter'}], + adjust: 'data', sort: 'string', hidden: true}, + {id: 'total_mn', header: ['Total M.N.', {content: 'numberFilter'}], + width: 150, sort: 'int', format: webix.i18n.priceFormat, css: 'right', + footer: {content: 'summTimbrada', css: 'right'}}, + {id: 'cliente', header: ['Razón Social', {content: 'selectFilter'}], + fillspace: true, sort: 'string'}, + {id: 'xml', header: 'XML', adjust: 'data', template: get_icon('xml')}, + {id: 'pdf', header: 'PDF', adjust: 'data', template: get_icon('pdf')}, + //~ {id: 'ods', header: 'ODS', adjust: 'data', template: get_icon('table')}, + //~ {id: 'zip', header: 'ZIP', adjust: 'data', template: get_icon('zip')}, + {id: 'email', header: '', adjust: 'data', template: get_icon('email')} +] + + +var grid_bank_invoice_pay = { + view: 'datatable', + id: 'grid_bank_invoice_pay', + //~ subview: sv_grid_invoices, + select: 'row', + adjust: true, + footer: true, + resizeColumn: true, + headermenu: true, + columns: grid_bank_invoice_pay_cols, + scheme:{ + $change:function(item){ + if (item.estatus == 'Cancelada'){ + item.$css = 'cancel' + } + } + }, + on:{ + 'data->onStoreUpdated':function(){ + this.data.each(function(obj, i){ + obj.index = i + 1 + }) + } + }, +} + + var toolbar_banco_retiro = [ {view: 'label', label: 'Agregar retiro de banco', id: 'title_bank_retiro'}, {view: 'button', id: 'cmd_guardar_retiro', label: 'Guardar Retiro', @@ -291,6 +354,25 @@ var toolbar_bank_pay = [ ] +var toolbar_bank_invoice_pay = [ + {view: 'label', label: 'Administración de Facturas de Pago'}, + {}, + {view: 'icon', click: '$$("multi_bancos").setValue("banco_home")', + icon: 'times-circle'} +] + + +var toolbar_bank_invoice_pay_filter = [ + {view: 'richselect', id: 'filter_invoice_pay_year', label: 'Año', + labelAlign: 'right', labelWidth: 50, width: 150, options: []}, + {view: 'richselect', id: 'filter_invoice_pay_month', label: 'Mes', + labelAlign: 'right', labelWidth: 50, width: 200, options: months}, + {view: 'daterangepicker', id: 'filter_invoice_pay_dates', label: 'Fechas', + labelAlign: 'right', width: 300}, + {}, +] + + var controls_banco_retiro = [ {view: 'toolbar', elements: toolbar_banco_retiro}, {cols: [ @@ -401,6 +483,13 @@ var controls_bank_pay = [ ] +var controls_bank_invoice_pay = [ + {view: 'toolbar', elements: toolbar_bank_invoice_pay}, + {view: 'toolbar', elements: toolbar_bank_invoice_pay_filter}, + grid_bank_invoice_pay +] + + var form_banco_retiro = { type: 'space', responsive: true, @@ -440,6 +529,19 @@ var form_bank_pay = { } +var form_bank_invoice_pay = { + type: 'space', + responsive: true, + cols: [{ + view: 'form', + id: 'form_bank_invoice_pay', + complexData: true, + scroll: true, + elements: controls_bank_invoice_pay, + }], +} + + var multi_bancos = { id: 'multi_bancos', animate: true, @@ -452,7 +554,8 @@ var multi_bancos = { ]}, {id: 'banco_retiro', rows: [form_banco_retiro]}, {id: 'banco_deposito', rows: [form_banco_deposito]}, - {id: 'bank_pay', rows: [form_bank_pay]} + {id: 'bank_pay', rows: [form_bank_pay]}, + {id: 'bank_invoice_pay', rows: [form_bank_invoice_pay]} ], } diff --git a/source/static/js/ui/partners.js b/source/static/js/ui/partners.js index 7c314ae..4a059d7 100644 --- a/source/static/js/ui/partners.js +++ b/source/static/js/ui/partners.js @@ -133,9 +133,14 @@ var controls_others = [ label: 'Nombre Comercial: '}, {view: 'text', id: 'telefonos', name: 'telefonos', label: 'Teléfonos: '}, {view: 'text', id: 'web', name: 'web', label: 'Página Web: '}, + {cols: [ {view: 'text', id: 'correo_facturas', name: 'correo_facturas', label: 'Correos para Facturas: ', tooltip: 'Separados por comas', bottomLabel: 'Uno o más correos electrónicos separados por comas'}, + {view: 'text', id: 'partner_email_fp', name: 'partner_email_fp', + label: 'Para Facturas de pago: ', tooltip: 'Separados por comas', + bottomLabel: 'Uno o más correos electrónicos separados por comas'}, + ]}, {cols: [ {view: 'checkbox', id: 'es_cliente', name: 'es_cliente', label: 'Es Cliente: ', value: true, width: 180},