diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 9bc16e4..eb297f8 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -18,8 +18,9 @@
 
 	def validate(self):
 		validate_fiscal_year(self.posting_date, self.fiscal_year, _("Posting Date"), self)
-		self.validate_sanctioned_amount()
 		self.validate_exp_details()
+		self.validate_cost()
+		self.validate_sanctioned_amount()
 		self.validate_expense_approver()
 		self.validate_task()
 		set_employee_name(self)
@@ -33,6 +34,15 @@
 	def on_cancel(self):
 		if self.project:
 			self.update_task()
+			
+	def validate_cost(self):
+		total_claimed_amount = 0 
+		total_sanctioned_amount = 0
+		for d in self.expenses:
+			total_claimed_amount += d.claim_amount
+			total_sanctioned_amount += d.sanctioned_amount
+		self.total_claimed_amount = total_claimed_amount
+		self.total_sanctioned_amount = total_sanctioned_amount
 
 	def validate_exp_details(self):
 		if not self.get('expenses'):
diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.py b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
index f1c657a..9c05383 100644
--- a/erpnext/hr/doctype/expense_claim/test_expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
@@ -8,4 +8,50 @@
 test_records = frappe.get_test_records('Expense Claim')
 
 class TestExpenseClaim(unittest.TestCase):
-	pass
+	def test_project_costing(self):
+		frappe.db.sql("delete from `tabTask`")
+		frappe.db.sql("delete from `tabProject`")
+		
+		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"})
+		expense_claim = frappe.get_doc({
+			 "doctype": "Expense Claim",
+			 "employee": "_T-Employee-0001",
+			 "posting_date": "2015-07-07",
+			 "fiscal_year": "_Test Fiscal Year 2015",
+			 "approval_status": "Approved",
+			 "project": "_Test Project 1",
+			 "task": task_name,
+			 "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",
+			 "posting_date": "2015-07-07",
+			 "approval_status": "Approved",
+			 "project": "_Test Project 1",
+			 "task": task_name,
+			 "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)
