[FIX] mrp, sale_mrp: always use BOM UoM on Replenishment
Steps to reproduce the bug:
- Create a storable product “P1”:
- route: MTO + manufacture
- uom: unit
- BOM:
- qty: 1 dozen
- component: 12 units of “C1”
- Create a SO:
- Product: 12 unit of “p1”
- uom: unit
- Confirm the SO
Problem:
The UOM set on the product is used instead of the BOM UoM on the created
manufacturing order.
wrong MO:
- 12 unit of "P1"
expcted MO:
- 1 dozen of "P1"
opw-3048190
closes odoo/odoo#106351
X-original-commit: 8c5fb8b71538462422c8f166b772b5e316ecd6b5
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Djamel Touati (otd) <otd@odoo.com>
This commit is contained in:
@@ -119,8 +119,8 @@ class StockRule(models.Model):
|
||||
'origin': origin,
|
||||
'product_id': product_id.id,
|
||||
'product_description_variants': values.get('product_description_variants'),
|
||||
'product_qty': product_qty,
|
||||
'product_uom_id': product_uom.id,
|
||||
'product_qty': product_uom._compute_quantity(product_qty, bom.product_uom_id),
|
||||
'product_uom_id': bom.product_uom_id.id,
|
||||
'location_src_id': self.location_src_id.id or self.picking_type_id.default_location_src_id.id or location_dest_id.id,
|
||||
'location_dest_id': location_dest_id.id,
|
||||
'bom_id': bom.id,
|
||||
|
||||
@@ -62,8 +62,8 @@ class TestProcurement(TestMrpCommon):
|
||||
'location_id': self.warehouse.lot_stock_id.id,
|
||||
}).action_apply_inventory()
|
||||
produce_product_4.action_assign()
|
||||
self.assertEqual(produce_product_4.product_qty, 8, "Wrong quantity of finish product.")
|
||||
self.assertEqual(produce_product_4.product_uom_id, self.uom_dozen, "Wrong quantity of finish product.")
|
||||
self.assertEqual(produce_product_4.product_qty, 96, "Wrong quantity of finish product.")
|
||||
self.assertEqual(produce_product_4.product_uom_id, self.uom_unit, "Wrong quantity of finish product.")
|
||||
self.assertEqual(produce_product_4.reservation_state, 'assigned', "Consume material not available")
|
||||
|
||||
# produce product4
|
||||
|
||||
@@ -344,8 +344,8 @@ class TestSaleMrpFlow(ValuationReconciliationTestCommon):
|
||||
mnf_product_a = self.env['mrp.production'].search([('product_id', '=', product_a.id)])
|
||||
|
||||
self.assertTrue(mnf_product_a, 'Manufacturing order not created.')
|
||||
self.assertEqual(mnf_product_a.product_qty, 120, 'Wrong product quantity in manufacturing order.')
|
||||
self.assertEqual(mnf_product_a.product_uom_id, self.uom_unit, 'Wrong unit of measure in manufacturing order.')
|
||||
self.assertEqual(mnf_product_a.product_qty, 10, 'Wrong product quantity in manufacturing order.')
|
||||
self.assertEqual(mnf_product_a.product_uom_id, self.uom_dozen, 'Wrong unit of measure in manufacturing order.')
|
||||
self.assertEqual(mnf_product_a.state, 'confirmed', 'Manufacturing order should be confirmed.')
|
||||
|
||||
# ------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user