Odoo Help


How to Restrict Warehouse for User ?

on 1/15/14, 8:36 AM 1,269 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.

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

on 9/30/14, 9:42 PM

Tarek Mohamed Ibrahim

--Tarek Mohamed Ibrahim--
Tarek Mohamed Ibrahim
| 5 3 7
Gîza, Egypt
--Tarek Mohamed Ibrahim--

I am an old VFP developer on ERP

I have moved to 2p since Nov-2014 and started developing with Python on Odoo.



Tarek Mohamed Ibrahim
On 9/5/16, 2:46 AM

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" ?>
<record model="ir.module.category" id="module_category_warehouse_filter">
<field name="name">Warehouse Filter</field>
<field name="sequence">80</field>
<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 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 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 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'))]"/>

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.

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

3 follower(s)


Asked: 1/15/14, 8:36 AM
Seen: 1269 times
Last updated: 9/5/16, 2:46 AM