Refactor Expense Claim (#12883)

* patch for custom workflow

* deleted field approval_status

* replaced approval_status with workflow_state

* updated test cases

* validation to check expense approver

* check if workflow_state_name already exists

* fixes

* modified notifications.py

* removed field exp_approval and modified test cases
diff --git a/erpnext/demo/user/hr.py b/erpnext/demo/user/hr.py
index d61aa4e..9b83584 100644
--- a/erpnext/demo/user/hr.py
+++ b/erpnext/demo/user/hr.py
@@ -7,7 +7,7 @@
 from erpnext.projects.doctype.timesheet.timesheet import make_salary_slip, make_sales_invoice
 from frappe.utils.make_random import get_random
 from erpnext.hr.doctype.expense_claim.test_expense_claim import get_payable_account
-from erpnext.hr.doctype.expense_claim.expense_claim import get_expense_approver, make_bank_entry
+from erpnext.hr.doctype.expense_claim.expense_claim import make_bank_entry
 from erpnext.hr.doctype.leave_application.leave_application import (get_leave_balance_on,
 	OverlapError, AttendanceAlreadyMarkedError)
 
@@ -55,13 +55,11 @@
 		expense_claim.company = frappe.flags.company
 		expense_claim.payable_account = get_payable_account(expense_claim.company)
 		expense_claim.posting_date = frappe.flags.current_date
-		expense_claim.exp_approver = filter((lambda x: x[0] != 'Administrator'), get_expense_approver(None, '', None, 0, 20, None))[0][0]
 		expense_claim.insert()
 
 		rand = random.random()
 
 		if rand < 0.4:
-			expense_claim.approval_status = "Approved"
 			update_sanctioned_amount(expense_claim)
 			expense_claim.submit()
 
@@ -74,10 +72,6 @@
 				je.flags.ignore_permissions = 1
 				je.submit()
 
-		elif rand < 0.2:
-			expense_claim.approval_status = "Rejected"
-			expense_claim.submit()
-
 def get_expenses():
 	expenses = []
 	expese_types = frappe.db.sql("""select ect.name, eca.default_account from `tabExpense Claim Type` ect,