[fix] Item or Warehouse filter mandatory in Stock Balance if number of sle is greater than 500000
diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js
index 1af32ed..43b3657 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.js
+++ b/erpnext/stock/report/stock_balance/stock_balance.js
@@ -22,40 +22,14 @@
 			"label": __("Item"),
 			"fieldtype": "Link",
 			"width": "80",
-			"options": "Item",
-			"reqd": 1,
-			"on_change": function(me) {
-				frappe.query_reports["Stock Balance"].toggle_mandatory_filters(me);
-			}
+			"options": "Item"
 		},
 		{
 			"fieldname": "warehouse",
 			"label": __("Warehouse"),
 			"fieldtype": "Link",
 			"width": "80",
-			"options": "Warehouse",
-			"reqd": 1,
-			"on_change": function(me) {
-				frappe.query_reports["Stock Balance"].toggle_mandatory_filters(me);
-			}
+			"options": "Warehouse"
 		},
-	],
-
-	"toggle_mandatory_filters": function(me) {
-		var values = me.get_values(false);
-		var item_filter = me.filters_by_name["item_code"];
-		var warehouse_filter = me.filters_by_name["warehouse"];
-
-		if (values.item_code) {
-			warehouse_filter.df.reqd = 0;
-		} else if (values.warehouse) {
-			item_filter.df.reqd = 0;
-		} else {
-			item_filter.df.reqd = 1;
-			warehouse_filter.df.reqd = 1;
-		}
-
-		item_filter.set_mandatory(values.item_code);
-		warehouse_filter.set_mandatory(values.warehouse);
-	}
+	]
 }
diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py
index d465050..43b6b9a 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.py
+++ b/erpnext/stock/report/stock_balance/stock_balance.py
@@ -8,6 +8,8 @@
 
 def execute(filters=None):
 	if not filters: filters = {}
+	
+	validate_filters(filters)
 
 	columns = get_columns()
 	item_map = get_item_details(filters)
@@ -137,3 +139,10 @@
 		from tabItem {condition}""".format(condition=condition), value, as_dict=1)
 
 	return dict((d.name, d) for d in items)
+
+def validate_filters(filters):
+	if not (filters.get("item_code") or filters.get("warehouse")):
+		sle_count = flt(frappe.db.sql("""select count(name) from `tabStock Ledger Entry`""")[0][0])
+		if sle_count > 500000:
+			frappe.throw(_("Please set filter based on Item or Warehouse"))
+	
\ No newline at end of file