expense claim test records
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)