diff --git a/buying/page/buying_home/buying_home.js b/buying/page/buying_home/buying_home.js
index 5c5668e..1f2c986 100644
--- a/buying/page/buying_home/buying_home.js
+++ b/buying/page/buying_home/buying_home.js
@@ -155,6 +155,11 @@
 				route: "query-report/Supplier Addresses and Contacts",
 				doctype: "Supplier"
 			},
+			{
+				"label":wn._("Item-Wise Consumption"),
+				route: "query-report/Item-wise Consumption",
+				doctype: "Stock Ledger Entry"
+			}
 		]
 	}
 ]
diff --git a/stock/report/item_wise_consumption/__init__.py b/stock/report/item_wise_consumption/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stock/report/item_wise_consumption/__init__.py
diff --git a/stock/report/item_wise_consumption/item_wise_consumption.js b/stock/report/item_wise_consumption/item_wise_consumption.js
new file mode 100644
index 0000000..c967842
--- /dev/null
+++ b/stock/report/item_wise_consumption/item_wise_consumption.js
@@ -0,0 +1,28 @@
+// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+// License: GNU General Public License v3. See license.txt
+
+wn.query_reports["Item-wise Consumption"] = {
+	"filters": [
+		{
+			"fieldname":"supplier",
+			"label": wn._("Supplier"),
+			"fieldtype": "Link",
+			"options": "Supplier",
+			"width": "80"
+		},
+		{
+			"fieldname":"from_date",
+			"label": wn._("From Date"),
+			"fieldtype": "Date",
+			"width": "80",
+			"default": wn.datetime.month_start()
+		},
+		{
+			"fieldname":"to_date",
+			"label": wn._("To Date"),
+			"fieldtype": "Date",
+			"width": "80",
+			"default": wn.datetime.month_end()
+		},
+	]
+}
\ No newline at end of file
diff --git a/stock/report/item_wise_consumption/item_wise_consumption.py b/stock/report/item_wise_consumption/item_wise_consumption.py
new file mode 100644
index 0000000..406fcae
--- /dev/null
+++ b/stock/report/item_wise_consumption/item_wise_consumption.py
@@ -0,0 +1,81 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import webnotes
+from webnotes.utils import flt
+
+def execute(filters=None):
+	columns = get_columns(filters)
+	consumed_details = get_consumed_details(filters)
+	supplier_details = get_suppliers_details(filters)
+	material_transfer_vouchers = get_material_transfer_vouchers()
+	data = []
+
+	for item_code, suppliers in supplier_details.items():
+		consumed_qty = consumed_amount = 0.0
+		if consumed_details.get(item_code):
+			for cd in consumed_details.get(item_code):
+				if cd.voucher_no not in material_transfer_vouchers:
+					consumed_qty += abs(flt(cd.actual_qty))
+					consumed_amount += abs(flt(cd.stock_value_difference))
+			if consumed_qty or consumed_amount:
+				row = [cd.item_code, cd.item_name, cd.description, cd.stock_uom, \
+					consumed_qty, consumed_amount, list(set(suppliers))]
+				data.append(row)
+
+	return columns, data
+
+def get_columns(filters):
+	"""return columns based on filters"""
+	
+	columns = ["Item:Link/Item:100"] + ["Item Name::150"] + ["Description::150"] + \
+	["UOM:Link/UOM:100"] + ["Consumed Qty:Float:130"] + ["Consumed Amount:Currency:130"] + \
+	["Supplier(s)::250"]
+
+	return columns
+
+def get_conditions(filters):
+	conditions = ""
+	values = []
+
+	if filters.get('from_date') and filters.get('to_date'):
+		conditions = "and sle.posting_date>=%s and sle.posting_date<=%s"
+		values = [filters.get('from_date'), filters.get('to_date')]
+
+	return conditions, values
+
+def get_consumed_details(filters):
+	conditions, values = get_conditions(filters)
+	consumed_details = {}
+
+	for d in webnotes.conn.sql("""select sle.item_code, i.item_name, i.description, 
+		i.stock_uom, sle.actual_qty, sle.stock_value_difference, sle.voucher_no 
+		from `tabStock Ledger Entry` sle, `tabItem` i 
+		where sle.item_code=i.name and sle.actual_qty < 0 %s""" % conditions, values, as_dict=1, debug=1):
+			consumed_details.setdefault(d.item_code, []).append(d)
+
+	return consumed_details
+
+def get_suppliers_details(filters):
+	item_supplier_map = {}
+	conditions = ""
+	values = []
+
+	if (filters.get('supplier')):
+		conditions = "and pr.supplier=%s"
+		values = [filters.get('supplier')]
+
+	for d in webnotes.conn.sql("""select pr.supplier, pri.item_code from 
+		`tabPurchase Receipt` pr, `tabPurchase Receipt Item` pri 
+		where pr.name=pri.parent and pr.docstatus=1 and 
+		pri.item_code=(select name from `tabItem` where 
+			ifnull(is_stock_item, 'Yes')='Yes' and name=pri.item_code) %s""" % conditions, 
+			values, as_dict=1):
+			item_supplier_map.setdefault(d.item_code, []).append(d.supplier)
+
+	return item_supplier_map
+
+def get_material_transfer_vouchers():
+	return webnotes.conn.sql_list("""select name from `tabStock Entry` where 
+		purpose='Material Transfer' and docstatus=1""")
\ No newline at end of file
diff --git a/stock/report/item_wise_consumption/item_wise_consumption.txt b/stock/report/item_wise_consumption/item_wise_consumption.txt
new file mode 100644
index 0000000..b4dd955
--- /dev/null
+++ b/stock/report/item_wise_consumption/item_wise_consumption.txt
@@ -0,0 +1,22 @@
+[
+ {
+  "creation": "2013-11-29 10:58:23", 
+  "docstatus": 0, 
+  "modified": "2013-11-29 12:26:49", 
+  "modified_by": "Administrator", 
+  "owner": "Administrator"
+ }, 
+ {
+  "add_total_row": 1, 
+  "doctype": "Report", 
+  "is_standard": "Yes", 
+  "name": "__common__", 
+  "ref_doctype": "Stock Ledger Entry", 
+  "report_name": "Item-wise Consumption", 
+  "report_type": "Script Report"
+ }, 
+ {
+  "doctype": "Report", 
+  "name": "Item-wise Consumption"
+ }
+]
\ No newline at end of file
