From 9e6c22d012ec899be1f1ca7677950ff2404c0081 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Sat, 20 Jun 2026 13:08:07 +0700 Subject: [PATCH] feat: add skip_sync_employee_company_ids context to prevent recursive sync loops in res_users write operations --- models/res_users.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/models/res_users.py b/models/res_users.py index 976e201..2ca2c2a 100644 --- a/models/res_users.py +++ b/models/res_users.py @@ -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] })