From fd75da65fc65ba1d315d7660fa41266e9437a2b3 Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Thu, 30 Aug 2018 19:24:33 -0500 Subject: [PATCH] Generate PDF from cfdi pay --- source/app/controllers/util.py | 136 ++++++++++++++++++++++++++- source/app/models/main.py | 40 ++++++-- source/app/settings.py | 3 +- source/templates/plantilla_pagos.ods | Bin 26221 -> 31042 bytes 4 files changed, 171 insertions(+), 8 deletions(-) diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index 67426ac..f21dc87 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -320,6 +320,9 @@ def get_template_ods(name, default='plantilla_factura.ods'): if is_file(path): return path + if 'pagos' in name: + default='plantilla_pagos.ods' + path = _join(PATH_TEMPLATES, default) if is_file(path): return path @@ -954,6 +957,9 @@ class LIBO(object): self._set_cell('{total_cantidades}', str(self._total_cantidades)) + if self._pagos: + return + cell_title = self._set_cell('{subtotal.titulo}', 'SubTotal') value = data['subtotal'] cell_value = self._set_cell('{subtotal}', value, value=True) @@ -1150,16 +1156,114 @@ class LIBO(object): return + def _cfdipays(self, data): + related = data.pop('related', []) + for k, v in data.items(): + if k.lower() in ('monto',): + self._set_cell('{pago.%s}' % k, v, value=True) + else: + self._set_cell('{pago.%s}' % k, v) + + col1 = [] + col2 = [] + col3 = [] + col4 = [] + col5 = [] + col6 = [] + col7 = [] + col8 = [] + col9 = [] + count = len(related) + for i, doc in enumerate(related): + uuid = doc['IdDocumento'].upper() + serie = doc['Serie'] + folio = doc['Folio'] + metodo_pago = doc['MetodoDePagoDR'] + moneda = doc['MonedaDR'] + parcialidad = doc['NumParcialidad'] + saldo_anterior = doc['ImpSaldoAnt'] + importe_pagado = doc['ImpPagado'] + saldo_insoluto = doc['ImpSaldoInsoluto'] + if i == 0: + cell_1 = self._set_cell('{doc.uuid}', uuid) + cell_2 = self._set_cell('{doc.serie}', serie) + cell_3 = self._set_cell('{doc.folio}', folio) + cell_4 = self._set_cell('{doc.metodopago}', metodo_pago) + cell_5 = self._set_cell('{doc.moneda}', moneda) + cell_6 = self._set_cell('{doc.parcialidad}', parcialidad) + cell_7 = self._set_cell('{doc.saldoanterior}', saldo_anterior, value=True) + cell_8 = self._set_cell('{doc.importepagado}', importe_pagado, value=True) + cell_9 = self._set_cell('{doc.saldoinsoluto}', saldo_insoluto, value=True) + else: + col1.append((uuid,)) + col2.append((serie,)) + col3.append((folio,)) + col4.append((metodo_pago,)) + col5.append((moneda,)) + col6.append((parcialidad,)) + col7.append((float(saldo_anterior),)) + col8.append((float(importe_pagado),)) + col9.append((float(saldo_insoluto),)) + + if count == 1: + return + + count -= 1 + row1 = cell_1.getCellAddress().Row + 1 + row2 = row1 + count - 1 + self._sheet.getRows().insertByIndex(row1, count) + self._copy_paste_rows(cell_1, count) + + # ~ style_7 = self._get_style(cell_7) + # ~ style_8 = self._get_style(cell_8) + # ~ style_9 = self._get_style(cell_9) + + col = cell_1.getCellAddress().Column + target1 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_2.getCellAddress().Column + target2 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_3.getCellAddress().Column + target3 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_4.getCellAddress().Column + target4 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_5.getCellAddress().Column + target5 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_6.getCellAddress().Column + target6 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_7.getCellAddress().Column + target7 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_8.getCellAddress().Column + target8 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + col = cell_9.getCellAddress().Column + target9 = self._sheet.getCellRangeByPosition(col, row1, col, row2) + + target1.setFormulaArray(tuple(col1)) + target2.setDataArray(tuple(col2)) + target3.setFormulaArray(tuple(col3)) + target4.setDataArray(tuple(col4)) + target5.setDataArray(tuple(col5)) + target6.setDataArray(tuple(col6)) + target7.setDataArray(tuple(col7)) + target8.setDataArray(tuple(col8)) + target9.setDataArray(tuple(col9)) + + return + def _render(self, data): self._set_search() self._es_pre = data.pop('es_pre', False) self._is_ticket = data.pop('is_ticket', False) self._currency = data['totales']['moneda'] + self._pagos = data.pop('pagos', False) self._comprobante(data['comprobante']) self._emisor(data['emisor']) self._receptor(data['receptor']) self._conceptos(data['conceptos']) + + if self._pagos: + self._cfdipays(data['pays']) + if 'nomina' in data and data['nomina']: self._nomina(data['nomina']) else: @@ -1167,6 +1271,7 @@ class LIBO(object): self._timbre(data['timbre']) self._donataria(data['donataria']) self._ine(data['ine']) + self._cancelado(data['cancelada']) self._clean() return @@ -1444,13 +1549,17 @@ def to_pdf(data, emisor_rfc, ods=False): if 'nomina' in data and data['nomina']: version = '{}_{}'.format(data['nomina']['version'], version) + pagos = '' + if data.get('pagos', False): + pagos = '_pagos_' + if APP_LIBO: app = LIBO() if app.is_running: donativo = '' if data['donativo']: donativo = '_donativo' - name = '{}_{}{}.ods'.format(rfc.lower(), version, donativo) + name = '{}_{}{}{}.ods'.format(rfc.lower(), pagos, version, donativo) path = get_template_ods(name) if path: return app.pdf(path, data, ods) @@ -1553,6 +1662,7 @@ def _comprobante(doc, options): 'I': 'ingreso', 'E': 'egreso', 'T': 'traslado', + 'P': 'pago', } data['tipodecomprobante'] = tipos.get(data['tipodecomprobante']) data['lugarexpedicion'] = \ @@ -1854,6 +1964,27 @@ def _nomina(doc, data, values, version_cfdi): return info +def _cfdipays(doc, data, version): + node = doc.find('{}Complemento/{}Pagos'.format(PRE[version], PRE['pagos'])) + if node is None: + return {} + + info = CaseInsensitiveDict(node.attrib.copy()) + related = [] + for n1 in node: + info.update(CaseInsensitiveDict(n1.attrib.copy())) + for n2 in n1: + related.append(CaseInsensitiveDict(n2.attrib.copy())) + + info['related'] = related + + data['comprobante']['totalenletras'] = to_letters( + float(info['monto']), info['monedap']) + data['comprobante']['moneda'] = info['monedap'] + + return info + + def get_data_from_xml(invoice, values): data = {'cancelada': invoice.cancelada, 'donativo': False} if hasattr(invoice, 'donativo'): @@ -1878,6 +2009,9 @@ def get_data_from_xml(invoice, values): data['comprobante'].update(data['timbre']) data['nomina'] = _nomina(doc, data, values, version) + data['pagos'] = values.get('pagos', False) + if data['pagos']: + data['pays'] = _cfdipays(doc, data, version) return data diff --git a/source/app/models/main.py b/source/app/models/main.py index 0e9a0f6..7778e03 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -5364,7 +5364,7 @@ class CfdiPagos(BaseModel): Facturas.folio.alias('Folio'), Facturas.moneda.alias('MonedaDR'), # ~ Facturas.tipo_cambio.alias('TipoCambioDR'), - Facturas.metodo_pago.alias('MetodoDePagoDR'), + # ~ Facturas.metodo_pago.alias('MetodoDePagoDR'), FacturasPagos.numero.alias('NumParcialidad'), FacturasPagos.saldo_anterior.alias('ImpSaldoAnt'), FacturasPagos.importe.alias('ImpPagado'), @@ -5379,6 +5379,7 @@ class CfdiPagos(BaseModel): r['Folio'] = str(r['Folio']) r['NumParcialidad'] = str(r['NumParcialidad']) # ~ r['TipoCambioDR'] = FORMAT.format(r['TipoCambioDR']) + r['MetodoDePagoDR'] = 'PDD' r['ImpSaldoAnt'] = FORMAT.format(r['ImpSaldoAnt']) r['ImpPagado'] = FORMAT.format(r['ImpPagado']) r['ImpSaldoInsoluto'] = FORMAT.format(r['ImpSaldoInsoluto']) @@ -5523,6 +5524,32 @@ class CfdiPagos(BaseModel): name = '{}{}_{}.xml'.format(obj.serie, folio, obj.socio.rfc) return obj.xml, name + def _get_not_in_xml(self, invoice, emisor): + values = {} + + values['notas'] = invoice.notas + values['fechadof'] = None + + obj = SATRegimenes.get(SATRegimenes.key==invoice.regimen_fiscal) + values['regimenfiscal'] = str(obj) + + obj = SATUsoCfdi.get(SATUsoCfdi.key=='P01') + values['usocfdi'] = str(obj) + + values['moneda'] = 'XXX' + + if invoice.tipo_relacion: + obj = SATTipoRelacion.get(SATTipoRelacion.key==invoice.tipo_relacion) + values['tiporelacion'] = str(obj) + + receptor = Socios.select().where(Socios.id==invoice.socio.id).dicts()[0] + values['receptor'] = {} + for k, v in receptor.items(): + values['receptor'][k] = v + + values['pagos'] = True + return values + @classmethod def get_file_pdf(cls, id): try: @@ -5537,12 +5564,13 @@ class CfdiPagos(BaseModel): if obj.uuid is None: return b'', name - # ~ values = cls._get_not_in_xml(cls, obj, emisor) - data = util.get_data_from_xml(obj, {}) - print(data) - # ~ doc = util.to_pdf(data, emisor.rfc) + values = cls._get_not_in_xml(cls, obj, emisor) + data = util.get_data_from_xml(obj, values) + obj = SATFormaPago.get(SATFormaPago.key==data['pays']['FormaDePagoP']) + data['pays']['formadepago'] = '{} ({})'.format(obj.name, obj.key) + doc = util.to_pdf(data, emisor.rfc) - return b'', name + return doc, name @classmethod def get_values(cls, values): diff --git a/source/app/settings.py b/source/app/settings.py index 1914484..d94ec16 100644 --- a/source/app/settings.py +++ b/source/app/settings.py @@ -132,7 +132,8 @@ PRE = { 'NOMINA': { '1.1': '{http://www.sat.gob.mx/nomina}', '1.2': '{http://www.sat.gob.mx/nomina12}', - } + }, + 'pagos': '{http://www.sat.gob.mx/Pagos}', } CURRENT_CFDI = '3.3' diff --git a/source/templates/plantilla_pagos.ods b/source/templates/plantilla_pagos.ods index 8061850ae6e54ef7ddd969de9a9818e6591e10b9..975e9a7aaa09c31a5afce50f491d9771330bf1f0 100644 GIT binary patch delta 23052 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