[minor] Check if item is stock item before validating Warehouse while Purchase Return (#9282)

* Check if item is stock item before validating Warehouse

* changed logic to decide warehouse_mandatory
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 45447d7..5412807 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -71,7 +71,7 @@
 	already_returned_items = get_already_returned_items(doc)
 
 	# ( not mandatory when it is Purchase Invoice or a Sales Invoice without Update Stock )
-	warehouse_mandatory = not (doc.doctype=="Purchase Invoice" or (doc.doctype=="Sales Invoice" and not doc.update_stock))
+	warehouse_mandatory = not ((doc.doctype=="Purchase Invoice" or doc.doctype=="Sales Invoice") and not doc.update_stock))
 
 	items_returned = False
 	for d in doc.get("items"):
@@ -101,8 +101,9 @@
 								frappe.throw(_("Row # {0}: Serial No {1} does not match with {2} {3}")
 									.format(d.idx, s, doc.doctype, doc.return_against))
 
-				if warehouse_mandatory and not d.get("warehouse"):
-					frappe.throw(_("Warehouse is mandatory"))
+				if warehouse_mandatory and frappe.db.get_value("Item", d.item_code, "is_stock_item") \
+					and not d.get("warehouse"):
+						frappe.throw(_("Warehouse is mandatory"))
 
 			items_returned = True