forked from elmau/empresa-libre
Mejora #329
This commit is contained in:
parent
7e73541c96
commit
e292ba88b8
|
@ -1325,6 +1325,7 @@ class LIBO(object):
|
||||||
def pdf(self, path, data, ods=False):
|
def pdf(self, path, data, ods=False):
|
||||||
options = {'AsTemplate': True, 'Hidden': True}
|
options = {'AsTemplate': True, 'Hidden': True}
|
||||||
log.debug('Abrir plantilla...')
|
log.debug('Abrir plantilla...')
|
||||||
|
|
||||||
self._template = self._doc_open(path, options)
|
self._template = self._doc_open(path, options)
|
||||||
if self._template is None:
|
if self._template is None:
|
||||||
return b''
|
return b''
|
||||||
|
@ -1471,7 +1472,16 @@ class LIBO(object):
|
||||||
return {}, msg
|
return {}, msg
|
||||||
|
|
||||||
data = tuple([r[2:] for r in rows[:count+2]])
|
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):
|
def _get_otros_pagos(self, doc, count):
|
||||||
rows, msg = self._get_data(doc, 'OtrosPagos')
|
rows, msg = self._get_data(doc, 'OtrosPagos')
|
||||||
|
@ -1535,7 +1545,7 @@ class LIBO(object):
|
||||||
doc.close(True)
|
doc.close(True)
|
||||||
return {}, msg
|
return {}, msg
|
||||||
|
|
||||||
deducciones, msg = self._get_deducciones(doc, len(nomina))
|
deducciones, new_titles, msg = self._get_deducciones(doc, len(nomina))
|
||||||
if msg:
|
if msg:
|
||||||
doc.close(True)
|
doc.close(True)
|
||||||
return {}, msg
|
return {}, msg
|
||||||
|
@ -1561,6 +1571,28 @@ class LIBO(object):
|
||||||
return {}, msg
|
return {}, msg
|
||||||
|
|
||||||
doc.close(True)
|
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['nomina'] = nomina
|
||||||
data['percepciones'] = percepciones
|
data['percepciones'] = percepciones
|
||||||
data['deducciones'] = deducciones
|
data['deducciones'] = deducciones
|
||||||
|
@ -1568,6 +1600,7 @@ class LIBO(object):
|
||||||
data['separacion'] = separacion
|
data['separacion'] = separacion
|
||||||
data['horas_extras'] = horas_extras
|
data['horas_extras'] = horas_extras
|
||||||
data['incapacidades'] = incapacidades
|
data['incapacidades'] = incapacidades
|
||||||
|
data['new_titles'] = new_titles
|
||||||
|
|
||||||
return data, ''
|
return data, ''
|
||||||
|
|
||||||
|
@ -1590,11 +1623,13 @@ class LIBO(object):
|
||||||
|
|
||||||
def to_pdf(data, emisor_rfc, ods=False, pdf_from='1'):
|
def to_pdf(data, emisor_rfc, ods=False, pdf_from='1'):
|
||||||
rfc = data['emisor']['rfc']
|
rfc = data['emisor']['rfc']
|
||||||
|
default = 'plantilla_factura.ods'
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
rfc = emisor_rfc
|
rfc = emisor_rfc
|
||||||
version = data['comprobante']['version']
|
version = data['comprobante']['version']
|
||||||
if 'nomina' in data and data['nomina']:
|
if 'nomina' in data and data['nomina']:
|
||||||
version = '{}_{}'.format(data['nomina']['version'], version)
|
version = '{}_{}'.format(data['nomina']['version'], version)
|
||||||
|
default = 'plantilla_nomina.ods'
|
||||||
|
|
||||||
pagos = ''
|
pagos = ''
|
||||||
if data.get('pagos', False):
|
if data.get('pagos', False):
|
||||||
|
@ -1611,7 +1646,7 @@ def to_pdf(data, emisor_rfc, ods=False, pdf_from='1'):
|
||||||
if data['donativo']:
|
if data['donativo']:
|
||||||
donativo = '_donativo'
|
donativo = '_donativo'
|
||||||
name = '{}_{}{}{}.ods'.format(rfc.lower(), pagos, version, donativo)
|
name = '{}_{}{}{}.ods'.format(rfc.lower(), pagos, version, donativo)
|
||||||
path = get_template_ods(name)
|
path = get_template_ods(name, default)
|
||||||
if path:
|
if path:
|
||||||
return app.pdf(path, data, ods)
|
return app.pdf(path, data, ods)
|
||||||
|
|
||||||
|
|
|
@ -7638,7 +7638,6 @@ class CfdiNomina(BaseModel):
|
||||||
data['fecha_pago'] = util.calc_to_date(row['fecha_pago'])
|
data['fecha_pago'] = util.calc_to_date(row['fecha_pago'])
|
||||||
data['fecha_inicial_pago'] = util.calc_to_date(row['fecha_inicial_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['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
|
data['dias_pagados'] = days_pay
|
||||||
|
|
||||||
return data, ''
|
return data, ''
|
||||||
|
@ -7691,7 +7690,7 @@ class CfdiNomina(BaseModel):
|
||||||
|
|
||||||
return data, totals, ''
|
return data, totals, ''
|
||||||
|
|
||||||
def _validate_deducciones(self, headers, row):
|
def _validate_deducciones(self, headers, row, new_titles):
|
||||||
total_retenciones = 0.0
|
total_retenciones = 0.0
|
||||||
total_otras_deducciones = 0.0
|
total_otras_deducciones = 0.0
|
||||||
|
|
||||||
|
@ -7717,6 +7716,7 @@ class CfdiNomina(BaseModel):
|
||||||
new = {
|
new = {
|
||||||
'tipo_deduccion': td,
|
'tipo_deduccion': td,
|
||||||
'importe': importe,
|
'importe': importe,
|
||||||
|
'concepto': new_titles.get(i, ''),
|
||||||
}
|
}
|
||||||
data.append(new)
|
data.append(new)
|
||||||
|
|
||||||
|
@ -7880,6 +7880,7 @@ class CfdiNomina(BaseModel):
|
||||||
separacion = data['separacion'][2:]
|
separacion = data['separacion'][2:]
|
||||||
horas_extras = data['horas_extras'][2:]
|
horas_extras = data['horas_extras'][2:]
|
||||||
incapacidades = data['incapacidades'][2:]
|
incapacidades = data['incapacidades'][2:]
|
||||||
|
new_titles = data['new_titles']
|
||||||
|
|
||||||
for i, row in enumerate(data['nomina']):
|
for i, row in enumerate(data['nomina']):
|
||||||
row['lugar_expedicion'] = emisor.cp_expedicion or emisor.codigo_postal
|
row['lugar_expedicion'] = emisor.cp_expedicion or emisor.codigo_postal
|
||||||
|
@ -7901,7 +7902,7 @@ class CfdiNomina(BaseModel):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
new_deducciones, total_deducciones, msg = \
|
new_deducciones, total_deducciones, msg = \
|
||||||
self._validate_deducciones(self, hd, deducciones[i])
|
self._validate_deducciones(self, hd, deducciones[i], new_titles)
|
||||||
if msg:
|
if msg:
|
||||||
util.log_file('nomina', msg)
|
util.log_file('nomina', msg)
|
||||||
continue
|
continue
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue