hr_fleet/models/mail_activity_plan_template.py

36 lines
1.6 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
from odoo import exceptions
class MailActivityPlanTemplate(models.Model):
_inherit = 'mail.activity.plan.template'
responsible_type = fields.Selection(
selection_add=[('fleet_manager', "Fleet Manager")],
ondelete={'fleet_manager': 'set default'})
@api.constrains('plan_id', 'responsible_type')
def _check_responsible_hr_fleet(self):
""" Ensure that hr types are used only on employee model """
for template in self.filtered(lambda tpl: tpl.plan_id.res_model != 'hr.employee'):
if template.responsible_type == 'fleet_manager':
raise exceptions.ValidationError(_("Fleet Manager is limited to Employee plans."))
def _determine_responsible(self, on_demand_responsible, employee):
if self.responsible_type == 'fleet_manager' and self.plan_id.res_model == 'hr.employee':
employee_id = self.env['hr.employee'].browse(employee._origin.id)
vehicle = employee_id.car_ids[:1]
error = False
if not vehicle:
error = _('Employee %s is not linked to a vehicle.', employee_id.name)
if vehicle and not vehicle.manager_id:
error = _("The vehicle of employee %(employee)s is not linked to a fleet manager.", employee=employee_id.name)
return {
'responsible': vehicle.manager_id,
'error': error,
}
return super()._determine_responsible(on_demand_responsible, employee)