diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py index 45447d76ec..5412807a56 100644 --- a/erpnext/controllers/sales_and_purchase_return.py +++ b/erpnext/controllers/sales_and_purchase_return.py @@ -71,7 +71,7 @@ def validate_returned_items(doc): 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 @@ def validate_returned_items(doc): 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