diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py index 386fe5d9fda..f36757482f5 100644 --- a/addons/hr/models/hr_employee.py +++ b/addons/hr/models/hr_employee.py @@ -390,7 +390,7 @@ class HrEmployeePrivate(models.Model): self.message_unsubscribe(self.address_home_id.ids) if vals['address_home_id']: self._message_subscribe([vals['address_home_id']]) - if vals.get('user_id'): + if 'user_id' in vals: # Update the profile pictures with user, except if provided vals.update(self._sync_user(self.env['res.users'].browse(vals['user_id']), (bool(self.image_1920)))) diff --git a/addons/hr/tests/test_hr_employee.py b/addons/hr/tests/test_hr_employee.py index ed9b813b99e..b0f74bd187f 100644 --- a/addons/hr/tests/test_hr_employee.py +++ b/addons/hr/tests/test_hr_employee.py @@ -181,3 +181,31 @@ class TestHrEmployee(TestHrCommon): 'partner_id': partner.id, }) self.assertFalse(self.env['res.users'].search([('login', '=', 'test_user')]).employee_id) + + def test_employee_update_work_contact_id(self): + """ + Check that the `work_contact_id` information is no longer + updated when an employee's `user_id` is removed. + """ + user = self.env['res.users'].create({ + 'name': 'Test', + 'login': 'test', + 'email': 'test@example.com', + }) + employee_A, employee_B = self.env['hr.employee'].create([ + { + 'name': 'Employee A', + 'user_id': user.id, + 'work_email': 'employee_A@example.com', + }, + { + 'name': 'Employee B', + 'user_id': False, + 'work_email': 'employee_B@example.com', + } + ]) + employee_A.user_id = False + employee_B.user_id = user.id + employee_B.work_email = 'new_email@example.com' + self.assertEqual(employee_A.work_email, 'employee_A@example.com') + self.assertEqual(employee_B.work_email, 'new_email@example.com')