It was possible to assign a user that was not part of the same company as the employee's for an activity which is misleading. Make hr.plan and hr.plan.activity.type company dependent. closes odoo/odoo#77524 Related: odoo/upgrade#2879 Taskid: 2658773 Signed-off-by: Kevin Baptiste <kba@odoo.com>
44 lines
1.8 KiB
Python
44 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class HrPlanWizard(models.TransientModel):
|
|
_name = 'hr.plan.wizard'
|
|
_description = 'Plan Wizard'
|
|
|
|
def _default_plan_id(self):
|
|
employee = self.env['hr.employee'].browse(self.env.context.get('active_id'))
|
|
return self.env['hr.plan'].search([('company_id', '=', employee.company_id.id)], limit=1)
|
|
|
|
plan_id = fields.Many2one('hr.plan', default=_default_plan_id, domain="[('company_id', '=', company_id)]")
|
|
employee_id = fields.Many2one(
|
|
'hr.employee', string='Employee', required=True,
|
|
default=lambda self: self.env.context.get('active_id', None),
|
|
)
|
|
company_id = fields.Many2one(related='employee_id.company_id')
|
|
|
|
def action_launch(self):
|
|
for activity_type in self.plan_id.plan_activity_type_ids:
|
|
responsible = activity_type.get_responsible_id(self.employee_id)
|
|
|
|
if self.env['hr.employee'].with_user(responsible).check_access_rights('read', raise_exception=False):
|
|
date_deadline = self.env['mail.activity']._calculate_date_deadline(activity_type.activity_type_id)
|
|
self.employee_id.activity_schedule(
|
|
activity_type_id=activity_type.activity_type_id.id,
|
|
summary=activity_type.summary,
|
|
note=activity_type.note,
|
|
user_id=responsible.id,
|
|
date_deadline=date_deadline
|
|
)
|
|
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'res_model': 'hr.employee',
|
|
'res_id': self.employee_id.id,
|
|
'name': self.employee_id.display_name,
|
|
'view_mode': 'form',
|
|
'views': [(False, "form")],
|
|
}
|