Files
cross-financial-management/PHASE_6_REPORTING_TEST_PLAN.md
Joshua OosthuizenandClaude Sonnet 5 eb42eb8fc8 Add Reporting Suite: Trial Balance, P&L, Balance Sheet, Aged AR/AP
Each report is served off the existing posted-ledger data (no schema
changes) and respects the existing Main/branch scope selector, same as
every other module. Balance Sheet computes a live "Current Year
Earnings" equity line from unclosed P&L, since there's no year-end
close step yet.

Backed by a new integration test suite that verifies the trial balance
and balance sheet stay in balance under real posted AR/AP activity,
that P&L correctly scopes income to its period, and that aging buckets
customers/suppliers by days overdue.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JWqiUSojMLUoN7mrJqdEbN
2026-09-04 10:52:08 +02:00

2.7 KiB
Raw Permalink Blame History

Phase 6 — Reporting Suite: Manual Test Checklist

Five reports are now live under Reports Centre, each reachable directly from its card (the "Coming soon" reports remain placeholders). Every report respects the branch switcher in the top bar — Main gives a consolidated view, a single branch scopes to just that branch's posted activity.

1. Trial Balance (/reports/trial-balance)

  • Pick an "As at" date after some posted activity — accounts with posted movement appear, sorted by account code
  • The "Balanced" / "Out of balance" chip in the header reads Balanced (it always should — this is a structural invariant of double-entry posting, not something that can drift)
  • Total Debit column sum equals Total Credit column sum in the footer row
  • Switching the branch selector to a single branch narrows the accounts/amounts shown to that branch's postings only

2. Profit & Loss Statement (/reports/profit-and-loss)

  • Defaults to year-to-date on load
  • Narrowing the date range changes which invoices/postings are included (an invoice dated outside the range should disappear from its account's line)
  • Net Profit = Total Income − Total Expense, shown in green when positive / red when negative
  • Income/Expense accounts with zero movement in the period are omitted, not shown as zero

3. Balance Sheet (/reports/balance-sheet)

  • Assets, Liabilities, and Equity sections all populate
  • "Current Year Earnings" appears as a computed equity line (no account code) equal to this fiscal year's Profit & Loss net profit up to the As-at date — this app has no year-end close step, so this is how the balance sheet stays real-time-balanced
  • Header chip reads Balanced (Total Assets = Total Liabilities + Total Equity)

4. Aged Receivables (/reports/aged-receivables)

  • Only customers with an outstanding (unpaid/partially paid) posted invoice appear
  • An overdue invoice lands in the correct bucket (Current / 1–30 / 31–60 / 61–90 / 90+) based on days between its due date and the As-at date
  • Clicking a customer name navigates to that customer's detail page
  • Footer row sums match the column totals

5. Aged Payables (/reports/aged-payables)

  • Same checks as Aged Receivables, mirrored for suppliers — clicking a supplier name navigates to the supplier's detail page

Regression

  • General Ledger card in Reports Centre still links to the existing Journal Entries page (its "By Account" tab is the account drill-down report)
  • Reports Centre's still-unbuilt cards (Customer Statement, Payment Run, Budget vs Actual, Branch Performance) remain visibly disabled ("Coming soon")