diff --git a/erpnext/stock/report/stock_balance/stock_balance.js b/erpnext/stock/report/stock_balance/stock_balance.js index 434c092a600..36d018c6e7f 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.js +++ b/erpnext/stock/report/stock_balance/stock_balance.js @@ -19,6 +19,13 @@ frappe.query_reports["Stock Balance"] = { "reqd": 1, "default": frappe.datetime.get_today() }, + { + "fieldname": "item_group", + "label": __("Item Group"), + "fieldtype": "Link", + "width": "80", + "options": "Item Group" + }, { "fieldname": "item_code", "label": __("Item"), diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index a8db4e09b66..365e52ba84f 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -63,12 +63,15 @@ def get_conditions(filters): frappe.throw(_("'From Date' is required")) if filters.get("to_date"): - conditions += " and posting_date <= '%s'" % frappe.db.escape(filters["to_date"]) + conditions += " and sle.posting_date <= '%s'" % frappe.db.escape(filters["to_date"]) else: frappe.throw(_("'To Date' is required")) + if filters.get("item_group"): + conditions += " and item.item_group = '%s'" % frappe.db.escape(filters.get("item_group"), percent=False) + if filters.get("item_code"): - conditions += " and item_code = '%s'" % frappe.db.escape(filters.get("item_code"), percent=False) + conditions += " and sle.item_code = '%s'" % frappe.db.escape(filters.get("item_code"), percent=False) if filters.get("warehouse"): warehouse_details = frappe.db.get_value("Warehouse", filters.get("warehouse"), ["lft", "rgt"], as_dict=1) @@ -81,10 +84,11 @@ def get_conditions(filters): def get_stock_ledger_entries(filters): conditions = get_conditions(filters) - return frappe.db.sql("""select item_code, warehouse, posting_date, actual_qty, valuation_rate, - company, voucher_type, qty_after_transaction, stock_value_difference + return frappe.db.sql("""select sle.item_code, warehouse, sle.posting_date, sle.actual_qty, sle.valuation_rate, + sle.company, sle.voucher_type, sle.qty_after_transaction, sle.stock_value_difference from `tabStock Ledger Entry` sle force index (posting_sort_index) - where docstatus < 2 %s order by posting_date, posting_time, name""" % + inner join `tabItem` item on item.name = sle.item_code + where sle.docstatus < 2 %s order by sle.posting_date, sle.posting_time, sle.name""" % conditions, as_dict=1) def get_item_warehouse_map(filters):