diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py
index a9bb7a2..ec2406f 100644
--- a/selling/doctype/sales_order/sales_order.py
+++ b/selling/doctype/sales_order/sales_order.py
@@ -126,8 +126,9 @@
 		self.validate_mandatory()
 		self.validate_proj_cust()
 		self.validate_po()
-		self.validate_uom_is_integer("stock_uom", "qty")		
+		self.validate_uom_is_integer("stock_uom", "qty")
 		self.validate_for_items()
+		self.validate_warehouse_user()
 		sales_com_obj = get_obj(dt = 'Sales Common')
 		sales_com_obj.check_active_sales_items(self)
 		sales_com_obj.check_conversion_rate(self)
@@ -147,6 +148,15 @@
 		if not self.doc.billing_status: self.doc.billing_status = 'Not Billed'
 		if not self.doc.delivery_status: self.doc.delivery_status = 'Not Delivered'
 		
+		
+	def validate_warehouse_user(self):
+		from stock.utils import validate_warehouse_user
+		
+		warehouses = list(set([d.reserved_warehouse for d in self.doclist.get({"doctype": self.tname})]))
+				
+		for w in warehouses:
+			validate_warehouse_user(w)
+		
 	def validate_with_previous_doc(self):
 		super(DocType, self).validate_with_previous_doc(self.tname, {
 			"Quotation": {
diff --git a/selling/doctype/sales_order/test_sales_order.py b/selling/doctype/sales_order/test_sales_order.py
index 9fd16e8..7b72271 100644
--- a/selling/doctype/sales_order/test_sales_order.py
+++ b/selling/doctype/sales_order/test_sales_order.py
@@ -272,6 +272,29 @@
 		self.check_reserved_qty(sbom_test_records[0][2]["item_code"], 
 			so.doclist[1].reserved_warehouse, 20.0)
 
+	def test_warehouse_user(self):
+		webnotes.session.user = "test@example.com"
+
+		webnotes.bean("Profile", "test@example.com").get_controller()\
+			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
+			
+		webnotes.bean("Profile", "test2@example.com").get_controller()\
+			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
+
+
+		from stock.utils import UserNotAllowedForWarehouse
+		so = webnotes.bean(copy = test_records[0])
+		so.doc.company = "_Test Company 1"
+		so.doc.conversion_rate = 0.02
+		so.doc.plc_conversion_rate = 0.02
+		so.doclist[1].reserved_warehouse = "_Test Warehouse 2 - _TC1"
+		self.assertRaises(UserNotAllowedForWarehouse, so.insert)
+
+		webnotes.session.user = "test2@example.com"
+		so.insert()
+
+		webnotes.session.user = "Administrator"
+
 test_dependencies = ["Sales BOM"]
 	
 test_records = [
diff --git a/stock/doctype/stock_entry/test_stock_entry.py b/stock/doctype/stock_entry/test_stock_entry.py
index f33cfa3..b9b3230 100644
--- a/stock/doctype/stock_entry/test_stock_entry.py
+++ b/stock/doctype/stock_entry/test_stock_entry.py
@@ -41,11 +41,42 @@
 		webnotes.conn.set_default("company", self.old_default_company)
 
 	def test_warehouse_company_validation(self):
+		webnotes.session.user = "test2@example.com"
+		webnotes.bean("Profile", "test2@example.com").get_controller()\
+			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
+
 		from stock.doctype.stock_ledger_entry.stock_ledger_entry import InvalidWarehouseCompany
 		st1 = webnotes.bean(copy=test_records[0])
 		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
 		st1.insert()
 		self.assertRaises(InvalidWarehouseCompany, st1.submit)
+		
+		webnotes.session.user = "Administrator"
+
+	def test_warehouse_user(self):
+		from stock.utils import UserNotAllowedForWarehouse
+
+		webnotes.session.user = "test@example.com"
+		webnotes.bean("Profile", "test@example.com").get_controller()\
+			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
+
+		webnotes.bean("Profile", "test2@example.com").get_controller()\
+			.add_roles("Sales User", "Sales Manager", "Material User", "Material Manager")
+
+		st1 = webnotes.bean(copy=test_records[0])
+		st1.doc.company = "_Test Company 1"
+		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
+		st1.insert()
+		self.assertRaises(UserNotAllowedForWarehouse, st1.submit)
+
+		webnotes.session.user = "test2@example.com"
+		st1 = webnotes.bean(copy=test_records[0])
+		st1.doc.company = "_Test Company 1"
+		st1.doclist[1].t_warehouse="_Test Warehouse 2 - _TC1"
+		st1.insert()
+		st1.submit()
+		
+		webnotes.session.user = "Administrator"
 
 	def test_material_receipt_gl_entry(self):
 		webnotes.conn.sql("delete from `tabStock Ledger Entry`")
diff --git a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
index 71d426f..58fc828 100644
--- a/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
+++ b/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
@@ -25,12 +25,14 @@
 		self.doclist = doclist
 
 	def validate(self):
+		from stock.utils import validate_warehouse_user
 		if not hasattr(webnotes, "new_stock_ledger_entries"):
 			webnotes.new_stock_ledger_entries = []
+			
 		webnotes.new_stock_ledger_entries.append(self.doc)
 		self.validate_mandatory()
 		self.validate_item()
-		self.validate_warehouse_user()
+		validate_warehouse_user(self.doc.warehouse)
 		self.validate_warehouse_company()
 		self.actual_amt_check()
 		self.check_stock_frozen_date()
@@ -52,16 +54,6 @@
 
 			self.doc.fields.pop('batch_bal')
 			 
-	def validate_warehouse_user(self):
-		if webnotes.session.user=="Administrator":
-			return
-		warehouse_users = [p[0] for p in webnotes.conn.sql("""select user from `tabWarehouse User`
-			where parent=%s""", self.doc.warehouse)]
-			
-		if warehouse_users and not webnotes.session.user in warehouse_users:
-			webnotes.msgprint(_("User not allowed entry in the Warehouse") \
-				+ ": " + webnotes.session.user + " / " + self.doc.warehouse, raise_exception = 1)
-
 	def validate_warehouse_company(self):
 		warehouse_company = webnotes.conn.get_value("Warehouse", self.doc.warehouse, "company")
 		if warehouse_company and warehouse_company != self.doc.company:
diff --git a/stock/doctype/warehouse/test_warehouse.py b/stock/doctype/warehouse/test_warehouse.py
index 4e47d56..ed72562 100644
--- a/stock/doctype/warehouse/test_warehouse.py
+++ b/stock/doctype/warehouse/test_warehouse.py
@@ -16,5 +16,9 @@
 		"doctype": "Warehouse",
 		"warehouse_name": "_Test Warehouse 2",
 		"company": "_Test Company 1"
+	}, {
+		"doctype": "Warehouse User",
+		"parentfield": "warehouse_users",
+		"user": "test2@example.com"
 	}]	
 ]
diff --git a/stock/utils.py b/stock/utils.py
index 5376342..f04b663 100644
--- a/stock/utils.py
+++ b/stock/utils.py
@@ -8,6 +8,8 @@
 from webnotes.defaults import get_global_default
 from webnotes.utils.email_lib import sendmail
 
+class UserNotAllowedForWarehouse(webnotes.ValidationError): pass
+
 def validate_end_of_life(item_code, end_of_life=None, verbose=1):
 	if not end_of_life:
 		end_of_life = webnotes.conn.get_value("Item", item_code, "end_of_life")
@@ -152,6 +154,16 @@
 				wlist.append([w])
 	return wlist
 
+def validate_warehouse_user(warehouse):
+	if webnotes.session.user=="Administrator":
+		return
+	warehouse_users = [p[0] for p in webnotes.conn.sql("""select user from `tabWarehouse User`
+		where parent=%s""", warehouse)]
+				
+	if warehouse_users and not (webnotes.session.user in warehouse_users):
+		webnotes.throw(_("Not allowed entry in Warehouse") \
+			+ ": " + warehouse, UserNotAllowedForWarehouse)
+
 def get_buying_amount(item_code, voucher_type, voucher_no, voucher_detail_no, 
 		stock_ledger_entries, item_sales_bom=None):
 	if item_sales_bom and item_sales_bom.get(item_code):
