The bookkeeping dialogs were the customer's "fields load late" in its
purest form: Bokför (TransactionBookingDialog + the embedded
JournalEntryForm) issued five requests on every open (fiscal periods,
accounts, settings, cash accounts, then the voucher preview once the first
two had landed), Nytt verifikat the same minus one, BookDirectlyDialog
four, and the template dialogs two. Each Radix dialog unmounts on close, so
every reopen paid the full price again, and several fields visibly
flipped: the bank line seeded '1930' then rewrote itself, the series
defaulted to 'A' until settings arrived, the period select was empty.
All of them now read lib/reference-data (seeded by the dashboard layout):
- JournalEntryForm: periods, accounts and settings from the hooks;
dimensionsEnabled derived, not fetched; the voucher-number preview is
keyed on the entry date (the route resolves the period from it) so it
fires as soon as the series is known instead of after the period fetch;
after activating accounts it invalidates the shared accounts cache; the
create-period dialog callback invalidates the periods cache.
- TransactionBookingDialog: settlement account and its name derived with
useMemo from the cached cash accounts; the form mounts on the first paint.
- BookDirectlyDialog: cash accounts, periods and accounts from the hooks;
the '1930'-then-rewrite disappears because the resolved account is known
on the first render.
- TemplateBookDialog, BookingTemplatePicker, TemplatePicker: templates
(and periods) from the hooks.
- BookingTemplatesPanel (delete, import) and CreatePeriodDialog (create)
invalidate the corresponding cache entries so every picker sees the
change at once.
- fetchers.ts: booking templates are booking_templates rows
(BookingTemplateLibrary), not the static BookingTemplate shape.
Per open: Bokför 5 requests -> 0 blocking (voucher preview is a
non-blocking hint), Nytt verifikat 5 -> 1 non-blocking, BookDirectly
4 -> 0, Mall 2 -> 0, template pickers 1 -> 0.
raw-reference-fetch ratchet: 51 -> 46 files.
Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>