Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions stock_declared_value/models/stock_picking.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,7 @@ def _compute_declared_value(self):
bom_moves = so_bom_line.move_ids & stock_bom_lines._origin
done_avg = []
picking_avg = []
boms, lines = bom.sudo().explode(
so_bom_line.product_id, so_bom_line.product_uom_qty, picking_type=bom.picking_type_id
)
boms, lines = bom.sudo().explode(so_bom_line.product_id, 1.0, picking_type=bom.picking_type_id)
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

En esta llamada a bom.explode(...), pasar 1.0 asume implícitamente que 1 unidad está en la UoM base del producto. Si la línea de venta (so_bom_line) usa una UoM distinta, el cálculo de bom_quantity y por ende el valor declarado puede quedar incorrecto. Sugerencia: calcular la cantidad equivalente a 1 unidad en la UoM de la línea de venta (convertida a la UoM del producto/BOM) antes de explotar, o convertir el resultado para que la cantidad resultante esté en la misma UoM que el precio unitario de la línea.

Suggested change
boms, lines = bom.sudo().explode(so_bom_line.product_id, 1.0, picking_type=bom.picking_type_id)
# Calcular la cantidad equivalente a 1 unidad en la UoM de la línea de venta,
# convertida a la UoM del producto/BOM para usarla como factor de explosión.
bom_factor = 1.0
line_uom = getattr(so_bom_line, "product_uom", so_bom_line.product_id.uom_id)
product_uom = so_bom_line.product_id.uom_id
if line_uom != product_uom:
bom_factor = line_uom._compute_quantity(1.0, product_uom)
boms, lines = bom.sudo().explode(
so_bom_line.product_id,
bom_factor,
picking_type=bom.picking_type_id,
)

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Feb 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

La variable boms no se usa en ningún lado (solo se usa lines). Para evitar confusiones, elimina esa asignación o usa un placeholder (_) para el valor no utilizado.

Suggested change
boms, lines = bom.sudo().explode(so_bom_line.product_id, 1.0, picking_type=bom.picking_type_id)
_, lines = bom.sudo().explode(so_bom_line.product_id, 1.0, picking_type=bom.picking_type_id)

Copilot uses AI. Check for mistakes.
for move in bom_moves:
bom_quantity = 0.0
for bom_line, line_data in lines:
Expand Down