Módulo: stock_ux
Versión: 19.0
Archivo: stock_ux/report/stock_picking_operations.xml
Descripción
El template stock_ux.report_picking_ux hace un position="replace" de la
primera celda del reporte "Operación de recolección" (stock.report_picking)
y, al reconstruirla, imprime move.product_id.description_picking en lugar de
move.description_picking.
En Odoo 19 el reporte estándar fue reescrito: el bucle pasó de ser por
stock.move.line a ser por stock.move, y la descripción que se imprime es la
del movimiento:
<span t-if="move.description_picking and move.description_picking != move.product_id.name and move.description_picking != move.product_id.display_name">
<span t-out="move.description_picking" t-options="{'widget': 'text'}"/>
</span>
El override de stock_ux conserva la forma de 17/18 (que sí leía el campo del
producto) y con eso pisa el campo del movimiento.
Impacto concreto
Se pierde toda la información que mrp inyecta en stock.move.description_picking.
El caso más visible son los kits (LdM tipo phantom): en Odoo 19 el campo
description_bom_line se fusionó dentro de description_picking
(mrp/models/stock_move.py::_compute_description_picking), así que el texto
<Kit> - 1/4, 2/4, etc. que identifica cada componente como parte de un kit
no se imprime en el reporte de picking.
Queda inconsistente con el resto del sistema: el kit sí se ve en el formulario
del albarán (widget move_product_label_field, cuyo descriptionColumn es
description_picking) y sí se ve en el Recibo de entrega
(stock.report_delivery_document). Solo falta en el reporte que usa el operario
que arma el pedido, que es justamente quien necesita el dato.
También se pierde cualquier descripción manual cargada en la línea del
movimiento (description_picking_manual).
Para reproducir
- Odoo 19 con
stock_ux instalado.
- Producto con LdM tipo Kit (phantom) de varios componentes.
- Venderlo y confirmar; en el albarán se ven los componentes con
<Kit> - 1/4 ... 4/4.
- Imprimir "Operación de recolección" → no aparece ninguna referencia al kit.
- Desactivando la vista
stock_ux.report_picking_ux el dato aparece.
Propuesta
El override existe solo para la funcionalidad de delivery_slip_use_origin, no
necesita reconstruir la celda entera. Alcanza con reemplazar el span del nombre
del producto y dejar intacta la línea de descripción:
<template id="report_picking_ux" inherit_id="stock.report_picking">
<xpath expr="//span[@t-field='move.product_id.display_name']" position="replace">
<span t-if="env['ir.config_parameter'].sudo().get_param('stock_ux.delivery_slip_use_origin', 'False') == 'True'" t-field="move.origin_description"/>
<span t-else="" t-field="move.product_id.display_name"/>
</xpath>
</template>
Además el expr="//table//tbody//tr//td[1]" actual es frágil: cualquier cambio
de estructura del reporte estándar lo hace fallar o lo aplica en la celda
equivocada. Un locator por campo es más estable.
Módulo: stock_ux
Versión: 19.0
Archivo: stock_ux/report/stock_picking_operations.xml
Descripción
El template
stock_ux.report_picking_uxhace unposition="replace"de laprimera celda del reporte "Operación de recolección" (
stock.report_picking)y, al reconstruirla, imprime
move.product_id.description_pickingen lugar demove.description_picking.En Odoo 19 el reporte estándar fue reescrito: el bucle pasó de ser por
stock.move.linea ser porstock.move, y la descripción que se imprime es ladel movimiento:
El override de
stock_uxconserva la forma de 17/18 (que sí leía el campo delproducto) y con eso pisa el campo del movimiento.
Impacto concreto
Se pierde toda la información que
mrpinyecta enstock.move.description_picking.El caso más visible son los kits (LdM tipo phantom): en Odoo 19 el campo
description_bom_linese fusionó dentro dedescription_picking(
mrp/models/stock_move.py::_compute_description_picking), así que el texto<Kit> - 1/4,2/4, etc. que identifica cada componente como parte de un kitno se imprime en el reporte de picking.
Queda inconsistente con el resto del sistema: el kit sí se ve en el formulario
del albarán (widget
move_product_label_field, cuyodescriptionColumnesdescription_picking) y sí se ve en el Recibo de entrega(
stock.report_delivery_document). Solo falta en el reporte que usa el operarioque arma el pedido, que es justamente quien necesita el dato.
También se pierde cualquier descripción manual cargada en la línea del
movimiento (
description_picking_manual).Para reproducir
stock_uxinstalado.<Kit> - 1/4 ... 4/4.stock_ux.report_picking_uxel dato aparece.Propuesta
El override existe solo para la funcionalidad de
delivery_slip_use_origin, nonecesita reconstruir la celda entera. Alcanza con reemplazar el span del nombre
del producto y dejar intacta la línea de descripción:
Además el
expr="//table//tbody//tr//td[1]"actual es frágil: cualquier cambiode estructura del reporte estándar lo hace fallar o lo aplica en la celda
equivocada. Un locator por campo es más estable.