changeset 2e277dc50a4c in modules/product_price_list_dates:6.2
details:
https://hg.tryton.org/modules/product_price_list_dates?cmd=changeset&node=2e277dc50a4c
description:
Use context date as default pattern
issue11359
review417411003
(grafted from 3ca1623dd74c4c1a9aff760d2b43d5dabf82a1ee)
diffstat:
product.py | 9 +++++++++
tests/test_product_price_list_dates.py | 21 +++++++++++++++++++++
2 files changed, 30 insertions(+), 0 deletions(-)
diffs (64 lines):
diff -r 90caabde5801 -r 2e277dc50a4c product.py
--- a/product.py Mon Nov 01 17:27:20 2021 +0100
+++ b/product.py Tue Jun 21 10:13:53 2022 +0200
@@ -3,6 +3,7 @@
from trytond.model import ModelView, fields
from trytond.pool import PoolMeta, Pool
from trytond.pyson import Eval, If
+from trytond.transaction import Transaction
class PriceList(metaclass=PoolMeta):
@@ -21,6 +22,14 @@
def open_lines(cls, price_lists):
pass
+ def compute(
+ self, party, product, unit_price, quantity, uom, pattern=None):
+ context = Transaction().context
+ pattern = pattern.copy() if pattern is not None else {}
+ pattern.setdefault('date', context.get('date'))
+ return super().compute(
+ party, product, unit_price, quantity, uom, pattern=pattern)
+
class PriceListLine(metaclass=PoolMeta):
__name__ = 'product.price_list.line'
diff -r 90caabde5801 -r 2e277dc50a4c tests/test_product_price_list_dates.py
--- a/tests/test_product_price_list_dates.py Mon Nov 01 17:27:20 2021 +0100
+++ b/tests/test_product_price_list_dates.py Tue Jun 21 10:13:53 2022 +0200
@@ -11,6 +11,7 @@
from trytond.modules.company.tests import (
create_company, set_company, CompanyTestMixin)
+from trytond.transaction import Transaction
class ProductPriceListDatesTestCase(CompanyTestMixin, ModuleTestCase):
@@ -75,6 +76,26 @@
None, None, Decimal(10), 1, None, pattern={'date': yesterday}),
Decimal(9))
+ @with_transaction()
+ def test_price_list_with_context_date(self):
+ "Test price list with context date"
+ pool = Pool()
+ Date = pool.get('ir.date')
+
+ today = Date.today()
+ tomorrow = today + datetime.timedelta(days=1)
+
+ price_list = self.create_price_list('start_date', tomorrow)
+
+ with Transaction().set_context(date=today):
+ self.assertEqual(
+ price_list.compute(None, None, Decimal(10), 1, None),
+ Decimal(10))
+ with Transaction().set_context(date=tomorrow):
+ self.assertEqual(
+ price_list.compute(None, None, Decimal(10), 1, None),
+ Decimal(9))
+
def suite():
suite = test_suite()