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 b839450
Show file tree
Hide file tree
Showing 3 changed files with 80 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
50 changes: 50 additions & 0 deletions l10n_uy_edi/tests/test_adendas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
##############################################################################
# For copyright and license notices, see __manifest__.py file in module root
# directory
##############################################################################
from odoo.tests import common
from odoo import fields
from unittest.mock import patch


class TestL10nUyCurrencyUpdate(common.TransactionCase):

# Creamos este test para los formatos de parametros de reporte


def setUp(self):

company = self.company_id
lang = self.env['res.lang'].search([['code', '=', 'en_US']])
content = """
Estimated Net Weight: 25.995,00 Kg
Estimated Gross Weight: 26.774,850 Kg
In 1 x 40 reef
BL Nº: TBI
SHIPPER / MANUFACTURER: C.VALE - COOPERATIVA AGROINDUSTRIAL (SIF 3300)
AV. ARIOSVALDO BITENCOURT, 2000 CENTRO 85950000, PALOTINA - BRASIL
MEANS OF TRANSPORTATION: Sea
ORIGIN: Brazil
PORT OF LOADING: Paranagua - Brazil
PORT OF DISCHARGE: Cebu - Philippines
SHIPMENT DATE: September, 2024
SALE TERMS: CNF (COST AND FREIGHT) Insurance under responsibility of the buyer
TERMS OF PAYMENT: 100% TT Against copy of original documents
"""
adenda = self.env['l10n.uy.adenda'].create({
'name': 'Adenda Test pruebas',
'legend_type': 'adenda',
'company_id': company.id,
'apply_on': 'account.move',
'content': content
})
partner = self.env['res.partner'].create({
'name': 'Partner Test Adenda',
'lang': lang.code
})

def reportparams_adenda_test(self):

0 comments on commit b839450

Please sign in to comment.