|
|
params = self.env['ir.config_parameter'].sudo()
delay_alert_contract = int(params.get_param('hr_fleet.delay_alert_contract', default=30))
current_date = fields.Date.context_today(self)
data = self.env['fleet.vehicle.log.contract']._read_group(
domain=[('expiration_date', '!=', False), ('vehicle_id', 'in', self.ids), ('state', '!=', 'closed')],
groupby=['vehicle_id', 'state'],
aggregates=['expiration_date:max'])
prepared_data = {}
for vehicle_id, state, expiration_date in data:
if prepared_data.get(vehicle_id.id):
if prepared_data[vehicle_id.id]['expiration_date'] < expiration_date:
prepared_data[vehicle_id.id]['expiration_date'] = expiration_date
prepared_data[vehicle_id.id]['state'] = state
else:
prepared_data[vehicle_id.id] = {
'state': state,
'expiration_date': expiration_date,
}
for record in self:
vehicle_data = prepared_data.get(record.id)
if vehicle_data:
diff_time = (vehicle_data['expiration_date'] - current_date).days
record.contract_renewal_overdue = diff_time < 0
record.contract_renewal_due_soon = not record.contract_renewal_overdue and (diff_time < delay_alert_contract)
record.contract_state = vehicle_data['state']
else:
record.contract_renewal_overdue = False
record.contract_renewal_due_soon = False
record.contract_state = ""
|
|