feat(reconciliation): manual adapter for the whole balance sheet (Reko bilagor, PR 1) (#1854)

* feat(reconciliation): manual adapter so the whole balance sheet is reconcilable and signable (Reko bilagor, PR 1)

Every class 1-2 account the bank and skattekonto adapters do not own now
appears on the Avstämning page under "Övriga balanskonton" with IB, movement
and UB through the balansdag, a system specification where one exists
(1510 kundreskontra, 2440 leverantörsreskontra, 2920/2940 semesterlöneskuld)
and, for every other account, the balance the signer states from their
underlag at sign-off. Same three doors as before: dashboard routes, v1 API
and the MCP tools take manual:<BAS> keys and an external_balance.

The ledger side is computed per fiscal period via generateTrialBalance,
never as an all-history sum: year-end re-books every balance account in an
opening_balance verifikat, so an all-history sum counts a closed year twice.

A stated external_balance is refused (EXTERNAL_BALANCE_NOT_ALLOWED) wherever
the system already has an outside truth, so it can never hide a difference.

No migration: account_reconciliations already accepts manual:NNNN keys.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RvFveUpbdPBXdm7f5FEYoz

* chore(api-skill): regenerate banking reference for the sign-off external_balance field

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RvFveUpbdPBXdm7f5FEYoz

---------

Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-08-25 09:23:14 +02:00
committed by GitHub
co-authored by Claude Fable 5 Jakob Wennberg
parent 1e6e19afe9
commit ebbdf96b74
22 changed files with 1312 additions and 116 deletions
+15 -2
View File
@@ -7806,7 +7806,7 @@
},
"reconciliation": {
"title": "Reconciliation",
"help_text": "Every account with a truth outside the ledger, the bank or the tax account, is reconciled here. What exists outside is compared with what is booked, each row on one side is linked to a row on the other, and whatever remains is explained or booked.",
"help_text": "Every account with a truth outside the books: the bank, the tax account and the other balance sheet accounts against a ledger, a calculation or your supporting documents. Link the rows, explain the difference and sign off when the account agrees.",
"rail_heading": "Accounts",
"rail_synced": "fetched {date}",
"rail_never_synced": "never fetched",
@@ -7926,7 +7926,20 @@
"row_mark_ib": "Mark as opening balance",
"row_move": "Move to account",
"toast_marked_ib": "The voucher was marked as opening balance",
"toast_moved": "The transaction was moved to {account}"
"toast_moved": "The transaction was moved to {account}",
"rail_group_manual": "Other balance sheet accounts",
"rail_never_signed": "not signed off",
"state_unsigned": "Not signed off",
"tile_external_manual": "Balance per supporting documents",
"tile_external_manual_sub": "entered when you sign",
"tile_external_signed": "per sign-off through {date}",
"tile_spec_today": "open items today",
"action_open_ledger": "Open the general ledger",
"manual_hint": "Nothing outside the books feeds this account. Compare the balance with your supporting documents, enter it when you sign, and add a note if something differs.",
"manual_spec_hint": "The specification comes from the system: {label}. The difference should be zero before you sign; otherwise sign with a note.",
"signoff_external_balance": "Balance per supporting documents",
"signoff_external_balance_help": "Same sign as in the books, liabilities with a minus. Booked: {amount}.",
"signoff_external_balance_optional": "Leave empty to sign with a note only."
},
"skattekonto": {
"help_text": "The balance and events are fetched from Skatteverket and synced automatically every night. Completed events are booked against 1630 Skattekonto, usually automatically; anything that cannot be matched is flagged in the list. Pay in via bankgiro 5050-1055 with your OCR number.",
+15 -2
View File
@@ -7806,7 +7806,7 @@
},
"reconciliation": {
"title": "Avstämning",
"help_text": "Varje konto med en sanning utanför bokföringen, banken eller skattekontot, stäms av här. Det som finns utanför jämförs med det som är bokfört, varje rad på ena sidan kopplas till en rad på den andra, och det som blir kvar förklaras eller bokförs.",
"help_text": "Varje konto med en sanning utanför bokföringen: banken, skattekontot och övriga balanskonton mot reskontra, beräkning eller ditt underlag. Koppla raderna, förklara differensen och signera när kontot stämmer.",
"rail_heading": "Konton",
"rail_synced": "hämtat {date}",
"rail_never_synced": "aldrig hämtat",
@@ -7926,7 +7926,20 @@
"row_mark_ib": "Märk som IB",
"row_move": "Flytta till konto",
"toast_marked_ib": "Verifikatet markerades som ingående balans",
"toast_moved": "Transaktionen flyttades till {account}"
"toast_moved": "Transaktionen flyttades till {account}",
"rail_group_manual": "Övriga balanskonton",
"rail_never_signed": "inte avstämt",
"state_unsigned": "Inte avstämt",
"tile_external_manual": "Saldo enligt underlag",
"tile_external_manual_sub": "anges när du signerar",
"tile_external_signed": "enligt signering t.o.m. {date}",
"tile_spec_today": "öppna poster idag",
"action_open_ledger": "Öppna huvudboken",
"manual_hint": "Kontot hämtas inte från någon källa utanför bokföringen. Jämför saldot med ditt underlag, ange det när du signerar och skriv en notering om något avviker.",
"manual_spec_hint": "Specifikationen kommer från systemet: {label}. Differensen ska vara noll innan du signerar, annars signerar du med en notering.",
"signoff_external_balance": "Saldo enligt underlag",
"signoff_external_balance_help": "Samma tecken som i bokföringen, skulder anges med minus. Bokfört: {amount}.",
"signoff_external_balance_optional": "Lämna tomt om du bara vill signera med en notering."
},
"skattekonto": {
"help_text": "Saldot och händelserna hämtas från Skatteverket och synkas automatiskt varje natt. Genomförda händelser bokförs mot 1630 Skattekonto, oftast automatiskt; det som inte kan matchas flaggas i listan. Betala in via bankgiro 5050-1055 med ditt OCR-nummer.",