From ca267e6b1c727be254c6229fc1ed3e2c5a0d6065 Mon Sep 17 00:00:00 2001 From: Anders Betts Date: Tue, 22 Sep 2026 22:48:14 +0200 Subject: sru, tui: round every account to whole kronor; fix the årsredovisning Stäng skip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/PROTOCOL.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'docs/PROTOCOL.md') diff --git a/docs/PROTOCOL.md b/docs/PROTOCOL.md index 0b69d53..3ddb03b 100644 --- a/docs/PROTOCOL.md +++ b/docs/PROTOCOL.md @@ -465,8 +465,9 @@ closed straight to 2099 and would otherwise net to zero; the TUI returns account blocks: `{"fiscal_year","from","to","last_voucher":{...},"accounts":[{"account", "name","ib_ore","debit_ore","credit_ore","ub_ore","rows":[{"series", -"number","date","description","row_description","debit_ore","credit_ore", -"saldo_ore"}]}]}`; accounts without IB or period movement are omitted, and +"number","date","description","row_description","source","debit_ore", +"credit_ore","saldo_ore"}]}]}` (`source` is the voucher's origin, e.g. +`sie_import`); accounts without IB or period movement are omitted, and `accounts` (array of account numbers) filters the list. `report.voucher_list` (verifikationslista) returns `{"fiscal_year","from", "to","last_voucher":{...},"vouchers":[{"id","series","number","date", @@ -476,8 +477,13 @@ returns account blocks: `INFO.SRU` (submitter, defaults to the org) and `BLANKETTER.SRU` with one INK2, INK2R and INK2S block each. The blankett type is derived from the fiscal year end (`P1`-`P4`), the org number is written as 12 -digits, amounts are whole kronor with öre truncated and the blankett's -printed sign, and zero fields are omitted. INK2R is mapped from the ledger +digits, amounts are whole kronor with the blankett's printed sign, and zero +fields are omitted. Every account is rounded to whole kronor (half away +from zero) before it is summed into its field, the same rule as the TUI +årsredovisning, so the two agree to the krona and the fields add up; 2099 +is replaced by the income statement's result in 7302, and the krona that +rounding can leave between the balance sheet's sides is carried by 7302 +(a real imbalance in the ledger stays visible). INK2R is mapped from the ledger via the official BAS ranges; INK2S takes the derived årets resultat and skatt plus `adjustments[]{code,amount_ore}` for manual tax adjustments and computes 7670/7770; INK2 carries 7104/7114 and the optional 8040-8045 -- cgit v1.3