Ladder Approve is a powerful custom Frappe app that introduces a dynamic, multi-level approval workflow for Leave Applications and Expense Claims in ERPNext. It automatically routes documents based on reporting hierarchy and empowers HR to act as the final approver. This app enhances control, accountability, and flexibility in organizational approval processes.
- Uses the
reports_tofield in the Employee Doctype to determine the next approver. - Documents move up the reporting chain until reaching a user with the HR Manager role.
- Users with the HR Manager role act as the final authority.
- Supports organizations with multiple HR Managers.
- Bypasses hierarchy if no more approvers are found.
- Adds a custom field
custom_previous_approvers(Small Text) to track users who have approved the document previously. - Ensures clear traceability and auditability.
- Mid-level approvers can forward documents to their managers instead of finalizing them.
- If no higher manager is found, system sends to any HR Manager.
- Forwarding updates the document with the new current approver.
-
Only the current approver has access to submit.
-
Uses custom Permission Query Script to control visibility based on:
- Document Owner (Applicant)
- Current Approver
- Previous Approvers
- System Manager / HR Manager / Administrator
Triggered on key transitions:
- Document forwarded to next approver
- Document approved or rejected
- Includes rejection reason if applicable
-
Two checkboxes to globally enable:
- Multi-Level Leave Approval
- Multi-Level Expense Claim Approval
- Employees can opt out of multi-level flow via checkboxes:
# Step 1: Clone the repo
bench get-app ladder_approve https://github.com/Beveren-Software-Inc/ladder_approve.git
# Step 2: Install the app
bench --site yoursite install-app ladder_approve-
Go to HR Settings
-
Enable both:
- Enable Multi-Level Leave Approval
- Enable Multi-Level Expense Claim Approval
- Open Employee master
- Use checkboxes to disable multi-level approval for specific users.
- Users see Approve or Reject based on role and stage.
custom_previous_approversfield shows who has approved so far.
- Employee A applies for leave.
- Document is auto-assigned to their reporting manager (Employee B).
- Employee B clicks Approve, system forwards to Employee C (B’s manager).
- C also approves, final stage goes to HR Manager (Employee D).
- HR Manager takes final action (Approve or Reject).
At each step:
- Only the current approver has actionable access.
- Notifications are triggered.
- Approval trail is recorded.