Approvals & Workflow
This page is generated from the in-app guide content — edit
featureToggleGuidesand runpnpm gen:feature-toggle-docs.
Allow Self-Approval
The person who created or submitted a record may also approve it (workflow steps and direct approve buttons) and may record payment of their own expense. Each self-approval is logged. Budget-override decisions stay blocked. Off by default.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
approval.allow_self_approval | Off | /approvals/settings | — |
How it works
Normally the person who created or submitted a record cannot approve it or pay their own expense. Turning this on lifts that separation for workflow steps and for the direct approve buttons that check it.
When ON
The creator may approve their own requisition, purchase order, sales order, quotation (sending it from Pending approval), service order, service project, stock request, stock adjustment, goods issue, asset work order, field-service material and tool requisitions, quality inspection, service timesheet, bill, commission run, knowledge article, job requisition, leave request, probation review, development plan, shift swap, course enrollment, payroll penalty, expense, budget, internal charge, amendments, returns, asset transfer, ECO, legal review, selling price, deal approval and workflow steps, and may record payment of their own expense or disbursement. Each self-approval writes a log line.
When OFF
(Default) Those approvals and payments are refused for the creator/submitter; the buttons are hidden on screens that use the shared gate.
Screens, documents and reports affected
Approvals inbox, workflow approver resolution and delegation, direct approve buttons across Procurement, Finance, Sales, Inventory, Asset Management, Manufacturing, Contracts, CRM.
Caveats
Some decisions stay two-person regardless of this setting: budget-override decisions (requisition, PO, bill, expense, project), your own overtime, payroll adjustments, HR decisions, completion evaluations (the evaluated employee and the evaluator) and your own time-tracking timesheet. Projects and tasks have their own self-approval setting. Confirming your own draft sales order that needs no approval, or submitting a vendor return or debit note when no approval chain or workflow is configured, is not an approval and is always allowed. Rejecting your own record is always allowed (it withdraws the request), except stock adjustments. Some screens still show the Approve button to the creator; the server refuses it while off.
Approval Delegation
Workflow and the procurement approval chain reroute steps to the delegate named in an active delegation rule. When off, rules are kept but ignored.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
approval.delegation | On | /approvals/settings | — |
How it works
Delegation rules (Workflow → Delegation) let an approver hand their approvals to another user for a date range. This switch decides whether the workflow engine and the procurement approval chain honour those rules when assigning steps.
When ON
(Default) Steps assigned to a delegator inside an active rule window go to the delegate; the delegate sees them in the inbox and can decide. Rules generated automatically (e.g. leave handover) are created.
When OFF
New steps are no longer rerouted — they go to the original approver. Open approvals already handed to a delegate by a rule are returned to the original approver shortly after you switch. Automatically generated rules are skipped. Rules created by hand are still saved but have no effect; the delegation page shows a notice.
Screens, documents and reports affected
Workflow delegation page, approvals inbox, workflow engine step assignment, procurement approval chain, leave handover.
Caveats
Keeping the page open while off lets you prepare rules before turning it on; turning it back on hands open approvals covered by an active rule to the delegate. Hand-delegating a single open approval (Delegate on an instance) is not a rule and still works while off.
PO Approval Threshold
Purchase orders whose total (in company currency) reaches this amount need approval, even when “Require PO approval” is off. Blank = no amount rule — except POs converted from a requisition while “approval on conversion” is on, where blank means every PO. 0 = every PO.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
approval.po_amount_threshold | — | /procurement/settings | — |
How it works
Purchase orders whose total, converted to company currency at the order’s exchange rate, is at or above this amount go to Pending approval when created, even if “Require PO approval” is off. Blank = no amount rule; 0 = every PO.
When ON
Creating a PO (form, AI assistant, field-service requisition) at or above the amount saves it as Pending approval. Editing the lines of a draft PO re-checks and moves it to Pending approval if it now reaches the amount. For POs converted from a requisition, the amount only narrows “Approval on conversion”: with that switch on, only converted POs at or above the amount need approval.
When OFF
(Blank) POs follow “Require PO approval” only. Converted POs follow “Approval on conversion” only — blank there means every converted PO.
Screens, documents and reports affected
Purchase order create and edit, requisition → PO conversion, bill from PO, Procurement settings, Others configuration.
Caveats
Changing the amount does not re-check POs already pending — they keep their status. Some paths create drafts without checking the amount (clone, blanket PO and release, PO from sales order, PO from an accepted RFQ quote, PO from stock suggestions, open-document import), but a draft at or above the amount cannot be billed until it is approved, and only approved POs can be sent. The amount is compared in company currency, inclusive (≥).
Skip approval when no approver exists
Document types allowed to skip a workflow step that resolves to nobody. Applies only when “Fallback to company admin” is off or there is no admin. Empty means nothing is ever skipped.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
approval.unstaffed_skip_subjects | — | /settings/others-configuration | — |
How it works
Lists the document types whose workflow may skip an approval step that resolves to nobody (no one holds the role, no manager). Skipped steps are recorded as Skipped in the step log and audit log, then the workflow moves to the next step.
When ON
(Types selected) For those types only, a step with no approver is skipped instead of leaving the document stuck. A manager step skipped because the submitter has no manager follows the separate “skip direct manager” policy.
When OFF
(Empty, default) No step is ever skipped: a step with no approver stays waiting and an unstaffed-approver entry is written to the audit log.
Screens, documents and reports affected
Workflow engine (submit and re-dispatch), procurement approval chains (when a chain starts), Approvals settings, Others configuration → Advanced (read-only count).
Caveats
“Fallback to company admin” is checked first and is on by default: a step with no role holder goes to company admins, so this list only matters when that fallback is off or the company has no admin. A skipped step’s actions do not run and nobody is notified of the skip. The procurement approval chain follows the same order (admins first, then this list); if every step of a chain would be skipped, or a step can be neither handed to admins nor skipped, the chain does not start and the document uses direct approval. Documents already stuck are not re-checked when you change the list.
SO Approval Threshold
Sales orders whose total (in company currency) reaches this amount need approval, even when “Require SO approval” is off. Blank = no amount rule; 0 = every order.
| Code | Default | Switch at | Turn on first |
|---|---|---|---|
approval.so_amount_threshold | — | /sales/settings | — |
How it works
Sales orders whose total, converted to company currency at the order’s exchange rate, is at or above this amount go to Pending approval when created, even if “Require SO approval” is off. Blank = no amount rule; 0 = every order. The same amount applies to Service Management service orders.
When ON
Creating a sales order (form, mobile, AI assistant) or converting a quotation at or above the amount saves it as Pending approval and starts the approval workflow if one is configured. Confirming a draft re-checks its current total: if it now reaches the amount it is sent for approval instead of confirmed. Service orders are checked on create, on conversion and again on confirm.
When OFF
(Blank) Orders follow “Require SO approval” and the discount price-approval rule only.
Screens, documents and reports affected
Sales order create, quotation → sales order, service orders (create, convert, confirm), Sales settings, Others configuration.
Caveats
Orders already pending are not re-checked when the amount changes. Backorders split from a confirmed order are created confirmed. The amount is compared in company currency, inclusive (≥).