* fix(mcp): paginate trial-balance and VAT aggregations (1000-row truncation)
The gnubok_get_trial_balance tool and computeVatReport each ran an unbounded
journal_entry_lines aggregation. PostgREST caps an unpaginated .select() at
1000 rows, so any period with >1000 entry lines silently truncated: wrong
per-account sums and a false "not balanced" trial balance, and an
under-reported momsdeklaration for yearly or busy quarterly VAT periods.
- get_trial_balance now delegates to the canonical generateTrialBalance
(lib/reports), which paginates via fetchAllRows and rolls opening balances
forward, also fixing a latent bug where the tool ignored IB.
- computeVatReport now paginates its line fetch via fetchAllRows.
The library fixed this class of bug in #79; these two MCP paths kept their
own copies that were never updated.
Signed-off-by: Jonas Hagberg <jonas@lindan.se>
* fix(mcp): non-null assert periodId in generateTrialBalance call
Fixes the core-only TS build error (string | undefined not assignable to
string). periodId is guaranteed defined by the !period guard above; mirrors
the existing periodId! call later in the file.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(mcp): support .range() in computeVatReport mock for paginated query
computeVatReport now fetches journal_entry_lines via fetchAllRows (.range),
but the hand-rolled mock terminated at .lte(). Move the terminal to .range()
so the 8 VAT-aggregation tests exercise the paginated path. Test-only.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Signed-off-by: Jonas Hagberg <jonas@lindan.se>
Co-authored-by: Jakob Wennberg <jakob.wennberg@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>