From b34c458311b4f9d73013b5aae67e61a3f15d1fe0 Mon Sep 17 00:00:00 2001 From: "Xavier BOL (xbo)" Date: Mon, 19 Dec 2022 09:15:16 +0000 Subject: [PATCH] [FIX] hr: search method of member_of_department Before this commit, when the parameters given to the `_search_part_of_department` is: - `operator='!='` - `value=False` Then the domain returned by the method does not take into account the False value. This commit fixes the issue by changing the `=` into `!=` when the value is False instead of changing `!=` into `=` when the value is False. closes odoo/odoo#108589 X-original-commit: 814cdc9a7bccf4dca1cf93403295cf1280ca6c10 Signed-off-by: Laurent Stukkens (ltu) Signed-off-by: Kevin Baptiste Signed-off-by: Xavier Bol (xbo) --- addons/hr/models/hr_employee_base.py | 2 +- addons/hr/tests/test_hr_employee.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/hr/models/hr_employee_base.py b/addons/hr/models/hr_employee_base.py index b320881bd6b..9a21b15b8ac 100644 --- a/addons/hr/models/hr_employee_base.py +++ b/addons/hr/models/hr_employee_base.py @@ -92,7 +92,7 @@ class HrEmployeeBase(models.AbstractModel): raise UserError(_('Operation not supported')) # Double negation if not value: - operator = '=' if operator == '!=' else '=' + operator = '!=' if operator == '=' else '=' if not self.env.user.employee_id.department_id: return [('id', operator, self.env.user.employee_id.id)] return (['!'] if operator == '!=' else []) + [('department_id', 'child_of', self.env.user.employee_id.department_id.id)] diff --git a/addons/hr/tests/test_hr_employee.py b/addons/hr/tests/test_hr_employee.py index 087e3e407c6..ed9b813b99e 100644 --- a/addons/hr/tests/test_hr_employee.py +++ b/addons/hr/tests/test_hr_employee.py @@ -124,6 +124,19 @@ class TestHrEmployee(TestHrCommon): self.assertTrue(emp_sub_sub.member_of_department) self.assertFalse(emp_other.member_of_department) self.assertFalse(emp_parent.member_of_department) + employees = emp + emp_sub + emp_sub_sub + emp_other + emp_parent + self.assertEqual( + employees.filtered_domain(employees._search_part_of_department('=', True)), + emp + emp_sub + emp_sub_sub) + self.assertEqual( + employees.filtered_domain(employees._search_part_of_department('!=', False)), + emp + emp_sub + emp_sub_sub) + self.assertEqual( + employees.filtered_domain(employees._search_part_of_department('=', False)), + emp_other + emp_parent) + self.assertEqual( + employees.filtered_domain(employees._search_part_of_department('!=', True)), + emp_other + emp_parent) def test_employee_create_from_user(self): employee = self.env['hr.employee'].create({