Files
accounted/lib/reports
Jakob Wennberg 4872c0f242 fix(reports): stable total order on SIE-export fetchAllRows paging (#793 hardening) (#824)
#820 fixed the primary #793 truncation (the nested embedded-resource select hit
PostgREST's row ceiling, exporting ~30 vouchers) by splitting entries and lines
into two fetchAllRows calls. But both queries paged without a stable TOTAL order:
the entries query ordered by voucher_number alone (not unique across voucher
series) and the lines query had no .order() at all. Per the fetch-all.ts
invariant, .range() paging without a unique total order can duplicate or skip
rows across the 1000-row boundary — so a year with >1000 entries/lines and
multiple series could still drop or double a voucher in the SIE file (BFL
completeness).

- Entries: order by voucher_series + voucher_number (unique per company+period).
- Lines: order by the line PK id.
- Both carry dedupeBy: r => r.id as defense-in-depth, mirroring the general
  ledger / trial balance fix in #811.
- Give the large-period test's line fixtures unique ids so the >1-page dedupe
  path is exercised realistically (all 5000 lines survive).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:39:40 +02:00
..
2026-04-15 11:17:39 +02:00
2026-05-28 01:56:09 +02:00
2026-05-14 01:10:44 +02:00
2026-06-18 11:49:33 +02:00