Approval System

Approval System

The Approval System provides configurable, multi-level workflow control for transactions before they are posted to the ledger. It enforces organisational sign-off policies, supports conditional routing based on amounts and locations, offers automatic escalation of overdue items, temporary delegation of authority, and a full audit trail of every action taken.

Key Concepts

  • Workflow — a named approval configuration tied to a single transaction type. Each workflow contains one or more ordered approval levels.
  • Approval Level — a step in the approval chain. Each level specifies the security role that may approve, the minimum number of approvers required, an optional auto-approve amount threshold, and optional escalation settings.
  • Draft — when a user submits a transaction that matches an active workflow, the transaction is saved as a draft (not yet posted) and enters the approval pipeline. Drafts are identified by a reference such as DRF-0001.
  • Status — every draft has a status: Pending (awaiting action), Approved (all levels satisfied), Rejected (declined by an approver), Cancelled (withdrawn by submitter), Expired (timed out), or Delegated (forwarded to another user).
  • Action — each step taken on a draft (submit, approve, reject, escalate, delegate, cancel, edit, resubmit) is recorded as an action with timestamp, user, level, and comments.

Supported Transaction Types

The approval system can be configured for any of the following 23 transaction types:

CategoryTransaction Types
General LedgerJournal Entry, Bank Payment, Bank Deposit
SalesSales Order, Sales Quote, Sales Invoice, Customer Credit Note, Customer Payment, Customer Delivery
PurchasingPurchase Order, Supplier Invoice, Supplier Credit Note, Supplier Payment, Goods Received
InventoryLocation Transfer, Inventory Adjustment
ManufacturingWork Order, Material Issue, Material Receive
HRMPayslip, Leave Request, Overtime Request, Payroll Period

How It Works

  1. A user creates a transaction (e.g., a purchase order for $5,000).
  2. The system checks whether an active workflow is assigned to that transaction type.
  3. If a workflow exists, the transaction is saved as a Draft with status Pending rather than being posted immediately.
  4. The system evaluates auto-approve thresholds at each level — if the draft amount is at or below a level's threshold and any JSON conditions are met, that level is automatically approved without human intervention.
  5. For levels that are not auto-approved, all users holding the required security role at that level are notified (in-app notification and optional email).
  6. An approver reviews the draft and chooses to Approve, Reject, or Delegate the item. Comments can be attached to any action.
  7. If the required minimum number of approvers at the current level approve, the draft advances to the next level.
  8. Once all levels in the workflow are satisfied, the draft status becomes Approved and the underlying transaction is posted to the ledger.
  9. If an approver rejects the draft at any level, the draft status becomes Rejected and the original submitter is notified. The submitter may edit and resubmit.
  10. If the submitter cancels the draft, the status becomes Cancelled.
  11. If a draft remains pending beyond the escalation threshold configured for its current level, the system can automatically escalate it to a higher level or send a reminder.

Components

  • Approval Workflow Rules — Create and maintain workflows and their approval levels, including roles, thresholds, conditions, and escalation settings.
  • Approval Dashboard — Central hub for approvers and submitters. View pending items, take action (approve/reject/delegate/cancel), and see recent activity.
  • View Approval Draft — Detailed popup view of a single draft showing transaction data, line items, approval progress, escalation status, delegation history, and action timeline.
  • Approval Delegations — Temporarily assign your approval authority to another user during absence. Supports date ranges, per-type scoping, and circular-delegation prevention.
  • Approval History Inquiry — Searchable audit report of all drafts across the system with filters by type, status, date, submitter, and reference.
  • Escalation & Notification Processing — Run or schedule the escalation engine and email notification sender. View current escalation risk for all pending drafts.

Database Tables

TablePurpose
approval_workflowsWorkflow definitions (name, transaction type, flags)
approval_levelsPer-level configuration (role, min approvers, threshold, escalation)
approval_draftsDraft records with status, amount, current level, reference
approval_actionsAudit log of every action (submit, approve, reject, escalate, etc.)
approval_delegationsDelegation records (from user, to user, date range, type)
approval_notificationsNotification queue (in-app and email, read/sent tracking)

Security Permissions

PermissionGrants Access To
SA_APPROVALDASHBOARDApproval Dashboard, View Approval Draft
SA_APPROVALINQUIRYApproval History Inquiry
SA_APPROVALRULESWorkflow Rules, Delegations, Escalation & Notification Processing

Tips

  • A workflow can only be assigned to one transaction type — you cannot reuse the same workflow across different types.
  • Set Require Comments on Reject in the workflow to ensure approvers document their reasoning when declining items.
  • Use Auto-Approve Threshold to skip human review for low-value transactions while still requiring sign-off for high-value ones.
  • Use JSON Conditions on levels for additional routing logic (e.g., restrict a level to a specific location or department).
  • Configure the escalation cron job to run every 30 minutes so that overdue items are escalated promptly.