From 423937f1cac13cc48d40887a7166148f44519ef8 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sat, 11 Nov 2017 20:21:00 -0600 Subject: [PATCH] Agregar SAT Bancos --- source/app/models/db.py | 6 ++ source/app/models/main.py | 66 +++++++++++++++++-- source/app/settings.py | 1 + source/db/valores_iniciales.json | 98 ++++++++++++++++++++++++++++ source/static/js/controller/admin.js | 33 +++++++++- source/static/js/ui/admin.js | 38 ++++++++++- 6 files changed, 231 insertions(+), 11 deletions(-) diff --git a/source/app/models/db.py b/source/app/models/db.py index b7db743..ad2cf08 100644 --- a/source/app/models/db.py +++ b/source/app/models/db.py @@ -91,12 +91,18 @@ class StorageEngine(object): def _get_allcurrencies(self, values): return main.SATMonedas.get_() + def _get_allbancos(self, values): + return main.SATBancos.get_() + def _get_taxupdate(self, values): return main.SATImpuestos.actualizar(values) def _get_currencyupdate(self, values): return main.SATMonedas.actualizar(values) + def _get_bancoupdate(self, values): + return main.SATBancos.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 2a353a1..e3b11a1 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -15,7 +15,7 @@ if __name__ == '__main__': from controllers import util from settings import log, VERSION, PATH_CP, COMPANIES, PRE, CURRENT_CFDI, \ - INIT_VALUES + INIT_VALUES, DEFAULT_PASSWORD FORMAT = '{0:.2f}' @@ -756,6 +756,60 @@ class SATTipoRelacion(BaseModel): +class SATBancos(BaseModel): + key = TextField(index=True, unique=True) + name = TextField(index=True) + razon_social = TextField(default='') + rfc = TextField(default='') + activo = BooleanField(default=False) + + class Meta: + order_by = ('-activo', 'name') + indexes = ( + (('key', 'name'), True), + ) + + def __str__(self): + return 'Banco: {} ({})'.format(self.name, self.key) + + @classmethod + def get_(self): + rows = SATBancos.select().dicts() + return tuple(rows) + + @classmethod + def actualizar(self, values): + id = int(values['id']) + if values['field'] == 'activo': + v = {'0': False, '1': True} + q = (SATBancos + .update(**{'activo': v[values['value']]}) + .where(SATBancos.id==id)) + result = bool(q.execute()) + return {'ok': result} + + +class CuentasBanco(BaseModel): + de_emisor = BooleanField(default=False) + nombre = TextField() + banco = ForeignKeyField(SATBancos) + fecha_apertura = DateField(null=True) + cuenta = TextField(default='') + clabe = TextField(default='') + moneda = ForeignKeyField(SATMonedas) + saldo_inicial = DecimalField(default=0.0, max_digits=20, decimal_places=6, + auto_round=True) + + class Meta: + order_by = ('nombre',) + indexes = ( + (('banco', 'cuenta'), True), + ) + + def __str__(self): + return '{} ({})'.format(self.banco.name, self.cuenta[-4:]) + + class SATUsoCfdi(BaseModel): key = TextField(index=True, unique=True) name = TextField(default='', index=True) @@ -2450,8 +2504,8 @@ def _crear_tablas(rfc): PreFacturas, PreFacturasDetalle, PreFacturasImpuestos, PreFacturasRelacionadas, SATAduanas, SATFormaPago, SATImpuestos, SATMonedas, SATRegimenes, - SATTipoRelacion, SATUnidades, SATUsoCfdi, - Socios, Tags, Usuarios, + SATTipoRelacion, SATUnidades, SATUsoCfdi, SATBancos, + Socios, Tags, Usuarios, CuentasBanco, Emisor.regimenes.get_through_model(), Socios.tags.get_through_model(), Productos.impuestos.get_through_model(), @@ -2461,10 +2515,10 @@ def _crear_tablas(rfc): database_proxy.create_tables(tablas, True) log.info('Tablas creadas correctamente...') - contraseña = 'blades3.3' usuarios = ( - {'usuario': 'superadmin', 'contraseña': contraseña, 'es_superusuario': True}, - {'usuario': 'admin', 'contraseña': contraseña, 'es_admin': True}, + {'usuario': 'superadmin', 'contraseña': DEFAULT_PASSWORD, + 'es_superusuario': True}, + {'usuario': 'admin', 'contraseña': DEFAULT_PASSWORD, 'es_admin': True}, ) for usuario in usuarios: diff --git a/source/app/settings.py b/source/app/settings.py index bc7eade..7880a4c 100644 --- a/source/app/settings.py +++ b/source/app/settings.py @@ -91,3 +91,4 @@ PRE = { } CURRENT_CFDI = '3.3' +DEFAULT_PASSWORD = 'blades3.3' diff --git a/source/db/valores_iniciales.json b/source/db/valores_iniciales.json index c66fe65..57ffeba 100644 --- a/source/db/valores_iniciales.json +++ b/source/db/valores_iniciales.json @@ -99,6 +99,104 @@ {"key": "615", "name": "Régimen de los ingresos por obtención de premios", "fisica": true, "activo": false} ] }, +{ + "tabla": "SATBancos", + "datos": [ + {"key": "002", "name": "BANAMEX", "razon_social": "Banco Nacional de México, S.A., Institución de Banca Múltiple, Grupo Financiero Banamex"}, + {"key": "006", "name": "BANCOMEXT", "razon_social": "Banco Nacional de Comercio Exterior, Sociedad Nacional de Crédito, Institución de Banca de Desarrollo"}, + {"key": "009", "name": "BANOBRAS", "razon_social": "Banco Nacional de Obras y Servicios Públicos, Sociedad Nacional de Crédito, Institución de Banca de Desarrollo"}, + {"key": "012", "name": "BBVABANCOMER", "razon_social": "BBVA Bancomer, S.A., Institución de Banca Múltiple, Grupo Financiero BBVA Bancomer"}, + {"key": "014", "name": "SANTANDER", "razon_social": "Banco Santander (México), S.A., Institución de Banca Múltiple, Grupo Financiero Santander"}, + {"key": "019", "name": "BANJERCITO", "razon_social": "Banco Nacional del Ejército, Fuerza Aérea y Armada, Sociedad Nacional de Crédito, Institución de Banca de Desarrollo"}, + {"key": "021", "name": "HSBC", "razon_social": "HSBC México, S.A., institución De Banca Múltiple, Grupo Financiero HSBC"}, + {"key": "030", "name": "BAJIO", "razon_social": "Banco del Bajío, S.A., Institución de Banca Múltiple"}, + {"key": "106", "name": "BAMSA", "razon_social": "Bank of America México, S.A., Institución de Banca Múltiple, Grupo Financiero Bank of America"}, + {"key": "032", "name": "IXE", "razon_social": "IXE Banco, S.A., Institución de Banca Múltiple, IXE Grupo Financiero"}, + {"key": "036", "name": "INBURSA", "razon_social": "Banco Inbursa, S.A., Institución de Banca Múltiple, Grupo Financiero Inbursa"}, + {"key": "037", "name": "INTERACCIONES", "razon_social": "Banco Interacciones, S.A., Institución de Banca Múltiple"}, + {"key": "042", "name": "MIFEL", "razon_social": "Banca Mifel, S.A., Institución de Banca Múltiple, Grupo Financiero Mifel"}, + {"key": "044", "name": "SCOTIABANK", "razon_social": "Scotiabank Inverlat, S.A."}, + {"key": "059", "name": "INVEX", "razon_social": "Banco Invex, S.A., Institución de Banca Múltiple, Invex Grupo Financiero"}, + {"key": "058", "name": "BANREGIO", "razon_social": "Banco Regional de Monterrey, S.A., Institución de Banca Múltiple, Banregio Grupo Financiero"}, + {"key": "060", "name": "BANSI", "razon_social": "Bansi, S.A., Institución de Banca Múltiple"}, + {"key": "062", "name": "AFIRME", "razon_social": "Banca Afirme, S.A., Institución de Banca Múltiple"}, + {"key": "072", "name": "BANORTE", "razon_social": "Banco Mercantil del Norte, S.A., Institución de Banca Múltiple, Grupo Financiero Banorte"}, + {"key": "102", "name": "THE ROYAL BANK", "razon_social": "The Royal Bank of Scotland México, S.A., Institución de Banca Múltiple"}, + {"key": "103", "name": "AMERICAN EXPRESS", "razon_social": "American Express Bank (México), S.A., Institución de Banca Múltiple"}, + {"key": "108", "name": "TOKYO", "razon_social": "Bank of Tokyo-Mitsubishi UFJ (México), S.A."}, + {"key": "110", "name": "JP MORGAN", "razon_social": "Banco J.P. Morgan, S.A., Institución de Banca Múltiple, J.P. Morgan Grupo Financiero"}, + {"key": "112", "name": "BMONEX", "razon_social": "Banco Monex, S.A., Institución de Banca Múltiple"}, + {"key": "113", "name": "VE POR MAS", "razon_social": "Banco Ve Por Mas, S.A. Institución de Banca Múltiple"}, + {"key": "116", "name": "ING", "razon_social": "ING Bank (México), S.A., Institución de Banca Múltiple, ING Grupo Financiero"}, + {"key": "124", "name": "DEUTSCHE", "razon_social": "Deutsche Bank México, S.A., Institución de Banca Múltiple"}, + {"key": "126", "name": "CREDIT SUISSE", "razon_social": "Banco Credit Suisse (México), S.A. Institución de Banca Múltiple, Grupo Financiero Credit Suisse (México)"}, + {"key": "127", "name": "AZTECA", "razon_social": "Banco Azteca, S.A. Institución de Banca Múltiple."}, + {"key": "128", "name": "AUTOFIN", "razon_social": "Banco Autofin México, S.A. Institución de Banca Múltiple"}, + {"key": "129", "name": "BARCLAYS", "razon_social": "Barclays Bank México, S.A., Institución de Banca Múltiple, Grupo Financiero Barclays México"}, + {"key": "130", "name": "COMPARTAMOS", "razon_social": "Banco Compartamos, S.A., Institución de Banca Múltiple"}, + {"key": "131", "name": "BANCO FAMSA", "razon_social": "Banco Ahorro Famsa, S.A., Institución de Banca Múltiple"}, + {"key": "132", "name": "BMULTIVA", "razon_social": "Banco Multiva, S.A., Institución de Banca Múltiple, Multivalores Grupo Financiero"}, + {"key": "133", "name": "ACTINVER", "razon_social": "Banco Actinver, S.A. Institución de Banca Múltiple, Grupo Financiero Actinver"}, + {"key": "134", "name": "WAL-MART", "razon_social": "Banco Wal-Mart de México Adelante, S.A., Institución de Banca Múltiple"}, + {"key": "135", "name": "NAFIN", "razon_social": "Nacional Financiera, Sociedad Nacional de Crédito, Institución de Banca de Desarrollo"}, + {"key": "136", "name": "INTERBANCO", "razon_social": "Inter Banco, S.A. Institución de Banca Múltiple"}, + {"key": "137", "name": "BANCOPPEL", "razon_social": "BanCoppel, S.A., Institución de Banca Múltiple"}, + {"key": "138", "name": "ABC CAPITAL", "razon_social": "ABC Capital, S.A., Institución de Banca Múltiple"}, + {"key": "139", "name": "UBS BANK", "razon_social": "UBS Bank México, S.A., Institución de Banca Múltiple, UBS Grupo Financiero"}, + {"key": "140", "name": "CONSUBANCO", "razon_social": "Consubanco, S.A. Institución de Banca Múltiple"}, + {"key": "141", "name": "VOLKSWAGEN", "razon_social": "Volkswagen Bank, S.A., Institución de Banca Múltiple"}, + {"key": "143", "name": "CIBANCO", "razon_social": "CIBanco, S.A."}, + {"key": "145", "name": "BBASE", "razon_social": "Banco Base, S.A., Institución de Banca Múltiple"}, + {"key": "166", "name": "BANSEFI", "razon_social": "Banco del Ahorro Nacional y Servicios Financieros, Sociedad Nacional de Crédito, Institución de Banca de Desarrollo"}, + {"key": "168", "name": "HIPOTECARIA FEDERAL", "razon_social": "Sociedad Hipotecaria Federal, Sociedad Nacional de Crédito, Institución de Banca de Desarrollo"}, + {"key": "600", "name": "MONEXCB", "razon_social": "Monex Casa de Bolsa, S.A. de C.V. Monex Grupo Financiero"}, + {"key": "601", "name": "GBM", "razon_social": "GBM Grupo Bursátil Mexicano, S.A. de C.V. Casa de Bolsa"}, + {"key": "602", "name": "MASARI", "razon_social": "Masari Casa de Bolsa, S.A."}, + {"key": "605", "name": "VALUE", "razon_social": "Value, S.A. de C.V. Casa de Bolsa"}, + {"key": "606", "name": "ESTRUCTURADORES", "razon_social": "Estructuradores del Mercado de Valores Casa de Bolsa, S.A. de C.V."}, + {"key": "607", "name": "TIBER", "razon_social": "Casa de Cambio Tiber, S.A. de C.V."}, + {"key": "608", "name": "VECTOR", "razon_social": "Vector Casa de Bolsa, S.A. de C.V."}, + {"key": "610", "name": "B&B", "razon_social": "B y B, Casa de Cambio, S.A. de C.V."}, + {"key": "614", "name": "ACCIVAL", "razon_social": "Acciones y Valores Banamex, S.A. de C.V., Casa de Bolsa"}, + {"key": "615", "name": "MERRILL LYNCH", "razon_social": "Merrill Lynch México, S.A. de C.V. Casa de Bolsa"}, + {"key": "616", "name": "FINAMEX", "razon_social": "Casa de Bolsa Finamex, S.A. de C.V."}, + {"key": "617", "name": "VALMEX", "razon_social": "Valores Mexicanos Casa de Bolsa, S.A. de C.V."}, + {"key": "618", "name": "UNICA", "razon_social": "Unica Casa de Cambio, S.A. de C.V."}, + {"key": "619", "name": "MAPFRE", "razon_social": "MAPFRE Tepeyac, S.A."}, + {"key": "620", "name": "PROFUTURO", "razon_social": "Profuturo G.N.P., S.A. de C.V., Afore"}, + {"key": "621", "name": "CB ACTINVER", "razon_social": "Actinver Casa de Bolsa, S.A. de C.V."}, + {"key": "622", "name": "OACTIN", "razon_social": "OPERADORA ACTINVER, S.A. DE C.V."}, + {"key": "623", "name": "SKANDIA", "razon_social": "Skandia Vida, S.A. de C.V."}, + {"key": "626", "name": "CBDEUTSCHE", "razon_social": "Deutsche Securities, S.A. de C.V. CASA DE BOLSA"}, + {"key": "627", "name": "ZURICH", "razon_social": "Zurich Compañía de Seguros, S.A."}, + {"key": "628", "name": "ZURICHVI", "razon_social": "Zurich Vida, Compañía de Seguros, S.A."}, + {"key": "629", "name": "SU CASITA", "razon_social": "Hipotecaria Su Casita, S.A. de C.V. SOFOM ENR"}, + {"key": "630", "name": "CB INTERCAM", "razon_social": "Intercam Casa de Bolsa, S.A. de C.V."}, + {"key": "631", "name": "CI BOLSA", "razon_social": "CI Casa de Bolsa, S.A. de C.V."}, + {"key": "632", "name": "BULLTICK CB", "razon_social": "Bulltick Casa de Bolsa, S.A., de C.V."}, + {"key": "633", "name": "STERLING", "razon_social": "Sterling Casa de Cambio, S.A. de C.V."}, + {"key": "634", "name": "FINCOMUN", "razon_social": "Fincomún, Servicios Financieros Comunitarios, S.A. de C.V."}, + {"key": "636", "name": "HDI SEGUROS", "razon_social": "HDI Seguros, S.A. de C.V."}, + {"key": "637", "name": "ORDER", "razon_social": "Order Express Casa de Cambio, S.A. de C.V"}, + {"key": "638", "name": "AKALA", "razon_social": "Akala, S.A. de C.V., Sociedad Financiera Popular"}, + {"key": "640", "name": "CB JPMORGAN", "razon_social": "J.P. Morgan Casa de Bolsa, S.A. de C.V. J.P. Morgan Grupo Financiero"}, + {"key": "642", "name": "REFORMA", "razon_social": "Operadora de Recursos Reforma, S.A. de C.V., S.F.P."}, + {"key": "646", "name": "STP", "razon_social": "Sistema de Transferencias y Pagos STP, S.A. de C.V.SOFOM ENR"}, + {"key": "647", "name": "TELECOMM", "razon_social": "Telecomunicaciones de México"}, + {"key": "648", "name": "EVERCORE", "razon_social": "Evercore Casa de Bolsa, S.A. de C.V."}, + {"key": "649", "name": "SKANDIA", "razon_social": "Skandia Operadora de Fondos, S.A. de C.V."}, + {"key": "651", "name": "SEGMTY", "razon_social": "Seguros Monterrey New York Life, S.A de C.V"}, + {"key": "652", "name": "ASEA", "razon_social": "Solución Asea, S.A. de C.V., Sociedad Financiera Popular"}, + {"key": "653", "name": "KUSPIT", "razon_social": "Kuspit Casa de Bolsa, S.A. de C.V."}, + {"key": "655", "name": "SOFIEXPRESS", "razon_social": "J.P. SOFIEXPRESS, S.A. de C.V., S.F.P."}, + {"key": "656", "name": "UNAGRA", "razon_social": "UNAGRA, S.A. de C.V., S.F.P."}, + {"key": "659", "name": "OPCIONES EMPRESARIALES DEL NOROESTE", "razon_social": "OPCIONES EMPRESARIALES DEL NORESTE, S.A. DE C.V., S.F.P."}, + {"key": "670", "name": "LIBERTAD", "razon_social": "Libertad Servicios Financieros, S.A. De C.V."}, + {"key": "901", "name": "CLS", "razon_social": "Cls Bank International"}, + {"key": "902", "name": "INDEVAL", "razon_social": "SD. Indeval, S.A. de C.V."}, + {"key": "999", "name": "N/A"} + ] +}, { "tabla": "SATUsoCfdi", "datos": [ diff --git a/source/static/js/controller/admin.js b/source/static/js/controller/admin.js index 408e280..3e5d159 100644 --- a/source/static/js/controller/admin.js +++ b/source/static/js/controller/admin.js @@ -26,6 +26,7 @@ var controllers = { 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) + $$('grid_admin_bancos').attachEvent('onCheck', grid_admin_bancos_on_check) //~ Opciones tb_options = $$('tab_options').getTabbar() tb_options.attachEvent('onChange', tab_options_change) @@ -217,6 +218,7 @@ function get_admin_impuestos(){ }) } + function get_admin_monedas(){ webix.ajax().sync().get('/values/allcurrencies', function(text, data){ var values = data.json() @@ -226,6 +228,15 @@ function get_admin_monedas(){ } +function get_admin_bancos(){ + webix.ajax().sync().get('/values/allbancos', function(text, data){ + var values = data.json() + $$('grid_admin_bancos').clearAll() + $$('grid_admin_bancos').parse(values, 'json') + }) +} + + function get_config_values(opt){ if(opt == undefined){ return @@ -754,10 +765,10 @@ function tab_options_change(nv, ov){ function tab_sat_change(nv, ov){ - //~ show(nv) - if(nv = 'Monedas'){ + if(nv == 'Monedas'){ get_admin_monedas() - return + }else if(nv == 'Bancos'){ + get_admin_bancos() } } @@ -792,3 +803,19 @@ function grid_admin_monedas_on_check(row, column, state){ } }) } + + +function grid_admin_bancos_on_check(row, column, state){ + + var values = { + id: row, + field: column, + value: state, + } + webix.ajax().get('/values/bancoupdate', 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 5a81982..52a59f3 100644 --- a/source/static/js/ui/admin.js +++ b/source/static/js/ui/admin.js @@ -388,6 +388,15 @@ var grid_admin_monedas_cols = [ ] +var grid_admin_bancos_cols = [ + {id: 'id', header: 'ID', hidden: true}, + {id: 'key', header: 'Clave', footer: {content: 'rowCount', css: 'right'}}, + {id: 'name', header: 'Nombre', adjust: 'data', footer: 'Bancos'}, + {id: 'activo', header: 'Activo', template: '{common.checkbox()}', + editor: 'checkbox'}, +] + + var grid_admin_taxes = { view: 'datatable', id: 'grid_admin_taxes', @@ -414,6 +423,19 @@ var grid_admin_monedas = { } +var grid_admin_bancos = { + view: 'datatable', + id: 'grid_admin_bancos', + select: 'cell', + multiselect: true, + adjust: true, + autowidth: true, + headermenu: true, + footer: true, + columns: grid_admin_bancos_cols +} + + var msg_tax = 'Activa los impuestos que uses. El predeterminado se muestra primero' var sat_impuestos = [ {maxHeight: 20}, @@ -422,6 +444,7 @@ 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}, @@ -431,6 +454,15 @@ var sat_monedas = [ {}] +var msg_bancos = 'Activa los bancos que uses.' +var sat_bancos = [ + {maxHeight: 20}, + {cols: [{maxWidth: 15}, {view: 'label', label: msg_bancos}, {}]}, + {maxHeight: 20}, + {cols: [{maxWidth: 15}, grid_admin_bancos, {}]} +] + + var tab_sat = { view: 'tabview', id: 'tab_sat', @@ -438,13 +470,15 @@ var tab_sat = { tabbar: {options: [ 'Impuestos', 'Monedas', - 'Unidades']}, + 'Bancos', + 'Unidades' + ]}, animate: true, cells: [ {id: 'Impuestos', rows: sat_impuestos}, {id: 'Monedas', rows: sat_monedas}, + {id: 'Bancos', rows: sat_bancos}, {id: 'Unidades', rows: [{}]}, - {}, ] }