M9: kvitt-import Splitwise importer (SPEC §10.8, FR-17)

CLI per §10.8 with --help, --dry-run and a summary; English and Swedish
headers with member columns matched by name; CSV quoting; payments as
settlements with one allocation; trailing totals row used to reconcile
the account balance (mismatch rolls back, exit 4); non-SEK rows abort
unless --fx; committed category table data/splitwise_categories.csv;
idempotent re-runs through import_key; rows validated with the server's
push checks, audited with source import, no pushes; one BEGIN IMMEDIATE
transaction. Tests over synthetic fixtures only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
This commit is contained in:
2026-10-18 07:45:32 +02:00
parent d9dd5848fe
commit 50339aef6d
21 changed files with 3097 additions and 13 deletions
@@ -0,0 +1,6 @@
Date,Description,Category,Cost,Currency,Alex Example,Robin Sample
2025-05-01,Fine row,Groceries,10.00,SEK,5.00,-5.00
2025-05-02,Total balance, , ,SEK,7.00,-7.00
1 Date Description Category Cost Currency Alex Example Robin Sample
2 2025-05-01 Fine row Groceries 10.00 SEK 5.00 -5.00
3 2025-05-02 Total balance SEK 7.00 -7.00