From 8efe850c81dcd04fd88b01eb45f0f88ecd55b5d0 Mon Sep 17 00:00:00 2001 From: GabbasovDinar Date: Mon, 3 Feb 2025 12:54:38 +0500 Subject: [PATCH] [MIG] sale_commission_pricelist: Migration to 17.0 --- .../models/product_pricelist.py | 2 +- .../models/sale_order.py | 3 +- .../tests/test_sale_commission_pricelist.py | 93 +++++++++---------- .../views/product_pricelist_view.xml | 2 + 4 files changed, 46 insertions(+), 54 deletions(-) diff --git a/sale_commission_pricelist/models/product_pricelist.py b/sale_commission_pricelist/models/product_pricelist.py index f937ccc37..223bbc748 100644 --- a/sale_commission_pricelist/models/product_pricelist.py +++ b/sale_commission_pricelist/models/product_pricelist.py @@ -8,5 +8,5 @@ class ProductPricelistItem(models.Model): _inherit = "product.pricelist.item" commission_id = fields.Many2one( - comodel_name="sale.commission", string="Commission", ondelete="restrict" + comodel_name="commission", string="Commission", ondelete="restrict" ) diff --git a/sale_commission_pricelist/models/sale_order.py b/sale_commission_pricelist/models/sale_order.py index 7ab174629..8036675b8 100644 --- a/sale_commission_pricelist/models/sale_order.py +++ b/sale_commission_pricelist/models/sale_order.py @@ -12,10 +12,9 @@ def _get_commission_from_pricelist(self): self.ensure_one() if not self.product_id or not self.order_id.pricelist_id: return False # pragma: no cover - rule_id = self.order_id.pricelist_id.get_product_price_rule( + rule_id = self.order_id.pricelist_id._get_product_price_rule( product=self.product_id, quantity=self.product_uom_qty or 1.0, - partner=self.order_id.partner_id, date=self.order_id.date_order, uom_id=self.product_uom.id, )[1] diff --git a/sale_commission_pricelist/tests/test_sale_commission_pricelist.py b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py index 27b475ae6..0b581ba46 100644 --- a/sale_commission_pricelist/tests/test_sale_commission_pricelist.py +++ b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py @@ -1,29 +1,18 @@ # Copyright 2018 Carlos Dauden - Tecnativa # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo.tests.common import SavepointCase +from odoo.tests.common import Form +from odoo.addons.account_commission.tests.test_account_commission import ( + TestAccountCommission, +) -class TestSaleCommissionPricelist(SavepointCase): + +class TestSaleCommissionPricelist(TestAccountCommission): @classmethod def setUpClass(cls): super().setUpClass() - cls.product = cls.env["product.product"].create( - {"name": "Test Product 1", "list_price": 100} - ) - cls.product2 = cls.env["product.product"].create( - {"name": "Test Product 2", "list_price": 200} - ) - SaleCommission = cls.env["sale.commission"] - cls.commission_agent = SaleCommission.create( - {"name": "0.5% commission", "fix_qty": 0.5} - ) - cls.commission_1 = SaleCommission.create( - {"name": "1% commission", "fix_qty": 1.0} - ) - cls.commission_2 = SaleCommission.create( - {"name": "2% commission", "fix_qty": 2.0} - ) + cls.sale_order_model = cls.env["sale.order"] cls.pricelist = cls.env["product.pricelist"].create( { "name": "Test commission pricelist", @@ -34,11 +23,11 @@ def setUpClass(cls): { "name": "20% discount and commission on Test " "product 2", "applied_on": "0_product_variant", - "product_id": cls.product2.id, + "product_id": cls.product.id, "compute_price": "formula", "base": "list_price", "price_discount": 20, - "commission_id": cls.commission_2.id, + "commission_id": cls.commission_section_paid.id, }, ), ( @@ -50,46 +39,48 @@ def setUpClass(cls): "base": "list_price", "percent_price": 10, "applied_on": "3_global", - "commission_id": cls.commission_1.id, + "commission_id": cls.commission_section_invoice.id, }, ), ], } ) - Partner = cls.env["res.partner"] - cls.agent = Partner.create( - { - "name": "Test Agent", - "agent": True, - "commission_id": cls.commission_agent.id, - } - ) - cls.partner = Partner.create( + cls.product2 = cls.env["product.product"].create( { - "name": "Partner test", - "customer_rank": 1, - "supplier_rank": 0, - "agent_ids": [(6, 0, cls.agent.ids)], + "name": "Test product2 for commissions", + "list_price": 5, } ) - SaleOrder = cls.env["sale.order"] - cls.sale_order = SaleOrder.create( - {"partner_id": cls.partner.id, "pricelist_id": cls.pricelist.id} - ) - SOLine = cls.env["sale.order.line"] - cls.so_line1 = SOLine.with_context(partner_id=cls.partner.id).create( - {"order_id": cls.sale_order.id, "product_id": cls.product.id} - ) - cls.so_line2 = SOLine.with_context(partner_id=cls.partner.id).create( - {"order_id": cls.sale_order.id, "product_id": cls.product2.id} - ) + cls.agent = cls.env.ref("commission.res_partner_pritesh_sale_agent") + cls.partner.agent_ids = [(6, 0, cls.agent.ids)] + + def _create_sale_order(self): + order_form = Form(self.sale_order_model) + order_form.partner_id = self.partner + order_form.pricelist_id = self.pricelist + with order_form.order_line.new() as line_form: + line_form.product_id = self.product + + with order_form.order_line.new() as line_form: + line_form.product_id = self.product2 + + order = order_form.save() + + return order def test_sale_commission_pricelist(self): - self.assertEqual(self.so_line1.agent_ids[:1].commission_id, self.commission_1) - self.assertEqual(self.so_line2.agent_ids[:1].commission_id, self.commission_2) + sale_order = self._create_sale_order() + self.assertEqual( + sale_order.order_line[0].agent_ids[:1].commission_id, + self.commission_section_paid, + ) + self.assertEqual( + sale_order.order_line[1].agent_ids[:1].commission_id, + self.commission_section_invoice, + ) def test_prepare_agents_vals(self): - commission_3 = self.env["sale.commission"].create( + commission_3 = self.env["commission"].create( {"name": "3% commission", "fix_qty": 3.0} ) pricelist_3 = self.env["product.pricelist"].create( @@ -113,8 +104,8 @@ def test_prepare_agents_vals(self): } ) # Nothing changes - self.sale_order.pricelist_id = pricelist_3 + sale_order = self._create_sale_order() + sale_order.pricelist_id = pricelist_3 self.assertEqual( - self.so_line1.agent_ids[:1].commission_id, self.commission_agent + sale_order.order_line[1].agent_ids[:1].commission_id, commission_3 ) - self.assertEqual(self.so_line2.agent_ids[:1].commission_id, commission_3) diff --git a/sale_commission_pricelist/views/product_pricelist_view.xml b/sale_commission_pricelist/views/product_pricelist_view.xml index 5e260bad0..ade1c2f70 100644 --- a/sale_commission_pricelist/views/product_pricelist_view.xml +++ b/sale_commission_pricelist/views/product_pricelist_view.xml @@ -11,6 +11,7 @@ + product.pricelist.item @@ -20,6 +21,7 @@ + product.pricelist