diff --git a/addons/stock/models/product.py b/addons/stock/models/product.py index 83a5fe20479..498096901e6 100644 --- a/addons/stock/models/product.py +++ b/addons/stock/models/product.py @@ -826,7 +826,7 @@ class ProductTemplate(models.Model): @api.depends('type') def _compute_tracking(self): self.filtered( - lambda t: not t.tracking or t.type == 'consu' and t.tracking != 'none' + lambda t: not t.tracking or t.type in ('consu', 'service') and t.tracking != 'none' ).tracking = 'none' @api.onchange('type') diff --git a/addons/stock/tests/test_product.py b/addons/stock/tests/test_product.py index bcd63dc6b3b..f45bcd3eed5 100644 --- a/addons/stock/tests/test_product.py +++ b/addons/stock/tests/test_product.py @@ -325,3 +325,23 @@ class TestVirtualAvailable(TestStockCommon): ]: product_qty = self.product_3.with_context(warehouse=wh, location=loc).qty_available self.assertEqual(product_qty, expected) + + def test_change_type_tracked_product(self): + product = self.env['product.template'].create({ + 'name': 'Brand new product', + 'type': 'product', + 'tracking': 'serial', + }) + product_form = Form(product) + product_form.detailed_type = 'service' + product = product_form.save() + self.assertEqual(product.tracking, 'none') + + product.detailed_type = 'product' + product.tracking = 'serial' + self.assertEqual(product.tracking, 'serial') + # change the type from "product.product" form + product_form = Form(product.product_variant_id) + product_form.detailed_type = 'service' + product = product_form.save() + self.assertEqual(product.tracking, 'none')