Skip to content

[IMP] l10n_uy_ux, l10n_uy_edi_stock_ux: report product codes in the CFE XML - #441

Open
jue-adhoc wants to merge 1 commit into
ingadhoc:19.0from
adhoc-dev:19.0-t-72672-jue
Open

[IMP] l10n_uy_ux, l10n_uy_edi_stock_ux: report product codes in the CFE XML#441
jue-adhoc wants to merge 1 commit into
ingadhoc:19.0from
adhoc-dev:19.0-t-72672-jue

Conversation

@jue-adhoc

@jue-adhoc jue-adhoc commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Traemos a OBA 19 la mejora propuesta a Odoo (odoo/enterprise#129215, contra master; en 19.0 no la aceptan), para que la imagen no necesite más el l10n_uy_edi parcheado (#128600): el código del producto se informa en su propio bloque <CodItem> del CFE y NomItem queda limpio.

l10n_uy_ux

  • product.product._l10n_uy_edi_get_cod_items(): referencia interna como INT1 (default_code[:35], B3 es ALFA 35 según Formato CFE v24) y código de barras como GTIN13 solo si es un EAN-13 válido (DGI valida el dígito verificador). Mismo nombre que el método propuesto upstream, para que el override sea idempotente y se pueda borrar cuando Odoo lo mergee.
  • Override de _l10n_uy_edi_cfe_B_details: agrega CodItem a cada línea del detalle.
  • Herencia del template l10n_uy_edi.cfe_template: nodos <CodItem> después de <NroLinDet> (render defensivo con .get() por builders de terceros, ej. e-Resguardos).
  • El prefijo [referencia] de NomItem ya lo quita el override de _l10n_uy_edi_get_line_nom_and_desc ([IMP] l10n_uy_ux: strip internal reference prefix from NomItem #440).
  • Tests: test_140_cfe_cod_items; y en test_patch_l10n_uy_edi se adaptan los XML esperados de l10n_uy_edi al comportamiento de ux (la referencia pasa de NomItem a <CodItem>), que con l10n_uy_ux instalado pasan de NomItem a <CodItem>.

l10n_uy_edi_stock_ux

  • Depende ahora de l10n_uy_ux. Override de _l10n_uy_stock_cfe_B_details: CodItem + NomItem sin el prefijo de la referencia (corte [:80] como en facturas). El template de e-Remito reutiliza l10n_uy_edi.cfe_template, así que la herencia lo cubre.
  • Tests nuevos: test_15_delivery_guide_product_codes.

Todo lo agregado lleva TODO 20.0: remove con link al PR de master, porque en 20 es nativo y hay que sacarlo al migrar (incluida la herencia QWeb, que duplicaría <CodItem>).

Secuencia acordada: se quita odoo/enterprise#128600 del aggregate (build de runbot con l10n_uy_edi nativo) → merge de este PR el mismo día → la imagen siguiente sale con esta lógica en ux en lugar del PR de Odoo, sin cambios visibles para el cliente.

Task: https://www.adhoc.inc/odoo/project.task/72672 — Ticket: https://www.adhoc.inc/odoo/helpdesk.ticket/125178

@roboadhoc

Copy link
Copy Markdown
Contributor

Pull request status dashboard

@jue-adhoc
jue-adhoc force-pushed the 19.0-t-72672-jue branch 3 times, most recently from 361555c to 033ef00 Compare August 26, 2026 13:28
…FE XML

Bring to OBA 19 the improvement proposed upstream to odoo/enterprise master
(not accepted in 19.0), so the image no longer needs a patched l10n_uy_edi: the product codes are reported in their own <CodItem> nodes of
the CFE (INT1 for the internal reference, GTIN13 for a valid EAN-13
barcode) and NomItem no longer carries the [reference] prefix.

l10n_uy_ux:
- product.product._l10n_uy_edi_get_cod_items(): same name as the upstream
  method so the override is idempotent and can be dropped once merged.
- Override _l10n_uy_edi_cfe_B_details to add CodItem to each detail line.
- Inherit l10n_uy_edi.cfe_template to render <CodItem> after <NroLinDet>
  (defensive .get() for third-party item builders, e.g. e-Resguardos).
- Tests: test_140_cfe_cod_items; the enterprise expected CFEs are adapted
  in test_patch_l10n_uy_edi (reference moved from NomItem to CodItem,
  idempotent so it works with or without the upstream change).

l10n_uy_edi_stock_ux:
- Depends on l10n_uy_ux. Override _l10n_uy_stock_cfe_B_details: CodItem and
  NomItem without the reference prefix. New tests (test_15).

Change note: En Uruguay, el código interno del producto (referencia interna)
y el código de barras (EAN-13 válido) ahora se informan en el CFE en su
propio bloque <CodItem>, tanto en comprobantes de venta como en e-Remitos,
y el nombre del ítem (NomItem) ya no lleva el prefijo [referencia]. Así los
sistemas receptores pueden identificar el artículo sin parsear la
descripción.

Task: https://www.adhoc.inc/odoo/project.task/72672
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants