* feat(transactions): filter /transactions by rakenskapsar and kvartal
User request: booking a specific period (including brutet rakenskapsar,
e.g. July-June) meant scrolling past every other year's transactions.
- New FyPicker chip in the toolbar scopes both the inbox and history views
to a fiscal year; quarter chips (Q1-Q4, fiscal-year aligned) appear once
a year is selected. Clicking the active quarter widens back to the year.
- Bounds are pushed into the Supabase queries (window, pending backlog,
badge count, load-more) so pagination and the Att bokfora count stay
consistent with the visible list; skattekonto rows are bounded client-side.
- Scope persists under a page-local localStorage key, deliberately separate
from the shared report scope so a year picked on a report page never
silently hides pending inbox rows.
- lib/transactions/period-filter.ts derives quarter bounds from fiscal
period dates (handles brutet, shortened and extended years); unit tested.
- FyPicker gains an optional storageKeyPrefix prop; default unchanged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(transactions): never hide pending rows behind the period filter
Swedish accounting review on PR #1545: scoping the pending-backlog fetch
and badge count to the period made unbooked rows outside the selected
year vanish from the inbox worklist (BFL 5 kap: pending affarshandelser
must stay visible until booked).
- Pending-backlog fetch and the DB pending count are unscoped again;
only the history window pages server-side within the period.
- The inbox applies the period client-side over the complete backlog;
the tab badge counts pending rows inside the scope.
- When pending rows (bank or skattekonto) fall outside the scope, the
footer says how many and offers Visa alla, which clears the filter
and its persisted value.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(transactions): guard list fetches against stale cross-scope responses
CodeRabbit on PR #1545:
- fetchTransactions/loadMoreTransactions now carry a fetch generation;
a response applies only if no newer fetch (scope change, realtime
refresh, load-more) started meanwhile, so a slow pre-filter request
can no longer overwrite the active period scope's window, paging
offsets, or loading skeleton.
- FyPicker restore effect includes storageKeyPrefix in its deps.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(transactions): label quarter chips as fiscal-year quarters
Swedish accounting review note on PR #1545: Q1-Q4 follow the company's
rakenskapsar, which on a brutet rakenskapsar differs from the calendar
quarters that momsdeklaration periods use. Say so in the group's
aria-label and hover title so the chips are not mistaken for VAT
periods.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>