Staff invoice workspace
Authorized staff can open Invoices to filter the branch-scoped list by invoice, customer, vehicle, or status. Each result keeps the plate, customer, vehicle, invoice number, status, total, balance, and latest payment-request state, when a request exists, together. Open the invoice to review line items, confirmed payment history, and its invoice PDF.
A draft must be issued before recording or requesting payment. If you cannot issue it, ask a staff member who has that permission. Paid invoices need no further payment; void invoices cannot accept another payment. When an online request is already pending or processing, review its status before preparing another. Paid and void invoices show one completion message with PDF and payment history still available. Other unavailable actions explain the invoice condition or the permission you need.
Actions follow the signed-in role’s exact permissions and the current server state. Tenant Admin can issue or void where permitted; Branch Manager, Service Advisor, and Cashier controls remain narrower according to their configured capabilities. A visible, hidden, or unavailable control is only guidance: the backend rechecks tenant, branch, invoice, amount, currency, transition, readiness, and idempotency rules on every request.
The staff workspace never displays or submits raw provider fields. Use Prepare payment request for the current full balance, then use the protected payment workflow for customer handoff and status. Do not copy provider order references, callback data, or private PDF links into customer messages or support notes.
New workshop invoices require the exact current approved Estimate ID and version. Historical Estimate versions and draft invoices remain readable, but Motornauts will not create from an older approval or issue a draft after its source Estimate is superseded. Void the stale draft and create a new one from the current approved version. Retrying the exact same invoice request is safe; changing its Estimate tuple or rejected-line overrides requires a new idempotency key.
Only one non-void workshop invoice may exist for the same Repair Order, Estimate, and Estimate version. Concurrent duplicate creation returns the existing invoice or a safe conflict; it never creates two active billing records. Void the incorrect invoice through the authorized workflow before creating a replacement from the same approved source.
Tenant Admins configure PayHere under Settings > Online payments. The page separates the
Payment requests lifecycle capability from PayHere online payments readiness. PayHere checkout
stays blocked until credentials, allowed PayHere domain/app setup, public notify_url, callback
readiness, LKR amount/currency checks, replay handling, reconciliation behavior, and the
merchant/account/domain model decision are ready.
The Ignition workspace names the two provider configurations Test checkout and Live checkout
without exposing stored environment codes or configuration hashes. Credential inputs are write-only:
both the merchant ID and secret are cleared after every submission and are never repopulated from
stored settings or an error. Changing credentials creates new configuration state and invalidates the
previous readiness approval. Review the safe checklist, enter a sanitized validation reference, check
every required statement, and type APPROVE only after the current configuration has actually been
verified. Refresh if the page reports stale settings. Do not use the settings page to run a live
payment or treat a browser return as payment proof.