Custom duplicate bug

This commit is contained in:
2026-07-03 11:31:27 +02:00
parent ea85927a17
commit e8b3fe5bc4
3 changed files with 32 additions and 0 deletions

View File

@@ -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,

View File

@@ -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,

View File

@@ -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')