feat: add stock dependency and dynamically update stock record rules for multi-company access

This commit is contained in:
Suherdy Yacob 2026-06-04 10:14:37 +07:00
parent 971f004a26
commit 9e0e5ad977
3 changed files with 28 additions and 1 deletions

View File

@ -8,7 +8,7 @@
It allows an employee to be associated with multiple branch companies.
""",
'author': 'Suherdy Yacob',
'depends': ['hr', 'pos_hr', 'hr_attendance', 'product'],
'depends': ['hr', 'pos_hr', 'hr_attendance', 'product', 'stock'],
'data': [
'security/hr_security.xml',
'security/hr_attendance_security.xml',

View File

@ -28,6 +28,33 @@ class HrEmployee(models.Model):
domain="[('share', '=', False), ('company_ids', 'in', company_ids)]"
)
@api.model
def _register_hook(self):
super()._register_hook()
rules_to_update = {
'stock.stock_picking_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.stock_picking_type_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.stock_putaway_rule_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.stock_production_lot_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_warehouse_comp_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.stock_location_comp_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_move_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.stock_move_line_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_quant_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_warehouse_orderpoint_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.product_pulled_flow_comp_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_location_route_comp_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_package_comp_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
'stock.stock_scrap_company_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.report_stock_quantity_flow_comp_rule': "[('company_id', 'in', user.company_ids.ids)]",
'stock.stock_storage_category_rule': "[('company_id', 'in', user.company_ids.ids + [False])]",
}
for xml_id, domain in rules_to_update.items():
rule = self.env.ref(xml_id, raise_if_not_found=False)
if rule and rule.domain_force != domain:
rule.sudo().write({'domain_force': domain})
@api.model_create_multi
def create(self, vals_list):
employees = super().create(vals_list)