From 6954b74677f748d70e56b0a39ec50e2220ab9ba0 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 17 Nov 2017 14:13:39 -0600 Subject: [PATCH] Crear primer movimiento --- source/app/controllers/main.py | 7 +++ source/app/models/db.py | 5 ++ source/app/models/main.py | 68 ++++++++++++++++++++++++++-- source/static/js/controller/admin.js | 61 ++++++++++++++++++++++++- source/static/js/ui/admin.js | 12 +++-- 5 files changed, 142 insertions(+), 11 deletions(-) diff --git a/source/app/controllers/main.py b/source/app/controllers/main.py index 0143285..2afb7a0 100644 --- a/source/app/controllers/main.py +++ b/source/app/controllers/main.py @@ -266,6 +266,13 @@ class AppCuentasBanco(object): req.context['result'] = self._db.cuentasbanco(values) resp.status = falcon.HTTP_200 + def on_delete(self, req, resp): + values = req.params + if self._db.delete('cuentasbanco', values['id']): + resp.status = falcon.HTTP_200 + else: + resp.status = falcon.HTTP_204 + class AppMovimientosBanco(object): diff --git a/source/app/models/db.py b/source/app/models/db.py index ffcdac1..c41252e 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -148,6 +148,9 @@ class StorageEngine(object): def _get_usocfdi(self, values): return main.SATUsoCfdi.get_activos() + def _get_ebancomov(self, values): + return main.MovimientosBanco.con(values['id']) + def delete(self, table, id): if table == 'partner': return main.Socios.remove(id) @@ -161,6 +164,8 @@ class StorageEngine(object): return main.PreFacturas.remove(id) if table == 'satimpuesto': return main.SATImpuestos.remove(id) + if table == 'cuentasbanco': + return main.CuentasBanco.remove(id) return False def _get_client(self, values): diff --git a/source/app/models/main.py b/source/app/models/main.py index dbafd61..c415334 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -642,6 +642,10 @@ class SATFormaPago(BaseModel): def __str__(self): return 'Forma de pago: ({}) {}'.format(self.key, self.name) + @classmethod + def get_by_key(cls, key): + return SATFormaPago.get(SATFormaPago.key==key) + @classmethod def get_activos(cls, values): field = SATFormaPago.id @@ -914,6 +918,18 @@ class CuentasBanco(BaseModel): def __str__(self): return '{} ({})'.format(self.banco.name, self.cuenta[-4:]) + @classmethod + def remove(cls, id): + try: + with database_proxy.atomic() as txn: + q = MovimientosBanco.delete().where(MovimientosBanco.cuenta==id) + q.execute() + q = CuentasBanco.delete().where(CuentasBanco.id==id) + q.execute() + return True + except: + return False + @classmethod def get_years(cls): data = [{'id': -1, 'value': 'Todos'}] @@ -975,15 +991,32 @@ class CuentasBanco(BaseModel): def add(cls, values): w = '37137137137137137' dv = str( - 10 - + (10 - sum([(int(v) * int(values['clabe'][i])) % 10 for i, v in enumerate(w)]) - % 10) + % 10) % 10) if dv != values['clabe'][-1]: msg = 'Digito de control de la CLABE es incorrecto' return {'ok': False, 'msg': msg} + fecha_deposito = values.pop('fecha_deposito', None) + with database_proxy.transaction(): - obj = CuentasBanco.create(**values) + try: + obj = CuentasBanco.create(**values) + except IntegrityError: + msg = 'Esta cuenta ya existe' + return {'ok': False, 'msg': msg} + + nuevo_mov= { + 'cuenta': obj.id, + 'fecha': fecha_deposito, + 'movimiento': 1, + 'descripcion': 'Saldo inicial', + 'forma_pago': SATFormaPago.get_by_key('99'), + 'deposito': values['saldo'], + 'saldo': values['saldo'], + } + MovimientosBanco.add(nuevo_mov) rows = (CuentasBanco .select( @@ -1037,6 +1070,30 @@ class MovimientosBanco(BaseModel): (('cuenta', 'movimiento'), True), ) + @classmethod + def add(cls, values): + with database_proxy.transaction(): + try: + obj = MovimientosBanco.create(**values) + except IntegrityError: + msg = 'Este movimiento ya existe' + return {'ok': False, 'msg': msg} + + return {'ok': True} + + @classmethod + def con(cls, id): + cant = (MovimientosBanco + .select(MovimientosBanco.id) + .where(MovimientosBanco.cuenta==id) + .count() + ) + if cant > 2: + return {'ok': True} + + return {'ok': False} + + @classmethod def get_(cls, values): cuenta = int(values['cuenta']) @@ -1045,7 +1102,7 @@ class MovimientosBanco(BaseModel): fd = (MovimientosBanco.fecha.between( util.get_date(rango['start']), util.get_date(rango['end'], True))) - filtros = (fd & MovimientosBanco.cuenta.id==cuenta) + filtros = (fd & (MovimientosBanco.cuenta==cuenta)) else: year = int(values['year']) mes = int(values['mes']) @@ -1057,7 +1114,7 @@ class MovimientosBanco(BaseModel): fm = (MovimientosBanco.fecha.month > 0) else: fm = (MovimientosBanco.fecha.month == mes) - filtros = (fy & fm & MovimientosBanco.cuenta.id==cuenta) + filtros = (fy & fm & (MovimientosBanco.cuenta==cuenta)) rows = tuple(MovimientosBanco .select( @@ -1071,6 +1128,7 @@ class MovimientosBanco(BaseModel): .where(filtros) .dicts() ) + return {'ok': True, 'rows': rows} diff --git a/source/static/js/controller/admin.js b/source/static/js/controller/admin.js index 9bb5cbd..0b1852b 100644 --- a/source/static/js/controller/admin.js +++ b/source/static/js/controller/admin.js @@ -22,6 +22,7 @@ var controllers = { $$('cmd_guardar_correo').attachEvent('onItemClick', cmd_guardar_correo_click) $$('emisor_logo').attachEvent('onItemClick', emisor_logo_click) $$('cmd_emisor_agregar_cuenta').attachEvent('onItemClick', cmd_emisor_agregar_cuenta_click) + $$('cmd_emisor_eliminar_cuenta').attachEvent('onItemClick', cmd_emisor_eliminar_cuenta_click) $$('emisor_cuenta_saldo_inicial').attachEvent('onChange', emisor_cuenta_saldo_inicial_change) //~ SAT tb_sat = $$('tab_sat').getTabbar() @@ -906,17 +907,18 @@ function cmd_emisor_agregar_cuenta_click(){ var values = form.getValues() - var si = parseFloat(values.emisor_cuenta_saldo_inicial.replace('$', '').replace(',', '')) + var saldo_inicial = parseFloat(values.emisor_cuenta_saldo_inicial.replace('$', '').replace(',', '')) var cuenta = { de_emisor: true, activa: true, nombre: values.emisor_cuenta_nombre.trim(), banco: values.emisor_banco, fecha_apertura: values.emisor_cuenta_fecha, + fecha_deposito: values.emisor_fecha_saldo, cuenta: values.emisor_cuenta.trim(), clabe: values.emisor_clabe.trim(), moneda: values.emisor_cuenta_moneda, - saldo_inicial: si + saldo_inicial: saldo_inicial } if(!cuenta.nombre){ @@ -979,6 +981,7 @@ function cmd_emisor_agregar_cuenta_click(){ var values = data.json() if(values.ok){ $$('grid_emisor_cuentas_banco').add(values.row) + form.setValues({}) }else{ msg_error(values.msg) } @@ -1125,3 +1128,57 @@ function grid_admin_taxes_click(id, e, node){ }) } + + +function eliminar_cuenta_banco(id){ + var grid = $$('grid_emisor_cuentas_banco') + + webix.ajax().del('/cuentasbanco', {id: id}, function(text, xml, xhr){ + msg = 'Cuenta eliminada correctamente' + if(xhr.status == 200){ + grid.remove(id) + msg_sucess(msg) + }else{ + msg = 'No se pudo eliminar' + msg_error(msg) + } + }) +} + + +function cmd_emisor_eliminar_cuenta_click(){ + var respuesta = undefined + var row = $$('grid_emisor_cuentas_banco').getSelectedItem() + + if (row == undefined){ + msg = 'Selecciona una cuenta de banco' + msg_error(msg) + return + } + + webix.ajax().sync().get('/values/ebancomov', {id: row['id']}, function(text, data){ + respuesta = data.json() + }) + + if(respuesta.ok){ + msg = 'La cuenta tiene movimientos, no se puede eliminar' + msg_error(msg) + return + } + + var msg = '¿Estás seguro de eliminar la cuenta de banco?

' + msg += row['banco'] + ' (' + row['cuenta'] + ')' + msg += '

ESTA ACCIÓN NO SE PUEDE DESHACER' + webix.confirm({ + title: 'Eliminar Cuenta de Banco', + ok: 'Si', + cancel: 'No', + type: 'confirm-error', + text: msg, + callback:function(result){ + if (result){ + eliminar_cuenta_banco(row['id']) + } + } + }) +} diff --git a/source/static/js/ui/admin.js b/source/static/js/ui/admin.js index 02f78de..6a5862d 100644 --- a/source/static/js/ui/admin.js +++ b/source/static/js/ui/admin.js @@ -179,7 +179,7 @@ var emisor_cuentas_banco = [ name: 'emisor_cuenta_moneda', label: 'Moneda: ', required: true, options: []}, {view: 'currency', type: 'text', id: 'emisor_cuenta_saldo_inicial', - name: 'emisor_cuenta_saldo_inicial', label: 'Saldo inicial', + name: 'emisor_cuenta_saldo_inicial', label: 'Saldo inicial: ', required: true, invalidMessage: 'Captura un valor númerico', inputAlign: 'right', value: ''}, ]}, @@ -188,12 +188,16 @@ var emisor_cuentas_banco = [ name: 'emisor_cuenta_fecha', label: 'Fecha de apertura: ', required: true}, {view: 'datepicker', id: 'emisor_fecha_saldo', format: '%d-%M-%Y', - name: 'emisor_fecha_saldo', label: 'Fecha este depósito: ', + name: 'emisor_fecha_saldo', label: 'Fecha saldo inicial: ', required: true}, ]}, {minHeight: 10}, - {cols: [{}, {view: 'button', id: 'cmd_emisor_agregar_cuenta', - label: 'Agregar cuenta'}, {}]}, + {cols: [{}, + {view: 'button', id: 'cmd_emisor_agregar_cuenta', + label: 'Agregar cuenta'}, {}, + {view: 'button', id: 'cmd_emisor_eliminar_cuenta', + label: 'Eliminar cuenta'}, + {}]}, ], rules: {