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: {