diff --git a/source/static/js/controller/bancos.js b/source/static/js/controller/bancos.js index ebb32e2..3a89579 100644 --- a/source/static/js/controller/bancos.js +++ b/source/static/js/controller/bancos.js @@ -6,9 +6,13 @@ var bancos_controllers = { $$('cmd_agregar_retiro').attachEvent('onItemClick', cmd_agregar_retiro_click) $$('cmd_agregar_deposito').attachEvent('onItemClick', cmd_agregar_deposito_click) $$('cmd_guardar_retiro').attachEvent('onItemClick', cmd_guardar_retiro_click) + $$('cmd_guardar_deposito').attachEvent('onItemClick', cmd_guardar_deposito_click) $$('txt_retiro_importe').attachEvent('onChange', txt_retiro_importe_change) + $$('txt_deposito_importe').attachEvent('onChange', txt_deposito_importe_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) + $$('grid_cfdi_este_deposito').attachEvent('onAfterEditStop', grid_cfdi_este_deposito_after_edit_stop) set_year_month() } } @@ -262,6 +266,14 @@ function cmd_guardar_retiro_click(){ function txt_retiro_importe_change(new_value, old_value){ + showvar(new_value) + if(!isFinite(new_value)){ + this.config.value = old_value + this.refresh() + } +} + +function txt_deposito_importe_change(new_value, old_value){ if(!isFinite(new_value)){ this.config.value = old_value this.refresh() @@ -275,13 +287,15 @@ function actualizar_deposito(grid){ var suma = 0 var descripcion = '' grid.data.each(function(obj){ - suma += obj.saldo.to_float() descripcion += 'Pago de la factura: ' + obj.serie + obj.folio + ' del ' descripcion += 'cliente: ' + obj.cliente + '\n' - obj.importe = obj.saldo + if(obj.importe == undefined){ + obj.importe = obj.saldo + } + suma += obj.importe.to_float() }) $$('txt_deposito_importe').setValue(suma) - $$('deposito_descripcion').setValue(descripcion) + $$('deposito_descripcion').setValue(descripcion.slice(0, -1)) grid.refresh() } @@ -296,3 +310,202 @@ function grid_cfdi_este_deposito_after_drop(context, native_event){ var grid = $$('grid_cfdi_este_deposito') actualizar_deposito(grid) } + + +function grid_cfdi_este_deposito_after_edit_stop(state, editor, ignoreUpdate){ + var grid = $$('grid_cfdi_este_deposito') + + var suma = 0 + grid.data.each(function(obj){ + suma += obj.importe.to_float() + }) + $$('txt_deposito_importe').setValue(suma) +} + + +function grid_cfdi_este_deposito_before_edit_stop(state, editor){ + var grid = $$('grid_cfdi_este_deposito') + var row = grid.getItem(editor.row) + + if(editor.column == 'importe'){ + var importe = parseFloat(state.value) + if(isNaN(importe)){ + msg = 'El importe a pagar debe ser un número' + msg_error(msg) + grid.blockEvent() + state.value = state.old + grid.editCancel() + grid.unblockEvent() + return true + } + if(importe <= 0){ + msg = 'El importe a pagar debe ser mayor a cero' + msg_error(msg) + grid.blockEvent() + state.value = state.old + grid.editCancel() + grid.unblockEvent() + return true + } + var saldo = row['saldo'].to_float() + if(importe > saldo){ + msg = 'El importe a pagar no puede ser mayor al saldo de la factura' + msg_error(msg) + grid.blockEvent() + state.value = state.old + grid.editCancel() + grid.unblockEvent() + return true + } + } +} + + +function validate_deposito(values){ + var grid = $$('grid_cfdi_este_deposito') + var importe = values.deposito_importe.to_float() + + if(!importe){ + msg = 'El importe es requerido' + msg_error(msg) + return false + } + + if(importe <= 0){ + msg = 'El importe debe ser mayor a cero' + msg_error(msg) + return false + } + + if(!values.deposito_descripcion.trim()){ + msg = 'La descripción es requerida' + msg_error(msg) + return false + } + + var horas = $$('time_deposito').getText().split(':') + var seg = parseInt(horas[2]) + var min = parseInt(horas[1]) + var horas = parseInt(horas[0]) + + if(horas > 23){ + focus('time_deposito') + msg = 'Hora inválida' + msg_error(msg) + return false + } + if(min > 59){ + focus('time_deposito') + msg = 'Hora inválida' + msg_error(msg) + return false + } + if(seg > 59){ + focus('time_deposito') + msg = 'Hora inválida' + msg_error(msg) + return false + } + + if(grid.count()){ + var suma = 0 + grid.data.each(function(obj){ + var tmp = obj.importe.to_float() + if(tmp <= 0){ + msg = 'El importe de la factura: ' + obj.serie + obj.folio + ' no puede ser menor a cero' + msg_error(msg) + return false + } + suma += tmp + }) + if(suma > importe){ + msg = 'La suma del pago de facturas, no puede ser mayor al deposito' + msg_error(msg) + return false + } + } + + return true +} + + +function guardar_deposito(values){ + var form = $$('form_banco_deposito') + var grid = $$('grid_cfdi_este_deposito') + + var data = new Object() + data['cuenta'] = $$('lst_cuentas_banco').getValue() + data['fecha'] = values.retiro_fecha + data['hora'] = $$('time_deposito').getText() + data['numero_operacion'] = values.deposito_referencia.trim() + data['forma_pago'] = $$('lst_deposito_forma_pago').getValue() + data['deposito'] = values.deposito_importe.to_float() + data['retiro'] = 0.0 + data['descripcion'] = values.deposito_descripcion + + webix.ajax().post('/movbanco', data, { + 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){ + $$('txt_cuenta_saldo').setValue(values.saldo) + get_estado_cuenta() + $$('multi_bancos').setValue('banco_home') + form.setValues({}) + grid.clearAll() + }else{ + msg_error(values.msg) + } + } + }) +} + + +function cmd_guardar_deposito_click(){ + var form = $$('form_banco_deposito') + + if(!form.validate()) { + msg_error('Valores inválidos') + return + } + + var values = form.getValues() + if(!validate_deposito(values)){ + return + } + + if(!grid.count()){ + msg = 'Todos los datos son correctos
br>' + msg = 'El depósito no tiene facturas relacionadas

¿Estás ' + msg += ' seguro de guardar del depósito sin facturas relacionadas?' + webix.confirm({ + title: 'Guardar depósito', + ok: 'Si', + cancel: 'No', + type: 'confirm-error', + text: msg, + callback:function(result){ + if(result){ + guardar_deposito(values) + } + } + }) + }else{ + msg = 'Todos los datos son correctos.

¿Deseas agregar este depósito?' + webix.confirm({ + title: 'Guardar depósito', + ok: 'Si', + cancel: 'No', + type: 'confirm-error', + text: msg, + callback:function(result){ + if(result){ + guardar_deposito(values) + } + } + }) + } +} diff --git a/source/static/js/ui/bancos.js b/source/static/js/ui/bancos.js index 06b8137..3d05ff1 100644 --- a/source/static/js/ui/bancos.js +++ b/source/static/js/ui/bancos.js @@ -84,7 +84,7 @@ var grid_cfdi_este_deposito_cols = [ {id: 'saldo', header: ['Saldo'], width: 125, sort: 'int', format: webix.i18n.priceFormat, css: 'right'}, {id: 'importe', header: ['Este pago'], width: 125, sort: 'int', - format: webix.i18n.priceFormat, css: 'right'}, + format: webix.i18n.priceFormat, css: 'right', editor: 'text'}, ] @@ -119,6 +119,7 @@ var grid_cfdi_este_deposito = { resizeColumn: true, headermenu: true, drag: true, + editable: true, columns: grid_cfdi_este_deposito_cols, on:{ 'data->onStoreUpdated':function(){ diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js index 6df8320..5d94855 100644 --- a/source/static/js/ui/invoices.js +++ b/source/static/js/ui/invoices.js @@ -261,7 +261,7 @@ var grid_details = { autoheight: true, editable: true, columns: grid_details_cols, - data: [] + data: [], } @@ -284,7 +284,7 @@ var grid_totals = { footer: true, autoheight: true, columns: grid_totals_cols, - data: [{id: 1, concepto: 'SubTotal', importe: 0}] + data: [{id: 1, concepto: 'SubTotal', importe: 0}], }