* fix(ui): block illegal VAT rates, honest opening-balance state, surface account-save errors
- Supplier invoice form (#863 item 1): onSubmit now blocks any
non-reverse-charge line whose VAT rate is outside the legal Swedish
set {25, 12, 6, 0} with a destructive toast naming the line and the
legal rates. Server-side schema tightening stays out of scope.
- Opening balance import (#837): the summary derives isBalanced from
the running totals (0.01 epsilon) and renders the AlertCircle
destructive pattern with the differens amount when unbalanced;
canExecute includes isBalanced so the commit button is disabled
instead of funneling users into a server-side rejection.
- EditAccountDialog (#838): a failed account save now shows a
destructive toast with the server-provided message instead of being
silently swallowed; the dialog stays open for retry.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(ui): compare opening-balance totals in whole ore, map account-save errors to Swedish
Review findings on the first pass: the < 0.01 epsilon misclassified exact
1-ore imbalances as balanced (0.03 - 0.02 evaluates just under 0.01), and
the save-failure toast surfaced raw English server text instead of routing
through getErrorMessage like the sibling handlers in the same file.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>