* fix: prevent silent data truncation in report generators
Supabase PostgREST silently truncates queries at 1000 rows. Several
report generators used bare .select() without fetchAllRows(), causing
incomplete financial data — a BFL compliance violation.
Wrapped 10 queries across 7 files with fetchAllRows():
- monthly-breakdown: journal_entry_lines (easily >1000/period)
- ar-ledger: unpaid invoices
- supplier-ledger: unpaid supplier invoices
- salary-journal: salary_run_employees (+ optimized with !inner join)
- vacation-liability: employees + salary_run_employees
- full-archive-export: document_attachments + journal_entry IDs
- ingest.ts: supplier invoices for auto-matching
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: address Greptile review — try/catch and client-side safety checks
- Wrap full-archive-export document fetch in try/catch to match the
VAT section pattern — a failed document query should not prevent
the rest of the archive from being generated.
- Restore client-side year/status safety checks in salary-journal and
vacation-liability as defense-in-depth against PostgREST !inner
filter regressions, per BFL lönejournal and BFNAR 2016:10 compliance.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>