From bd0be295d900c22d8a12b37c59ad378931e3cfb4 Mon Sep 17 00:00:00 2001 From: "Jurgen (jugj)" Date: Thu, 27 Apr 2023 11:29:00 +0000 Subject: [PATCH] [FIX] hr : Hide field department in launch plan wizard if multiple employees from different departments are selected task - 3279067 closes odoo/odoo#123220 X-original-commit: 838c8cb48c9d539476ac133d1513eeefefbb3a24 Signed-off-by: Kevin Baptiste --- addons/hr/wizard/hr_plan_wizard.py | 26 +++++++++++++++++------ addons/hr/wizard/hr_plan_wizard_views.xml | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/addons/hr/wizard/hr_plan_wizard.py b/addons/hr/wizard/hr_plan_wizard.py index c15063d05a4..d46813797f5 100644 --- a/addons/hr/wizard/hr_plan_wizard.py +++ b/addons/hr/wizard/hr_plan_wizard.py @@ -13,17 +13,23 @@ class HrPlanWizard(models.TransientModel): def _default_plan_id(self): # We know that all employees belong to the same company - employee = self.env['hr.employee'].browse(self.env.context.get('active_ids')[0] if self.env.context.get('active_ids') else []) - return self.env['hr.plan'].search([ - ('company_id', '=', employee.company_id.id), - '|', - ('department_id', '=', employee.department_id.id), - ('department_id', '=', False) + employees = self.env['hr.employee'].browse(self.env.context.get('active_ids') if self.env.context.get('active_ids') else []) + if len(employees.department_id) > 1: + return self.env['hr.plan'].search([ + ('company_id', '=', employees[0].company_id.id), + ('department_id', '=', False) ], limit=1) + else: + return self.env['hr.plan'].search([ + ('company_id', '=', employees[0].company_id.id), + '|', + ('department_id', '=', employees[0].department_id.id), + ('department_id', '=', False) + ], limit=1) plan_id = fields.Many2one('hr.plan', default=lambda self: self._default_plan_id(), domain="[('company_id', '=', company_id), '|', ('department_id', '=', department_id), ('department_id', '=', False)]") - department_id = fields.Many2one(related='employee_ids.department_id') + department_id = fields.Many2one('hr.department', compute='_compute_department_id') employee_ids = fields.Many2many( 'hr.employee', 'hr_employee_hr_plan_wizard_rel', 'employee_id', 'plan_wizard_id', string='Employee', required=True, default=lambda self: self.env.context.get('active_ids', []), @@ -31,6 +37,12 @@ class HrPlanWizard(models.TransientModel): company_id = fields.Many2one('res.company', 'Company', compute='_compute_company_id', required=True) warning = fields.Html(compute='_compute_warning') + @api.depends('employee_ids') + def _compute_department_id(self): + for wizard in self: + all_departments = wizard.employee_ids.department_id + wizard.department_id = False if len(all_departments) > 1 else all_departments + @api.constrains('employee_ids') def _check_employee_companies(self): for wizard in self: diff --git a/addons/hr/wizard/hr_plan_wizard_views.xml b/addons/hr/wizard/hr_plan_wizard_views.xml index 35c6b50b7d9..7a379167c58 100644 --- a/addons/hr/wizard/hr_plan_wizard_views.xml +++ b/addons/hr/wizard/hr_plan_wizard_views.xml @@ -8,7 +8,7 @@
- +