[IMP] *: optimize multi-company rule

When we use the `|` (or) version of this rule the ORM generates two
sub-queries when checking the company. This causes sub-optimal and in
some cases really bad planning for the queries and thus PG takes hours
to complete them.

Example (formatted):
```sql
    SELECT "mrp_routing_workcenter".id
      FROM "mrp_routing_workcenter"
 LEFT JOIN "mrp_bom" AS "mrp_routing_workcenter__bom_id"
        ON "mrp_routing_workcenter"."bom_id" = "mrp_routing_workcenter__bom_id"."id"
     WHERE "mrp_routing_workcenter"."workcenter_id" in (1)
       AND (  ("mrp_routing_workcenter"."bom_id" in (
                    SELECT "mrp_bom".id
                      FROM "mrp_bom"
                     WHERE ("mrp_bom"."company_id" in (1))
                   )
              )
           OR ("mrp_routing_workcenter"."bom_id" in (
                    SELECT "mrp_bom".id
                      FROM "mrp_bom"
                     WHERE "mrp_bom"."company_id" IS NULL
                   )
              )
           )
  ORDER BY "mrp_routing_workcenter__bom_id"."sequence",
           "mrp_routing_workcenter__bom_id"."id",
           "mrp_routing_workcenter"."sequence",
           "mrp_routing_workcenter"."id"
```

If we use the single term version the generated query has only one
sub-query:
```sql
    SELECT "mrp_routing_workcenter".id
      FROM "mrp_routing_workcenter"
 LEFT JOIN "mrp_bom" AS "mrp_routing_workcenter__bom_id"
        ON "mrp_routing_workcenter"."bom_id" = "mrp_routing_workcenter__bom_id"."id"
     WHERE "mrp_routing_workcenter"."workcenter_id" in (1)
       AND (  ("mrp_routing_workcenter"."bom_id" in (
                    SELECT "mrp_bom".id
                      FROM "mrp_bom"
                     WHERE (("mrp_bom"."company_id" in (1))
                        OR  ("mrp_bom"."company_id" IS NULL))
                   )
              )
           )
  ORDER BY "mrp_routing_workcenter__bom_id"."sequence",
           "mrp_routing_workcenter__bom_id"."id",
           "mrp_routing_workcenter"."sequence",
           "mrp_routing_workcenter"."id"
```
In this version PG is able to produce a better query plan resulting in
better execution times.

Also, the `company_id` field is required on some models, so the "= False" comparison is useless.

closes odoo/odoo#159123

X-original-commit: 1b5c41f36801fb886ec591f29dba42787d698526
Related: odoo/enterprise#59378
Signed-off-by: Christophe Simonis (chs) <chs@odoo.com>
Co-authored-by: Christophe Simonis <chs@odoo.com>
This commit is contained in:
Alvaro Fuentes
2024-03-25 17:50:06 +00:00
committed by Christophe Simonis
co-authored by Christophe Simonis
parent adc04e2bb2
commit c18b9f44be
34 changed files with 89 additions and 91 deletions
+2 -2
View File
@@ -185,7 +185,7 @@
<record model="ir.rule" id="account_bank_statement_comp_rule">
<field name="name">Account bank statement company rule</field>
<field name="model_id" ref="model_account_bank_statement"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="account_bank_statement_line_comp_rule">
@@ -215,7 +215,7 @@
<record model="ir.rule" id="account_payment_term_comp_rule">
<field name="name">Account payment term company rule</field>
<field name="model_id" ref="model_account_payment_term"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<!-- Billing record rules for account.move -->
@@ -6,28 +6,28 @@
<field name="name">Analytic multi company rule</field>
<field name="model_id" ref="model_account_analytic_account"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="analytic_line_comp_rule" model="ir.rule">
<field name="name">Analytic line multi company rule</field>
<field name="model_id" ref="model_account_analytic_line"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="analytic_applicability_comp_rule" model="ir.rule">
<field name="name">Analytic applicability multi company rule</field>
<field name="model_id" ref="model_account_analytic_applicability"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="analytic_distribution_model_comp_rule" model="ir.rule">
<field name="name">Analytic distribution model multi company rule</field>
<field name="model_id" ref="model_account_analytic_distribution_model"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
<data noupdate="0">
+2 -2
View File
@@ -28,7 +28,7 @@
<record id="crm_lead_company_rule" model="ir.rule">
<field name="name">CRM Lead Multi-Company</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="crm_rule_all_lead" model="ir.rule">
@@ -55,7 +55,7 @@
<record id="crm_activity_report_rule_multi_company" model="ir.rule">
<field name="name">CRM Lead Multi-Company</field>
<field name="model_id" ref="model_crm_activity_report"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="mail_plan_rule_group_sale_manager_lead" model="ir.rule">
+1 -1
View File
@@ -4,7 +4,7 @@
<record model="ir.rule" id="delivery_carrier_comp_rule">
<field name="name">Delivery Carrier multi-company</field>
<field name="model_id" ref="model_delivery_carrier"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</odoo>
+3 -3
View File
@@ -35,17 +35,17 @@
<record model="ir.rule" id="event_event_company_rule">
<field name="name">Event: multi-company</field>
<field name="model_id" ref="model_event_event"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="event_registration_company_rule">
<field name="name">Event/Registration: multi-company</field>
<field name="model_id" ref="model_event_registration"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_event_event_ticket_company" model="ir.rule">
<field name="name">Event/Ticket: multi-company</field>
<field name="model_id" ref="model_event_event_ticket"/>
<field name="domain_force">['|', ('event_id.company_id', '=', False), ('event_id.company_id', 'in', company_ids)]</field>
<field name="domain_force">[('event_id.company_id', 'in', company_ids + [False])]</field>
</record>
</data>
@@ -5,7 +5,7 @@
<field name="name">Event CRM: Multi Company</field>
<field name="model_id" ref="model_event_lead_rule"/>
<field name="groups" eval="[(4, ref('base.group_multi_company'))]"/>
<field name="domain_force">['|', ('company_id','=',False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
</odoo>
+1 -1
View File
@@ -5,7 +5,7 @@
<record id="event_sale_report_comp_rule" model="ir.rule">
<field name="name">Event Sales Report multi-company</field>
<field name="model_id" ref="model_event_sale_report"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</odoo>
+5 -5
View File
@@ -83,29 +83,29 @@
<record id="ir_rule_fleet_vehicle" model="ir.rule">
<field name="name">Fleet vehicle: Multi Company</field>
<field name="model_id" ref="model_fleet_vehicle"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_fleet_vehicle_log_contract" model="ir.rule">
<field name="name">Fleet vehicle log contract: Multi Company</field>
<field name="model_id" ref="model_fleet_vehicle_log_contract"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_fleet_report" model="ir.rule">
<field name="name">Costs Analysis: Multi Company</field>
<field name="model_id" ref="model_fleet_vehicle_cost_report"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_fleet_odometer" model="ir.rule">
<field name="name">Fleet odometer: Multi Company</field>
<field name="model_id" ref="model_fleet_vehicle_odometer"/>
<field name="global" eval="True"/>
<field name="domain_force">['|', ('vehicle_id.company_id', '=', False), ('vehicle_id.company_id', 'in', company_ids)]</field>
<field name="domain_force">[('vehicle_id.company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_fleet_log_services" model="ir.rule">
<field name="name">Fleet log services: Multi Company</field>
<field name="model_id" ref="model_fleet_vehicle_log_services"/>
<field name="global" eval="True"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
</odoo>
+4 -4
View File
@@ -28,25 +28,25 @@
<record id="hr_employee_comp_rule" model="ir.rule">
<field name="name">Employee multi company rule</field>
<field name="model_id" ref="model_hr_employee"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_dept_comp_rule" model="ir.rule">
<field name="name">Department multi company rule</field>
<field name="model_id" ref="model_hr_department"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_employee_public_comp_rule" model="ir.rule">
<field name="name">Employee multi company rule</field>
<field name="model_id" ref="model_hr_employee_public"/>
<field name="domain_force">['|',('company_id', '=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_job_comp_rule" model="ir.rule">
<field name="name">Job multi company rule</field>
<field name="model_id" ref="model_hr_job"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_res_partner_bank_internal_users" model="ir.rule">
+1 -1
View File
@@ -46,7 +46,7 @@
<record id="ir_rule_hr_contract_multi_company" model="ir.rule">
<field name="name">HR Contract: Multi Company</field>
<field name="model_id" ref="model_hr_contract"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="ir_rule_hr_payroll_structure_type_multi_company" model="ir.rule">
+2 -2
View File
@@ -66,13 +66,13 @@
<field name="name">Expense multi company rule</field>
<field name="model_id" ref="model_hr_expense"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_expense_report_comp_rule" model="ir.rule">
<field name="name">Expense Report multi company rule</field>
<field name="model_id" ref="model_hr_expense_sheet"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_expense_team_approver_account_move_rule" model="ir.rule">
@@ -145,9 +145,7 @@
'|',
('employee_id', '=', False),
('employee_id.company_id', 'in', company_ids),
'|',
('holiday_status_id.company_id', '=', False),
('holiday_status_id.company_id', 'in', company_ids)
('holiday_status_id.company_id', 'in', company_ids + [False])
]</field>
</record>
@@ -247,26 +245,26 @@
<record id="hr_holidays_status_rule_multi_company" model="ir.rule">
<field name="name">Time Off multi company rule</field>
<field name="model_id" ref="model_hr_leave_type"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_leave_accrual_plan_rule_multi_company" model="ir.rule">
<field name="name">Accrual plan multi company rule</field>
<field name="model_id" ref="model_hr_leave_accrual_plan"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_leave_mandatory_day_rule_multi_company" model="ir.rule">
<field name="name">Mandatory Day: multi company rule</field>
<field name="model_id" ref="model_hr_leave_mandatory_day"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_leave_report_calendar_rule_multi_company" model="ir.rule">
<field name="name">Time Off Report Calendar: multi company global rule</field>
<field name="model_id" ref="model_hr_leave_report_calendar"/>
<field name="global" eval="True"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_leave_report_rule_group_user" model="ir.rule">
@@ -10,7 +10,7 @@
<field name="name">Applicant multi company rule</field>
<field name="model_id" ref="model_hr_applicant"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="group_hr_recruitment_interviewer" model="res.groups">
@@ -54,6 +54,6 @@
<record id="hr_employee_skill_report_multicompany" model="ir.rule">
<field name="name">Employee Skill Report: Multi-Company Rule</field>
<field name="model_id" ref="model_hr_employee_skill_report"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</odoo>
@@ -3,7 +3,7 @@
<record id="hr_timesheet_attendance_report_restricted_company_rule" model="ir.rule">
<field name="name">Restricted Timesheet attendance Record: multi-company</field>
<field name="model_id" ref="model_hr_timesheet_attendance_report"/>
<field name="domain_force"> ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force"> [('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="hr_timesheet_attendance_report_rule_user" model="ir.rule">
@@ -4,7 +4,7 @@
<record id="ir_rule_hr_work_entry_multi_company" model="ir.rule">
<field name="name">HR Work Entry Contract: Multi Company</field>
<field name="model_id" ref="model_hr_work_entry"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
</odoo>
+4 -4
View File
@@ -4,25 +4,25 @@
<record id="sale_loyalty_program_company_rule" model="ir.rule">
<field name="name">Loyalty program multi company rule</field>
<field name="model_id" ref="model_loyalty_program"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="sale_loyalty_card_company_rule" model="ir.rule">
<field name="name">Loyalty card multi company rule</field>
<field name="model_id" ref="model_loyalty_card"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="sale_loyalty_rule_company_rule" model="ir.rule">
<field name="name">Loyalty rule multi company rule</field>
<field name="model_id" ref="model_loyalty_rule"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="sale_loyalty_reward_company_rule" model="ir.rule">
<field name="name">Loyalty reward multi company rule</field>
<field name="model_id" ref="model_loyalty_reward"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
</odoo>
+5 -5
View File
@@ -68,31 +68,31 @@
<record id="ir_rule_lunch_supplier_multi_company" model="ir.rule">
<field name="name">Lunch supplier: Multi Company</field>
<field name="model_id" ref="model_lunch_supplier"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_lunch_order_multi_company" model="ir.rule">
<field name="name">Lunch order: Multi Company</field>
<field name="model_id" ref="model_lunch_order"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_lunch_product_multi_company" model="ir.rule">
<field name="name">Lunch product: Multi Company</field>
<field name="model_id" ref="model_lunch_product"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_lunch_product_category_multi_company" model="ir.rule">
<field name="name">Lunch product category: Multi Company</field>
<field name="model_id" ref="model_lunch_product_category"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_lunch_location_multi_company" model="ir.rule">
<field name="name">Lunch location: Multi Company</field>
<field name="model_id" ref="model_lunch_location"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
</odoo>
+4 -4
View File
@@ -43,25 +43,25 @@
<record id="maintenance_request_comp_rule" model="ir.rule">
<field name="name">Maintenance Request Multi-company rule</field>
<field name="model_id" ref="model_maintenance_request"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="maintenance_equipment_comp_rule" model="ir.rule">
<field name="name">Maintenance Equipment Multi-company rule</field>
<field name="model_id" ref="model_maintenance_equipment"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="maintenance_team_comp_rule" model="ir.rule">
<field name="name">Maintenance Team Multi-company rule</field>
<field name="model_id" ref="model_maintenance_team"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="maintenance_equipment_category_comp_rule" model="ir.rule">
<field name="name">Maintenance Equipment Category Multi-company rule</field>
<field name="model_id" ref="model_maintenance_equipment_category"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
+5 -5
View File
@@ -66,7 +66,7 @@
<record model="ir.rule" id="mrp_workcenter_rule">
<field name="name">mrp_workcenter multi-company</field>
<field name="model_id" search="[('model','=','mrp.workcenter')]" model="ir.model"/>
<field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="mrp_workorder_rule">
@@ -78,25 +78,25 @@
<record model="ir.rule" id="mrp_bom_rule">
<field name="name">mrp_bom multi-company</field>
<field name="model_id" search="[('model','=','mrp.bom')]" model="ir.model"/>
<field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="mrp_bom_line_rule">
<field name="name">mrp_bom_line multi-company</field>
<field name="model_id" search="[('model','=','mrp.bom.line')]" model="ir.model"/>
<field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="mrp_bom_byproduct_rule">
<field name="name">mrp_bom_byproduct multi-company</field>
<field name="model_id" search="[('model','=','mrp.bom.byproduct')]" model="ir.model"/>
<field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="mrp_routing_workcenter_rule">
<field name="name">mrp_routing_workcenter multi-company</field>
<field name="model_id" search="[('model','=','mrp.routing.workcenter')]" model="ir.model"/>
<field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="mrp_workcenter_productivity">
@@ -54,7 +54,7 @@
<record id="rule_pos_order_report_multi_company" model="ir.rule">
<field name="name">Point Of Sale Order Analysis multi-company</field>
<field name="model_id" ref="model_report_pos_order"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="rule_pos_payment_method_multi_company" model="ir.rule">
<field name="name">PoS Payment Method</field>
+4 -4
View File
@@ -52,13 +52,13 @@
<record model="ir.rule" id="project_comp_rule">
<field name="name">Project: multi-company</field>
<field name="model_id" ref="model_project_project"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="project_project_stage_rule">
<field name="name">Project Stage: multi-company</field>
<field name="model_id" ref="model_project_project_stage"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="project_project_manager_rule">
@@ -81,7 +81,7 @@
<record model="ir.rule" id="task_comp_rule">
<field name="name">Project/Task: multi-company</field>
<field name="model_id" ref="model_project_task"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="task_visibility_rule">
@@ -139,7 +139,7 @@
<record model="ir.rule" id="report_project_task_user_report_comp_rule">
<field name="name">Task Analysis multi-company</field>
<field name="model_id" ref="model_report_project_task_user"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="ir_rule_project_personal_stage_my" model="ir.rule">
@@ -43,13 +43,13 @@
<record model="ir.rule" id="purchase_order_comp_rule">
<field name="name">Purchase Order multi-company</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="purchase_order_line_comp_rule">
<field name="name">Purchase Order Line multi-company</field>
<field name="model_id" ref="model_purchase_order_line"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="portal_purchase_order_user_rule" model="ir.rule">
@@ -84,13 +84,13 @@
<record model="ir.rule" id="purchase_bill_union_comp_rule">
<field name="name">Purchases &amp; Bills Union multi-company</field>
<field name="model_id" ref="model_purchase_bill_union"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="purchase_order_report_comp_rule" model="ir.rule">
<field name="name">Purchase Order Report multi-company</field>
<field name="model_id" ref="model_purchase_report"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
</data>
@@ -4,13 +4,13 @@
<record model="ir.rule" id="purchase_requisition_comp_rule">
<field name="name">Purchase Requisition multi-company</field>
<field name="model_id" ref="model_purchase_requisition"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="purchase_requisition_line_comp_rule">
<field name="name">Purchase requisition Line multi-company</field>
<field name="model_id" ref="model_purchase_requisition_line"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
</odoo>
@@ -30,12 +30,12 @@
<record id="resource_resource_multi_company" model="ir.rule">
<field name="name">resource.resource multi-company</field>
<field name="model_id" ref="model_resource_resource"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="resource_calendar_leaves_rule_multi_company">
<field name="name">resource.calendar.leaves: multi-company rule</field>
<field name="model_id" ref="model_resource_calendar_leaves"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</odoo>
+2 -2
View File
@@ -11,13 +11,13 @@
<record id="sale_order_line_comp_rule" model="ir.rule">
<field name="name">Sales Order Line multi-company</field>
<field name="model_id" ref="model_sale_order_line"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="sale_order_report_comp_rule" model="ir.rule">
<field name="name">Sales Order Analysis multi-company</field>
<field name="model_id" ref="model_sale_report"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<!-- Portal Access Rules -->
@@ -10,7 +10,7 @@
<record id="sale_order_template_rule_company" model="ir.rule">
<field name="name">Quotation Template multi-company</field>
<field name="model_id" ref="model_sale_order_template"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
</odoo>
@@ -39,7 +39,7 @@
<record model="ir.rule" id="sale_team_comp_rule">
<field name="name">Sales Team multi-company</field>
<field name="model_id" ref="model_crm_team"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="base.default_user" model="res.users">
+8 -8
View File
@@ -123,7 +123,7 @@
<record model="ir.rule" id="stock_location_comp_rule">
<field name="name">Location multi-company</field>
<field name="model_id" ref="model_stock_location"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="stock_move_rule">
@@ -135,13 +135,13 @@
<record model="ir.rule" id="stock_move_line_rule">
<field name="name">stock_move_line multi-company</field>
<field name="model_id" search="[('model','=','stock.move.line')]" model="ir.model"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="stock_quant_rule">
<field name="name">stock_quant multi-company</field>
<field name="model_id" ref="model_stock_quant"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="stock_warehouse_orderpoint_rule">
@@ -153,19 +153,19 @@
<record model="ir.rule" id="product_pulled_flow_comp_rule">
<field name="name">product_pulled_flow multi-company</field>
<field name="model_id" ref="model_stock_rule"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="stock_location_route_comp_rule">
<field name="name">stock_route multi-company</field>
<field name="model_id" ref="model_stock_route"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="stock_quant_package_comp_rule">
<field name="name">stock_quant_package multi-company</field>
<field name="model_id" ref="model_stock_quant_package"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="stock_scrap_company_rule">
@@ -177,13 +177,13 @@
<record model="ir.rule" id="report_stock_quantity_flow_comp_rule">
<field name="name">report_stock_quantity_flow multi-company</field>
<field name="model_id" ref="model_report_stock_quantity"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="stock_storage_category_rule">
<field name="name">stock_storage_category multi-company</field>
<field name="model_id" ref="model_stock_storage_category"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
</data>
@@ -4,7 +4,7 @@
<record model="ir.rule" id="stock_landed_cost_rule">
<field name="name">stock_landed_cost multi-company</field>
<field name="model_id" search="[('model','=','stock.landed.cost')]" model="ir.model"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
</odoo>
@@ -5,14 +5,14 @@
<field name="name">Mail Test Multi Company</field>
<field name="model_id" ref="test_mail.model_mail_test_multi_company"/>
<field eval="True" name="global"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="mail_test_multi_company_read_rule" model="ir.rule">
<field name="name">MC Readonly Rule</field>
<field name="model_id" ref="test_mail.model_mail_test_multi_company_read"/>
<field name="perm_read" eval="False"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="global" eval="True"/>
</record>
@@ -20,7 +20,7 @@
<field name="name">Mail Test Multi Company With Activity</field>
<field name="model_id" ref="test_mail.model_mail_test_multi_company_with_activity"/>
<field eval="True" name="global"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<!-- TICKET-LIKE -->
@@ -36,7 +36,7 @@
<field name="name">Mail Test Ticket Multi Company</field>
<field name="model_id" ref="test_mail.model_mail_test_ticket_mc"/>
<field name="global" eval="True"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="mail_test_ticket_mc_rule_portal" model="ir.rule">
<field name="name">Portal Mail Test Ticket Multi Company</field>
@@ -57,7 +57,7 @@
<record id="mail_test_container_mc_rule" model="ir.rule">
<field name="name">Mail Test Container Multi Company</field>
<field name="model_id" ref="test_mail.model_mail_test_container_mc"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
<field name="global" eval="True"/>
</record>
<record id="mail_test_container_mc_rule_portal" model="ir.rule">
@@ -5,7 +5,7 @@
<field name="name">TestRating: Multi Company</field>
<field name="model_id" ref="test_mail_full.model_mail_test_rating"/>
<field eval="True" name="global"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="mail_test_rating_rule_portal" model="ir.rule">
<field name="name">TestRating: Portal should follow</field>
+3 -3
View File
@@ -16,7 +16,7 @@
the multi-company rule because it might interfere with the user's company rule
and make some users unselectable in relational fields. This means that partners
of internal users are always visible, not matter the company setting. -->
<field name="domain_force">['|', '|', ('partner_share', '=', False), ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">['|', ('partner_share', '=', False), ('company_id', 'in', company_ids + [False])]</field>
</record>
<record model="ir.rule" id="res_partner_portal_public_rule">
@@ -56,13 +56,13 @@
<record id="res_partner_bank_rule" model="ir.rule">
<field name="name">Partner bank company rule</field>
<field name="model_id" ref="model_res_partner_bank"/>
<field name="domain_force">['|', ('company_id', 'in', company_ids), ('company_id', '=', False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="res_currency_rate_rule" model="ir.rule">
<field name="name">multi-company currency rate rule</field>
<field name="model_id" ref="model_res_currency_rate"/>
<field name="domain_force">['|',('company_id','=',False),('company_id', 'in', company_ids)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>
<record id="change_password_rule" model="ir.rule">
+1 -1
View File
@@ -109,7 +109,7 @@
<field name="name">Property multi-company</field>
<field name="model_id" ref="model_ir_property"/>
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id', 'in', company_ids),('company_id','=',False)]</field>
<field name="domain_force">[('company_id', 'in', company_ids + [False])]</field>
</record>