diff --git a/addons/hr/models/hr_plan.py b/addons/hr/models/hr_plan.py index c3051d3b48d..60e64692658 100644 --- a/addons/hr/models/hr_plan.py +++ b/addons/hr/models/hr_plan.py @@ -9,8 +9,9 @@ class HrPlanActivityType(models.Model): _name = 'hr.plan.activity.type' _description = 'Plan activity type' _rec_name = 'summary' + _check_company_auto = True - + company_id = fields.Many2one('res.company', default=lambda self: self.env.company) activity_type_id = fields.Many2one( 'mail.activity.type', 'Activity Type', default=lambda self: self.env.ref('mail.mail_activity_data_todo'), @@ -23,7 +24,7 @@ class HrPlanActivityType(models.Model): ('manager', 'Manager'), ('employee', 'Employee'), ('other', 'Other')], default='employee', string='Responsible', required=True) - responsible_id = fields.Many2one('res.users', 'Name', help='Specific responsible of activity if not linked to the employee.') + responsible_id = fields.Many2one('res.users', 'Name', help='Specific responsible of activity if not linked to the employee.', check_company=True) note = fields.Html('Note') @@ -62,5 +63,6 @@ class HrPlan(models.Model): _description = 'plan' name = fields.Char('Name', required=True) - plan_activity_type_ids = fields.Many2many('hr.plan.activity.type', string='Activities') + company_id = fields.Many2one('res.company', default=lambda self: self.env.company) + plan_activity_type_ids = fields.Many2many('hr.plan.activity.type', string='Activities', domain="[('company_id', '=', company_id)]") active = fields.Boolean(default=True) diff --git a/addons/hr/security/hr_security.xml b/addons/hr/security/hr_security.xml index b801b1ec4bc..c84300e0502 100644 --- a/addons/hr/security/hr_security.xml +++ b/addons/hr/security/hr_security.xml @@ -49,5 +49,17 @@ ['|',('company_id','=',False),('company_id', 'in', company_ids)] + + + Plan multi-company rule + + ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] + + + + Plan Activity Type multi-company rule + + ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] + diff --git a/addons/hr/views/hr_plan_views.xml b/addons/hr/views/hr_plan_views.xml index 252ae9e2c4e..57fc261f51a 100644 --- a/addons/hr/views/hr_plan_views.xml +++ b/addons/hr/views/hr_plan_views.xml @@ -20,6 +20,7 @@ + @@ -37,10 +38,12 @@ + + @@ -61,6 +64,7 @@ + @@ -74,6 +78,7 @@ + diff --git a/addons/hr/wizard/hr_plan_wizard.py b/addons/hr/wizard/hr_plan_wizard.py index 9df61d1de8c..92f0293c0c3 100644 --- a/addons/hr/wizard/hr_plan_wizard.py +++ b/addons/hr/wizard/hr_plan_wizard.py @@ -8,11 +8,16 @@ class HrPlanWizard(models.TransientModel): _name = 'hr.plan.wizard' _description = 'Plan Wizard' - plan_id = fields.Many2one('hr.plan', default=lambda self: self.env['hr.plan'].search([], limit=1)) + 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: diff --git a/addons/hr/wizard/hr_plan_wizard_views.xml b/addons/hr/wizard/hr_plan_wizard_views.xml index 51754c2a634..d9da9ced4ec 100644 --- a/addons/hr/wizard/hr_plan_wizard_views.xml +++ b/addons/hr/wizard/hr_plan_wizard_views.xml @@ -10,6 +10,7 @@ +