Uktupus Docs
Core

Approvals

Workflow studio — no-code multi-step approvals by document type, assignees, conditions, due times, escalation, and the My Approvals inbox.

Which documents can require approval

Document keyValue used for step thresholdsOn approve
purchase_requestTotal amountStatus → approved; can be converted to RFQ/PO
purchase_orderTotal amountStatus → confirmed; budget commitment reserved
purchase_invoiceTotal amountStatus → approved; can be posted
sales_orderTotal amountStatus → confirmed
quotationTotal amountStatus → sent/accepted path
leave_requestDaysBalance deducted, status → approved
expense_reportTotal amountStatus → approved
travel_requestEstimated amountStatus → approved
cash_advanceAmountStatus → approved
job_requisitionBudget maxStatus → approved
job_offerBase salaryStatus → approved
timesheetTotal hoursStatus → approved
promotionPlanned spendPromotion activated
accounting_period_unlock—Locked period reopened
project_budgetPlanned costBudget status → approved / locked

Workflow studio (/approval-workflows)

Build a no-code multi-step path per document type:

  1. Toggle Require approval for the document type (off = submit auto-finalizes).
  2. Create a workflow (one active per document type).
  3. Optional start conditions — the workflow only starts when all match (e.g. value ≥ 1000, or a partner/warehouse attribute).
  4. Add steps on the vertical canvas (reorder with arrows). Each step can have:
    • Assignee — role, a specific user, or the submitter’s line manager
    • Min / max on the document value (amount, days, hours…)
    • Extra conditions (attribute + operator + value)
    • Due in hours and escalate to role if overdue
  5. Toggle active.

When a document is submitted, matching steps are frozen into a snapshot on the approval request. Editing the studio afterward does not change in-flight requests.

My Approvals (/approvals)

Your inbox of requests waiting for your role, your user assignment, or an escalated role. Approve or reject inline (with a comment), or open the document. Each step is recorded with the approver and timestamp. Overdue steps with an escalate role are reassigned automatically (every 15 minutes).

Submit behaviour

When a user submits a document:

  • If approval is not required for its type → the document is approved immediately.
  • If required but no active workflow → the document stays submitted for a legacy *.approve permission.
  • If a workflow exists → an approval request is created with the matching steps (and snapshot); the document shows "Waiting for approval — step 1 of N".
  • When every step is approved → the registry's on_approved hook runs and the status advances.
  • A rejection sets the document to rejected; the owner can edit and re-submit as a new request.
  • If required + workflow but no steps match (thresholds/conditions) → auto-finalize as approved.
  • Credit management blocks sales orders over the customer's credit limit until released.
  • Period lock blocks posting into locked periods; unlocking itself is an approval (accounting_period_unlock).
  • Supplier onboarding approves bank-detail changes submitted through the supplier portal.