Budget list
The clinic's operational queue of budgets. Search by patient or number, filter by workflow status, payment state, validity, and assigned professional, sort, and open the detail to work each budget.
At a glance
- Filters from two sources. Status, professional, validity, and date range go to the native
GET /budgetsendpoint. The Payment filter (unpaid / partial / paid) is contributed by the payments module: the page calls/payments/filters/budgets-by-statusand intersects the IDs. - Collected / Outstanding column — filled by
paymentsthrough thebudget.list.row.paymentsslot. Uninstall payments and the column disappears without breaking anything. - Validity — Valid, Expiring soon (next 7 days), Expired. Picking Expiring soon sets
valid_until_after=todayandvalid_until_before=today+7. - Search — the search box maps to
?search=and matches budget number and patient. Filters live in the URL: a shared link is a shared filter. - Versioning. Every renegotiation creates a new version without deleting the previous one. The list shows only the current version by default.
Find a budget
- Type the number or patient into the search bar.
- Combine with the status or payment filters to narrow down.
- Click a row to open the detail.
Create a budget
Requires
budget.write.
- Click New budget. It takes you to
/budgets/new. - Select the patient and add catalog items, discounts, and VAT. See New budget.
Row actions
Some actions need extra permissions — see the permissions table.
- Download PDF — for the current budget state.
- Duplicate — creates a new draft with the same items.
- Cancel / Delete — admin only.
Permissions
| What you see / can do | Permission |
|---|---|
| Browse, search, and download PDFs | budget.read |
| Create, edit, send, duplicate | budget.write |
| Delete | budget.admin |
| Renegotiate (create a new version) | budget.renegotiate |
| Accept in-clinic (tablet signature) | budget.accept_in_clinic |
Troubleshooting
- No Payment filter shows up. The
paymentsmodule is not installed; the slot stays empty. - "Results truncated" warning. The Payment filter intersects against a capped payments response — narrow by date or professional to reduce the universe.
- A freshly renegotiated budget is missing. The list shows the current version: the new version is visible, the previous one is available from the version history inside the detail.