fix: Convert BOM line product quantity to the move's unit of measure before calculating the line quantity.

This commit is contained in:
Suherdy Yacob 2026-03-19 09:54:31 +07:00
parent 696d1a3b90
commit 12ec80e82c

View File

@ -47,7 +47,8 @@ class MrpProduction(models.Model):
if move.bom_line_id and self.bom_id: if move.bom_line_id and self.bom_id:
# Recalculate the clean truth directly from BOM # Recalculate the clean truth directly from BOM
clean_factor = round(self.product_uom_id._compute_quantity(self.product_qty, self.bom_id.product_uom_id, round=False) / self.bom_id.product_qty, 8) clean_factor = round(self.product_uom_id._compute_quantity(self.product_qty, self.bom_id.product_uom_id, round=False) / self.bom_id.product_qty, 8)
line_quantity = round(clean_factor * move.bom_line_id.product_qty, 8) bom_qty_in_move_uom = move.bom_line_id.product_uom_id._compute_quantity(move.bom_line_id.product_qty, move.product_uom, round=False)
line_quantity = round(clean_factor * bom_qty_in_move_uom, 8)
from odoo.tools import float_round from odoo.tools import float_round
ideal_qty = float_round(line_quantity, precision_rounding=move.product_uom.rounding, rounding_method='UP') ideal_qty = float_round(line_quantity, precision_rounding=move.product_uom.rounding, rounding_method='UP')
@ -144,7 +145,9 @@ class MrpProduction(models.Model):
continue continue
# Calculate what the quantity SHOULD be according to BOM and MO Qty # Calculate what the quantity SHOULD be according to BOM and MO Qty
line_quantity = round(clean_factor * move.bom_line_id.product_qty, 8) bom_qty_in_move_uom = move.bom_line_id.product_uom_id._compute_quantity(move.bom_line_id.product_qty, move.product_uom, round=False)
line_quantity = round(clean_factor * bom_qty_in_move_uom, 8)
from odoo.tools import float_round from odoo.tools import float_round
ideal_qty = float_round(line_quantity, precision_rounding=move.product_uom.rounding, rounding_method='UP') ideal_qty = float_round(line_quantity, precision_rounding=move.product_uom.rounding, rounding_method='UP')