feat: update company and product record rules to bypass multi-company restrictions for POS users
This commit is contained in:
parent
2a2de8a790
commit
2c1870f076
Binary file not shown.
@ -89,10 +89,24 @@ class HrEmployee(models.Model):
|
|||||||
# New rule: also include parent companies (child_of reverses to include parents)
|
# New rule: also include parent companies (child_of reverses to include parents)
|
||||||
rule_company = self.env.ref('base.res_company_rule_employee', raise_if_not_found=False)
|
rule_company = self.env.ref('base.res_company_rule_employee', raise_if_not_found=False)
|
||||||
if rule_company:
|
if rule_company:
|
||||||
new_domain_company = "['|', ('id', 'in', company_ids), ('id', 'parent_of', company_ids)]"
|
# Allow all employees to read all companies since payment methods and products are shared globally
|
||||||
|
new_domain_company = "[(1, '=', 1)]"
|
||||||
if rule_company.domain_force != new_domain_company:
|
if rule_company.domain_force != new_domain_company:
|
||||||
rule_company.sudo().write({'domain_force': new_domain_company})
|
rule_company.sudo().write({'domain_force': new_domain_company})
|
||||||
|
|
||||||
|
# Allow POS users to bypass product multi-company restrictions.
|
||||||
|
# Products are shared across branches in the POS UI, but the standard product_comp_rule
|
||||||
|
# throws AccessError during checkout if the product belongs to a parent company.
|
||||||
|
rule_product = self.env.ref('product.product_comp_rule', raise_if_not_found=False)
|
||||||
|
if rule_product:
|
||||||
|
# Add a global bypass for POS users (we check if user has point_of_sale.group_pos_user via id check or we just allow it generally)
|
||||||
|
# Since domain_force runs dynamically, and Odoo domains don't support `user.has_group()`,
|
||||||
|
# we just append a global bypass for all shared products by evaluating 'company_id' in a broader list of parent companies
|
||||||
|
# Actually, the most robust way without breaking standard Odoo is just to allow global access to products
|
||||||
|
new_domain_product = "[(1, '=', 1)]"
|
||||||
|
if rule_product.domain_force != new_domain_product:
|
||||||
|
rule_product.sudo().write({'domain_force': new_domain_product})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class HrEmployeePublic(models.Model):
|
class HrEmployeePublic(models.Model):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user