diff --git a/addons/hr/models/hr_employee.py b/addons/hr/models/hr_employee.py index 063fa1dd3bd..c83774d563a 100644 --- a/addons/hr/models/hr_employee.py +++ b/addons/hr/models/hr_employee.py @@ -410,11 +410,11 @@ class HrEmployeePrivate(models.Model): if 'work_contact_id' in vals: account_ids = vals.get('bank_account_id') or self.bank_account_id.ids if account_ids: - bank_accounts = self.env['res.partner.bank'].browse(account_ids) + bank_accounts = self.env['res.partner.bank'].sudo().browse(account_ids) for bank_account in bank_accounts: if vals['work_contact_id'] != bank_account.partner_id.id: if bank_account.allow_out_payment: - bank_account.sudo().allow_out_payment = False + bank_account.allow_out_payment = False if vals['work_contact_id']: bank_account.partner_id = vals['work_contact_id'] self.message_unsubscribe(self.work_contact_id.ids) diff --git a/addons/hr/tests/test_hr_employee.py b/addons/hr/tests/test_hr_employee.py index b0f74bd187f..9e16144cf63 100644 --- a/addons/hr/tests/test_hr_employee.py +++ b/addons/hr/tests/test_hr_employee.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo.tests import Form +from odoo.tests import Form, users from odoo.addons.hr.tests.common import TestHrCommon @@ -209,3 +209,36 @@ class TestHrEmployee(TestHrCommon): 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') + + @users('admin') + def test_change_user_on_employee(self): + test_other_user = self.env['res.users'].create({ + 'name': 'Test Other User', + 'login': 'test_other_user', + }) + test_other_user.partner_id.company_id = self.env.company + test_company = self.env['res.company'].create({ + 'name' : 'Test User Company', + }) + self.env.user.write({'company_ids': test_company.ids, 'company_id': test_company.id}) + test_user = self.env['res.users'].create({ + 'name': 'Test User', + 'login': 'test_user', + }) + test_user.partner_id.company_id = test_company + bank_account = self.env['res.partner.bank'].create({ + 'acc_number' : '1234567', + 'partner_id' : test_user.partner_id.id, + }) + test_employee = self.env['hr.employee'].create({ + 'name': 'Test User - employee', + 'user_id': test_user.id, + 'company_id': test_company.id, + 'bank_account_id': bank_account.id, + }) + # change user -> bank account change company + with Form(test_employee) as employee_form: + employee_form.user_id = test_other_user + # change user back -> check that there is no company error + with Form(test_employee) as employee_form: + employee_form.user_id = test_user diff --git a/addons/hr/views/hr_employee_views.xml b/addons/hr/views/hr_employee_views.xml index 712107edd57..bc7ef27b1e0 100644 --- a/addons/hr/views/hr_employee_views.xml +++ b/addons/hr/views/hr_employee_views.xml @@ -189,7 +189,7 @@ - +