From db6743745b416273cc06071922fbff5268b25a0f Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Tue, 19 Dec 2017 01:22:22 -0600 Subject: [PATCH] Agregar monedas --- source/app/controllers/main.py | 2 ++ source/app/controllers/util.py | 19 +++++++++++++ source/app/models/db.py | 6 +++++ source/app/models/main.py | 13 +++++++++ source/db/sat.db | Bin 2793472 -> 2805760 bytes source/static/js/controller/admin.js | 39 +++++++++++++++++++++++++++ source/static/js/ui/admin.js | 38 ++++++++++++++++++++++++++ 7 files changed, 117 insertions(+) diff --git a/source/app/controllers/main.py b/source/app/controllers/main.py index 5300200..6cca2f6 100644 --- a/source/app/controllers/main.py +++ b/source/app/controllers/main.py @@ -125,6 +125,8 @@ class AppValues(object): req.context['result'] = self._db.send_email(values, session) elif table == 'enviarprefac': req.context['result'] = self._db.enviar_prefac(values) + elif table == 'addmoneda': + req.context['result'] = self._db.add_moneda(values) elif table == 'addunidad': req.context['result'] = self._db.add_unidad(values) elif table == 'addimpuesto': diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 2440e98..035e88f 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -173,6 +173,25 @@ def get_sat_key(table, key): return {'ok': True, 'text': data[1]} +def get_sat_monedas(key): + con = sqlite3.connect(DB_SAT) + con.row_factory = sqlite3.Row + cursor = con.cursor() + + filtro = '%{}%'.format(key) + sql = "SELECT * FROM monedas WHERE key LIKE ? OR name LIKE ?" + + cursor.execute(sql, [filtro, filtro]) + data = cursor.fetchall() + cursor.close() + con.close() + if data is None: + return () + + data = [dict(r) for r in data] + return tuple(data) + + def get_sat_unidades(key): con = sqlite3.connect(DB_SAT) con.row_factory = sqlite3.Row diff --git a/source/app/models/db.py b/source/app/models/db.py index c2b74f2..303ca61 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -104,6 +104,9 @@ class StorageEngine(object): def _get_unidades(self, values): return main.SATUnidades.get_activos() + def add_moneda(self, values): + return main.SATMonedas.add(values) + def add_unidad(self, values): return main.SATUnidades.add(values) @@ -161,6 +164,9 @@ class StorageEngine(object): def _get_satkey(self, values): return main.get_sat_key(values['key']) + def _get_satmonedas(self, values): + return main.get_sat_monedas(values['key']) + def _get_satunidades(self, values): return main.get_sat_unidades(values['key']) diff --git a/source/app/models/main.py b/source/app/models/main.py index 3015961..7ff1479 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -940,6 +940,14 @@ class SATMonedas(BaseModel): def __str__(self): return 'Moneda: ({}) {}'.format(self.key, self.name) + @classmethod + def add(self, values): + try: + SATMonedas.create(**values) + return {'ok': True} + except: + return {'ok': False} + @classmethod def get_(self): rows = SATMonedas.select().dicts() @@ -3901,9 +3909,14 @@ def get_sat_key(key): return util.get_sat_key('productos', key) +def get_sat_monedas(key): + return util.get_sat_monedas(key) + + def get_sat_unidades(key): return util.get_sat_unidades(key) + def get_sat_productos(key): return util.get_sat_productos(key) diff --git a/source/db/sat.db b/source/db/sat.db index 8bc71a866771733926ccdb778d9f211b95865526..3ee5899e296567820a8d6eaa9889c98f46adff4f 100644 GIT binary patch delta 5088 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 T!R-^j&68uauGUnmY101%Z;$|0 delta 288 zcmZ9@u};EJ7{&2>Z!1!edt0iuSdg|VpfPsfm3ROW1`=4B7{V%(qpsEshpvvUzQKJ1 zU%`J^O#G7HSHHVGuV;4v diff --git a/source/static/js/controller/admin.js b/source/static/js/controller/admin.js index 27a9f75..52bd83a 100644 --- a/source/static/js/controller/admin.js +++ b/source/static/js/controller/admin.js @@ -34,6 +34,7 @@ var controllers = { $$('grid_admin_unidades').attachEvent('onCheck', grid_admin_unidades_on_check) $$('grid_admin_formasdepago').attachEvent('onCheck', grid_admin_formasdepago_on_check) $$('grid_unidad_found').attachEvent('onValueSuggest', grid_unidad_found_click) + $$('grid_moneda_found').attachEvent('onValueSuggest', grid_moneda_found_click) $$('cmd_agregar_impuesto').attachEvent('onItemClick', cmd_agregar_impuesto_click) //~ Usuarios $$('cmd_usuario_agregar').attachEvent('onItemClick', cmd_usuario_agregar_click) @@ -1131,6 +1132,44 @@ function cmd_emisor_agregar_cuenta_click(){ } +function agregar_nueva_moneda(obj){ + var grid = $$('grid_admin_monedas') + var values = {key: obj.key, name: obj.name} + + webix.ajax().post('/values/addmoneda', values, { + error: function(text, data, xhr) { + webix.message({type: 'error', text: 'Error al agregar'}) + }, + success: function(text, data, xhr){ + var values = data.json() + if (values.ok){ + grid.add(obj) + } + } + }) +} + + +function grid_moneda_found_click(obj){ + msg = '¿Estás seguro de agregar la siguiente moneda?

' + msg += '(' + obj.key + ') ' + obj.name + + webix.confirm({ + title: 'Agregar Moneda', + ok: 'Si', + cancel: 'No', + type: 'confirm-error', + text: msg, + callback:function(result){ + if(result){ + agregar_nueva_moneda(obj) + } + } + }) + $$('buscar_nueva_moneda').setValue('') +} + + function agregar_nueva_unidad(obj){ var grid = $$('grid_admin_unidades') var values = {key: obj.key, name: obj.name} diff --git a/source/static/js/ui/admin.js b/source/static/js/ui/admin.js index 20a2a77..3578bb3 100644 --- a/source/static/js/ui/admin.js +++ b/source/static/js/ui/admin.js @@ -695,11 +695,49 @@ var sat_impuestos = [ {}] +var suggest_sat_moneda = { + view: 'gridsuggest', + id: 'grid_moneda_found', + name: 'grid_moneda_found', + body: { + autoConfig: false, + scroll:true, + autoheight:false, + header: true, + yCount: 10, + columns: [ + {id: 'id', hidden: true}, + {id: 'key', adjust: 'data', header: 'Clave'}, + {id: 'name', adjust: 'data', header: 'Moneda'}, + ], + dataFeed:function(text){ + if (text.length > 2){ + this.load('/values/satmonedas?key=' + text) + }else{ + this.hide() + } + } + }, +} + + +var buscar_nueva_moneda = { + view: 'search', + id: 'buscar_nueva_moneda', + label: 'Buscar Moneda en el catálogo del SAT', + labelPosition: 'top', + suggest: suggest_sat_moneda, + placeholder: 'Por clave o moneda. Captura al menos tres letras', +} + + var msg_moneda = 'Activa las monedas que uses. La predeterminada se muestra primero' var sat_monedas = [ {maxHeight: 20}, {cols: [{maxWidth: 15}, {view: 'label', label: msg_moneda}, {}]}, {maxHeight: 20}, + {cols: [{maxWidth: 15}, buscar_nueva_moneda, {}]}, + {maxHeight: 20}, {cols: [{maxWidth: 15}, grid_admin_monedas, {}]}, {}]