aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
20 hoursinvoice: skip the Swish QRv0.1.50Anders Betts
20 hoursinvoice: allow setting the bankgiro, document wave 1Anders Betts
20 hoursinvoice: customer, sequence, preview and issue commandsAnders Betts
20 hoursbuild: wire the invoice renderer into the test suiteAnders Betts
20 hoursinvoice: render the document as PDFAnders Betts
21 hoursdb: schema v9 for invoicing, vouchers source rebuildAnders Betts
21 hoursinvoice: extract the Comfortaa wordmark as vector pathsAnders Betts
21 hourspdf: minimal PDF writer for generated documentsAnders Betts
21 hoursinvoicing: keep customers in Register per the menu ruleAnders Betts
21 hoursinvoicing: design chapter with layout, numbering and SMTPAnders Betts
23 hoursdocs: bank reconciliation phase 1v0.1.49Anders Betts
23 hourstests: bank reconciliation pty scenarioAnders Betts
23 hourstui: bank reconciliation screenAnders Betts
23 hoursbank: import SEB CSV and match against vouchers (schema v8)Anders Betts
25 hoursdb: make attachments append-only (schema v7)Anders Betts
25 hourstui: pinned report headers, voucher detail headers, clamped pagingv0.1.48Anders Betts
25 hourstui: align list rows beyond nine itemsv0.1.47Anders Betts
26 hoursdocs: mark the moms rule editor and pre-migration snapshot donev0.1.46Anders Betts
26 hourstests: momsregler pty scenarioAnders Betts
26 hourstui: momsregler screen for the vat report rulesAnders Betts
26 hoursreport: per-org moms rule editor commandsAnders Betts
26 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.
26 hoursbuild: ignore the sanitizer build directoriesAnders Betts
26 hourstests: wire check, pty and sanitizer targets and document themAnders Betts
26 hoursledger: free the default-series string on every post error pathAnders Betts
26 hourscommands: declarative argument schemas with dispatch validationAnders Betts
26 hoursscripts: check command and error-code drift against the docsAnders Betts
26 hourstests: pty golden harness for the TUIAnders Betts
26 hoursdeploy: alpine runtime image with the daemon and CLI onlyv0.1.45Anders Betts
26 hoursaudit: verify voucher chains and attachment hashesAnders Betts
35 hourstui: remember the focused row in forms and the bokslut hubv0.1.44Anders Betts
36 hourstui: bokslut hub with year fields, reports and the posting actionv0.1.43Anders Betts
36 hourstui: bokslut footer explains the plan/post keysv0.1.42Anders Betts
36 hourstui: backspace deletes backwards while editing; esc restores the valuev0.1.41Anders Betts
36 hourstui: themes, pager markup, menu sections; merge Bokslut and year infov0.1.40Anders Betts
37 hourstui: form fields on the row-table screen; home/end/pgup/pgdn navigationv0.1.39Anders Betts
37 hourstui: migrate the remaining screens to the widget layerv0.1.38Anders Betts
37 hourstui: row table widget (dynamic rows, trailing blank row) + testsv0.1.37Anders Betts
38 hourstui: shared widget layer (fields, prompts, lists, forms, pager) + testsv0.1.36Anders Betts
38 hoursbokftui: clear the whole prompt line before drawing the labelv0.1.35Anders Betts
38 hoursårsredovisning: Information om året per räkenskapsår (schema v6)v0.1.34Anders Betts
39 hoursbokslut: TUI screen, K2 årsredovisning draft, storable dividend (schema v4)v0.1.33Anders Betts
47 hoursattachments: list every link when filtering by voucherv0.1.32Anders Betts
2 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.
2 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.