From 5e0a1a261371d58e96b4b32811667d037bb4d5bc Mon Sep 17 00:00:00 2001 From: Laetitia Gangloff Date: Mon, 10 Aug 2015 15:14:23 +0200 Subject: [PATCH] purchase_packaging : compute price_unit with the new uom / packaging_management : update readme --- purchase_packaging/README.rst | 2 +- purchase_packaging/models/purchase.py | 8 +++++++- purchase_packaging/tests/test_packaging.py | 19 ++++++++++++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/purchase_packaging/README.rst b/purchase_packaging/README.rst index 3521faf4b..dd1071593 100644 --- a/purchase_packaging/README.rst +++ b/purchase_packaging/README.rst @@ -2,7 +2,7 @@ :alt: License: AGPL-3 Purchase Packaging -=========== +================== - Use packaging in supplierinfo - Use uom set in the packaging instead of purchase uom for purchase diff --git a/purchase_packaging/models/purchase.py b/purchase_packaging/models/purchase.py index 23b4fb10a..763706395 100644 --- a/purchase_packaging/models/purchase.py +++ b/purchase_packaging/models/purchase.py @@ -152,7 +152,8 @@ class PurchaseOrderLine(models.Model): fiscal_position_id=fiscal_position_id, date_planned=date_planned, name=name, price_unit=price_unit, state=state, context=context) - if product_id and partner_id and not qty: + if product_id and partner_id and not qty \ + and category_product_purchase_uom_id: res['value']['product_purchase_qty'] = product_purchase_qty res['value']['product_purchase_uom_id'] = product_purchase_uom_id uom_obj = self.pool['product.uom'] @@ -215,6 +216,11 @@ class ProcurementOrder(models.Model): procurement.product_qty, new_uom_id) res['product_qty'] = max(qty, supplier.qty) + pricelist = partner.property_product_pricelist_purchase + res['price_unit'] = pricelist.with_context( + uom=new_uom_id).price_get( + procurement.product_id.id, qty, + partner=partner.id)[pricelist.id] break return res diff --git a/purchase_packaging/tests/test_packaging.py b/purchase_packaging/tests/test_packaging.py index 670bf3f56..2af091910 100644 --- a/purchase_packaging/tests/test_packaging.py +++ b/purchase_packaging/tests/test_packaging.py @@ -106,7 +106,8 @@ class TestPackaging(common.TransactionCase): self.assertAlmostEqual(sm.product_uom_qty, 16) def test_procurement(self): - """ On supplierinfo set min_qty as 0 + """ On product set sale_price to 3 + On supplierinfo set min_qty as 0 Create procurement line with rule buy and quantity 17 run procurement Check product_purchase_uom_id is product_uom_unit @@ -114,6 +115,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 17 Check packaging_id is False Check product_uom is product_uom_unit + Check price_unit is 3 Confirm Purchase Order to avoid group Create procurement line with rule buy and quantity 1 dozen run procurement @@ -122,6 +124,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 12 Check packaging_id is False Check product_uom is product_uom_unit + Check price_unit is 3 Confirm Purchase Order to avoid group On supplierinfo set product_uom_8 as min_qty_uom_id Create procurement line with rule buy and quantity 17 @@ -131,6 +134,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 8*3 = 24 Check packaging_id is False Check product_uom is product_uom_unit + Check price_unit is 3 Confirm Purchase Order to avoid group Create procurement line with rule buy and quantity 1 dozen run procurement @@ -139,6 +143,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 8*2 = 16 Check packaging_id is False Check product_uom is product_uom_unit + Check price_unit is 3 Confirm Purchase Order to avoid group On supplierinfo set packaging product_packaging_34 (dozen) Create procurement line with rule buy and quantity 17 @@ -148,6 +153,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 8*1 = 8 Check packaging_id is product_packaging_34 Check product_uom is product_uom_dozen + Check price_unit is 3*12 = 36 Confirm Purchase Order to avoid group Create procurement line with rule buy and quantity 1 dozen run procurement @@ -156,6 +162,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 8*1 = 8 Check packaging_id is product_packaging_34 Check product_uom is product_uom_dozen + Check price_unit is 3*12 = 36 Confirm Purchase Order to avoid group On supplierinfo set product_uom_unit as min_qty_uom_id Create procurement line with rule buy and quantity 17 @@ -165,6 +172,7 @@ class TestPackaging(common.TransactionCase): Check product_qty is 2 Check packaging_id is product_packaging_34 Check product_uom is product_uom_dozen + Check price_unit is 3*12 = 36 Confirm Purchase Order to avoid group Create procurement line with rule buy and quantity 1 dozen run procurement @@ -173,10 +181,12 @@ class TestPackaging(common.TransactionCase): Check product_qty is 1 Check packaging_id is product_packaging_34 Check product_uom is product_uom_dozen + Check price_unit is 3*12 = 36 Confirm Purchase Order to avoid group """ self.env.ref('product.product_product_34').route_ids = [( 4, self.env.ref("purchase.route_warehouse0_buy").id)] + self.env.ref('product.product_product_34').standard_price = 3 self.env.ref('product.product_uom_unit').rounding = 1 procurement_obj = self.env['procurement.order'] @@ -212,6 +222,7 @@ class TestPackaging(common.TransactionCase): self.assertFalse(proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_unit'), proc1.purchase_line_id.product_uom) + self.assertEqual(3, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm') self.sp_30.min_qty_uom_id = self.product_uom_8 @@ -230,6 +241,7 @@ class TestPackaging(common.TransactionCase): self.assertFalse(proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_unit'), proc1.purchase_line_id.product_uom) + self.assertEqual(3, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm') proc1 = procurement_obj.create( @@ -246,6 +258,7 @@ class TestPackaging(common.TransactionCase): self.assertFalse(proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_unit'), proc1.purchase_line_id.product_uom) + self.assertEqual(3, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm') self.sp_30.packaging_id = self.product_packaging_34 @@ -265,6 +278,7 @@ class TestPackaging(common.TransactionCase): proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_dozen'), proc1.purchase_line_id.product_uom) + self.assertEqual(36, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm') proc1 = procurement_obj.create( @@ -282,6 +296,7 @@ class TestPackaging(common.TransactionCase): proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_dozen'), proc1.purchase_line_id.product_uom) + self.assertEqual(36, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm') self.sp_30.min_qty_uom_id = self.env.ref('product.product_uom_unit') @@ -301,6 +316,7 @@ class TestPackaging(common.TransactionCase): proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_dozen'), proc1.purchase_line_id.product_uom) + self.assertEqual(36, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm') proc1 = procurement_obj.create( @@ -318,4 +334,5 @@ class TestPackaging(common.TransactionCase): proc1.purchase_line_id.packaging_id) self.assertEqual(self.env.ref('product.product_uom_dozen'), proc1.purchase_line_id.product_uom) + self.assertEqual(36, proc1.purchase_line_id.price_unit) proc1.purchase_id.signal_workflow('purchase_confirm')