Merge pull request #2870 from nabinhait/fix1

Fixes
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index a2bf78c..676a468 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -59,6 +59,7 @@
 
 		if cint(self.update_stock):
 			self.validate_item_code()
+			self.validate_warehouse()
 			self.update_current_stock()
 			self.validate_delivery_note()
 
@@ -350,6 +351,11 @@
 			if not d.item_code:
 				msgprint(_("Item Code required at Row No {0}").format(d.idx), raise_exception=True)
 
+	def validate_warehouse(self):
+		for d in self.get('entries'):
+			if not d.warehouse:
+				frappe.throw(_("Warehouse required at Row No {0}").format(d.idx))
+
 	def validate_delivery_note(self):
 		for d in self.get("entries"):
 			if d.delivery_note:
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index 7633bc9..6f9839d 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -171,7 +171,8 @@
 	# if default specified in item is for another company, fetch from company
 	for d in [["Account", "income_account", "default_income_account"], ["Account", "expense_account", "default_expense_account"],
 		["Cost Center", "cost_center", "cost_center"], ["Warehouse", "warehouse", ""]]:
-			if not out[d[1]] or args.company != frappe.db.get_value(d[0], out.get(d[1]), "company"):
+			company = frappe.db.get_value(d[0], out.get(d[1]), "company")
+			if not out[d[1]] or (company and args.company != company):
 				out[d[1]] = frappe.db.get_value("Company", args.company, d[2]) if d[2] else None
 
 	for fieldname in ("item_name", "item_group", "barcode", "brand", "stock_uom"):