Clear the approval queue
Approve, return, or reject a quote in the maker-checker gate before it can be sent.
If your tenant's pricing policy requires quote approval, a built quote does not become sendable on its own — it sits in the pending-approval queue until an approver signs off, sends it back, or kills it. This is a maker-checker control: the person who builds a quote is never the person who can approve it.
1. Find quotes waiting on you
Open Quotes and use the Pending approval filter chip in the toolbar.
This shows every quote in your tenant with approval_status = pending — both
the rep who built a quote and an approver (a flight_ops_manager, for
example) can see this queue, so an approver can triage it without being able
to build quotes themselves.
A quote lands in this queue for one of two reasons:
- A blanket maker-checker hold — your tenant's policy requires every quote to be approved before it can be sent.
- A below-floor breach — the quote's price fell under the chosen tail's
configured hourly floor. These rows carry the floor
$/hr, the effective$/hractually offered, and the dollar/percent shortfall, so you can see exactly how far under floor the quote priced before deciding.
2. Approve, return, or reject
Open a pending quote and choose one of three actions:
- Approve — flips the quote to
approved. It can now be sent. Approving is idempotent: approving an already-approved quote just echoes who approved it and when. - Return — sends the quote back to the person who built it with a required note explaining what to fix. It leaves the queue but is not killed; the rep can rebuild and resubmit it.
- Reject — kills the quote. Rejection is terminal — a rejected quote can never be approved later; the rep has to build a new one.
Return and reject both require a note — there is no silent decision. The note is shown back to the quote's builder.
3. Who can approve
Only the roles your tenant's pricing policy names as approvers can act on
this queue — by default operator_admin and flight_ops_manager. An
operator admin can widen that list (from a fixed vocabulary that also
includes finance_manager, dispatcher, sales_rep, and owner) in
Pricing Policy.
The person who built the quote can never approve, return, or reject their own quote — the endpoint checks the quote's owner against the acting user and refuses a self-decision, regardless of role.
4. What gets recorded
Every decision writes an audit trail on the quote itself: who acted
(approved_by), when (approved_at), which of the tenant's configured
approver roles authorized it, and — for a return or reject — the required
note. The maker is notified of the decision in the same transaction it's
recorded in.
A below-floor approval records who signed off on pricing under the
configured floor — it is not a compliance verdict. Compliance gates are
evaluated separately and independently report PENDING_VERIFICATION until
authoritative data is verified.