docs(launch): Financial report SHIPPED (Phase 4) — payments-model reframe
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -50,8 +50,13 @@ Phases (status snapshot 2026-05-27):
|
||||
PDF; server-side PDF endpoint for branded output. _See gaps
|
||||
below._
|
||||
3. ❌ Marketing report — NOT BUILT. Pending Init 1b cutover.
|
||||
4. ❌ Financial report — NOT BUILT. Pending Init 1c decision on
|
||||
whether to enable the invoices module (currently default OFF).
|
||||
4. ✅ Financial report — **SHIPPED in b690fb8d.** Built on the canonical
|
||||
payments + expenses tables (invoices module stays OFF); the
|
||||
invoice-centric spec was reframed onto the payments model
|
||||
("outstanding AR" → expected-deposit shortfall; "AR aging" →
|
||||
outstanding deposits by deal age). 7 KPIs, 6 charts, 4 tables, port-
|
||||
currency normalised, 1y default range, templates + export. Marketing
|
||||
is the only remaining unbuilt report.
|
||||
5. ⚠️ Custom (ad-hoc) report builder — partial ship.
|
||||
6. ✅ Scheduled reports with optional emailing — BullMQ poll +
|
||||
render path live; recipients optional; PDF-only output.
|
||||
@@ -133,25 +138,31 @@ Not built. Spec at `docs/reports-content-spec.md` § Report 03 calls for:
|
||||
data flowing from the new intake endpoint (Init 1b step 1 — pending
|
||||
website env flip).
|
||||
|
||||
#### Phase 4 — Financial report (LAUNCH-BLOCK if Financial is in beta scope)
|
||||
#### Phase 4 — Financial report ✅ SHIPPED in b690fb8d
|
||||
|
||||
Not built. Spec at `docs/reports-content-spec.md` § Report 02 calls for:
|
||||
**Decision taken (2026-06-02):** ship on the canonical `payments` +
|
||||
`expenses` tables; invoices module stays OFF. The invoice-centric spec
|
||||
(§ Report 02) was reframed onto the payments model so the report is
|
||||
populated rather than 90% empty:
|
||||
|
||||
- 7 KPIs (revenue collected, pipeline value, deposits, outstanding AR,
|
||||
overdue AR, expenses, net contribution)
|
||||
- 6 charts (revenue by month stacked, quarterly/yearly toggle, EOI →
|
||||
Deposit → Contract funnel, AR aging, cash flow line, expense
|
||||
breakdown donut)
|
||||
- 4 tables (outstanding invoices, recent payments, refund/write-off
|
||||
log, expense ledger)
|
||||
- Filters: invoice kind, payment status, currency, billing entity type
|
||||
- 7 KPIs: revenue collected (net of refunds), deposits, balance,
|
||||
pipeline (expected deposits), outstanding deposits (expected−collected
|
||||
on open deals = the AR analogue), expenses, net contribution.
|
||||
- 6 charts: revenue by month (deposit/balance, with month/quarter/year
|
||||
toggle), collection funnel (EOI → deposit → contract → won),
|
||||
outstanding deposits by deal age (AR-aging analogue, no invoice due
|
||||
dates exist), cash flow (inflow vs outflow), expense breakdown donut.
|
||||
- 4 tables: outstanding deposits, recent payments, refund/write-off log,
|
||||
expense ledger.
|
||||
- All money normalised to port currency; 1y default range; templates +
|
||||
CSV/XLSX/PDF export.
|
||||
|
||||
**Blocker:** depends on the invoices module being in use. Per Init 1c
|
||||
spike, the module is default OFF and the canonical money path is the
|
||||
per-interest Payments tab. **Decision needed**: ship Financial with
|
||||
data from `payments` only (no invoice surface) OR flip invoices module
|
||||
on for PN + train rep + ship Financial. Today the report would be 90%
|
||||
empty.
|
||||
**Follow-up (deferred, not launch-blocking):** if the user later flips
|
||||
the invoices module ON, add invoice-sourced AR (due dates → true aging)
|
||||
|
||||
- the invoice/payment-status/billing-entity filters from the original
|
||||
spec. Browser-verified against live data (0 payment rows in dev → revenue
|
||||
$0 correct; 165 expenses populate the expense surfaces).
|
||||
|
||||
#### Phase 5 — Custom builder gaps
|
||||
|
||||
|
||||
Reference in New Issue
Block a user