From e292ba88b82bceffcb0cfa26bc0f543943c3eeec Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Sat, 16 Feb 2019 22:07:19 -0600 Subject: [PATCH] Mejora #329 --- source/app/controllers/util.py | 41 ++++++++++++++++++++++++-- source/app/models/main.py | 7 +++-- source/templates/plantilla_nomina.ods | Bin 0 -> 27453 bytes 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 source/templates/plantilla_nomina.ods diff --git a/source/app/controllers/util.py b/source/app/controllers/util.py index e68a175..f4c2e2b 100644 --- a/source/app/controllers/util.py +++ b/source/app/controllers/util.py @@ -1325,6 +1325,7 @@ class LIBO(object): def pdf(self, path, data, ods=False): options = {'AsTemplate': True, 'Hidden': True} log.debug('Abrir plantilla...') + self._template = self._doc_open(path, options) if self._template is None: return b'' @@ -1471,7 +1472,16 @@ class LIBO(object): return {}, msg data = tuple([r[2:] for r in rows[:count+2]]) - return data, '' + + sheet = doc.Sheets['Deducciones'] + notes = sheet.getAnnotations() + new_titles = {} + for n in notes: + col = n.getPosition().Column - 2 + if data[0][col] == '004': + new_titles[col] = n.getString() + + return data, new_titles, '' def _get_otros_pagos(self, doc, count): rows, msg = self._get_data(doc, 'OtrosPagos') @@ -1535,7 +1545,7 @@ class LIBO(object): doc.close(True) return {}, msg - deducciones, msg = self._get_deducciones(doc, len(nomina)) + deducciones, new_titles, msg = self._get_deducciones(doc, len(nomina)) if msg: doc.close(True) return {}, msg @@ -1561,6 +1571,28 @@ class LIBO(object): return {}, msg doc.close(True) + + rows = len(nomina) + 2 + + if rows != len(percepciones): + msg = 'Cantidad de filas incorrecta en: Percepciones' + return {}, msg + if rows != len(deducciones): + msg = 'Cantidad de filas incorrecta en: Deducciones' + return {}, msg + if rows != len(otros_pagos): + msg = 'Cantidad de filas incorrecta en: Otros Pagos' + return {}, msg + if rows != len(separacion): + msg = 'Cantidad de filas incorrecta en: SeparaciĆ³n' + return {}, msg + if rows != len(horas_extras): + msg = 'Cantidad de filas incorrecta en: Horas Extras' + return {}, msg + if rows != len(incapacidades): + msg = 'Cantidad de filas incorrecta en: Incapacidades' + return {}, msg + data['nomina'] = nomina data['percepciones'] = percepciones data['deducciones'] = deducciones @@ -1568,6 +1600,7 @@ class LIBO(object): data['separacion'] = separacion data['horas_extras'] = horas_extras data['incapacidades'] = incapacidades + data['new_titles'] = new_titles return data, '' @@ -1590,11 +1623,13 @@ class LIBO(object): def to_pdf(data, emisor_rfc, ods=False, pdf_from='1'): rfc = data['emisor']['rfc'] + default = 'plantilla_factura.ods' if DEBUG: rfc = emisor_rfc version = data['comprobante']['version'] if 'nomina' in data and data['nomina']: version = '{}_{}'.format(data['nomina']['version'], version) + default = 'plantilla_nomina.ods' pagos = '' if data.get('pagos', False): @@ -1611,7 +1646,7 @@ def to_pdf(data, emisor_rfc, ods=False, pdf_from='1'): if data['donativo']: donativo = '_donativo' name = '{}_{}{}{}.ods'.format(rfc.lower(), pagos, version, donativo) - path = get_template_ods(name) + path = get_template_ods(name, default) if path: return app.pdf(path, data, ods) diff --git a/source/app/models/main.py b/source/app/models/main.py index 01d0236..fd8e180 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -7638,7 +7638,6 @@ class CfdiNomina(BaseModel): data['fecha_pago'] = util.calc_to_date(row['fecha_pago']) data['fecha_inicial_pago'] = util.calc_to_date(row['fecha_inicial_pago']) data['fecha_final_pago'] = util.calc_to_date(row['fecha_final_pago']) - # ~ data['dias_pagados'] = util.get_days(data['fecha_inicial_pago'], data['fecha_final_pago']) data['dias_pagados'] = days_pay return data, '' @@ -7691,7 +7690,7 @@ class CfdiNomina(BaseModel): return data, totals, '' - def _validate_deducciones(self, headers, row): + def _validate_deducciones(self, headers, row, new_titles): total_retenciones = 0.0 total_otras_deducciones = 0.0 @@ -7717,6 +7716,7 @@ class CfdiNomina(BaseModel): new = { 'tipo_deduccion': td, 'importe': importe, + 'concepto': new_titles.get(i, ''), } data.append(new) @@ -7880,6 +7880,7 @@ class CfdiNomina(BaseModel): separacion = data['separacion'][2:] horas_extras = data['horas_extras'][2:] incapacidades = data['incapacidades'][2:] + new_titles = data['new_titles'] for i, row in enumerate(data['nomina']): row['lugar_expedicion'] = emisor.cp_expedicion or emisor.codigo_postal @@ -7901,7 +7902,7 @@ class CfdiNomina(BaseModel): continue new_deducciones, total_deducciones, msg = \ - self._validate_deducciones(self, hd, deducciones[i]) + self._validate_deducciones(self, hd, deducciones[i], new_titles) if msg: util.log_file('nomina', msg) continue diff --git a/source/templates/plantilla_nomina.ods b/source/templates/plantilla_nomina.ods new file mode 100644 index 0000000000000000000000000000000000000000..3f344fdb017a947949472b4c36fa55c7250f429f GIT binary patch literal 27453 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 Kn{xz^nLlz97Its=QI#>IYrPhbj`3BK$O5yj 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