diff --git a/erpnext/startup/report_data_map.py b/erpnext/startup/report_data_map.py
index e614c71..ce71310 100644
--- a/erpnext/startup/report_data_map.py
+++ b/erpnext/startup/report_data_map.py
@@ -18,14 +18,14 @@
 
 	# Accounts
 	"Account": {
-		"columns": ["name", "parent_account", "lft", "rgt", "report_type", 
+		"columns": ["name", "parent_account", "lft", "rgt", "report_type",
 			"company", "group_or_ledger"],
 		"conditions": ["docstatus < 2"],
 		"order_by": "lft",
 		"links": {
 			"company": ["Company", "name"],
 		}
-		
+
 	},
 	"Cost Center": {
 		"columns": ["name", "lft", "rgt"],
@@ -33,7 +33,7 @@
 		"order_by": "lft"
 	},
 	"GL Entry": {
-		"columns": ["name", "account", "posting_date", "cost_center", "debit", "credit", 
+		"columns": ["name", "account", "posting_date", "cost_center", "debit", "credit",
 			"is_opening", "company", "voucher_type", "voucher_no", "remarks"],
 		"order_by": "posting_date, account",
 		"links": {
@@ -45,8 +45,8 @@
 
 	# Stock
 	"Item": {
-		"columns": ["name", "if(item_name=name, '', item_name) as item_name", "description", 
-			"item_group as parent_item_group", "stock_uom", "brand", "valuation_method", 
+		"columns": ["name", "if(item_name=name, '', item_name) as item_name", "description",
+			"item_group as parent_item_group", "stock_uom", "brand", "valuation_method",
 			"re_order_level", "re_order_qty"],
 		# "conditions": ["docstatus < 2"],
 		"order_by": "name",
@@ -76,7 +76,7 @@
 		"order_by": "name"
 	},
 	"Stock Ledger Entry": {
-		"columns": ["name", "posting_date", "posting_time", "item_code", "warehouse", 
+		"columns": ["name", "posting_date", "posting_time", "item_code", "warehouse",
 			"actual_qty as qty", "voucher_type", "voucher_no", "project",
 			"ifnull(incoming_rate,0) as incoming_rate", "stock_uom", "serial_no"],
 		"order_by": "posting_date, posting_time, name",
@@ -98,8 +98,8 @@
 		"order_by": "posting_date, posting_time, name",
 	},
 	"Production Order": {
-		"columns": ["name", "production_item as item_code", 
-			"(ifnull(qty, 0) - ifnull(produced_qty, 0)) as qty", 
+		"columns": ["name", "production_item as item_code",
+			"(ifnull(qty, 0) - ifnull(produced_qty, 0)) as qty",
 			"fg_warehouse as warehouse"],
 		"conditions": ["docstatus=1", "status != 'Stopped'", "ifnull(fg_warehouse, '')!=''",
 			"ifnull(qty, 0) > ifnull(produced_qty, 0)"],
@@ -109,7 +109,7 @@
 		},
 	},
 	"Material Request Item": {
-		"columns": ["item.name as name", "item_code", "warehouse", 
+		"columns": ["item.name as name", "item_code", "warehouse",
 			"(ifnull(qty, 0) - ifnull(ordered_qty, 0)) as qty"],
 		"from": "`tabMaterial Request Item` item, `tabMaterial Request` main",
 		"conditions": ["item.parent = main.name", "main.docstatus=1", "main.status != 'Stopped'",
@@ -120,21 +120,21 @@
 		},
 	},
 	"Purchase Order Item": {
-		"columns": ["item.name as name", "item_code", "warehouse", 
+		"columns": ["item.name as name", "item_code", "warehouse",
 			"(ifnull(qty, 0) - ifnull(received_qty, 0)) as qty"],
 		"from": "`tabPurchase Order Item` item, `tabPurchase Order` main",
-		"conditions": ["item.parent = main.name", "main.docstatus=1", "main.status != 'Stopped'", 
+		"conditions": ["item.parent = main.name", "main.docstatus=1", "main.status != 'Stopped'",
 			"ifnull(warehouse, '')!=''", "ifnull(qty, 0) > ifnull(received_qty, 0)"],
 		"links": {
 			"item_code": ["Item", "name"],
 			"warehouse": ["Warehouse", "name"]
 		},
 	},
-	
+
 	"Sales Order Item": {
 		"columns": ["item.name as name", "item_code", "(ifnull(qty, 0) - ifnull(delivered_qty, 0)) as qty", "warehouse"],
 		"from": "`tabSales Order Item` item, `tabSales Order` main",
-		"conditions": ["item.parent = main.name", "main.docstatus=1", "main.status != 'Stopped'", 
+		"conditions": ["item.parent = main.name", "main.docstatus=1", "main.status != 'Stopped'",
 			"ifnull(warehouse, '')!=''", "ifnull(qty, 0) > ifnull(delivered_qty, 0)"],
 		"links": {
 			"item_code": ["Item", "name"],
@@ -144,7 +144,7 @@
 
 	# Sales
 	"Customer": {
-		"columns": ["name", "if(customer_name=name, '', customer_name) as customer_name", 
+		"columns": ["name", "if(customer_name=name, '', customer_name) as customer_name",
 			"customer_group as parent_customer_group", "territory as parent_territory"],
 		"conditions": ["docstatus < 2"],
 		"order_by": "name",
@@ -218,7 +218,7 @@
 		}
 	},
 	"Supplier": {
-		"columns": ["name", "if(supplier_name=name, '', supplier_name) as supplier_name", 
+		"columns": ["name", "if(supplier_name=name, '', supplier_name) as supplier_name",
 			"supplier_type as parent_supplier_type"],
 		"conditions": ["docstatus < 2"],
 		"order_by": "name",
@@ -291,5 +291,5 @@
 		"conditions": ["docstatus < 2"],
 		"order_by": "creation"
 	}
-	
+
 }
diff --git a/erpnext/stock/page/stock_balance/stock_balance.js b/erpnext/stock/page/stock_balance/stock_balance.js
index dbd8830..18f7916 100644
--- a/erpnext/stock/page/stock_balance/stock_balance.js
+++ b/erpnext/stock/page/stock_balance/stock_balance.js
@@ -3,18 +3,18 @@
 
 frappe.require("assets/erpnext/js/stock_analytics.js");
 
-frappe.pages['stock-balance'].onload = function(wrapper) { 
+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({
@@ -30,40 +30,42 @@
 			{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, 
+			{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, 
+			{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, 
+			{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, 
+			{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, 
+			{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, 
+
+			{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, 
+			{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, 
+			{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, 
+			{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", 
+		{fieldtype:"Select", label: __("Brand"), link:"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", 
+		{fieldtype:"Select", label: __("Warehouse"), link:"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", 
+		{fieldtype:"Select", label: __("Project"), link:"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"}},
@@ -73,16 +75,16 @@
 		{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);
@@ -95,26 +97,26 @@
 		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 ? 
+				var valuation_method = item.valuation_method ?
 					item.valuation_method : sys_defaults.valuation_method;
 				var is_fifo = valuation_method == "FIFO";
 
 				var qty_diff = sl.qty;
 				var value_diff = me.get_value_diff(wh, sl, is_fifo);
-				
+
 				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" 
+						&& 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);
@@ -126,7 +128,7 @@
 						} else {
 							item.inflow_value += value_diff;
 						}
-					
+
 						item.closing_qty += qty_diff;
 						item.closing_value += value_diff;
 					}
@@ -138,13 +140,18 @@
 		}
 
 		// opening + diff = closing
-		// adding opening, since diff already added to 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;
 
@@ -155,24 +162,22 @@
 				while(parent) {
 					parent_group = me.item_by_name[parent];
 					$.each(me.columns, function(c, col) {
-						if (col.formatter == me.currency_formatter) {
-							parent_group[col.field] = 
-								flt(parent_group[col.field])
-								+ flt(item[col.field]);
+						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;
 	}
-});
\ No newline at end of file
+});
diff --git a/erpnext/stock/page/stock_ledger/stock_ledger.js b/erpnext/stock/page/stock_ledger/stock_ledger.js
index 02af714..b4086dc 100644
--- a/erpnext/stock/page/stock_ledger/stock_ledger.js
+++ b/erpnext/stock/page/stock_ledger/stock_ledger.js
@@ -1,13 +1,13 @@
 // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
-frappe.pages['stock-ledger'].onload = function(wrapper) { 
+frappe.pages['stock-ledger'].onload = function(wrapper) {
 	frappe.ui.make_app_page({
 		parent: wrapper,
 		title: __('Stock Ledger'),
 		single_column: true
 	});
-	
+
 	new erpnext.StockLedger(wrapper);
 	wrapper.appframe.add_module_icon("Stock")
 }
@@ -30,7 +30,7 @@
 		this.columns = [
 			{id: "posting_datetime", name: __("Posting Date"), field: "posting_datetime", width: 120,
 				formatter: this.date_formatter},
-			{id: "item_code", name: __("Item Code"), field: "item_code", width: 160, 	
+			{id: "item_code", name: __("Item Code"), field: "item_code", width: 160,
 				link_formatter: {
 					filter_input: "item_code",
 					open_btn: true,
@@ -57,10 +57,10 @@
 					doctype: "dataContext.voucher_type"
 				}},
 		];
-		
+
 	},
 	filters: [
-		{fieldtype:"Select", label: __("Warehouse"), link:"Warehouse", 
+		{fieldtype:"Select", label: __("Warehouse"), link:"Warehouse",
 			default_value: "Select Warehouse...", filter: function(val, item, opts) {
 				return item.warehouse == val || val == opts.default_value;
 			}},
@@ -68,7 +68,7 @@
 			filter: function(val, item, opts) {
 				return item.item_code == val || !val;
 			}},
-		{fieldtype:"Select", label: "Brand", link:"Brand", 
+		{fieldtype:"Select", label: "Brand", link:"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"}},
@@ -87,17 +87,17 @@
 		{fieldtype:"Button", label: __("Refresh"), icon:"icon-refresh icon-white"},
 		{fieldtype:"Button", label: __("Reset Filters"), icon: "icon-filter"}
 	],
-	
+
 	setup_filters: function() {
 		var me = this;
 		this._super();
-		
+
 		this.wrapper.bind("apply_filters_from_route", function() { me.toggle_enable_brand(); });
 		this.filter_inputs.item_code.change(function() { me.toggle_enable_brand(); });
-		
+
 		this.trigger_refresh_on_change(["item_code", "warehouse", "brand"]);
 	},
-	
+
 	toggle_enable_brand: function() {
 		if(!this.filter_inputs.item_code.val()) {
 			this.filter_inputs.brand.prop("disabled", false);
@@ -107,7 +107,7 @@
 				.prop("disabled", true);
 		}
 	},
-	
+
 	init_filter_values: function() {
 		this._super();
 		this.filter_inputs.warehouse.get(0).selectedIndex = 0;
@@ -131,19 +131,19 @@
 			item_code: "Total Out", qty: 0.0, balance: 0.0, balance_value: 0.0,
 				id:"_total_out", _show: true, _style: "font-weight: bold"
 		}
-		
+
 		// clear balance
 		$.each(frappe.report_dump.data["Item"], function(i, item) {
-			item.balance = item.balance_value = 0.0; 
+			item.balance = item.balance_value = 0.0;
 		});
-		
+
 		// initialize warehouse-item map
 		this.item_warehouse = {};
 		this.serialized_buying_rates = this.get_serialized_buying_rates();
 		var from_datetime = dateutil.str_to_obj(me.from_date + " 00:00:00");
 		var to_datetime = dateutil.str_to_obj(me.to_date + " 23:59:59");
-		
-		// 
+
+		//
 		for(var i=0, j=data.length; i<j; i++) {
 			var sl = data[i];
 			var item = me.item_by_name[sl.item_code]
@@ -152,8 +152,8 @@
 			sl.posting_datetime = sl.posting_date + " " + (sl.posting_time || "00:00:00");
 			sl.brand = item.brand;
 			var posting_datetime = dateutil.str_to_obj(sl.posting_datetime);
-			
-			var is_fifo = item.valuation_method ? item.valuation_method=="FIFO" 
+
+			var is_fifo = item.valuation_method ? item.valuation_method=="FIFO"
 				: sys_defaults.valuation_method=="FIFO";
 			var value_diff = me.get_value_diff(wh, sl, is_fifo);
 
@@ -175,27 +175,27 @@
 					}
 				}
 			}
-			
+
 			if(!before_end) break;
 
 			// apply filters
 			if(me.apply_filters(sl)) {
 				out.push(sl);
 			}
-			
+
 			// update balance
 			if((!me.is_default("warehouse") ? me.apply_filter(sl, "warehouse") : true)) {
 				sl.balance = me.item_by_name[sl.item_code].balance + sl.qty;
 				me.item_by_name[sl.item_code].balance = sl.balance;
-				
+
 				sl.balance_value = me.item_by_name[sl.item_code].balance_value + value_diff;
-				me.item_by_name[sl.item_code].balance_value = sl.balance_value;		
+				me.item_by_name[sl.item_code].balance_value = sl.balance_value;
 			}
 		}
-					
+
 		if(me.item_code && !me.voucher_no) {
 			var closing = {
-				item_code: "On " + dateutil.str_to_user(this.to_date), 
+				item_code: "On " + dateutil.str_to_user(this.to_date),
 				balance: (out.length ? out[out.length-1].balance : 0), qty: 0,
 				balance_value: (out.length ? out[out.length-1].balance_value : 0),
 				id:"_closing", _show: true, _style: "font-weight: bold"
@@ -203,7 +203,7 @@
 			total_out.balance_value = -total_out.balance_value;
 			var out = [opening].concat(out).concat([total_in, total_out, closing]);
 		}
-		
+
 		this.data = out;
 	},
 	get_plot_data: function() {
@@ -231,7 +231,7 @@
 	get_plot_options: function() {
 		return {
 			grid: { hoverable: true, clickable: true },
-			xaxis: { mode: "time", 
+			xaxis: { mode: "time",
 				min: dateutil.str_to_obj(this.from_date).getTime(),
 				max: dateutil.str_to_obj(this.to_date).getTime(),
 			},
@@ -244,4 +244,4 @@
 	 	var value = format_number(y);
 		return value.bold() + " on " + date;
 	}
-});
\ No newline at end of file
+});
diff --git a/erpnext/stock/report/stock_ledger/stock_ledger.py b/erpnext/stock/report/stock_ledger/stock_ledger.py
index 5068326..73a2c2a 100644
--- a/erpnext/stock/report/stock_ledger/stock_ledger.py
+++ b/erpnext/stock/report/stock_ledger/stock_ledger.py
@@ -17,23 +17,25 @@
 			% ("/".join(["#Form", sle.voucher_type, sle.voucher_no]),)
 
 		data.append([sle.date, sle.item_code, item_detail.item_name, item_detail.item_group,
-			item_detail.brand, item_detail.description, sle.warehouse, item_detail.stock_uom,
-			sle.actual_qty, sle.qty_after_transaction, sle.valuation_rate, sle.stock_value,
-			sle.voucher_type, sle.voucher_no, voucher_link_icon, sle.batch_no, sle.serial_no, sle.company])
+			item_detail.brand, item_detail.description, sle.warehouse,
+			item_detail.stock_uom, sle.actual_qty, sle.qty_after_transaction,
+			(sle.incoming_rate if sle.actual_qty > 0 else 0.0),
+			sle.valuation_rate, sle.stock_value, sle.voucher_type, sle.voucher_no,
+			voucher_link_icon, sle.batch_no, sle.serial_no, sle.company])
 
 	return columns, data
 
 def get_columns():
-	return ["Date:Datetime:95", "Item:Link/Item:130", "Item Name::100",
-		"Item Group:Link/Item Group:100", "Brand:Link/Brand:100",
-		"Description::200", "Warehouse:Link/Warehouse:100",
-		"Stock UOM:Link/UOM:100", "Qty:Float:50", "Balance Qty:Float:100", "Valuation Rate:Currency:110",
-		"Balance Value:Currency:110", "Voucher Type::110", "Voucher #::100", "Link::30",
-		"Batch:Link/Batch:100", "Serial #:Link/Serial No:100", "Company:Link/Company:100"]
+	return ["Date:Datetime:95", "Item:Link/Item:130", "Item Name::100", "Item Group:Link/Item Group:100",
+		"Brand:Link/Brand:100", "Description::200", "Warehouse:Link/Warehouse:100",
+		"Stock UOM:Link/UOM:100", "Qty:Float:50", "Balance Qty:Float:100",
+		"Incoming Rate:Currency:110", "Valuation Rate:Currency:110", "Balance Value:Currency:110",
+		"Voucher Type::110", "Voucher #::100", "Link::30", "Batch:Link/Batch:100",
+		"Serial #:Link/Serial No:100", "Company:Link/Company:100"]
 
 def get_stock_ledger_entries(filters):
 	return frappe.db.sql("""select concat_ws(" ", posting_date, posting_time) as date,
-			item_code, warehouse, actual_qty, qty_after_transaction, valuation_rate,
+			item_code, warehouse, actual_qty, qty_after_transaction, incoming_rate, valuation_rate,
 			stock_value, voucher_type, voucher_no, batch_no, serial_no, company
 		from `tabStock Ledger Entry`
 		where company = %(company)s and
