This commit is contained in:
Mauricio Baeza 2019-02-16 22:07:19 -06:00
parent 7e73541c96
commit e292ba88b8
3 changed files with 42 additions and 6 deletions

View File

@ -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)

View File

@ -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

Binary file not shown.