Payments

Payments (/admin/payments) is not a create screen. Every row is an existing invoice. You record what was paid on that period, optionally mark the invoice paid in full, and keep notes. Permissions: FunctionId PAYMENT (33). View opens the list and a read-only wizard. Edit shows Save, Mark paid, item notes, retainage reimbursement, and attachments. Open/Closed of the invoice is the Status toggle on the list, not a banner inside the wizard. Add is required to create invoice-header notes. Delete removes notes and attachments.

Screen layout

Payments list

Figure: FoodHub list — title Payments, subtitle Manage Payments, ? help; data card with Search payments…, Filter, Closed, Open, Export; columns Number, Company, Job No, Project, From, To, Amount, Payment Amount, Notes, Created At, Status, Actions.

RegionWhat you see
Page toolbarTitle Payments, subtitle Manage Payments, and the ? icon (this article). There is no New.
Data cardSearch, Filter, Closed / Open, Export of the current page, sortable columns, Amount and Payment Amount as US money, Status Closed/Open, pagination (default 30).
Empty gateFilter-search icon, then Apply a filter to view payments until Closed, Open, Filter Apply, or Search runs.
Payment wizardSurface B on the list URL (?invoice_id= / ?view=) — pills Payments, Notes, Attachments.

Default sort: From descending. Date filter uses the invoice period (start ≥ From and end ≤ To), not Created At.

List columns

ColumnMeaning
NumberInvoice number. Sticky on desktop.
CompanyCompany of the project.
Job NoProject number. Links to the project wizard when you have Project View.
ProjectProject description/name. Same project link.
From / ToInvoice period (m/d/Y).
AmountFinal Amount This Period. US format $1,234.00.
Payment AmountSum of Paid Amt on the invoice lines.
NotesTruncated invoice notes.
Created AtCreated date (m/d/Y).
StatusClosed if paid, Open otherwise. Sticky next to Actions.
ActionsOpen invoices with Edit: ⋮ (Edit, Mark paid). Paid invoices (or View only): circular View icon — a single action is never a ⋮.

Filters

Closed and Open are toggles (paid = 1 or paid = 0). Click once to turn the filter on (filled green / red); click the same button again to turn it off. Only one can be on at a time. If you turn both off and nothing else is applied (Search / Filter), the empty gate returns. The Filter popover has Company, Project (after Company), Status, and a date range.

Invoices ⋮ Payments opens this list with ?invoice_id= so the wizard for that invoice opens immediately.

Wizard

Paid invoices open read-only for quantities (same as Symfony). Change Open/Closed on the list Status column; the wizard title already shows Job No, invoice number, and period.

PillWhat you do
PaymentsPaid Qty per line. Bond is derived (Σ Paid Amt bonded / Σ Contract Amt bonded) and is not typed. Mark paid sets every line paid and closes the invoice — it cannot be undone from the app. Retainage reimbursement is the $ on the Retainage KPI. Pay Amount (USD) records a dollar payment without changing item quantities (retainage/bond deducted, optional close). USD payment to the project allocates credit to the oldest open invoices.
NotesInvoice-header notes (invoice_notes). Search, Filter (From / To), checkboxes to bulk-delete, and New opens New Note (date defaults to today, rich text). Edit and Delete are on the row menu.
AttachmentsSame invoice files as the Invoices wizard (uploads/invoice/).

Paid Qty and Unpaid Qty use 2 decimal places (US 1,234.00). Bond Invoiced Qty / Bond Qty use 5 decimals. Closed items show the formatted value; open items keep the input.

The note icon on Unpaid Qty opens Items Note: Override Unpaid Qty (optional), rich text, Add note, and a table of Notes / Date / Override Unpaid Qty / Actions (edit and delete). The icon turns red when the item already has notes. An override updates Unpaid Qty without changing Paid Qty. A plus icon appears when that item has unpaid-qty history.

Plus icons on the item name, Contract Qty, and Price open Change Order / quantity / price history, same as Invoices.

Unpaid qty on the grid is Invoice Qty − Paid Qty, unless a later item note overrides it. Bond uses the invoice bon_quantity.