1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
# -*- 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)
|