new item group filter in the stock ledger report (#10400)

diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.js b/erpnext/stock/report/stock_ledger/stock_ledger.js
index ce357db..e95f5ca 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.js
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.js
@@ -38,6 +38,12 @@
 			"options": "Item"
 		},
 		{
+			"fieldname":"item_group",
+			"label": __("Item Group"),
+			"fieldtype": "Link",
+			"options": "Item Group"
+		},
+		{
 			"fieldname":"batch_no",
 			"label": __("Batch No"),
 			"fieldtype": "Link",
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py
index 916adff..6820d8f 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -65,7 +65,7 @@
 def get_item_details(filters):
 	item_details = {}
 	for item in frappe.db.sql("""select name, item_name, description, item_group,
-			brand, stock_uom from `tabItem` {item_conditions}"""\
+			brand, stock_uom from `tabItem` item {item_conditions}"""\
 			.format(item_conditions=get_item_conditions(filters)), filters, as_dict=1):
 		item_details.setdefault(item.name, item)
 
@@ -74,9 +74,11 @@
 def get_item_conditions(filters):
 	conditions = []
 	if filters.get("item_code"):
-		conditions.append("name=%(item_code)s")
+		conditions.append("item.name=%(item_code)s")
 	if filters.get("brand"):
-		conditions.append("brand=%(brand)s")
+		conditions.append("item.brand=%(brand)s")
+	if filters.get("item_group"):
+		conditions.append(get_item_group_condition(filters.get("item_group")))
 
 	return "where {}".format(" and ".join(conditions)) if conditions else ""
 
@@ -84,7 +86,7 @@
 	conditions = []
 	item_conditions=get_item_conditions(filters)
 	if item_conditions:
-		conditions.append("""item_code in (select name from tabItem
+		conditions.append("""sle.item_code in (select item.name from tabItem item
 			{item_conditions})""".format(item_conditions=item_conditions))
 	if filters.get("warehouse"):
 		conditions.append(get_warehouse_condition(filters.get("warehouse")))
@@ -122,3 +124,12 @@
 			warehouse_details.rgt)
 
 	return ''
+
+def get_item_group_condition(item_group):
+	item_group_details = frappe.db.get_value("Item Group", item_group, ["lft", "rgt"], as_dict=1)
+	if item_group_details:
+		return "item.item_group in (select ig.name from `tabItem Group` ig \
+			where ig.lft >= %s and ig.rgt <= %s and item.item_group = ig.name)"%(item_group_details.lft,
+			item_group_details.rgt)
+
+	return ''