| Age | Commit message (Collapse) | Author |
|
|
|
sru.export now returns the emitted fields as ink2/ink2r/ink2s arrays
plus from/to, so Rapporter -> Inkomstdeklaration (INK2/SRU) renders the
declaration as a table with the official fältnamn before saving; unmapped
accounts are listed in the view.
The voucher list puts the verifikat id before the date, widens the column
gaps and adds an inner margin.
|
|
- bokslut.post: year-end bookings (manual entries, periodiseringsfond,
skatt at a given rate, resultatdisposition) with a dry-run plan through
the normal ledger path; the resultatrapport separates
bokslutsdispositioner and skatt per K2.
- sru.export: INFO.SRU + BLANKETTER.SRU (INK2/INK2R/INK2S) from the
official 2025P4 field tables and the BAS mapping, with manual INK2S
adjustments, submitter defaults and unmapped-account detection; the TUI
writes both files from Rapporter -> Inkomstdeklaration.
- voucher.list carries attachment_count and the voucher list marks
vouchers with underlag with an x column.
- date_prompt restores the cursor state so it stops blinking at the bottom
after the report date prompts.
|
|
The voucher detail can attach a file to an existing voucher (^F) and
the underlag picker (f) can remove a link (d, confirmed). The Underlag
inbox links a highlighted item to a voucher picked from a list (k).
attachment.link and attachment.unlink are new write commands (dry-run,
audited); unlinked files return to the inbox. The same content may now
link to several vouchers — only the same voucher/attachment pair is a
CONFLICT, matching the table's primary key.
|
|
report.vat_eskd builds the ISO-8859-1 XML from report.vat: whole
kronor with öre truncated like the blankett, box 48 positive as filed,
MomsBetala computed from the whole-krona boxes, and an optional
upplysning converted from UTF-8, XML-escaped and capped at 300
characters. The TUI momsrapport gains "s = spara eSKD", prompting for a
path and writing the bytes verbatim.
Verified against the FY2027 Kapitas report: 05=703200, 10=175800,
20=1453, 30=851, 48=1030, 49=175621.
|
|
printf widths count bytes, so Swedish labels shifted every following
column by one per multi-byte character: Huvudbok's Ingående/Omslutning/
Utgående saldo lines, moms ruta 48/49, and the Resultatrapport,
Saldobalans and Verifikationslista headers no longer lined up with
their rows.
pad_min() pads to display columns without truncating long moms labels
and pad_hdr() right-aligns headers; the Ingående balans/saldo amounts
now sit in the far-right Saldo column like the Kapitas export.
|
|
The report menu gains Kapitas-style Huvudbok and Verifikationslista
tables. "Byt räkenskapsår" is now "Räkenskapsår": the list shows
öppen/stängd and ^A closes or reopens the highlighted year (via the new
fiscal_year.reopen). Menus remember the selection, Mallar opens straight
into the list (Enter edit, ^N new, d arkivera), report tables get column
rules and aligned sums, and text_view clears stale lines.
Footer hints write control keys as ^N/^A/^C/^R/^X, ^Enter saves or posts
a form and ^X clears the focused row (F9 still works as a fallback).
|
|
report.general_ledger lists every account with activity or IB, its
postings in date order with a running saldo, and Omslutning/Utgående
saldo; accounts?/from?/to? narrow it. report.voucher_list lists the
year's vouchers with rows and totals, with an optional series filter.
fiscal_year.reopen undoes a close (owner-only, confirm:true, audited) so
the Räkenskapsår screen can toggle the status.
|
|
The report views dumped JSON; they now render Saldobalans,
Resultatrapport (previous-year column, 89xx bokfört/ej bokfört),
Balansrapport (Ing balans/Ing saldo/Period/Utg balans, Beräknat
resultat) and Momsrapport ruta för ruta, with Swedish amount
formatting (1 234,56).
The moms starter rules missed 33xx sales, sent reverse-charge VAT
2614 to box 10 instead of 30 and had box 48 positive. Rules may now
share a box and report.vat sums them; box 49 is the sum of the moms
boxes only. Schema v3 replaces the rules for existing orgs. Verified
on a copy of the live DB: 05=703 200, 10=175 800, 20=1 453, 30=851,
48=-1 030, 49=175 621, matching the Kapitas 2027 export.
Ctrl+R reload passes --socket and auto-login no longer rewrites
tui.conf; pty tests now run through scripts/tui-sandbox.sh so they
cannot touch the real config, cache or bw session.
|
|
Password-kind items only exported BOKFD_PASSWORD, so the TUI fell back
to the username saved in tui.conf (admin) and failed with AUTH_FAILED
when switching accounts. The item's login username now wins unless the
caller set BOKFD_USER explicitly.
|
|
The bw CLI cache could be stale, so a newly created item was invisible.
Sync before listing, match the query against both the item name and the
login username (exact first), show 'name (user)' in the picker and fetch
the secret by item id.
|
|
|
|
|
|
ui_getch mapped Ctrl+R to Esc, but the dashboard treats Esc as a
no-op and looped, so do_reload was never reached; from sub-screens the
key merely bounced back to the dashboard. Dashboard and the early
screens now honour the flag. Verified by observing the re-exec and
session reuse in ~/.cache/bokf/tui.log.
|
|
try_login is called with a->username as the user; snprintf with
overlapping source and destination is undefined and produced "" on
glibc, so config_save wrote 'user=' and later reloads could not
auto-login. Copy through a temporary, carry BOKFD_USER on reload and
never persist an empty user.
|
|
Template names, org names, filenames and the account-list type column
were padded with byte widths, so Swedish characters broke the alignment.
|
|
- whole chain (session, token, password) is retried while the server is
unreachable, with an on-screen counter
- the adopted connection is taken over instead of reconnecting
- failures show the server error in a box and append to
~/.cache/bokf/tui.log for later diagnosis
|
|
Namn/Serie/Text (and the voucher date) drew the caret at the end of the
string; editing worked but the cursor never appeared to move.
|
|
|
|
select_list refused to move when fewer than a full page remained; menu
already clamped. Matches the menu behaviour now.
|
|
- stale BOKFD_SESSION falls back to token/password auto-login and shows
a message before the login screen when neither is available
- the password typed this session is handed to the re-exec'd process
|
|
|
|
|
|
- bokfd re-execs its own binary on SIGHUP, closing listeners/db first
- scripts/deploy.sh --dev cross-builds and copies binaries into the
running container, then verifies the reported version
|
|
The target only assembles the image from prebuilt binaries, so redeploys
no longer compile sqlite/argon2 on the NAS. New deploy/Dockerfile.cross
provides the gcc-aarch64-linux-gnu toolchain; the Dockerfile uses
.prebuilt/ when present.
|
|
- build: VERSION defaults to git describe, deploy passes the tag via --build-arg
- bokftui: srv version from meta, right-aligned next to the status line
|
|
Was listing the IB voucher's rows (the reconciliation deltas) and
computing edits against those, which mismatched reports on years with
carry-forward and could not set a target balance. Also guard the editor
against more than 63 rows.
|
|
The IB list arrays were sized by voucher count but appended per row; a
single IB voucher with more than one row overwrote the heap and crashed
after leaving the view. Grow the arrays dynamically.
|
|
|
|
|
|
- owner-editable company details form (read-only for other roles)
- org.update honors dry_run; covered in tests
|
|
- tokenizer treats CR as whitespace; closing brace matches with CRLF
- only #RAR with year indicator 0 selects the fiscal year
- zero-amount #TRANS rows are dropped instead of violating the schema
- #IB becomes an IB voucher only when the year has no earlier history
|
|
|
|
|
|
brw/bw lookup in user space; optional token via custom field
|
|
|
|
|
|
- bokfctl: --token / BOKFD_TOKEN via client_token_login
- tokens must carry the admin scope for admin commands (was bypassed)
- docs: token-based snapshot for restic backups
|
|
|
|
- bokfd: optional TLS listener (OpenSSL), certificate reload on change
- clients: tls:host:port targets with chain and host verification
- compose: port 8788 and an INWX/lego renewal sidecar
- Makefile: header dependency tracking (-MMD -MP)
|
|
|