diff --git a/selling/page/selling_home/selling_home.js b/selling/page/selling_home/selling_home.js
index 682978b..1f119e2 100644
--- a/selling/page/selling_home/selling_home.js
+++ b/selling/page/selling_home/selling_home.js
@@ -150,6 +150,11 @@
 		icon: "icon-list",
 		items: [
 			{
+				"label":wn._("No Sales Order from Customers (Since 2 months)"),
+				route: "query-report/No Sales Order from Customers (Since 2 months)",
+				doctype: "Sales Order"
+			},
+			{
 				"label":wn._("Customer Addresses And Contacts"),
 				route: "query-report/Customer Addresses And Contacts"
 			},
@@ -165,6 +170,7 @@
 				"label":wn._("Item-wise Sales History"),
 				route: "query-report/Item-wise Sales History",
 			},
+
 		]
 	}
 ]
diff --git "a/selling/report/no_sales_order_from_customers_\050since_2_months\051/__init__.py" "b/selling/report/no_sales_order_from_customers_\050since_2_months\051/__init__.py"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/selling/report/no_sales_order_from_customers_\050since_2_months\051/__init__.py"
diff --git "a/selling/report/no_sales_order_from_customers_\050since_2_months\051/no_sales_order_from_customers_\050since_2_months\051.py" "b/selling/report/no_sales_order_from_customers_\050since_2_months\051/no_sales_order_from_customers_\050since_2_months\051.py"
new file mode 100644
index 0000000..43efb98
--- /dev/null
+++ "b/selling/report/no_sales_order_from_customers_\050since_2_months\051/no_sales_order_from_customers_\050since_2_months\051.py"
@@ -0,0 +1,69 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+import webnotes
+
+def execute(filters=None):
+
+	columns = get_columns() 
+	customers = get_so_details()
+
+	data = []
+	for cust in customers:
+		if cust[8] >= 60: # days_since_last_order
+			cust.insert(7,get_last_so_amt(cust[0]))
+			data.append(cust)
+
+	return columns, data 
+
+def get_so_details():
+	return webnotes.conn.sql("""select 
+			cust.name, 
+			cust.customer_name, 
+			cust.territory, 
+			cust.customer_group, 
+			count(distinct(so.name)) as 'num_of_order', 
+			sum(net_total) as 'total_order_value',
+			sum(if(so.status = "Stopped", 
+				so.net_total * so.per_delivered/100, 
+				so.net_total)) as 'total_order_considered',
+			max(so.transaction_date) as 'last_sales_order_date', 
+			DATEDIFF(CURDATE(),max(so.transaction_date)) as 'days_since_last_order' 
+		from `tabCustomer` cust, `tabSales Order` so  
+		where cust.name = so.customer and so.docstatus = 1
+		group by cust.name
+		order by 'days_since_last_order' desc """,as_list=1)
+
+def get_last_so_amt(customer):
+	return webnotes.conn.sql("""select net_total from `tabSales Order`
+		where customer ='%(customer)s' and docstatus = 1 and 
+		transaction_date = (select max(transaction_date) 
+        					from `tabSales Order` 
+        					where customer = '%(customer)s')
+		"""%{'customer':customer})
+
+def get_columns():
+	return [
+		"Customer:Link/Customer:120", 
+		"Customer Name:Data:120", 
+		"Territory::120", 
+		"Customer Group::120",
+		"Number of Order::120", 
+		"Total Order Value:Currency:120", 
+		"Total Order Considered:Currency:160", 
+		"Last Order Amount:Currency:160",
+		"Last Sales Order Date:Date:160", 
+		"Days Since Last Order::160"
+	]
\ No newline at end of file
diff --git "a/selling/report/no_sales_order_from_customers_\050since_2_months\051/no_sales_order_from_customers_\050since_2_months\051.txt" "b/selling/report/no_sales_order_from_customers_\050since_2_months\051/no_sales_order_from_customers_\050since_2_months\051.txt"
new file mode 100644
index 0000000..cd7b2b7
--- /dev/null
+++ "b/selling/report/no_sales_order_from_customers_\050since_2_months\051/no_sales_order_from_customers_\050since_2_months\051.txt"
@@ -0,0 +1,21 @@
+[
+ {
+  "creation": "2013-06-05 11:40:49", 
+  "docstatus": 0, 
+  "modified": "2013-06-05 11:40:49", 
+  "modified_by": "Administrator", 
+  "owner": "Administrator"
+ }, 
+ {
+  "doctype": "Report", 
+  "is_standard": "Yes", 
+  "name": "__common__", 
+  "ref_doctype": "Sales Order", 
+  "report_name": "No Sales Order from Customers (Since 2 months)", 
+  "report_type": "Script Report"
+ }, 
+ {
+  "doctype": "Report", 
+  "name": "No Sales Order from Customers (Since 2 months)"
+ }
+]
\ No newline at end of file
diff --git a/stock/page/stock_home/stock_home.js b/stock/page/stock_home/stock_home.js
index 75e4ee1..ac3a096 100644
--- a/stock/page/stock_home/stock_home.js
+++ b/stock/page/stock_home/stock_home.js
@@ -129,6 +129,11 @@
 		icon: "icon-table",
 		items: [
 			{
+				"label":wn._("Item Reorder Level"),
+				route: "query-report/Item Reorder Level",
+				doctype: "Item"
+			},
+			{
 				"label":wn._("Stock Ledger"),
 				page: "stock-ledger"
 			},
diff --git a/stock/report/item_reorder_level/__init__.py b/stock/report/item_reorder_level/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/stock/report/item_reorder_level/__init__.py
diff --git a/stock/report/item_reorder_level/item_reorder_level.js b/stock/report/item_reorder_level/item_reorder_level.js
new file mode 100644
index 0000000..30240e5
--- /dev/null
+++ b/stock/report/item_reorder_level/item_reorder_level.js
@@ -0,0 +1,16 @@
+wn.query_reports["Item Reorder Level"] = {
+	"filters": [
+		{
+			"fieldname":"from_date",
+			"label": "From Date",
+			"fieldtype": "Date",
+			"default": sys_defaults.year_start_date
+		},
+		{
+			"fieldname":"to_date",
+			"label": "To Date",
+			"fieldtype": "Date",
+			"default": get_today()
+		}
+	]
+}
\ No newline at end of file
diff --git a/stock/report/item_reorder_level/item_reorder_level.py b/stock/report/item_reorder_level/item_reorder_level.py
new file mode 100644
index 0000000..d596961
--- /dev/null
+++ b/stock/report/item_reorder_level/item_reorder_level.py
@@ -0,0 +1,97 @@
+# ERPNext - web based ERP (http://erpnext.com)
+# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
+# 
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import webnotes
+from webnotes.utils import getdate, flt, cint
+
+def execute(filters=None):
+	if not filters: filters = {}
+
+	columns = get_columns()
+	items = get_item_info()
+	consumed_item_map = get_consumed_items(filters)
+	delivered_item_map = get_delivered_items(filters)
+
+	avg_daily_outgoing = 0
+	diff = (getdate(filters.get("to_date")) - getdate(filters.get("from_date"))).days
+	if diff <= 0:
+		webnotes.msgprint("To Date should not be less than eual to From Date",raise_exception=1)
+
+	data = []
+	for item in items:
+
+		total_outgoing = consumed_item_map.get(item.name, 0)+delivered_item_map.get(item.name,0)
+		avg_daily_outgoing = cint(total_outgoing/diff)
+		reorder_level = (avg_daily_outgoing * item.lead_time_days) + item.min_order_qty
+
+		data.append([item.name, item.item_name, item.description, item.min_order_qty, item.lead_time_days, 
+			consumed_item_map.get(item.name, 0), delivered_item_map.get(item.name,0), total_outgoing, 
+			avg_daily_outgoing, reorder_level])
+
+	return columns , data
+
+def get_columns():
+	return["Item:Link/Item:120", "Item name:Data:120", "description::160", "minimum inventory level::120",
+			 "lead time days::120", "consumed::120", "delivered::120", "total outgoing::120",
+			 "avg daily outgoing::120", "reorder level::120"]
+
+def get_item_info():
+	return webnotes.conn.sql("""select name, item_name, description, min_order_qty, lead_time_days
+			from tabItem""",as_dict=1)
+
+def get_consumed_items(filters):
+	condition = get_condition(filters)
+
+	cn_items = webnotes.conn.sql("""select se_item.item_code, sum(se_item.actual_qty) as 'consume_qty'
+		from `tabStock Entry` se, `tabStock Entry Detail` se_item
+		where se.name = se_item.parent and se.docstatus = 1 and ifnull(se_item.t_warehouse, '') = '' %s
+		group by se_item.item_code""" % (condition), as_dict=1)
+
+	cn_items_map = {}
+	for item in cn_items:
+		cn_items_map.setdefault(item.item_code, item.consume_qty)
+
+	return cn_items_map
+
+def get_delivered_items(filters):
+	condition = get_condition(filters)
+
+	dn_items = webnotes.conn.sql("""select dn_item.item_code, sum(dn_item.qty) as dn_qty
+		from `tabDelivery Note` dn, `tabDelivery Note Item` dn_item
+		where dn.name = dn_item.parent and dn.docstatus = 1 %s group by dn_item.item_code""" % (condition)
+		, as_dict=1)
+
+	si_items = webnotes.conn.sql("""select si_item.item_name, sum(si_item.qty) as si_qty
+		from `tabSales Invoice` si, `tabSales Invoice Item` si_item
+		where si.name = si_item.parent and si.docstatus = 1 and ifnull(si.update_stock, 0) = 1 
+		and ifnull(si.is_pos, 0) = 1 %s group by si_item.item_name""" % (condition), as_dict=1)
+
+	dn_item_map = {}
+	for item in dn_items:
+		dn_item_map.setdefault(item.item_code, item.dn_qty)
+
+	for item in si_items:
+		dn_item_map.setdefault(item.item_code, item.si_qty)
+
+	return dn_item_map
+
+def get_condition(filters):
+	conditions = ""
+	if filters.get("from_date") and filters.get("to_date"):
+		conditions += " and posting_date between '%s' and '%s'" % (filters["from_date"],filters["to_date"])
+	else:
+		webnotes.msgprint("Please set date in from date field",raise_exception=1)
+	return conditions
\ No newline at end of file
diff --git a/stock/report/item_reorder_level/item_reorder_level.txt b/stock/report/item_reorder_level/item_reorder_level.txt
new file mode 100644
index 0000000..93c6dfb
--- /dev/null
+++ b/stock/report/item_reorder_level/item_reorder_level.txt
@@ -0,0 +1,21 @@
+[
+ {
+  "creation": "2013-06-05 15:34:51", 
+  "docstatus": 0, 
+  "modified": "2013-06-05 15:50:30", 
+  "modified_by": "Administrator", 
+  "owner": "Administrator"
+ }, 
+ {
+  "doctype": "Report", 
+  "is_standard": "Yes", 
+  "name": "__common__", 
+  "ref_doctype": "Item", 
+  "report_name": "Item Reorder Level", 
+  "report_type": "Script Report"
+ }, 
+ {
+  "doctype": "Report", 
+  "name": "Item Reorder Level"
+ }
+]
\ No newline at end of file
