Appearance
Universal Invoice Builder — implementation status
Last updated: 2026-09-29. v1 scope: standard invoices in custom mode; quotes/recurring/import stay inventory-style.
Done
| Area | Notes |
|---|---|
| Schema & migration | invoice_mode, layout_config, InvoiceBuilderTemplate |
| API | Create/update validation, builder templates, list includes invoice_mode |
| Admin create/edit | Inventory / Custom toggle, builder panel, templates |
| Totals | Custom subtotal from currency column + shipping − advance |
| Detail & duplicate | Preview table, duplicate with full fetch |
Server template + invoicePdfFetch.js; client fallback in lazy InvoiceDetailClientPdf.jsx (~880 lines split from detail page) | |
| Email, portal, pay | Custom HTML/tables via invoiceCustomerSummary / pay page |
| Export / import / ledger | Mode + line summary; import notice |
| List UX | Folder hints, Custom layouts chip, customer ledger badge + chip |
| Tests | npm run test:invoice-builder (9 tests) |
| QA matrix | docs/plans/universal-invoice-builder-qa.md |
| Handoff | docs/plans/universal-invoice-builder-v1-handoff.md |
| Hindi guide | docs/hi/guide/invoice.md (builder + list UX + PDF) |
Optional / follow-up
| Item | Priority |
|---|---|
| Playwright E2E depth (publish custom invoice end-to-end) | Low — INVOICE_BUILDER_DEEP=1 smoke + manual Flow A in e2e doc |
v1 complete
See universal-invoice-builder-v1-handoff.md for sign-off steps. Further “next” work is new scope (quotes/recurring custom, full Playwright publish flow). | Custom mode on quotes/recurring | Out of v1 |
Verify locally
- Run migration + restart Backend.
cd Backend && npm run test:invoice-builder- Walk
docs/plans/universal-invoice-builder-qa.md - Optional:
npm run invoice-builder:smoke --prefix qa-tests