Skip to content

Impresión de Partes de un KIT en Operación de Recolección #994

Description

@aceleradora-la

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

  1. Odoo 19 con stock_ux instalado.
  2. Producto con LdM tipo Kit (phantom) de varios componentes.
  3. Venderlo y confirmar; en el albarán se ven los componentes con
    <Kit> - 1/4 ... 4/4.
  4. Imprimir "Operación de recolección" → no aparece ninguna referencia al kit.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions