Skip to content

Commit

Permalink
[FIX] l10n_uy_edi: Fix en el manejo de formatos de reporte
Browse files Browse the repository at this point in the history
Ticket: 80829
  • Loading branch information
mem-adhoc authored and docker-odoo committed Oct 7, 2024
1 parent 32dfe55 commit f684e80
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 15 deletions.
41 changes: 26 additions & 15 deletions l10n_uy_edi/models/l10n_uy_cfe.py
Original file line number Diff line number Diff line change
Expand Up @@ -1430,17 +1430,31 @@ def _l10n_uy_get_cfe_referencia(self):
return res

def _get_report_params(self):
# En caso de que el contenido de las adendas sea mayor a 799 caracteres, la adenda se imprimira en
# la segunda pagina de forma automatica, caso contrario, el cliente podra elegir el tipo de reporte que quiera
# Si no elige ningun tipo de reporte, se imprimira el default de uruware
""" Modificamos para que al generar el PDF no genere el formato standard sino lo genere tomando en cuenta
lo siguiente:
1. En caso que el cliente tenga definido un reporte en los ajustes de sistema, sea porque tenga un reporte
personalizado o preferencia de imprimir algún otro formato,
2. En caso de que el comprobante tenga adendas con textos muy largos (mayor a 799 caracteres) si imprime
el formato standard va a hacer que salga cortada. en este caso si vemos que algun comprobante cumple
esta condición entonces la adenda se imprimira en una pagina separada (adenda en segunda pagina -
es un formato disponible en uruware)
3. En caso de que el documento sea un e-ticket o e-factura expo o sus respectivas NC y ND se fijara si
el partner de la factura tiene definido algun lenguaje != español: de ser asi imprime el reporte tanto en
español como en ingles (tambien es un formato disponible en uruware) """
adenda = self._l10n_uy_get_cfe_adenda().get('Adenda')
if adenda and len(adenda) > 799:
report_params = [['adenda'],['true']]
else:
#En caso de que el cliente eliga el reporte que quiere imprimir
report_params = safe_eval.safe_eval(self.company_id.l10n_uy_report_params or '[]')

return report_params
report_params = safe_eval.safe_eval(self.company_id.l10n_uy_report_params or '[]')
nombreParametros = report_params[0] if report_params else []
valoresParametros = report_params[1] if report_params else []
if adenda and len(adenda.splitlines()) >= 5 and 'adenda' not in nombreParametros:
nombreParametros.append('adenda')
valoresParametros.append('true')
if self.l10n_latam_document_type_id.code in ['101', '102', '103', '121', '122', '123'] and \
self.partner_id.lang and 'es' not in self.partner_id.lang:
nombreParametros.append('reporte')
valoresParametros.append('ingles')

return nombreParametros, valoresParametros

def action_l10n_uy_get_pdf(self):
""" Call query webservice to print pdf format of the CFE
Expand Down Expand Up @@ -1475,11 +1489,8 @@ def action_l10n_uy_get_pdf(self):
'serieCfe': document_number[0],
'numeroCfe': document_number[1],
}
report_params = self._get_report_params()

if report_params:
nombreParametros = report_params[0]
valoresParametros = report_params[1]
nombreParametros, valoresParametros = self._get_report_params()
if nombreParametros and valoresParametros:
versionPdf = 'ObtenerPdfConParametros'
req_data.update({
'nombreParametros': nombreParametros,
Expand Down
4 changes: 4 additions & 0 deletions l10n_uy_edi/models/res_company.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,10 @@ def _l10n_uy_ucfe_query(self, method, req_data={}, return_transport=False):
res = company._uy_get_client(company.l10n_uy_ucfe_query_url, return_transport=return_transport)
client = res[0] if isinstance(res, tuple) else res
transport = res[1] if isinstance(res, tuple) else False
if req_data.get('nombreParametros') and req_data.get('valoresParametros'):
ArrayOfstring = client.get_type('{http://schemas.microsoft.com/2003/10/Serialization/Arrays}ArrayOfstring')
req_data['nombreParametros'] = ArrayOfstring(req_data.get('nombreParametros'))
req_data['valoresParametros'] = ArrayOfstring(req_data.get('valoresParametros'))
response = client.service[method](**req_data)
return (response, transport) if return_transport else response

Expand Down

0 comments on commit f684e80

Please sign in to comment.