[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:
@@ -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'),
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user