Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.
Module: Fleet
Entity: fleet.vehicle
Compute Method: _compute_contract_reminder
| Inputs | Method | Outputs |
|---|---|---|
|
params = self.env['ir.config_parameter'].sudo() - delay_alert_contract = int(params.get_param('hr_fleet.delay_alert_contract', default=30)) + delay_alert_contract = params.get_int('hr_fleet.delay_alert_contract', 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) + # A done contract is already taken care of, so it should not warn us anymore. + is_done = vehicle_data['state'] == 'done' + record.contract_renewal_overdue = not is_done and diff_time < 0 + record.contract_renewal_due_soon = not is_done and not record.contract_renewal_overdue and (diff_time < delay_alert_contract) + # We still show the state so the user knows the contract was handled. record.contract_state = vehicle_data['state'] else: record.contract_renewal_overdue = False record.contract_renewal_due_soon = False - record.contract_state = "" + record.contract_state = False |
|
