Commit Graph
90 Commits
Author SHA1 Message Date
Marcel Peterkau 9bf62809b7 Merge branch 'dev' into feature/table-usability-fixes 2026-08-14 22:03:08 +00:00
Marcel PeterkauandClaude Sonnet 5 52904a29b4 Document the table/pane usability tuning and GnuCash import improvements
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:56:51 +02:00
Marcel PeterkauandClaude Sonnet 5 195ae0e228 Replace the GnuCash import checkbox column with native multi-select
Selecting bookings to import now uses the Treeview's own multi-selection
(click, Ctrl+click, Shift+click for ranges) instead of a dedicated
checkbox column that had to be clicked precisely -- more standard and
much faster for marking many rows at once.

Bookings matching an existing payment's date+amount are no longer
blocked from selection; they're still flagged (red row, "Bereits
vorhanden"). If any selected booking is such a duplicate, importing now
asks whether to skip those or instead adopt the booking's description
onto the already-recorded payment. That relabeling is handled by a new
repository.update_payment_reference, which only touches the reference
and gnucash_transaction_id fields, leaving date/amount/allocations
untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:43:55 +02:00
Git-CI 3d81a728b1 ci: bump dev version to 0.1.0-dev8 [skip ci] 2026-08-14 23:42:28 +02:00
Marcel Peterkau 7440d18c35 Merge pull request 'Feature/housekeeper dunning rules' (#14) from feature/housekeeper-dunning-rules into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/14
Reviewed-by: Matcha <20+matcha@noreply.git.hiabuto.net>
2026-08-14 21:40:48 +00:00
Marcel Peterkau d2f4c9588f Merge branch 'dev' into feature/housekeeper-dunning-rules 2026-08-14 21:40:12 +00:00
Marcel PeterkauandClaude Sonnet 5 e25accd35b Fix column order/widths and sizing in Hausmeister and GnuCash import
Hausmeister: reorder columns to Level, Fällig, Vorgang, Details. Level,
Fällig and Vorgang get a fixed width; only Details stretches to fill the
remaining space.

GnuCash-Import dialog: opens at 80% of the current monitor's size
(monitor-aware via the existing screeninfo-based helpers, not just the
raw/virtual screen size) instead of a fixed 960x640. In its booking
table, Import, Datum, Betrag and Status get a fixed width; Beschreibung
and Memo share the remaining space.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:26:07 +02:00
Git-CI c0486770b8 ci: bump dev version to 0.1.0-dev7 [skip ci] 2026-08-14 23:13:23 +02:00
Marcel PeterkauandClaude Sonnet 5 65bcc9f447 Fix column order/widths and Chronik pane share in the member view
Forderungen: reorder columns to Fällig, Betrag, Status, Forderung.
Zahlungen and Spenden already had the requested order. Across all three
tables, the date/amount-like columns now share one fixed width, the
status column is a third wider (it tends to hold longer label text),
and only the trailing description/reference column stretches to fill
the remaining space.

The Chronik pane now defaults to a third of the member view's width
instead of three fifths, matching the other panes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:11:44 +02:00
Marcel Peterkau 7d3891b39b Merge branch 'dev' into feature/housekeeper-dunning-rules 2026-08-14 21:11:19 +00:00
Marcel Peterkau 241ca69190 Merge pull request 'Feature/claim delete payment create donations' (#13) from feature/claim-delete-payment-create-donations into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/13
Reviewed-by: Matcha <20+matcha@noreply.git.hiabuto.net>
2026-08-14 21:11:07 +00:00
Marcel PeterkauandClaude Sonnet 5 ad5aeb74b6 Document the housekeeper dunning/SEPA rule rework in the changelog
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:03:04 +02:00
Marcel PeterkauandClaude Sonnet 5 4e4aa22589 Stop double-reporting overdue claims and add SEPA-specific followup
The claim-status and reminder-due housekeeper rules used to run
independently, so once a claim was both overdue and past its dunning
grace period, both a generic "überfällig" task and a "Mahnung fällig"
task showed up for the same problem. Rules can't see each other's
output, so the fix is to give reminder-due sole ownership of the whole
overdue lifecycle: a plain overdue notice during the grace period, then
either the dunning escalation or a fallback overdue notice (dunning
hold active, or waiting between reminder levels) -- never both at once.
claim-status now only handles claims that aren't overdue yet ("bald
fällig").

Members with an active SEPA mandate get a new sepa_debit_overdue finding
instead of the postal dunning escalation once a claim is past its grace
period, since mailing a Mahnung makes no sense for a member who pays by
direct debit -- the board needs to check/retrigger the debit instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:02:37 +02:00
Marcel PeterkauandClaude Sonnet 5 42cde2a0c8 Remember the last-used GnuCash account per file
AppConfig now keeps a gnucash_last_accounts map (file path -> account
guid). When the import dialog opens a file it already knows, it
auto-selects whichever account was picked last time for that specific
file instead of always defaulting to the first one alphabetically;
picking a different account updates and persists the mapping right away.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:02:37 +02:00
Marcel PeterkauandClaude Sonnet 5 745e634a8b Import payments per member from a GnuCash file
Adds a "Zahlungen importieren" button to the member Zahlungen tab that opens
a dedicated window: point it at a GnuCash file (plain or gzip-compressed
XML, defaults to the file configured in Optionen), pick one of its accounts,
and narrow the account's bookings down with a description-contains filter
and an optional date range.

Each matching booking gets a checkbox to mark it for import as a payment.
Before anything is ticked, bookings are cross-checked against this member's
existing payments by date + amount; a match is highlighted and its checkbox
is refused, so re-importing the same statement can't create a duplicate
payment. Only bookings with a positive amount on the selected account are
offered, since those are the ones that make sense as an incoming payment.

Parsing lives in ccma.services.gnucash_import, independent of the UI, and
is covered by tests against a synthetic GnuCash XML fixture (plain and
gzip-compressed) -- no gnucash/piecash dependency needed since the native
file format is just XML.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:02:37 +02:00
Marcel PeterkauandClaude Sonnet 5 e7a18b5cde Document claim deletion, donations, and payment allocation in the changelog
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 23:02:18 +02:00
Marcel PeterkauandClaude Sonnet 5 4dd625c09f Only list open or already-linked claims/donations in the payment dialog
Show a claim or donation in the Zahlung anlegen/bearbeiten allocation
table only if it still has an open balance, or is already linked to this
payment -- fully settled ones no longer clutter the list.

Visibility is decided from a snapshot taken when the dialog opens (or
when a donation is created inline), not recomputed live, so a row never
disappears just because the user temporarily unassigned it with
"Zuordnung lösen" -- it stays there to add back with "Zuordnung setzen"
until the dialog is saved.

Also fixes a capacity display bug this surfaced: "Maximal zuordenbar"
was computed by mixing the persisted claim/donation balance with the
live, currently-edited allocation amount, so it inflated every time the
amount was changed during a session. It's now computed against a fixed
baseline captured at dialog open, so it stays accurate throughout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 21:28:52 +02:00
Marcel PeterkauandClaude Sonnet 5 a5d9abd59a Allocate open claims and donations directly from the payment dialog
Recording a payment previously meant saving it bare, then separately
opening a claim to allocate money to it. Zahlung anlegen now lists a
member's open claims and donations right in the same dialog with a
select + amount field to assign parts of the payment on the spot, and a
"Neue Spende anlegen" button to create a donation inline and allocate to
it immediately -- covering members who pay more than the membership fee
in one transfer.

Shared the same allocation table in the existing payment-edit dialog so
editing a payment shows and preserves donation allocations too; before
this, saving an edited payment silently dropped any donation allocation
because update_payment only round-tripped claim allocations.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 21:22:08 +02:00
Marcel PeterkauandClaude Sonnet 5 42fb4c4224 Allow deleting claims, creating standalone payments, and add a donations tab
Claims could previously only be cancelled (stornieren), which blocks once a
payment is allocated. Add a hard delete that releases any linked
payments/credits back to being unallocated instead of destroying them.

Payments could only be created from within a claim, forcing immediate
allocation. Add a bare payment creation flow in the Zahlungen tab so
incoming transfers can be logged first and allocated later.

Add a per-member Spenden tab (donations, backed by a new donations list on
ContributionData) so amounts paid beyond the membership fee can be tracked
and existing free payments allocated to them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 21:02:51 +02:00
Git-CI a61ea3cb57 ci: bump dev version to 0.1.0-dev6 [skip ci] 2026-07-30 19:45:19 +02:00
Marcel Peterkau aa94145105 Merge pull request 'feature/payment-frequency-per-member' (#12) from feature/payment-frequency-per-member into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/12
Reviewed-by: Matcha <matcha@noreply.git.hiabuto.net>
2026-07-30 17:43:09 +00:00
Marcel Peterkau ade92bfe06 Merge branch 'dev' into feature/payment-frequency-per-member 2026-07-30 17:43:00 +00:00
Git-CI 6ac205feb8 ci: bump dev version to 0.1.0-dev5 [skip ci] 2026-07-30 19:42:52 +02:00
Marcel Peterkau 5bacc005f6 Merge branch 'dev' into feature/payment-frequency-per-member 2026-07-30 17:40:45 +00:00
Marcel Peterkau 539859d4c5 Merge pull request 'feat: add application date to members' (#11) from feature/application-date into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/11
Reviewed-by: Matcha <matcha@noreply.git.hiabuto.net>
2026-07-30 17:40:34 +00:00
Marcel Peterkau 7a0cdbc04e feat: add application date to members 2026-07-30 19:35:48 +02:00
Marcel Peterkau 6b62263706 Merge branch 'dev' into feature/payment-frequency-per-member 2026-07-30 17:31:49 +00:00
Marcel Peterkau ba3238e61a ui: move payment frequency to banking tab 2026-07-30 19:22:12 +02:00
Marcel Peterkau c3cdf71506 feat: add per-member payment frequencies 2026-07-30 19:17:26 +02:00
Git-CI e3f0a1df86 ci: bump dev version to 0.1.0-dev4 [skip ci] 2026-07-30 19:16:01 +02:00
Marcel Peterkau 6d9c50b148 Merge pull request 'feature/member-number-allocation-strategy' (#10) from feature/member-number-allocation-strategy into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/10
Reviewed-by: Matcha <matcha@noreply.git.hiabuto.net>
2026-07-30 17:13:53 +00:00
Marcel Peterkau 54cb413eff docs: add member numbering strategy to changelog 2026-07-30 19:08:11 +02:00
Marcel Peterkau cfd5de42f2 feat: configure member number allocation strategy 2026-07-30 19:07:18 +02:00
Git-CI 460dcac77c ci: bump dev version to 0.1.0-dev3 [skip ci] 2026-07-30 18:58:41 +02:00
Marcel Peterkau 2280a0c658 Merge pull request 'feature/sepa-direct-debit-export' (#6) from feature/sepa-direct-debit-export into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/6
Reviewed-by: Matcha <matcha@noreply.git.hiabuto.net>
2026-07-30 16:57:03 +00:00
Marcel Peterkau f14011efdc docs: describe SEPA and reminder mail features 2026-07-30 18:51:57 +02:00
Marcel Peterkau 060a5aea01 docs: remove temporary legacy claims tool 2026-07-30 18:48:50 +02:00
Marcel Peterkau fc4eacb591 feat: add reminder email drafts 2026-07-30 01:17:33 +02:00
Marcel Peterkau 3d3b845d9f feat: add SEPA direct debit exports and notifications 2026-07-30 01:00:32 +02:00
Git-CI f4c8ae4f35 ci: bump dev version to 0.1.0-dev2 [skip ci] 2026-07-24 19:11:39 +02:00
Marcel Peterkau 975cb47d3e Merge pull request 'fix: improve member list defaults and highlighting' (#5) from fix/member-list-defaults-and-highlights into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/5
Reviewed-by: Matcha <matcha@noreply.git.hiabuto.net>
2026-07-24 17:10:00 +00:00
Marcel Peterkau 9942e7aa22 fix: improve member list defaults and highlighting 2026-07-24 18:14:49 +02:00
Git-CI 68c24219ec ci: bump dev version to 0.1.0-dev1 [skip ci] 2026-07-22 23:51:07 +02:00
Marcel Peterkau 6a76c7b84b Merge pull request 'feat: extend inventory and administration workflows' (#4) from feature/inventory-and-admin-workflows into dev
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/4
Reviewed-by: Matcha <matcha@noreply.git.hiabuto.net>
2026-07-22 21:49:30 +00:00
Marcel Peterkau 7146615499 test: derive expected version from VERSION file 2026-07-22 23:48:39 +02:00
Marcel Peterkau dbae0ce29c docs: add upcoming 0.2.0 changelog 2026-07-22 23:15:21 +02:00
Marcel Peterkau 070684d9bc feat: extend inventory and administration workflows 2026-07-22 22:26:02 +02:00
Git-CI aeaaca1459 ci: bump dev version to 0.1.0-dev0 [skip ci] 2026-06-27 17:27:41 +02:00
Git-CI a1e22f29dd ci: release version 0.1.0 [skip ci] v0.1.0 2026-06-27 17:27:24 +02:00
Marcel Peterkau faf910d378 Merge pull request 'Release 1.0.0' (#3) from dev into main
Reviewed-on: https://git.hiabuto.net/C3MA/CCMA/pulls/3
2026-06-27 14:39:00 +00:00