093e7e6e98
* 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
66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
# Copyright (c) 2017, Frappe and Contributors
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
from __future__ import unicode_literals
|
|
import frappe
|
|
|
|
def execute():
|
|
if frappe.db.a_row_exists("Expense Claim"):
|
|
frappe.reload_doc("hr", "doctype", "expense_claim")
|
|
frappe.reload_doc("hr", "doctype", "vehicle_log")
|
|
frappe.reload_doc("hr", "doctype", "expense_claim_advance")
|
|
frappe.reload_doc("workflow", "doctype", "workflow")
|
|
|
|
states = {'Approved': 'Success', 'Rejected': 'Danger', 'Draft': 'Warning'}
|
|
for state, style in states.items():
|
|
if not frappe.db.exists("Workflow State", state):
|
|
frappe.get_doc({
|
|
'doctype': 'Workflow State',
|
|
'workflow_state_name': state,
|
|
'style': style
|
|
}).insert(ignore_permissions=True)
|
|
|
|
for action in ['Approve', 'Reject']:
|
|
if not frappe.db.exists("Workflow Action", action):
|
|
frappe.get_doc({
|
|
'doctype': 'Workflow Action',
|
|
'workflow_action_name': action
|
|
}).insert(ignore_permissions=True)
|
|
|
|
if not frappe.db.exists("Workflow", "Expense Approval"):
|
|
frappe.get_doc({
|
|
'doctype': 'Workflow',
|
|
'workflow_name': 'Expense Approval',
|
|
'document_type': 'Expense Claim',
|
|
'is_active': 1,
|
|
'workflow_state_field': 'workflow_state',
|
|
'states': [{
|
|
"state": 'Draft',
|
|
"doc_status": 0,
|
|
"allow_edit": 'Employee'
|
|
}, {
|
|
"state": 'Approved',
|
|
"doc_status": 1,
|
|
"allow_edit": 'Expense Approver'
|
|
}, {
|
|
"state": 'Rejected',
|
|
"doc_status": 0,
|
|
"allow_edit": 'Expense Approver'
|
|
}],
|
|
'transitions': [{
|
|
"state": 'Draft',
|
|
"action": 'Approve',
|
|
"next_state": 'Approved',
|
|
"allowed": 'Expense Approver'
|
|
},
|
|
{
|
|
"state": 'Draft',
|
|
"action": 'Reject',
|
|
"next_state": 'Rejected',
|
|
"allowed": 'Expense Approver'
|
|
}]
|
|
}).insert(ignore_permissions=True)
|
|
|
|
if frappe.db.has_column("Expense Claim", "status"):
|
|
frappe.db.sql("""update `tabExpense Claim` set workflow_state = approval_status""")
|