diff --git a/addons/hr/models/res_partner.py b/addons/hr/models/res_partner.py index 7bba971f882..b881a77f130 100644 --- a/addons/hr/models/res_partner.py +++ b/addons/hr/models/res_partner.py @@ -14,17 +14,18 @@ class Partner(models.Model): def _compute_employees_count(self): for partner in self: - partner.employees_count = len(partner.employee_ids) + partner.employees_count = len(partner.employee_ids.filtered(lambda e: e.company_id in self.env.companies)) def action_open_employees(self): self.ensure_one() - if len(self.employee_ids) > 1: + if self.employees_count > 1: return { 'name': _('Related Employees'), 'type': 'ir.actions.act_window', 'res_model': 'hr.employee', - 'view_mode': 'form', - 'domain': [('id', 'in', self.employee_ids.ids)], + 'view_mode': 'kanban', + 'domain': [('id', 'in', self.employee_ids.ids), + ('company_id', 'in', self.env.companies.ids)], } return { 'name': _('Employee'), diff --git a/addons/hr/tests/test_hr_employee.py b/addons/hr/tests/test_hr_employee.py index d6d939710b0..56e48fe628a 100644 --- a/addons/hr/tests/test_hr_employee.py +++ b/addons/hr/tests/test_hr_employee.py @@ -21,6 +21,28 @@ class TestHrEmployee(TestHrCommon): 'image_1920': False }) + def test_employee_smart_button_multi_company(self): + partner = self.env['res.partner'].create({'name': 'Partner Test'}) + company_A = self.env['res.company'].create({'name': 'company_A'}) + company_B = self.env['res.company'].create({'name': 'company_B'}) + self.env['hr.employee'].create({ + 'name': 'employee_A', + 'work_contact_id': partner.id, + 'company_id': company_A.id, + }) + self.env['hr.employee'].create({ + 'name': 'employee_B', + 'work_contact_id': partner.id, + 'company_id': company_B.id + }) + + partner.with_company(company_A)._compute_employees_count() + self.assertEqual(partner.employees_count, 1) + partner.with_company(company_B)._compute_employees_count() + self.assertEqual(partner.employees_count, 1) + partner.with_company(company_A).with_company(company_B)._compute_employees_count() + self.assertEqual(partner.employees_count, 2) + def test_employee_linked_partner(self): user_partner = self.user_without_image.partner_id work_contact = self.employee_without_image.work_contact_id