Skip to content

Module 15: Approvals Inbox & Workflow Engine

The Approvals module (/approvals) is a centralized workflow engine designed to enforce managerial control over sensitive and high-value financial transactions before they impact General Ledger accounts or inventory balances.


🎯 Core Capabilities

1. Interception Engine

  • Intercepts targeted operational documents based on administrative rules:
  • Purchase Orders (PurchaseOrder): Intercepts POs exceeding financial threshold limits (e.g., PO Amount > 10,000 AED).
  • Supplier Bills (VendorBill): Intercepts bills exceeding threshold limits.
  • Expense Claims (Expense): Intercepts employee claims above approval thresholds.
  • Manual Journal Entries (JournalEntry): Intercepts high-value manual JVs.

2. Contextual Approval Inbox (/approvals)

  • Displays all pending approval requests assigned to the logged-in user's role (Manager or Admin).
  • Contextual Preview Modal:
  • Direct in-modal view of line items, quantities, unit prices, supplier/customer details, and total document values.
  • Highlights the exact approval rule threshold that triggered interception.

3. Approval Lifecycle & States

  • PENDING_APPROVAL: Document is locked against modifications.
  • APPROVED: Document is released to its operational status (Confirmed / Posted).
  • REJECTED: Document is returned to submitter. Requires a mandatory rejection note explaining the decision.

4. Non-Circumvention Rule

  • The workflow engine enforces strict separation of duties: A submitter cannot approve their own high-value documents, regardless of their role.

💡 Step-by-Step Instructions

Approving a Pending Purchase Order

  1. Navigate to Approvals Inbox (/approvals).
  2. Click on a pending item (e.g., PO-10024 - ABC Supplies - 25,000 AED).
  3. Inspect line items and total values in the preview modal.
  4. Click Approve. The document status updates to Confirmed and proceeds to warehouse receiving.
  5. If rejecting, click Reject, type reason (e.g. "Price exceeds budget allowance"), and click Confirm Rejection.