aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
31 hoursdb: schema v9 for invoicing, vouchers source rebuildAnders Betts
31 hoursinvoice: extract the Comfortaa wordmark as vector pathsAnders Betts
31 hourspdf: minimal PDF writer for generated documentsAnders Betts
31 hoursinvoicing: keep customers in Register per the menu ruleAnders Betts
31 hoursinvoicing: design chapter with layout, numbering and SMTPAnders Betts
33 hoursdocs: bank reconciliation phase 1v0.1.49Anders Betts
33 hourstests: bank reconciliation pty scenarioAnders Betts
33 hourstui: bank reconciliation screenAnders Betts
33 hoursbank: import SEB CSV and match against vouchers (schema v8)Anders Betts
35 hoursdb: make attachments append-only (schema v7)Anders Betts
35 hourstui: pinned report headers, voucher detail headers, clamped pagingv0.1.48Anders Betts
35 hourstui: align list rows beyond nine itemsv0.1.47Anders Betts
36 hoursdocs: mark the moms rule editor and pre-migration snapshot donev0.1.46Anders Betts
36 hourstests: momsregler pty scenarioAnders Betts
36 hourstui: momsregler screen for the vat report rulesAnders Betts
36 hoursreport: per-org moms rule editor commandsAnders Betts
36 hoursdb: snapshot the database before forward migrationsAnders Betts
When db_open finds an older schema version, write a consistent VACUUM INTO copy to <backup_dir>/pre-migration-v<old>-<UTC>.db before the first migration statement. A taken name gets a numeric suffix; if the snapshot fails, the open and the migration abort.
36 hoursbuild: ignore the sanitizer build directoriesAnders Betts
36 hourstests: wire check, pty and sanitizer targets and document themAnders Betts
36 hoursledger: free the default-series string on every post error pathAnders Betts
36 hourscommands: declarative argument schemas with dispatch validationAnders Betts
36 hoursscripts: check command and error-code drift against the docsAnders Betts
36 hourstests: pty golden harness for the TUIAnders Betts
36 hoursdeploy: alpine runtime image with the daemon and CLI onlyv0.1.45Anders Betts
36 hoursaudit: verify voucher chains and attachment hashesAnders Betts
46 hourstui: remember the focused row in forms and the bokslut hubv0.1.44Anders Betts
46 hourstui: bokslut hub with year fields, reports and the posting actionv0.1.43Anders Betts
46 hourstui: bokslut footer explains the plan/post keysv0.1.42Anders Betts
46 hourstui: backspace deletes backwards while editing; esc restores the valuev0.1.41Anders Betts
47 hourstui: themes, pager markup, menu sections; merge Bokslut and year infov0.1.40Anders Betts
47 hourstui: form fields on the row-table screen; home/end/pgup/pgdn navigationv0.1.39Anders Betts
47 hourstui: migrate the remaining screens to the widget layerv0.1.38Anders Betts
48 hourstui: row table widget (dynamic rows, trailing blank row) + testsv0.1.37Anders Betts
48 hourstui: shared widget layer (fields, prompts, lists, forms, pager) + testsv0.1.36Anders Betts
2 daysbokftui: clear the whole prompt line before drawing the labelv0.1.35Anders Betts
2 daysårsredovisning: Information om året per räkenskapsår (schema v6)v0.1.34Anders Betts
2 daysbokslut: TUI screen, K2 årsredovisning draft, storable dividend (schema v4)v0.1.33Anders Betts
2 daysattachments: list every link when filtering by voucherv0.1.32Anders Betts
3 dayssru: INK2 report view in the TUI; voucher list tweaksv0.1.31Anders Betts
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.
3 daysbokslut, INK2/SRU export and attachment markersv0.1.30Anders Betts
- 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.
3 daysattachments: link/unlink from the TUI, multi-voucher linksv0.1.29Anders Betts
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.
3 dayseskd: generate the momsdeklaration file (eSKDUpload 6.0)v0.1.28Anders Betts
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.
3 daysbokftui: align report columns when labels contain å/ä/öAnders Betts
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.
3 daysbokftui: Huvudbok/Verifikationslista views, Räkenskapsår screen, ^Enter/^Xv0.1.27Anders Betts
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).
3 daysreports: huvudbok and verifikationslista; fiscal_year.reopenAnders Betts
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.
3 daysreports: Kapitas-style TUI tables, corrected moms rules (schema v3)v0.1.26Anders Betts
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.
3 daysscripts: bokftui-bw exports the item's login usernameAnders Betts
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.
3 daysscripts: bokftui-bw syncs and matches item name or login userAnders Betts
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.
3 daysscripts: bokftui-bw item selection (argument or picker)Anders Betts
3 daysbokftui: drop the redundant fiscal-year label from the status linev0.1.25Anders Betts