Stock balance grid report deprecated and moved to server side
diff --git a/erpnext/config/stock.py b/erpnext/config/stock.py
index 7a4345e..04e45d4 100644
--- a/erpnext/config/stock.py
+++ b/erpnext/config/stock.py
@@ -142,10 +142,10 @@
 					"doctype": "Item",
 				},
 				{
-					"type": "page",
-					"name": "stock-balance",
-					"label": _("Stock Balance"),
-					"icon": "icon-table",
+					"type": "report",
+					"is_query_report": True,
+					"name": "Stock Balance",
+					"doctype": "Warehouse"
 				},
 				{
 					"type": "report",
@@ -170,13 +170,7 @@
 					"name": "stock-analytics",
 					"label": _("Stock Analytics"),
 					"icon": "icon-bar-chart"
-				},
-				{
-					"type": "report",
-					"is_query_report": True,
-					"name": "Warehouse-Wise Stock Balance",
-					"doctype": "Warehouse"
-				},
+				}
 			]
 		},
 		{
diff --git a/erpnext/stock/page/stock_balance/README.md b/erpnext/stock/page/stock_balance/README.md
deleted file mode 100644
index 6522aeb..0000000
--- a/erpnext/stock/page/stock_balance/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Stock balances on a particular day, per warehouse.
\ No newline at end of file
diff --git a/erpnext/stock/page/stock_balance/__init__.py b/erpnext/stock/page/stock_balance/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/stock/page/stock_balance/__init__.py
+++ /dev/null
diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js
deleted file mode 100644
index 198d317..0000000
--- a/erpnext/stock/page/stock_balance/stock_balance.js
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-frappe.require("assets/erpnext/js/stock_analytics.js");
-
-frappe.pages['stock-balance'].onload = function(wrapper) {
-	frappe.ui.make_app_page({
-		parent: wrapper,
-		title: __('Stock Balance'),
-		single_column: true
-	});
-
-	new erpnext.StockBalance(wrapper);
-
-	wrapper.appframe.add_module_icon("Stock");
-}
-
-erpnext.StockBalance = erpnext.StockAnalytics.extend({
-	init: function(wrapper) {
-		this._super(wrapper, {
-			title: __("Stock Balance"),
-			doctypes: ["Item", "Item Group", "Warehouse", "Stock Ledger Entry", "Brand",
-				"Stock Entry", "Project", "Serial No"],
-		});
-	},
-	setup_columns: function() {
-		this.columns = [
-			{id: "name", name: __("Item"), field: "name", width: 300,
-				formatter: this.tree_formatter},
-			{id: "item_name", name: __("Item Name"), field: "item_name", width: 100},
-			{id: "description", name: __("Description"), field: "description", width: 200,
-				formatter: this.text_formatter},
-			{id: "brand", name: __("Brand"), field: "brand", width: 100},
-			{id: "stock_uom", name: __("UOM"), field: "stock_uom", width: 100},
-			{id: "opening_qty", name: __("Opening Qty"), field: "opening_qty", width: 100,
-				formatter: this.currency_formatter},
-			{id: "inflow_qty", name: __("In Qty"), field: "inflow_qty", width: 100,
-				formatter: this.currency_formatter},
-			{id: "outflow_qty", name: __("Out Qty"), field: "outflow_qty", width: 100,
-				formatter: this.currency_formatter},
-			{id: "closing_qty", name: __("Closing Qty"), field: "closing_qty", width: 100,
-				formatter: this.currency_formatter},
-
-			{id: "opening_value", name: __("Opening Value"), field: "opening_value", width: 100,
-				formatter: this.currency_formatter},
-			{id: "inflow_value", name: __("In Value"), field: "inflow_value", width: 100,
-				formatter: this.currency_formatter},
-			{id: "outflow_value", name: __("Out Value"), field: "outflow_value", width: 100,
-				formatter: this.currency_formatter},
-			{id: "closing_value", name: __("Closing Value"), field: "closing_value", width: 100,
-				formatter: this.currency_formatter},
-			{id: "valuation_rate", name: __("Valuation Rate"), field: "valuation_rate", width: 100,
-				formatter: this.currency_formatter},
-		];
-	},
-
-	filters: [
-		{fieldtype:"Select", label: __("Brand"), link:"Brand", fieldname: "brand",
-			default_value: __("Select Brand..."), filter: function(val, item, opts) {
-				return val == opts.default_value || item.brand == val || item._show;
-			}, link_formatter: {filter_input: "brand"}},
-		{fieldtype:"Select", label: __("Warehouse"), link:"Warehouse", fieldname: "warehouse",
-			default_value: __("Select Warehouse..."), filter: function(val, item, opts, me) {
-				return me.apply_zero_filter(val, item, opts, me);
-			}},
-		{fieldtype:"Select", label: __("Project"), link:"Project", fieldname: "project",
-			default_value: __("Select Project..."), filter: function(val, item, opts, me) {
-				return me.apply_zero_filter(val, item, opts, me);
-			}, link_formatter: {filter_input: "project"}},
-		{fieldtype:"Date", label: __("From Date"), fieldname: "from_date"},
-		{fieldtype:"Label", label: __("To")},
-		{fieldtype:"Date", label: __("To Date"), fieldname: "to_date"},
-		{fieldtype:"Button", label: __("Refresh"), icon:"icon-refresh icon-white"},
-		{fieldtype:"Button", label: __("Reset Filters"), icon: "icon-filter"}
-	],
-
-	setup_plot_check: function() {
-		return;
-	},
-
-	prepare_data: function() {
-		this.stock_entry_map = this.make_name_map(frappe.report_dump.data["Stock Entry"], "name");
-		this._super();
-	},
-
-	prepare_balances: function() {
-		var me = this;
-		var from_date = dateutil.str_to_obj(this.from_date);
-		var to_date = dateutil.str_to_obj(this.to_date);
-		var data = frappe.report_dump.data["Stock Ledger Entry"];
-
-		this.item_warehouse = {};
-		this.serialized_buying_rates = this.get_serialized_buying_rates();
-
-		for(var i=0, j=data.length; i<j; i++) {
-			var sl = data[i];
-			var sl_posting_date = dateutil.str_to_obj(sl.posting_date);
-
-			if((me.is_default("warehouse") ? true : me.warehouse == sl.warehouse) &&
-				(me.is_default("project") ? true : me.project == sl.project)) {
-				var item = me.item_by_name[sl.item_code];
-				var wh = me.get_item_warehouse(sl.warehouse, sl.item_code);
-				var valuation_method = item.valuation_method ?
-					item.valuation_method : sys_defaults.valuation_method;
-				var is_fifo = valuation_method == "FIFO";
-
-				if(sl.voucher_type=="Stock Reconciliation") {
-					var qty_diff = sl.qty_after_transaction - (item.temp_closing_qty || 0.0);
-					var value_diff = (sl.valuation_rate * sl.qty_after_transaction) - (item.temp_closing_value || 0.0);
-					wh.fifo_stack.push([sl.qty_after_transaction, sl.valuation_rate, sl.posting_date]);
-					wh.balance_qty = sl.qty_after_transaction;
-					wh.balance_value = sl.valuation_rate * sl.qty_after_transaction;
-				} else {
-					var qty_diff = sl.qty;
-					var value_diff = me.get_value_diff(wh, sl, is_fifo);
-				}
-				item.temp_closing_qty += qty_diff;
-				item.temp_closing_value += value_diff;
-
-				if(sl_posting_date < from_date) {
-					item.opening_qty += qty_diff;
-					item.opening_value += value_diff;
-				} else if(sl_posting_date <= to_date) {
-					var ignore_inflow_outflow = this.is_default("warehouse")
-						&& sl.voucher_type=="Stock Entry"
-						&& this.stock_entry_map[sl.voucher_no].purpose=="Material Transfer";
-
-					if(!ignore_inflow_outflow) {
-
-						if(qty_diff < 0) {
-							item.outflow_qty += Math.abs(qty_diff);
-						} else {
-							item.inflow_qty += qty_diff;
-						}
-						if(value_diff < 0) {
-							item.outflow_value += Math.abs(value_diff);
-						} else {
-							item.inflow_value += value_diff;
-						}
-
-						item.closing_qty += qty_diff;
-						item.closing_value += value_diff;
-					}
-
-				} else {
-					break;
-				}
-			}
-		}
-
-		// opening + diff = closing
-		// adding opening, since diff already added to closing
-		$.each(me.item_by_name, function(key, item) {
-			item.closing_qty += item.opening_qty;
-			item.closing_value += item.opening_value;
-
-			// valuation rate
-			if(!item.is_group && flt(item.closing_qty) > 0)
-				item.valuation_rate = flt(item.closing_value) / flt(item.closing_qty);
-			else item.valuation_rate = 0.0
-		});
-	},
-
-	update_groups: function() {
-		var me = this;
-
-		$.each(this.data, function(i, item) {
-			// update groups
-			if(!item.is_group && me.apply_filter(item, "brand")) {
-				var parent = me.parent_map[item.name];
-				while(parent) {
-					parent_group = me.item_by_name[parent];
-					$.each(me.columns, function(c, col) {
-						if (col.formatter == me.currency_formatter && col.field != "valuation_rate") {
-							parent_group[col.field] = flt(parent_group[col.field]) + flt(item[col.field]);
-						}
-					});
-
-					// show parent if filtered by brand
-					if(item.brand == me.brand)
-						parent_group._show = true;
-
-					parent = me.parent_map[parent];
-				}
-			}
-		});
-	},
-
-	get_plot_data: function() {
-		return;
-	}
-});
diff --git a/erpnext/stock/page/stock_balance/stock_balance.json b/erpnext/stock/page/stock_balance/stock_balance.json
deleted file mode 100644
index 6f25be4..0000000
--- a/erpnext/stock/page/stock_balance/stock_balance.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "creation": "2012-12-27 18:57:47.000000", 
- "docstatus": 0, 
- "doctype": "Page", 
- "icon": "icon-table", 
- "idx": 1, 
- "modified": "2013-07-11 14:44:15.000000", 
- "modified_by": "Administrator", 
- "module": "Stock", 
- "name": "stock-balance", 
- "owner": "Administrator", 
- "page_name": "stock-balance", 
- "roles": [
-  {
-   "role": "Material Manager"
-  }, 
-  {
-   "role": "Analytics"
-  }
- ], 
- "standard": "Yes", 
- "title": "Stock Balance"
-}
\ No newline at end of file