From f03ccfd7a69bacb302bc1a94eee9f1022dfd749e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 17 Aug 2023 17:57:32 +0200 Subject: [PATCH] Round price returned by get_sale_price --- modules/sale/product.py | 4 +++- modules/sale/sale.py | 9 +++------ modules/sale/tests/test_module.py | 4 ++-- modules/sale_subscription/subscription.py | 4 +--- modules/stock_consignment/stock.py | 2 -- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/modules/sale/product.py b/modules/sale/product.py index 9c1f122225..69c1b644d6 100644 --- a/modules/sale/product.py +++ b/modules/sale/product.py @@ -6,7 +6,7 @@ from sql import Null from trytond.model import ModelSQL, ModelView, ValueMixin, fields from trytond.modules.currency.fields import Monetary -from trytond.modules.product import price_digits +from trytond.modules.product import price_digits, round_price from trytond.pool import Pool, PoolMeta from trytond.pyson import Eval, TimeDelta from trytond.transaction import Transaction @@ -183,6 +183,8 @@ class Product(metaclass=PoolMeta): unit_price = Currency.compute( company.currency, unit_price, currency, round=False) + if unit_price is not None: + unit_price = round_price(unit_price) prices[product.id] = unit_price return prices diff --git a/modules/sale/sale.py b/modules/sale/sale.py index e8632cd800..ddf1c37af1 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -21,7 +21,7 @@ from trytond.modules.company import CompanyReport from trytond.modules.company.model import ( employee_field, reset_employee, set_employee) from trytond.modules.currency.fields import Monetary -from trytond.modules.product import price_digits, round_price +from trytond.modules.product import price_digits from trytond.pool import Pool from trytond.pyson import Bool, Eval, If, PYSONEncoder from trytond.tools import firstline, sortable_values @@ -1522,11 +1522,8 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView): with Transaction().set_context( self._get_context_sale_price()): - unit_price = Product.get_sale_price([self.product], - abs(self.quantity or 0))[self.product.id] - if unit_price is not None: - unit_price = round_price(unit_price) - return unit_price + return Product.get_sale_price( + [self.product], abs(self.quantity or 0))[self.product.id] @fields.depends('product') def on_change_with_product_uom_category(self, name=None): diff --git a/modules/sale/tests/test_module.py b/modules/sale/tests/test_module.py index 162b2dcc6b..c057c003dc 100644 --- a/modules/sale/tests/test_module.py +++ b/modules/sale/tests/test_module.py @@ -57,9 +57,9 @@ class SaleTestCase( with Transaction().set_context(uom=pound.id): prices = Product.get_sale_price([product], quantity=0.5) - self.assertEqual(prices, {product.id: Decimal('2267.96185')}) + self.assertEqual(prices, {product.id: Decimal('2267.9618')}) prices = Product.get_sale_price([product], quantity=1.5) - self.assertEqual(prices, {product.id: Decimal('2267.96185')}) + self.assertEqual(prices, {product.id: Decimal('2267.9618')}) del ModuleTestCase diff --git a/modules/sale_subscription/subscription.py b/modules/sale_subscription/subscription.py index 53c4c4cfed..4a0a19cce9 100644 --- a/modules/sale_subscription/subscription.py +++ b/modules/sale_subscription/subscription.py @@ -14,7 +14,7 @@ from trytond.model.exceptions import AccessError from trytond.modules.company.model import ( employee_field, reset_employee, set_employee) from trytond.modules.currency.fields import Monetary -from trytond.modules.product import price_digits, round_price +from trytond.modules.product import price_digits from trytond.pool import Pool from trytond.pyson import Bool, Eval, If from trytond.tools import sortable_values @@ -700,8 +700,6 @@ class Line(sequence_ordered(), ModelSQL, ModelView): with Transaction().set_context(self._get_context_sale_price()): self.unit_price = Product.get_sale_price( [product], self.quantity or 0)[product.id] - if self.unit_price is not None: - self.unit_price = round_price(self.unit_price) self.consumption_recurrence = self.service.consumption_recurrence self.consumption_delay = self.service.consumption_delay diff --git a/modules/stock_consignment/stock.py b/modules/stock_consignment/stock.py index 97f4f01bce..83968690d3 100644 --- a/modules/stock_consignment/stock.py +++ b/modules/stock_consignment/stock.py @@ -229,8 +229,6 @@ class Move(metaclass=PoolMeta): taxes=[t.id for t in line.taxes]): line.unit_price = Product.get_sale_price( [line.product], line.quantity)[line.product.id] - if line.unit_price is not None: - line.unit_price = round_price(line.unit_price) return line @classmethod