[FIX] hr: correct number of employees

This will fix the number of employees in the partner view and redirect to a kanban view of the employees.

The smart button on the partner view for the number of employees related to this partner now gives the correct number depending on the companies selected.

If multiple employees are related, the action shows a kanban view of those employees.

closes odoo/odoo#158146

Task: 3693173
X-original-commit: c1e979203ec82de2300ad2f8b10478e1504b1c7c
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
Arthur Pierrot (arpi)
2024-03-20 13:52:28 +00:00
parent 75d12453c4
commit 065ec4e2bb
2 changed files with 27 additions and 4 deletions
+5 -4
View File
@@ -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'),
+22
View File
@@ -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