36 lines
1.6 KiB
Python
36 lines
1.6 KiB
Python
|
# -*- 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)
|