From bb90b3f6d7ab342946b4f3516f546b95e00b17b1 Mon Sep 17 00:00:00 2001 From: El Mau Date: Tue, 21 Dec 2021 23:01:44 -0600 Subject: [PATCH] Nuevos controles para carta porte --- CHANGELOG.md | 19 ++++++ VERSION | 2 +- source/app/controllers/cfdi_xml.py | 6 ++ source/app/models/main.py | 2 +- source/app/settings.py | 2 +- source/static/js/controller/invoices.js | 7 +++ source/static/js/ui/invoices.js | 77 +++++++++++++++++++++++++ 7 files changed, 112 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77c45ee..341e3ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,22 @@ +v 1.44.0 [00-Dic-2021] +---------------------- + - Soporte para Carta Porte v2 + +* IMPORTANTE: + +Es necesario hacer una migración: + +``` +git pull origin master + +cd source/app/models + +python main.py -bk + +python main.py -m -r RFC +``` + + v 1.43.0 [12-Dic-2021] ---------------------- - Soporte para entradas de almacen. diff --git a/VERSION b/VERSION index ed81e4f..a57c16f 100644 --- a/VERSION +++ b/VERSION @@ -1,2 +1,2 @@ -1.43.0 +1.44.0 diff --git a/source/app/controllers/cfdi_xml.py b/source/app/controllers/cfdi_xml.py index 5327d9d..57039ab 100644 --- a/source/app/controllers/cfdi_xml.py +++ b/source/app/controllers/cfdi_xml.py @@ -96,6 +96,12 @@ SAT = { 'xmlns': 'http://www.sat.gob.mx/leyendasFiscales', 'schema': ' http://www.sat.gob.mx/leyendasFiscales http://www.sat.gob.mx/sitio_internet/cfd/leyendasFiscales/leyendasFisc.xsd', }, + 'cartaporte': { + 'version': '2.0', + 'prefix': 'cartaporte20', + 'xmlns': 'http://www.sat.gob.mx/CartaPorte20', + 'schema': ' http://www.sat.gob.mx/CartaPorte20 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsd', + } } diff --git a/source/app/models/main.py b/source/app/models/main.py index 50f4ff6..efa15b4 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -341,6 +341,7 @@ def config_timbrar(): 'cfdi_anticipo': Configuracion.get_('chk_config_anticipo'), 'cfdi_ine': Configuracion.get_bool('chk_config_ine'), 'cfdi_edu': Configuracion.get_bool('chk_config_edu'), + 'cfdi_carta_porte': Configuracion.get_bool('chk_config_carta_porte'), 'cfdi_divisas': Configuracion.get_bool('chk_config_divisas'), 'cfdi_metodo_pago': Configuracion.get_bool('chk_config_ocultar_metodo_pago'), 'cfdi_condicion_pago': Configuracion.get_bool('chk_config_ocultar_condiciones_pago'), @@ -5378,7 +5379,6 @@ class Facturas(BaseModel): comprobante['Fecha'] = invoice.fecha.isoformat()[:19] comprobante['FormaPago'] = invoice.forma_pago comprobante['NoCertificado'] = certificado.serie - # ~ comprobante['Certificado'] = certificado.cer_txt comprobante['SubTotal'] = FORMAT.format(invoice.subtotal) comprobante['Moneda'] = invoice.moneda comprobante['TipoCambio'] = '1' diff --git a/source/app/settings.py b/source/app/settings.py index be6edf0..d4a7804 100644 --- a/source/app/settings.py +++ b/source/app/settings.py @@ -42,7 +42,7 @@ except ImportError: DEBUG = DEBUG -VERSION = '1.43.0' +VERSION = '1.44.0' EMAIL_SUPPORT = ('soporte@empresalibre.mx',) TITLE_APP = '{} v{}'.format(TITLE_APP, VERSION) diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index 8f7be01..3f2dfd9 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -212,8 +212,15 @@ function default_config(){ get_leyendas_fiscales() $$('tv_invoice').getTabbar().showOption('Leyendas Fiscales') } + if(!values.cfdi_carta_porte){ + $$('tv_invoice').getTabbar().hideOption('Carta Porte') + }else{ + get_leyendas_fiscales() + $$('tv_invoice').getTabbar().showOption('Carta Porte') + } cfg_invoice['leyendasfiscales'] = values.cfdi_leyendasfiscales cfg_invoice['edu'] = values.cfdi_edu + cfg_invoice['carta_porte'] = values.cfdi_carta_porte cfg_invoice['open_pdf'] = values.cfdi_open_pdf cfg_invoice['tax_locales'] = values.cfdi_tax_locales cfg_invoice['tax_decimals'] = values.cfdi_tax_decimals diff --git a/source/static/js/ui/invoices.js b/source/static/js/ui/invoices.js index 983e0c1..ec4fc99 100644 --- a/source/static/js/ui/invoices.js +++ b/source/static/js/ui/invoices.js @@ -820,6 +820,7 @@ var grid_leyendas_fiscales = { columns: grid_cols_leyendas_fiscales, } + var controls_leyendas_fiscales = [ {maxHeight: 15}, {cols: [{maxWidth: 15}, @@ -830,6 +831,81 @@ var controls_leyendas_fiscales = [ ] +var opt_transporte_internacional = [ + {id: 'Sí', value: 'Sí'}, + {id: 'No', value: 'No'}, +] + + +var opt_entrada_salida = [ + {id: '', value: ''}, + {id: 'Entrada', value: 'Entrada'}, + {id: 'Salida', value: 'Salida'}, +] + + +var grid_cols_carta_ubicaciones = [ + {id: 'id', header: 'ID', hidden: true}, + {id: 'TipoUbicacion', header: 'Tipo de Ubicación', fillspace: 1}, + {id: 'IDUbicacion', header: 'ID Ubicación', fillspace: 1}, + {id: 'RFCRemitenteDestinatario', header: 'RFC Rem/Des', fillspace: 1}, + {id: 'NombreRemitenteDestinatario', header: 'Nombre Rem/Des', fillspace: 1}, +] + + +var grid_carta_ubicaciones = { + view: 'datatable', + id: 'grid_carta_ubicaciones', + select: 'row', + multiselect: false, + adjust: true, + autoheight: true, + headermenu: true, + columns: grid_cols_carta_ubicaciones, +} + + +var body_carta_ubicaciones = {rows:[ + grid_carta_ubicaciones, +]} + + +var controls_carta_porte = [ + {cols: [{maxWidth: 15}, + {view: 'checkbox', id: 'chk_cfdi_usar_cartaporte', labelWidth: 0, + labelRight: 'Usar el complemento Carta Porte'}, + {}]}, + {cols: [{maxWidth: 15}, + {view: 'richselect', id: 'lst_carta_TranspInternac', labelPosition: 'top', + label: 'Transporte Internacional', options: opt_transporte_internacional, + value: 'No'}, + {view: 'richselect', id: 'lst_carta_EntradaSalidaMerc', labelPosition: 'top', + label: 'Entrada o Salida', options: opt_entrada_salida, + value: ''}, + {view: 'richselect', id: 'lst_carta_PaisOrigenDestino', labelPosition: 'top', + label: 'País Origen/Destino', options: [], + value: ''}, + {view: 'richselect', id: 'lst_carta_ViaEntradaSalida', labelPosition: 'top', + label: 'Vía de Entrada o Salida', options: [], + value: ''}, + ]}, + {view: 'fieldset', label: 'Ubicaciones', body: body_carta_ubicaciones}, +] + + +var form_carta_porte = { + type: 'space', + responsive: true, + cols: [{ + view: 'form', + id: 'form_carta_porte', + complexData: true, + scroll: true, + elements: controls_carta_porte, + }] +} + + var controls_invoices = [ { view: 'tabview', @@ -840,6 +916,7 @@ var controls_invoices = [ {id: 'PreFacturas', rows: controls_prefactura}, {id: 'INE', rows: controls_ine}, {id: 'Leyendas Fiscales', rows: controls_leyendas_fiscales}, + {id: 'Carta Porte', rows: [form_carta_porte]}, ] }, ]