feat: add multi-company record rule for public employees to hr_employee model

This commit is contained in:
Suherdy Yacob 2026-05-19 16:12:02 +07:00
parent 8ab0089659
commit c6a53aa21d
3 changed files with 13 additions and 0 deletions

View File

@ -76,6 +76,12 @@ class HrEmployee(models.Model):
if rule.domain_force != new_domain: if rule.domain_force != new_domain:
rule.sudo().write({'domain_force': new_domain}) rule.sudo().write({'domain_force': new_domain})
rule_public = self.env.ref('hr.hr_employee_public_comp_rule', raise_if_not_found=False)
if rule_public:
new_domain_public = "['|', '|', '|', '|', ('company_ids', 'in', company_ids), ('company_id', 'in', company_ids + [False]), ('parent_id.user_id', '=', user.id), ('id', '=', user.employee_id.parent_id.id), ('user_id', '=', user.id)]"
if rule_public.domain_force != new_domain_public:
rule_public.sudo().write({'domain_force': new_domain_public})
class HrEmployeePublic(models.Model): class HrEmployeePublic(models.Model):

View File

@ -8,6 +8,13 @@
<field name="domain_force">['|', ('company_ids', 'in', company_ids), '&amp;', ('company_ids', '=', False), ('company_id', 'in', company_ids)]</field> <field name="domain_force">['|', ('company_ids', 'in', company_ids), '&amp;', ('company_ids', '=', False), ('company_id', 'in', company_ids)]</field>
</record> </record>
<record id="hr.hr_employee_public_comp_rule" model="ir.rule">
<field name="name">Employee public multi branch rule</field>
<field name="model_id" ref="hr.model_hr_employee_public"/>
<field name="global" eval="True"/>
<field name="domain_force">['|', '|', '|', '|', ('company_ids', 'in', company_ids), ('company_id', 'in', company_ids + [False]), ('parent_id.user_id', '=', user.id), ('id', '=', user.employee_id.parent_id.id), ('user_id', '=', user.id)]</field>
</record>
<record id="base.res_partner_rule" model="ir.rule"> <record id="base.res_partner_rule" model="ir.rule">
<field name="domain_force">['|', '|', '|', ('partner_share', '=', False), ('company_id', 'parent_of', company_ids), ('company_id', '=', False), ('employee_ids.company_ids', 'in', company_ids)]</field> <field name="domain_force">['|', '|', '|', ('partner_share', '=', False), ('company_id', 'parent_of', company_ids), ('company_id', '=', False), ('employee_ids.company_ids', 'in', company_ids)]</field>
</record> </record>