feat: add skip_sync_employee_company_ids context to prevent recursive sync loops in res_users write operations

This commit is contained in:
Suherdy Yacob 2026-06-20 13:08:07 +07:00
parent cfd5575451
commit 9e6c22d012

View File

@ -62,16 +62,19 @@ class ResUsers(models.Model):
vals['company_ids'] = [(4, company_id)]
res = super().write(vals)
if any(f in vals for f in ['company_id', 'company_ids']):
self.sudo()._sync_employee_company_ids()
if not self.env.context.get('skip_sync_employee_company_ids'):
if any(f in vals for f in ['company_id', 'company_ids']):
self.sudo()._sync_employee_company_ids()
return res
def _sync_employee_company_ids(self):
if self.env.context.get('skip_sync_employee_company_ids'):
return
for user in self:
employee_companies = user.employee_ids.mapped('company_ids')
employee_primary_companies = user.employee_ids.mapped('company_id')
companies_to_add = (employee_companies | employee_primary_companies | user.company_id) - user.company_ids
if companies_to_add:
user.write({
user.with_context(skip_sync_employee_company_ids=True).write({
'company_ids': [(4, cid.id) for cid in companies_to_add]
})