From 4e323bd13596967cd26a43fb8d31a880d6e5b67b Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Fri, 3 Nov 2017 20:05:19 -0600 Subject: [PATCH] Cargar plantilla 3.3 --- source/app/controllers/util.py | 24 ++++++-- source/app/models/main.py | 14 ++++- source/static/js/controller/admin.js | 75 ++++++++++++++++++++++++- source/static/js/controller/main.js | 1 + source/static/js/controller/products.js | 5 ++ source/static/js/ui/admin.js | 68 ++++++++++++++++++++-- 6 files changed, 175 insertions(+), 12 deletions(-) diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index cbb7a7b..54bc86d 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -61,9 +61,12 @@ def save_temp(data, modo='wb'): def save_file(path, data, modo='wb'): - with open(path, modo) as f: - f.write(data) - return + try: + with open(path, modo) as f: + f.write(data) + return True + except: + return False def _join(*paths): @@ -1092,9 +1095,18 @@ def upload_file(rfc, opt, file_obj): tmp = file_obj.filename.split('.') name = '{}.{}'.format(rfc.lower(), tmp[-1].lower()) path = _join(PATH_MEDIA, 'logos', name) - print (path) - save_file(path, file_obj.file.read()) - return {'status': 'server', 'name': file_obj.filename} + elif opt == 'txt_plantilla_factura_33': + tmp = file_obj.filename.split('.') + ext = tmp[-1].lower() + if ext != 'ods': + msg = 'Extensión de archivo incorrecta, selecciona un archivo ODS' + return {'status': 'server', 'name': msg, 'ok': False} + + name = '{}_3.3.ods'.format(rfc.lower()) + path = _join(PATH_MEDIA, 'templates', name) + + if save_file(path, file_obj.file.read()): + return {'status': 'server', 'name': file_obj.filename, 'ok': True} return {'status': 'error'} diff --git a/source/app/models/main.py b/source/app/models/main.py index 40c6a31..aa434aa 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -61,7 +61,10 @@ def desconectar(): def upload_file(rfc, opt, file_obj): - return util.upload_file(rfc, opt, file_obj) + result = util.upload_file(rfc, opt, file_obj) + if result['ok']: + Configuracion.add({opt: file_obj.filename}) + return result class Configuracion(BaseModel): @@ -87,6 +90,15 @@ class Configuracion(BaseModel): .select() .where(Configuracion.clave.in_(fields)) ) + elif keys['fields'] == 'templates': + fields = ( + 'txt_plantilla_factura_32', + 'txt_plantilla_factura_33', + 'txt_plantilla_factura_33j') + data = (Configuracion + .select() + .where(Configuracion.clave.in_(fields)) + ) values = {r.clave: r.valor for r in data} return values diff --git a/source/static/js/controller/admin.js b/source/static/js/controller/admin.js index 7185d3f..7c2933b 100644 --- a/source/static/js/controller/admin.js +++ b/source/static/js/controller/admin.js @@ -1,4 +1,5 @@ var msg = '' +var tb_options = null var controllers = { @@ -19,6 +20,10 @@ var controllers = { $$('cmd_probar_correo').attachEvent('onItemClick', cmd_probar_correo_click) $$('cmd_guardar_correo').attachEvent('onItemClick', cmd_guardar_correo_click) $$('emisor_logo').attachEvent('onItemClick', emisor_logo_click) + //~ Opciones + tb_options = $$('tab_options').getTabbar() + tb_options.attachEvent('onChange', tab_options_change) + $$('txt_plantilla_factura_33').attachEvent('onItemClick', txt_plantilla_factura_33_click) } } @@ -194,7 +199,26 @@ function get_config_correo(){ form.setValues(values) } }) +} + +function get_config_values(opt){ + if(opt == undefined){ + return + } + + webix.ajax().get('/config', {'fields': opt}, { + error: function(text, data, xhr) { + msg = 'Error al consultar' + msg_error(msg) + }, + success: function(text, data, xhr) { + var values = data.json() + Object.keys(values).forEach(function(key){ + $$(key).setValue(values[key]) + }) + } + }) } @@ -216,6 +240,11 @@ function multi_admin_change(prevID, nextID){ get_config_correo() return } + + if(nextID == 'app_options'){ + get_config_values('templates') + return + } } @@ -592,7 +621,7 @@ function emisor_logo_click(id, e){ var w = webix.ui({ view: 'window', id: 'win_emisor_logo', - modal:true, + modal: true, position: 'center', head: 'Subir logotipo', body: { @@ -611,3 +640,47 @@ function emisor_logo_click(id, e){ } +function txt_plantilla_factura_33_click(e){ + + var body_elements = [ + {cols: [{width: 100}, {view: 'uploader', id: 'up_template', autosend: true, link: 'lst_files', + value: 'Seleccionar archivo', upload: '/files/txt_plantilla_factura_33', + width: 200}, {width: 100}]}, + {view: 'list', id: 'lst_files', type: 'uploader', autoheight:true, + borderless: true}, + {}, + {cols: [{}, {view: 'button', label: 'Cerrar', autowidth: true, + click:("$$('win_template').close();")}, {}]} + ] + + var w = webix.ui({ + view: 'window', + id: 'win_template', + modal: true, + position: 'center', + head: 'Subir Plantilla', + body: { + view: 'form', + elements: body_elements, + } + }) + + w.show() + + $$('up_template').attachEvent('onUploadComplete', function(response){ + if(response.ok){ + $$('txt_plantilla_factura_33').setValue(response.name) + msg_sucess('Plantilla cargada correctamente') + }else{ + msg_error(response.name) + } + }) +} + + +function tab_options_change(nv, ov){ + var cv = { + Plantillas: 'templates', + } + get_config_values(cv[nv]) +} diff --git a/source/static/js/controller/main.js b/source/static/js/controller/main.js index 7d54e0d..db3c2b8 100644 --- a/source/static/js/controller/main.js +++ b/source/static/js/controller/main.js @@ -29,6 +29,7 @@ var controllers = { $$("cmd_cancel_product").attachEvent("onItemClick", cmd_cancel_product_click) $$("chk_automatica").attachEvent("onChange", chk_automatica_change) $$("valor_unitario").attachEvent("onChange", valor_unitario_change) + $$("clave_sat").attachEvent('onSearchIconClick', clave_sat_icon_click) //~ Invoices $$('cmd_new_invoice').attachEvent("onItemClick", cmd_new_invoice_click) $$('cmd_refacturar').attachEvent("onItemClick", cmd_refacturar_click) diff --git a/source/static/js/controller/products.js b/source/static/js/controller/products.js index b63daee..87255ff 100644 --- a/source/static/js/controller/products.js +++ b/source/static/js/controller/products.js @@ -201,3 +201,8 @@ function valor_unitario_change(new_value, old_value){ this.refresh() } } + + +function clave_sat_icon_click(){ + show('Buscar SAT') +} diff --git a/source/static/js/ui/admin.js b/source/static/js/ui/admin.js index 432d7d1..ca4610f 100644 --- a/source/static/js/ui/admin.js +++ b/source/static/js/ui/admin.js @@ -4,11 +4,14 @@ var menu_data = [ {id: 'app_emisor', icon: 'user-circle', value: 'Emisor'}, {id: 'app_folios', icon: 'sort-numeric-asc', value: 'Folios'}, {id: 'app_correo', icon: 'envelope-o', value: 'Correo'}, + {id: 'app_sat', icon: 'table', value: 'Catalogos SAT'}, + {id: 'app_options', icon: 'cog', value: 'Opciones'}, ] -var sidebar = { +var sidebar_admin = { view: 'sidebar', + id: 'sidebar_admin', data: menu_data, ready: function(){ this.select('app_home'); @@ -328,6 +331,40 @@ var form_correo = { } +var options_templates = [ + {maxHeight: 15}, + {cols: [{maxWidth: 15}, + {view: 'search', id: 'txt_plantilla_factura_32', name: 'plantilla_factura_32', + label: 'Plantilla Factura v3.2 (ODT): ', labelPosition: 'top', + icon: 'file'}, {}]}, + {maxHeight: 20}, + {cols: [{maxWidth: 15}, + {view: 'search', id: 'txt_plantilla_factura_33', labelPosition: 'top', + label: 'Plantilla Factura v3.3 (ODT): ', icon: 'file'}, {}]}, + {maxHeight: 20}, + {cols: [{maxWidth: 15}, + {view: 'search', id: 'txt_plantilla_factura_33j', name: 'plantilla_factura_33j', + label: 'Plantilla Factura v3.3 (JSON): ', labelPosition: 'top', + icon: 'file'}, {}]}, +{}] + + +var tab_options = { + view: 'tabview', + id: 'tab_options', + multiview: true, + tabbar: {options: [ + 'Plantillas', + 'Otros']}, + animate: true, + cells: [ + {id: 'Plantillas', rows: options_templates}, + {id: 'Otros', rows: [{}]}, + {}, + ] +} + + var app_emisor = { id: 'app_emisor', rows:[ @@ -367,6 +404,26 @@ var app_correo = { } +var app_sat = { + id: 'app_sat', + rows:[ + {view: 'template', id: 'th_sat', type: 'header', + template: 'Catálogos del SAT'}, + {}, + ] +} + + +var app_options = { + id: 'app_options', + rows:[ + {view: 'template', id: 'th_options', type: 'header', + template: 'Opciones'}, + tab_options, + ] +} + + var multi_admin = { id: 'multi_admin', animate: true, @@ -374,11 +431,13 @@ var multi_admin = { { id: 'app_admin_home', view: 'template', - template: 'HOME' + template: 'Admin Inicio' }, app_emisor, app_folios, app_correo, + app_sat, + app_options, ] } @@ -402,7 +461,8 @@ var ui_admin = { {view: 'toolbar', padding: 3, elements: [ {view: 'button', type: 'icon', icon: 'bars', width: 37, align: 'left', css: 'app_button', click: function(){ - $$('$sidebar1').toggle() + //~ $$('$sidebar1').toggle() + $$('sidebar_admin').toggle() } }, {view: 'label', label: 'Empresa Libre - Configuración'}, @@ -413,7 +473,7 @@ var ui_admin = { ]}, { cols:[ - sidebar, + sidebar_admin, multi_admin, ] }