Define method to determine if initialize end_date.

This commit refs #21995
This commit is contained in:
Sergio Morillo 2022-02-14 11:48:52 +01:00
parent 5c8a8d4f84
commit 0d5eea6fe5

View file

@ -43,9 +43,9 @@ class Move(metaclass=PoolMeta):
for values in vlist:
if not values.get('time_'):
values.setdefault('time_', datetime.datetime.min.time())
if not values.get('end_date') and (
values.get('effective_date') or
values.get('planned_date')):
if not values.get('end_date') and cls.init_end_date() and (
values.get('effective_date')
or values.get('planned_date')):
values.setdefault('end_date', datetime.datetime.combine(
values.get('effective_date') or values.get('planned_date'),
values.get('time_'))
@ -59,9 +59,9 @@ class Move(metaclass=PoolMeta):
actions = iter(args)
for records, values in zip(actions, actions):
for record in records:
if record.start_date and (
not record.end_date or
record.end_date < record.start_date):
if record.start_date and cls.init_end_date() and (
not record.end_date
or record.end_date < record.start_date):
cls.write([record], {'end_date': record.start_date})
@fields.depends('effective_date', 'planned_date', 'time_')
@ -73,14 +73,15 @@ class Move(metaclass=PoolMeta):
return _date
return None
@fields.depends('start_date', 'end_date', 'planned_date')
@fields.depends('start_date', 'end_date', 'planned_date', methods=[
'init_end_date'])
def on_change_start_date(self):
if self.start_date:
self.effective_date = self.start_date.date()
self.time_ = self.start_date.time()
if not self.planned_date:
self.planned_date = self.start_date.date()
if not self.end_date:
if not self.end_date and self.init_end_date():
self.end_date = self.start_date
@classmethod
@ -105,6 +106,10 @@ class Move(metaclass=PoolMeta):
return [('effective_date', date_op[clause[1]], clause[2].date()),
('time_', clause[1], clause[2].time())]
@classmethod
def init_end_date(cls):
return True
class ShipmentWithTimeMixin(object):