Production Analytics
diff --git a/erpnext/config/manufacturing.py b/erpnext/config/manufacturing.py
index 0f76952..a930ddc 100644
--- a/erpnext/config/manufacturing.py
+++ b/erpnext/config/manufacturing.py
@@ -112,13 +112,18 @@
 					"is_query_report": True,
 					"name": "Completed Production Orders",
 					"doctype": "Production Order"
+				},{ 
+					"type": "page",
+					"name": "production-analytics",
+					"label": _("Production Analytics"),  
+					"icon": "fa fa-bar-chart",
 				},
 				{
 					"type": "report",
 					"is_query_report": True,
 					"name": "BOM Search",
 					"doctype": "BOM"
-				},
+				}
 			]
 		},
 		{
diff --git a/erpnext/manufacturing/page/production_analytics/__init__.py b/erpnext/manufacturing/page/production_analytics/__init__.py
new file mode 100644
index 0000000..baffc48
--- /dev/null
+++ b/erpnext/manufacturing/page/production_analytics/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/manufacturing/page/production_analytics/production_analytics.js b/erpnext/manufacturing/page/production_analytics/production_analytics.js
new file mode 100644
index 0000000..c64ea91
--- /dev/null
+++ b/erpnext/manufacturing/page/production_analytics/production_analytics.js
@@ -0,0 +1,112 @@
+// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
+// License: GNU General Public License v3. See license.txt
+
+frappe.pages['production-analytics'].on_page_load = function(wrapper) {
+	frappe.ui.make_app_page({
+		parent: wrapper,
+		title: __('Production Analytics'),
+		single_column: true
+	});
+
+	new erpnext.ProductionAnalytics(wrapper);
+		
+
+	frappe.breadcrumbs.add("Manufacturing");
+}
+
+erpnext.ProductionAnalytics = frappe.views.GridReportWithPlot.extend({
+	init: function(wrapper) {
+		this._super({
+			title: __("Production Analytics"),
+			page: wrapper,
+			parent: $(wrapper).find('.layout-main'),
+			page: wrapper.page,
+			doctypes: ["Item", "Company", "Fiscal Year", "Production Order"]
+		});
+
+	},
+	setup_columns: function() {
+
+		var std_columns = [
+			{id: "_check", name: __("Plot"), field: "_check", width: 30,
+				formatter: this.check_formatter},
+			{id: "name", name: __("Status"), field: "name", width: 100},
+		];
+
+		this.make_date_range_columns();
+		this.columns = std_columns.concat(this.columns);
+	},
+	filters: [
+				{fieldtype:"Select", label: __("Company"), link:"Company", fieldname: "company",
+			default_value: __("Select Company...")},
+		{fieldtype:"Date", label: __("From Date"), fieldname: "from_date"},
+		{fieldtype:"Date", label: __("To Date"), fieldname: "to_date"},
+		{fieldtype:"Select", label: __("Range"), fieldname: "range",
+			options:[{label: __("Daily"), value: "Daily"}, {label: __("Weekly"), value: "Weekly"},
+				{label: __("Monthly"), value: "Monthly"}, {label: __("Quarterly"), value: "Quarterly"},
+				{label: __("Yearly"), value: "Yearly"}]}
+	],
+	setup_filters: function() {
+		var me = this;
+		this._super();
+
+		this.trigger_refresh_on_change(["company"]);
+		this.trigger_refresh_on_change(["range"]);
+
+		this.show_zero_check()
+		this.setup_chart_check();
+	},
+	init_filter_values: function() {
+		this._super();
+		this.filter_inputs.range.val('Monthly');
+	},
+
+	prepare_data: function() {
+		// add Opening, Closing, Totals rows
+		// if filtered by account and / or voucher
+		var me = this;
+		var all_open_orders = {name:"All Production Orders", "id": "all-open-pos",
+			checked:true};
+		var not_started = {name:"Not Started", "id":"not-started-pos",
+			checked:true};
+		var overdue = {name:"Overdue (Not Started)", "id":"overdue-pos",
+			checked:true};
+		var  pending = {name:"Pending", "id":"pending-pos",
+			checked:true};
+		var completed = {name:"Completed", "id":"completed-pos",
+			checked:true};
+	
+
+		$.each(frappe.report_dump.data["Production Order"], function(i, d) {
+			var dateobj = dateutil.str_to_obj(d.creation);
+			var date = d.creation.split(" ")[0];
+			var col = me.column_map[date];
+
+			if(col) {
+				var start_period = dateutil.str_to_obj(col.name);
+				var end_period = dateutil.str_to_obj(col.id);
+				all_open_orders[col.field] = flt(all_open_orders[col.field]) + 1;
+				if(d.status=="Completed") {
+					completed[col.field] = flt(completed[col.field]) + 1;
+				}else if(d.status=="In Process") {
+					pending[col.field] = flt(pending[col.field]) + 1;
+				}else if(d.status=="Not Started") {
+					if (d.planned_start_date > start_period) {
+						not_started[col.field] = flt(not_started[col.field]) + 1;
+					}else if (d.planned_start_date < end_period) {
+						overdue[col.field] = flt(overdue[col.field]) + 1;
+					}else if (d.planned_start_date < d.actual_start_date) {
+						not_started[col.field] = flt(not_started[col.field]) + 1;
+					}else if (d.planned_start_date > dateutil.now_datetime()) {
+						not_started[col.field] = flt(not_started[col.field]) + 1;
+					}
+					else{
+						overdue[col.field] = flt(overdue[col.field]) + 1;
+					}
+				}
+			}
+		});
+
+		this.data = [all_open_orders, not_started, overdue, pending, completed];
+	}
+});
diff --git a/erpnext/manufacturing/page/production_analytics/production_analytics.json b/erpnext/manufacturing/page/production_analytics/production_analytics.json
new file mode 100644
index 0000000..e045614
--- /dev/null
+++ b/erpnext/manufacturing/page/production_analytics/production_analytics.json
@@ -0,0 +1,23 @@
+{
+ "creation": "2012-09-21 20:15:16.000000", 
+ "docstatus": 0, 
+ "doctype": "Page", 
+ "icon": "fa fa-bar-chart", 
+ "idx": 1, 
+ "modified": "2013-07-11 14:43:52.000000", 
+ "modified_by": "Administrator", 
+ "module": "Buying", 
+ "name": "production-analytics", 
+ "owner": "Administrator", 
+ "page_name": "production-analytics", 
+ "roles": [
+  {
+   "role": "Analytics"
+  }, 
+  {
+   "role": "Manufacturing Manager"
+  }
+ ], 
+ "standard": "Yes", 
+ "title": "Production Analytics"
+}
\ No newline at end of file
diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py
index 4dc326e..179bf32 100644
--- a/erpnext/startup/report_data_map.py
+++ b/erpnext/startup/report_data_map.py
@@ -278,7 +278,7 @@
 	},
 	"Purchase Receipt Item[Purchase Analytics]": {
 		"columns": ["name", "parent", "item_code", "qty", "base_net_amount"],
-		"conditions": ["docstatus=1", "ifnull(parent, '')!=''"],
+		"conditions": ["docstatus=1", "ifnull(parent, '')!=''"], 
 		"order_by": "parent",
 		"links": {
 			"parent": ["Purchase Receipt", "name"],
@@ -290,6 +290,12 @@
 		"columns": ["name","status","creation","resolution_date","first_responded_on"],
 		"conditions": ["docstatus < 2"],
 		"order_by": "creation"
-	}
+	},
 
+	# Manufacturing
+	"Production Order": {
+		"columns": ["name","status","creation","planned_start_date","status","actual_start_date"],
+		"conditions": ["docstatus = 1"],
+		"order_by": "creation"
+	}
 }