From e8b3fe5bc4edb65ae10c1ec1e843a0b8b448f8a2 Mon Sep 17 00:00:00 2001 From: laurentbarontini Date: Fri, 3 Jul 2026 11:31:27 +0200 Subject: [PATCH] Custom duplicate bug --- modules/purchase_trade/purchase.py | 2 ++ modules/purchase_trade/sale.py | 2 ++ modules/purchase_trade/tests/test_module.py | 28 +++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py index a908c96..acf77b6 100755 --- a/modules/purchase_trade/purchase.py +++ b/modules/purchase_trade/purchase.py @@ -2148,6 +2148,8 @@ class Line(metaclass=PoolMeta): return if values.get('estimated_date') is None: values['estimated_date'] = [] + elif isinstance(values['estimated_date'], tuple): + values['estimated_date'] = list(values['estimated_date']) values['estimated_date'].append(('create', [{ 'trigger': 'bldate', 'estimated_date': estimated_date, diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index c8c74b9..21e2e82 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -1975,6 +1975,8 @@ class SaleLine(metaclass=PoolMeta): return if values.get('estimated_date') is None: values['estimated_date'] = [] + elif isinstance(values['estimated_date'], tuple): + values['estimated_date'] = list(values['estimated_date']) values['estimated_date'].append(('create', [{ 'trigger': 'bldate', 'estimated_date': estimated_date, diff --git a/modules/purchase_trade/tests/test_module.py b/modules/purchase_trade/tests/test_module.py index 81b07d9..f499b7e 100644 --- a/modules/purchase_trade/tests/test_module.py +++ b/modules/purchase_trade/tests/test_module.py @@ -4409,6 +4409,34 @@ class PurchaseTradeTestCase(ModuleTestCase): 'estimated_date': datetime.date(2026, 5, 1), }])]) + def test_purchase_and_sale_line_default_estimated_bl_date_accepts_tuple(self): + 'new lines normalize tuple estimated date commands before appending' + PurchaseLine = Pool().get('purchase.line') + SaleLine = Pool().get('sale.line') + period = Mock(beg_date=datetime.date(2026, 5, 1)) + existing = ('create', [{ + 'trigger': 'other', + 'estimated_date': datetime.date(2026, 5, 9), + }]) + purchase_values = { + 'del_period': period, + 'estimated_date': (existing,), + } + sale_values = { + 'del_period': period, + 'estimated_date': (existing,), + } + + PurchaseLine._set_default_estimated_bl_date_values(purchase_values) + SaleLine._set_default_estimated_bl_date_values(sale_values) + + expected = [existing, ('create', [{ + 'trigger': 'bldate', + 'estimated_date': datetime.date(2026, 5, 1), + }])] + self.assertEqual(purchase_values['estimated_date'], expected) + self.assertEqual(sale_values['estimated_date'], expected) + def test_purchase_line_reporting_parent_fields_and_counts(self): 'purchase line reporting fields mirror parent values and relation counts' PurchaseLine = Pool().get('purchase.line')