[IMP] fleet: compute state on date changes

Currently changing the expiration date of a fleet contract doesn't reset
the state. This commit aims to fix this.

Task ID: 2563156
This commit is contained in:
William Braeckman
2021-06-14 07:34:02 +00:00
parent 8804690e7a
commit 99858e7643
@@ -83,6 +83,21 @@ class FleetVehicleLogContract(models.Model):
def write(self, vals):
res = super(FleetVehicleLogContract, self).write(vals)
if 'start_date' in vals or 'expiration_date' in vals:
date_today = fields.Date.from_string(fields.Date.today())
futur_contracts = self.env[self._name]
running_contracts = self.env[self._name]
expired_contracts = self.env[self._name]
for contract in self.filtered(lambda c: c.start_date and c.state != 'closed'):
if date_today < contract.start_date:
futur_contracts |= contract
elif not contract.expiration_date or contract.start_date < date_today < contract.expiration_date:
running_contracts |= contract
else:
expired_contracts |= contract
futur_contracts.write({'state': 'futur'})
running_contracts.write({'state': 'open'})
expired_contracts.write({'state': 'expired'})
if vals.get('expiration_date') or vals.get('user_id'):
self.activity_reschedule(['fleet.mail_act_fleet_contract_to_renew'], date_deadline=vals.get('expiration_date'), new_user_id=vals.get('user_id'))
return res