diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 8b40f46..0aaf567 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -1164,13 +1164,6 @@ def cancel_cfdi(uuid, pk12, rfc, auth): return data, result -#~ def run_in_thread(fn, *args, **kwargs): - #~ t = threading.Thread(target=fn, args=args, kwargs=kwargs) - #~ t.daemon = True - #~ t.start() - #~ return - - def run_in_thread(fn): def run(*k, **kw): t = threading.Thread(target=fn, args=k, kwargs=kw) diff --git a/source/app/models/db.py b/source/app/models/db.py index e7b2c77..2b2efc2 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -82,9 +82,15 @@ class StorageEngine(object): def _get_alltaxes(self, values): return main.SATImpuestos.get_() + def _get_allcurrencies(self, values): + return main.SATMonedas.get_() + def _get_taxupdate(self, values): return main.SATImpuestos.actualizar(values) + def _get_currencyupdate(self, values): + return main.SATMonedas.actualizar(values) + def _get_satkey(self, values): return main.get_sat_key(values['key']) diff --git a/source/app/models/main.py b/source/app/models/main.py index 5ebb61f..7457729 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -604,6 +604,11 @@ class SATMonedas(BaseModel): def __str__(self): return 'Moneda: ({}) {}'.format(self.key, self.name) + @classmethod + def get_(self): + rows = SATMonedas.select().dicts() + return tuple(rows) + @classmethod def get_activos(cls): rows = (SATMonedas @@ -615,6 +620,27 @@ class SATMonedas(BaseModel): ) return tuple(rows) + @classmethod + def actualizar(self, values): + id = int(values['id']) + if values['field'] == 'activo': + v = {'0': False, '1': True} + q = (SATMonedas + .update(**{'activo': v[values['value']]}) + .where(SATMonedas.id==id)) + result = bool(q.execute()) + elif values['field'] == 'default': + q = SATMonedas.update(**{'default': False}) + q.execute() + + v = {'false': False, 'true': True} + q = (SATMonedas + .update(**{'default': v[values['value']]}) + .where(SATMonedas.id==id)) + result = bool(q.execute()) + + return {'ok': result} + class SATImpuestos(BaseModel): key = TextField(index=True) diff --git a/source/static/js/controller/admin.js b/source/static/js/controller/admin.js index 1f6036f..130e675 100644 --- a/source/static/js/controller/admin.js +++ b/source/static/js/controller/admin.js @@ -1,5 +1,6 @@ var msg = '' var tb_options = null +var tb_sat = null var controllers = { @@ -21,7 +22,10 @@ var controllers = { $$('cmd_guardar_correo').attachEvent('onItemClick', cmd_guardar_correo_click) $$('emisor_logo').attachEvent('onItemClick', emisor_logo_click) //~ SAT + tb_sat = $$('tab_sat').getTabbar() + tb_sat.attachEvent('onChange', tab_sat_change) $$('grid_admin_taxes').attachEvent('onCheck', grid_admin_taxes_on_check) + $$('grid_admin_monedas').attachEvent('onCheck', grid_admin_monedas_on_check) //~ Opciones tb_options = $$('tab_options').getTabbar() tb_options.attachEvent('onChange', tab_options_change) @@ -207,8 +211,16 @@ function get_config_correo(){ function get_admin_impuestos(){ webix.ajax().sync().get('/values/alltaxes', function(text, data){ var values = data.json() - $$("grid_admin_taxes").clearAll() - $$("grid_admin_taxes").parse(values, 'json') + $$('grid_admin_taxes').clearAll() + $$('grid_admin_taxes').parse(values, 'json') + }) +} + +function get_admin_monedas(){ + webix.ajax().sync().get('/values/allcurrencies', function(text, data){ + var values = data.json() + $$('grid_admin_monedas').clearAll() + $$('grid_admin_monedas').parse(values, 'json') }) } @@ -702,6 +714,15 @@ function tab_options_change(nv, ov){ } +function tab_sat_change(nv, ov){ + //~ show(nv) + if(nv = 'Monedas'){ + get_admin_monedas() + return + } +} + + function grid_admin_taxes_on_check(row, column, state){ var values = { @@ -716,3 +737,19 @@ function grid_admin_taxes_on_check(row, column, state){ } }) } + + +function grid_admin_monedas_on_check(row, column, state){ + + var values = { + id: row, + field: column, + value: state, + } + webix.ajax().get('/values/currencyupdate', values, { + error: function(text, data, xhr) { + }, + success: function(text, data, xhr) { + } + }) +} diff --git a/source/static/js/ui/admin.js b/source/static/js/ui/admin.js index 18afdee..5a81982 100644 --- a/source/static/js/ui/admin.js +++ b/source/static/js/ui/admin.js @@ -377,6 +377,17 @@ var grid_admin_taxes_cols = [ ] +var grid_admin_monedas_cols = [ + {id: 'id', header: 'ID', hidden: true}, + {id: 'key', header: 'Clave'}, + {id: 'name', header: 'Nombre', adjust: 'data'}, + {id: 'activo', header: 'Activa', template: '{common.checkbox()}', + editor: 'checkbox'}, + {id: 'default', header: 'Predeterminada', template: '{common.radio()}', + adjust: 'header'}, +] + + var grid_admin_taxes = { view: 'datatable', id: 'grid_admin_taxes', @@ -386,12 +397,24 @@ var grid_admin_taxes = { autoheight: true, autowidth: true, headermenu: true, - columns: grid_admin_taxes_cols, + columns: grid_admin_taxes_cols +} + + +var grid_admin_monedas = { + view: 'datatable', + id: 'grid_admin_monedas', + select: 'cell', + multiselect: true, + adjust: true, + autoheight: true, + autowidth: true, + headermenu: true, + columns: grid_admin_monedas_cols } var msg_tax = 'Activa los impuestos que uses. El predeterminado se muestra primero' - var sat_impuestos = [ {maxHeight: 20}, {cols: [{maxWidth: 15}, {view: 'label', label: msg_tax}, {}]}, @@ -399,6 +422,14 @@ var sat_impuestos = [ {cols: [{maxWidth: 15}, grid_admin_taxes, {}]}, {}] +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}, grid_admin_monedas, {}]}, +{}] + var tab_sat = { view: 'tabview', @@ -406,10 +437,12 @@ var tab_sat = { multiview: true, tabbar: {options: [ 'Impuestos', + 'Monedas', 'Unidades']}, animate: true, cells: [ {id: 'Impuestos', rows: sat_impuestos}, + {id: 'Monedas', rows: sat_monedas}, {id: 'Unidades', rows: [{}]}, {}, ] @@ -503,7 +536,7 @@ var menu_user = { ], type: { subsign: true, - }, + } } diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js index e98e36d..49e215f 100644 --- a/source/static/js/ui/invoices.js +++ b/source/static/js/ui/invoices.js @@ -56,11 +56,13 @@ function get_icon(tipo){ var grid_invoices_cols = [ + {id: 'index', header: '#', adjust: 'data', css: 'right', + footer: {content: 'rowCount', colspan: 3, css: 'right'}}, {id: "id", header:"ID", hidden:true}, {id: "serie", header: ["Serie", {content: "selectFilter"}], adjust: "data", sort:"string"}, - {id: "folio", header: ["Folio", {content: "numberFilter"}], adjust: "data", - sort:"int", css: "cell_right"}, + {id: 'folio', header: ['Folio', {content: 'numberFilter'}], adjust: 'data', + sort: 'int', css: 'right', footer: {text: 'Facturas', colspan: 3}}, {id: "uuid", header: ["UUID", {content: "textFilter"}], adjust: "data", sort:"string", hidden:true}, {id: "fecha", header: ["Fecha y Hora"], @@ -89,7 +91,14 @@ var grid_invoices = { resizeColumn: true, headermenu: true, columns: grid_invoices_cols, -}; + on:{ + 'data->onStoreUpdated':function(){ + this.data.each(function(obj, i){ + obj.index = i + 1 + }) + } + }, +} var grid_details_cols = [