From e2008525f1d3cfa4608bdf05a900e674639b645c Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sun, 26 Nov 2017 00:15:14 -0600 Subject: [PATCH] Complemento INE en PDF --- source/app/controllers/util.py | 26 +++++++++++++++++++++++++ source/app/settings.py | 1 + source/static/js/controller/invoices.js | 8 ++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 5b303c6..a8997a0 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -830,6 +830,14 @@ class LIBO(object): self._set_cell('{donataria.%s}' % k, v) return + def _ine(self, data): + if not data: + return + + for k, v in data.items(): + self._set_cell('{ine.%s}' % k, v) + return + def _render(self, data): self._set_search() self._es_pre = data.pop('es_pre', False) @@ -840,6 +848,7 @@ class LIBO(object): self._totales(data['totales']) self._timbre(data['timbre']) self._donataria(data['donataria']) + self._ine(data['ine']) self._cancelado(data['cancelada']) self._clean() return @@ -1124,6 +1133,22 @@ def _donataria(doc, version, fechadof): return data +def _ine(doc, version): + node = doc.find('{}Complemento/{}INE'.format(PRE[version], PRE['INE'])) + if node is None: + return {} + + values = ( + ('TipoComite', 'Tipo de Comite: {}'), + ('TipoProceso', 'Tipo de Proceso: {}'), + ('IdContabilidad', 'ID de Contabilidad: {}'), + ) + data = CaseInsensitiveDict(node.attrib.copy()) + for k, v in values: + data[k] = v.format(data[k]) + return data + + def get_data_from_xml(invoice, values): data = {'cancelada': invoice.cancelada, 'donativo': invoice.donativo} doc = parse_xml(invoice.xml) @@ -1134,6 +1159,7 @@ def get_data_from_xml(invoice, values): data['conceptos'] = _conceptos(doc, version) data['totales'] = _totales(doc, data['comprobante'], version) data['donataria'] = _donataria(doc, version, values['fechadof']) + data['ine'] = _ine(doc, version) options = { 'rfc_emisor': data['emisor']['rfc'], diff --git a/source/app/settings.py b/source/app/settings.py index 51f7e4f..58007ca 100644 --- a/source/app/settings.py +++ b/source/app/settings.py @@ -85,6 +85,7 @@ PRE = { '3.3': '{http://www.sat.gob.mx/cfd/3}', 'TIMBRE': '{http://www.sat.gob.mx/TimbreFiscalDigital}', 'DONATARIA': '{http://www.sat.gob.mx/donat}', + 'INE': '{http://www.sat.gob.mx/ine}', 'NOMINA': { '1.1': '{http://www.sat.gob.mx/nomina}', '1.2': '{http://www.sat.gob.mx/nomina12}', diff --git a/source/static/js/controller/invoices.js b/source/static/js/controller/invoices.js index fa51c75..cd96780 100644 --- a/source/static/js/controller/invoices.js +++ b/source/static/js/controller/invoices.js @@ -407,7 +407,7 @@ function save_invoice(data){ success:function(text, data, XmlHttpRequest){ values = data.json(); if(values.ok){ - msg_ok('Factura guardada correctamente. Enviando a timbrar') + msg_ok('Factura guardada correctamente
Enviando a timbrar...') update_grid_invoices(values) gi.select(values.row['id'], false) send_timbrar(values.row['id']) @@ -518,7 +518,7 @@ function guardar_y_timbrar(values){ tipo_relacion = '' anticipo = false $$('chk_cfdi_anticipo').setValue(0) - $$('chk_cfdi_usar_ine').getValue(0) + $$('chk_cfdi_usar_ine').setValue(0) $$('form_invoice').setValues({id_partner: 0, lbl_partner: 'Ninguno'}) $$('multi_invoices').setValue('invoices_home') @@ -547,6 +547,10 @@ function cmd_timbrar_click(id, e, node){ if(anticipo){ msg += 'La factura es Anticipo

' } + usar_ine = $$('chk_cfdi_usar_ine').getValue() + if(usar_ine){ + msg += 'Estas usando el complemento INE

' + } msg += '¿Estás seguro de timbrar esta factura?' webix.confirm({