[FIX]stock_declared_value:declared value#866
Conversation
There was a problem hiding this comment.
Pull request overview
Ajusta el cálculo del valor declarado en albaranes cuando el producto proviene de un kit (BoM phantom), corrigiendo la base de cantidades usada al explotar la BoM.
Changes:
- Modifica la llamada a
mrp.bom.explode()para explotar la BoM con cantidad unitaria (en lugar de la cantidad de la línea de venta). - Mantiene el cálculo de promedios para estimar el equivalente entregado/planificado del kit a partir de sus componentes.
| 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) |
There was a problem hiding this comment.
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.
| 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, | |
| ) |
| 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) |
There was a problem hiding this comment.
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.
| 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) |
c5d7160 to
a749ec6
Compare
|
@roboadhoc nobump |
|
Bump policy set to nobump. Modules: all |
|
@roboadhoc r+ |
|
@jcadhoc @mav-adhoc because this PR has multiple commits, I need to know how to merge it:
|
|
@roboadhoc rebase-ff |
|
Merge method set to rebase and fast-forward. |
|
@jcadhoc @mav-adhoc unable to stage: commits with multiple parents (5867b92) can not be rebased, either fix the branch to remove merges or merge without rebasing |

No description provided.