The verifikationslista filtered by voucher series in the API route, AFTER the
list_fiscal_period_entries_with_related RPC had already paged — recomputing
`count = entries.length` from the current page only. That clobbered the RPC's
window-function total_count, so whenever a user filtered the grundbok by series
the paginator's total collapsed to the matching subset of one page and 'next
page' disabled early — the list appeared to stop after ~one page.
- New migration adds p_series to the RPC and applies the filter inside the
matching CTE, so COUNT(*) OVER () reflects the filtered set. DROP+CREATE
(a new param changes the function identity); p_series DEFAULT NULL keeps
existing callers unaffected. Re-GRANTs EXECUTE to authenticated to match the
original definition, since DROP+CREATE drops prior grants.
- The route passes p_series and drops the post-filter recompute; entries and
count now come straight from the RPC.
- Extends list-filters.pg.test.ts: series=B over a 2A/3B period returns the 3 B
entries with total_count=3, and a short page (limit 2) still reports total 3 —
the regression that broke pagination.
Note: hosted DB does not auto-apply migrations on merge — apply 20260629160000
to prod after merge.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>