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

54 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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")