From 99858e7643b2b3255be7bd883418201837e6a6a5 Mon Sep 17 00:00:00 2001 From: William Braeckman Date: Wed, 9 Jun 2021 08:30:45 +0000 Subject: [PATCH] [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 --- addons/fleet/models/fleet_vehicle_log_contract.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/addons/fleet/models/fleet_vehicle_log_contract.py b/addons/fleet/models/fleet_vehicle_log_contract.py index 6ac0b181a38..894427041cc 100644 --- a/addons/fleet/models/fleet_vehicle_log_contract.py +++ b/addons/fleet/models/fleet_vehicle_log_contract.py @@ -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