- Shipped
- November 11, 2026 at 10:47 AM UTC
- Author
- Kamo
- Commit
- af6d85d
The work order's Invoice tab becomes RecordInvoice (app/components/invoices), generic over its record: the record (a work order or a retail order), whether it can be invoiced, the wording that names it, the right that changes it and how payments arrive come in as props. WorkOrderInvoice and the new OrderInvoice are thin adapters; recordInvoiceApi is the one client (serviceJobInvoiceApi kept for its callers). Void Invoice (the record's manage right): a confirmation that says what happens (the number is kept, the customer's link stops, a work order goes back to Completed for a corrected invoice; an order is unchanged) and asks why. An invoice with payments recorded can't be voided; the dialog says so and why. Voided invoices are listed under Voided Invoices with the reason, who voided it (photo chip) and when, and their PDFs still open. Email Receipt: when the invoice is Paid, Send to Customer's button becomes Email Receipt, with the receipt's own preview (thank you, amount received, paid date, nothing owed); Sent and Shared marks receipt sends. Retail order page: an Invoice tab (?tab=invoice; the account's Invoices list now opens it), Create Invoice / View Invoice quick actions, the invoice in the summary row, the order's items, shipping, tax and discount on the invoice. Payments stay the order's: no Record Payment; Take Payment marks the invoice paid (shown as Paid on the Order) and the tab offers Take Payment on an unpaid invoice. Help: How to Manage a Work Order gains Void an invoice and Email a receipt; How to Manage a Retail Order gains Create the invoice, How the invoice gets paid, Send the invoice, Email a receipt and Void an invoice.
