From bc363dfae74e8f5937dcf3f347991bacce04710a Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Tue, 18 Jul 2023 08:41:32 +0200 Subject: [PATCH] [IMP] stock_reserve_rule: Change package type to package level --- stock_reserve_rule/__manifest__.py | 1 + .../models/stock_reserve_rule.py | 12 ++++----- stock_reserve_rule/tests/test_reserve_rule.py | 26 ++++++++++--------- .../views/stock_reserve_rule_views.xml | 2 +- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/stock_reserve_rule/__manifest__.py b/stock_reserve_rule/__manifest__.py index 99bebd6dd..465b91500 100644 --- a/stock_reserve_rule/__manifest__.py +++ b/stock_reserve_rule/__manifest__.py @@ -10,6 +10,7 @@ "depends": [ "stock", "stock_helper", + "product_packaging_level", ], "demo": [ "data/demo/product_demo.xml", diff --git a/stock_reserve_rule/models/stock_reserve_rule.py b/stock_reserve_rule/models/stock_reserve_rule.py index fa90e69c8..679a5c723 100644 --- a/stock_reserve_rule/models/stock_reserve_rule.py +++ b/stock_reserve_rule/models/stock_reserve_rule.py @@ -144,11 +144,9 @@ class StockReserveRuleRemoval(models.Model): "quantity matches a packaging quantity (do not open boxes).", ) - packaging_type_ids = fields.Many2many( - comodel_name="stock.package.type", - help="Optional packaging when using 'Full Packaging'.\n" - "Only the quantities matching one of the packaging are removed.\n" - "When empty, any packaging can be removed.", + packaging_level_ids = fields.Many2many( + comodel_name="product.packaging.level", + help="Optional packaging level when using 'Full Packaging'.\n", ) @api.constrains("location_id") @@ -256,7 +254,7 @@ class StockReserveRuleRemoval(models.Model): product = fields.first(quants).product_id - packaging_type_filter = self.packaging_type_ids + packaging_type_filter = self.packaging_level_ids # we'll walk the packagings from largest to smallest to have the # largest containers as possible (1 pallet rather than 10 boxes) @@ -265,7 +263,7 @@ class StockReserveRuleRemoval(models.Model): lambda packaging: ( packaging.qty > 0 and ( - packaging.package_type_id in packaging_type_filter + packaging.packaging_level_id in packaging_type_filter if packaging_type_filter else True ) diff --git a/stock_reserve_rule/tests/test_reserve_rule.py b/stock_reserve_rule/tests/test_reserve_rule.py index d6d9b4a26..721b8236b 100644 --- a/stock_reserve_rule/tests/test_reserve_rule.py +++ b/stock_reserve_rule/tests/test_reserve_rule.py @@ -57,15 +57,17 @@ class TestReserveRule(common.TransactionCase): {"name": "Product 2", "type": "product"} ) - cls.unit = cls.env["stock.package.type"].create({"name": "Unit", "sequence": 0}) - cls.retail_box = cls.env["stock.package.type"].create( - {"name": "Retail Box", "sequence": 3} + cls.unit = cls.env["product.packaging.level"].create( + {"name": "Unit", "code": "UNIT", "sequence": 0} ) - cls.transport_box = cls.env["stock.package.type"].create( - {"name": "Transport Box", "sequence": 4} + cls.retail_box = cls.env["product.packaging.level"].create( + {"name": "Retail Box", "code": "RET", "sequence": 3} ) - cls.pallet = cls.env["stock.package.type"].create( - {"name": "Pallet", "sequence": 5} + cls.transport_box = cls.env["product.packaging.level"].create( + {"name": "Transport Box", "code": "BOX", "sequence": 4} + ) + cls.pallet = cls.env["product.packaging.level"].create( + {"name": "Pallet", "code": "PAL", "sequence": 5} ) def _create_picking(self, wh, products=None, location_src_id=None): @@ -127,9 +129,9 @@ class TestReserveRule(common.TransactionCase): "name": name, "qty": qty if qty else 1, "product_id": product.id, - "package_type_id": packaging_type.id, + "packaging_level_id": packaging_level.id, } - for name, qty, packaging_type in packagings + for name, qty, packaging_level in packagings ] ) @@ -634,7 +636,7 @@ class TestReserveRule(common.TransactionCase): # by zero picking.action_assign() - def test_rule_packaging_type(self): + def test_rule_packaging_level(self): # only take one kind of packaging self._setup_packagings( self.product1, @@ -662,7 +664,7 @@ class TestReserveRule(common.TransactionCase): "location_id": self.loc_zone1.id, "sequence": 1, "removal_strategy": "packaging", - "packaging_type_ids": [(6, 0, self.pallet.ids)], + "packaging_level_ids": [(6, 0, self.pallet.ids)], }, # zone2/bin2 will match the second packaging size of 50, # but won't take 60 because it doesn't take retail boxes @@ -670,7 +672,7 @@ class TestReserveRule(common.TransactionCase): "location_id": self.loc_zone2.id, "sequence": 2, "removal_strategy": "packaging", - "packaging_type_ids": [(6, 0, self.transport_box.ids)], + "packaging_level_ids": [(6, 0, self.transport_box.ids)], }, # the rest should be taken here {"location_id": self.loc_zone3.id, "sequence": 3}, diff --git a/stock_reserve_rule/views/stock_reserve_rule_views.xml b/stock_reserve_rule/views/stock_reserve_rule_views.xml index a13545736..bb2638c9f 100644 --- a/stock_reserve_rule/views/stock_reserve_rule_views.xml +++ b/stock_reserve_rule/views/stock_reserve_rule_views.xml @@ -58,7 +58,7 @@ />