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}],
}