diff --git a/addons/mrp_account/models/stock_move.py b/addons/mrp_account/models/stock_move.py index 4b22c852fa6..c8a43af74b8 100644 --- a/addons/mrp_account/models/stock_move.py +++ b/addons/mrp_account/models/stock_move.py @@ -26,6 +26,10 @@ class StockMove(models.Model): return distribution return super()._get_analytic_distribution() + def _should_force_price_unit(self): + self.ensure_one() + return self.picking_type_id.code == 'mrp_operation' or super()._should_force_price_unit() + def _ignore_automatic_valuation(self): return bool(self.raw_material_production_id) diff --git a/addons/mrp_account/tests/test_valuation_layers.py b/addons/mrp_account/tests/test_valuation_layers.py index be34216484b..bcc20614f57 100644 --- a/addons/mrp_account/tests/test_valuation_layers.py +++ b/addons/mrp_account/tests/test_valuation_layers.py @@ -240,9 +240,22 @@ class TestMrpValuationStandard(TestMrpValuationCommon): self.assertEqual(self.product1.value_svl, 8.8 * 2) self.assertEqual(self.component.quantity_svl, 0) self.assertEqual(self.product1.quantity_svl, 2) + self.assertEqual(self.product1.standard_price, 8.8) + self._make_out_move(self.product1, 1) self.assertEqual(self.product1.value_svl, 8.8) + # Update component price + self.component.standard_price = 0 + + self._make_in_move(self.component, 3) + mo = self._make_mo(self.bom, 3) + self._produce(mo) + mo.button_mark_done() + self.assertEqual(self.product1.value_svl, 8.8) + self.assertEqual(self.product1.quantity_svl, 4) + self.assertEqual(self.product1.standard_price, 2.2) + def test_std_std_1(self): self.component.product_tmpl_id.categ_id.property_cost_method = 'standard' self.product1.product_tmpl_id.categ_id.property_cost_method = 'standard'