This question has been flagged
2 Replies
9000 Views

Hello Forum, Please let me know, how to restrict the User by warehouse in V7 ?

Suppose there are "n" number of warehouses, then How to assign a Warehouse for user, to restrict the access ? So that, He will be accessible to only one Warehouse, its Locations and Products in that Warehouse- only.

Avatar
Discard

Hi Nisthulan, have you already solved this problem? Can you help me I have the same problem on restricting users access in warehouse? Thanks in advance

Best Answer

In a new custom module do the following :

Create a security group per warehouse and then create a Rule for each group that restrict this group to see this warehouse only, then assgin the required users to this group.

To implement my idea I created a module 'warehouse_filter'

I created for this purpose two warehouses 'warehouse 1' and 'warehouse 2'

I created two groups, one per warehouse, and a rule for each group with the domain using the warehouse name as a filter, I tested it and worked fine

Here is my work

<?xml version="1.0" ?>
<openerp>
<data>
<record model="ir.module.category" id="module_category_warehouse_filter">
<field name="name">Warehouse Filter</field>
<field name="sequence">80</field>
</record>
<record id="group_warehouse_1" model="res.groups">
<field name="name">Warehouse 1</field>
<field name="category_id" ref="warehouse_filter.module_category_warehouse_filter"/>
</record>
<record id="group_warehouse_2" model="res.groups">
<field name="name">Warehouse 2</field>
<field name="category_id" ref="warehouse_filter.module_category_warehouse_filter"/>
</record>
<record id="rule_for_warehouse_1" model="ir.rule">
<field name="name">Rule for Warehouse1</field>
<field ref="stock.model_stock_location" name="model_id"/>
<field name="domain_force">[('name','=','warehouse 1')]</field>
<field name="groups" eval="[(4, ref('warehouse_filter.group_warehouse_1'))]"/>
</record>
<record id="rule_for_warehouse_2" model="ir.rule">
<field name="name">Rule for Warehouse2</field>
<field ref="stock.model_stock_location" name="model_id"/>
<field name="domain_force">[('name','=','warehouse 2')]</field>
<field name="groups" eval="[(4, ref('warehouse_filter.group_warehouse_2'))]"/>
</record>
</data>
</openerp>

I hope this idea be useful.

This is the main idea, but it could be implemented better by create a new field in the stock.location model called 'wh_type', and filter by this field, not by the warehouse name, so several locations may take one type.

Avatar
Discard