From c81d5607dc822bd7a7b2a8e56a6b5de5f892d133 Mon Sep 17 00:00:00 2001 From: Florian Damhaut Date: Mon, 20 Dec 2021 14:33:27 +0000 Subject: [PATCH] [FIX] hr_fleet: no duplicate contract renewal activity reminder Step to reproduce: - Have a fleet contract that need renewal Current Behaviour: - A new activity is created everytime the scheduler is called Behaviour after PR: - A new activity is only created if there is no current renewal activity present when the scheduler is called opw-2713537 closes odoo/odoo#81919 X-original-commit: 3610069ea2c10fccf8fcc82c384a2194c4702e06 Signed-off-by: Nicolas Lempereur (nle) Signed-off-by: Damhaut Florian (flda) --- addons/fleet/models/fleet_vehicle_log_contract.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/addons/fleet/models/fleet_vehicle_log_contract.py b/addons/fleet/models/fleet_vehicle_log_contract.py index 92097729d8b..6b2cbf81fe2 100644 --- a/addons/fleet/models/fleet_vehicle_log_contract.py +++ b/addons/fleet/models/fleet_vehicle_log_contract.py @@ -120,9 +120,17 @@ class FleetVehicleLogContract(models.Model): delay_alert_contract = int(params.get_param('hr_fleet.delay_alert_contract', default=30)) date_today = fields.Date.from_string(fields.Date.today()) outdated_days = fields.Date.to_string(date_today + relativedelta(days=+delay_alert_contract)) - nearly_expired_contracts = self.search([('state', '=', 'open'), ('expiration_date', '<', outdated_days)]) + reminder_activity_type = self.env.ref('fleet.mail_act_fleet_contract_to_renew', raise_if_not_found=False) or self.env['mail.activity.type'] + nearly_expired_contracts = self.search([ + ('state', '=', 'open'), + ('expiration_date', '<', outdated_days), + ('user_id', '!=', False) + ] + ).filtered( + lambda nec: reminder_activity_type not in nec.activity_ids.activity_type_id + ) - for contract in nearly_expired_contracts.filtered(lambda contract: contract.user_id): + for contract in nearly_expired_contracts: contract.activity_schedule( 'fleet.mail_act_fleet_contract_to_renew', contract.expiration_date, user_id=contract.user_id.id)