diff --git a/erpnext/accounts/page/accounts_browser/accounts_browser.js b/erpnext/accounts/page/accounts_browser/accounts_browser.js
index 77a87ff..157a924 100644
--- a/erpnext/accounts/page/accounts_browser/accounts_browser.js
+++ b/erpnext/accounts/page/accounts_browser/accounts_browser.js
@@ -42,13 +42,13 @@
 		wrapper.page.add_menu_item(__('New Company'), function() { newdoc('Company'); }, true);
 	}
 
-	wrapper.page.set_secondary_action(__('Refresh'), function() {
+	wrapper.page.add_menu_item(__('Refresh'), function() {
 			wrapper.$company_select.change();
 		});
 
 	wrapper.page.set_primary_action(__('New'), function() {
 		erpnext.account_chart && erpnext.account_chart.make_new();
-	});
+	}, "octicon octicon-plus");
 
 	// company-select
 	wrapper.$company_select = wrapper.page.add_select("Company", [])
@@ -121,7 +121,8 @@
 					label: __("Add Child"),
 					click: function() {
 						me.make_new()
-					}
+					},
+					btnClass: "hidden-xs"
 				},
 				{
 					condition: function(node) {
@@ -137,8 +138,8 @@
 							"company": me.company
 						};
 						frappe.set_route("query-report", "General Ledger");
-					}
-
+					},
+					btnClass: "hidden-xs"
 				},
 				{
 					condition: function(node) { return !node.root && me.can_write },
@@ -147,7 +148,8 @@
 						frappe.model.rename_doc(me.ctype, node.label, function(new_name) {
 							node.reload();
 						});
-					}
+					},
+					btnClass: "hidden-xs"
 				},
 				{
 					condition: function(node) { return !node.root && me.can_delete },
@@ -156,7 +158,8 @@
 						frappe.model.delete_doc(me.ctype, node.label, function() {
 							node.parent.remove();
 						});
-					}
+					},
+					btnClass: "hidden-xs"
 				}
 			],
 			onrender: function(node) {
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.json b/erpnext/hr/doctype/expense_claim/expense_claim.json
index f4e4bae..e3293ed 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.json
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.json
@@ -536,13 +536,33 @@
  "is_submittable": 1, 
  "issingle": 0, 
  "istable": 0, 
- "modified": "2015-08-31 08:48:32.488942", 
+ "modified": "2015-09-01 07:11:25.759637", 
  "modified_by": "Administrator", 
  "module": "HR", 
  "name": "Expense Claim", 
  "owner": "harshada@webnotestech.com", 
  "permissions": [
   {
+   "amend": 1, 
+   "apply_user_permissions": 0, 
+   "cancel": 1, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "HR Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 1, 
+   "write": 1
+  }, 
+  {
    "amend": 0, 
    "apply_user_permissions": 1, 
    "cancel": 0, 
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 64be65e..ef15e78 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -22,6 +22,8 @@
 		self.validate_expense_approver()
 		self.calculate_total_amount()
 		set_employee_name(self)
+		if self.task and not self.project:
+			self.project = frappe.db.get_value("Task", self.task, "project")
 
 	def on_submit(self):
 		if self.approval_status=="Draft":
diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.py b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
index a9091fb..b21f2a1 100644
--- a/erpnext/hr/doctype/expense_claim/test_expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
@@ -11,44 +11,47 @@
 	def test_total_expense_claim_for_project(self):
 		frappe.db.sql("""delete from `tabTask` where project = "_Test Project 1" """)
 		frappe.db.sql("""delete from `tabProject` where name = "_Test Project 1" """)
-		
+		frappe.db.sql("""delete from `tabExpense Claim`""")
+		frappe.db.sql("""delete from `tabExpense Claim Detail`""")
+
 		frappe.get_doc({
 			"project_name": "_Test Project 1",
 			"doctype": "Project",
 			"tasks" :
 				[{ "title": "_Test Project Task 1", "status": "Open" }]
 		}).save()
-		
-		task_name = frappe.db.get_value("Task",{"project": "_Test Project 1"})
+
+		task_name = frappe.db.get_value("Task", {"project": "_Test Project 1"})
+
 		expense_claim = frappe.get_doc({
 			 "doctype": "Expense Claim",
 			 "employee": "_T-Employee-0001",
 			 "approval_status": "Approved",
 			 "project": "_Test Project 1",
 			 "task": task_name,
-			 "expenses": 
+			 "expenses":
 			 	[{ "expense_type": "Food", "claim_amount": 300, "sanctioned_amount": 200 }]
 		})
 		expense_claim.submit()
-		
+
 		self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
 		self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 200)
-		
+
 		expense_claim2 = frappe.get_doc({
 			 "doctype": "Expense Claim",
 			 "employee": "_T-Employee-0001",
 			 "approval_status": "Approved",
 			 "project": "_Test Project 1",
 			 "task": task_name,
-			 "expenses": 
+			 "expenses":
 			 	[{ "expense_type": "Food", "claim_amount": 600, "sanctioned_amount": 500 }]
 		})
 		expense_claim2.submit()
-		
+
 		self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 700)
 		self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 700)
-		
+
 		expense_claim2.cancel()
-		
+
 		self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
 		self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 200)
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 277ffdb..8e126aa 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -97,8 +97,11 @@
 			sum(hours) as time
 			from `tabTime Log` where project = %s and docstatus = 1""", self.name, as_dict=1)[0]
 
-		from_expense_claim = frappe.db.sql("""select sum(ifnull(total_sanctioned_amount, 0))
-			from `tabExpense Claim` where project = %s""", self.name, as_dict=1)[0]
+		from_expense_claim = frappe.db.sql("""select
+			sum(ifnull(total_sanctioned_amount, 0)) as total_sanctioned_amount
+			from `tabExpense Claim` where project = %s and approval_status='Approved'
+			and docstatus = 1""",
+			self.name, as_dict=1)[0]
 
 		self.actual_start_date = from_time_log.start_date
 		self.actual_end_date = from_time_log.end_date
diff --git a/erpnext/selling/page/sales_browser/sales_browser.js b/erpnext/selling/page/sales_browser/sales_browser.js
index 98d34be..a99fe72 100644
--- a/erpnext/selling/page/sales_browser/sales_browser.js
+++ b/erpnext/selling/page/sales_browser/sales_browser.js
@@ -7,7 +7,7 @@
 		single_column: true,
 	});
 
-	wrapper.page.set_secondary_action(__('Refresh'), function() {
+	wrapper.page.add_menu_item(__('Refresh'), function() {
 			wrapper.make_tree();
 		});
 
@@ -57,7 +57,7 @@
 
 		me.page.set_primary_action(__("New"), function() {
 			me.new_node();
-		});
+		}, "octicon octicon-plus");
 
 		this.tree = new frappe.ui.Tree({
 			parent: $(parent),
@@ -80,7 +80,8 @@
 					condition: function(node) { return me.can_create && node.expandable; },
 					click: function(node) {
 						me.new_node();
-					}
+					},
+					btnClass: "hidden-xs"
 				},
 				{
 					label:__("Rename"),
@@ -89,7 +90,8 @@
 						frappe.model.rename_doc(me.ctype, node.label, function(new_name) {
 							node.$a.html(new_name);
 						});
-					}
+					},
+					btnClass: "hidden-xs"
 				},
 				{
 					label:__("Delete"),
@@ -98,7 +100,8 @@
 						frappe.model.delete_doc(me.ctype, node.label, function() {
 							node.parent.remove();
 						});
-					}
+					},
+					btnClass: "hidden-xs"
 				}
 
 			]
