Commit Graph

17 Commits

Author SHA1 Message Date
Bastian Wagner
6eeaa3a624 Merge branch 'feature/cash-flow-presentation'
# Conflicts:
#	myteamwallet_frontend_modern/src/app/features/team/cashbox/cashbox.ts
#	myteamwallet_frontend_modern/src/app/features/team/overview/overview.spec.ts
#	myteamwallet_frontend_modern/src/app/features/team/overview/overview.ts
2026-08-02 09:49:30 +02:00
Bastian Wagner
26391b5b2c Merge branch 'feature/manager-guide' 2026-08-02 09:25:09 +02:00
Bastian Wagner
0e8ac74116 feat: add manager guide and contextual help 2026-08-02 09:22:16 +02:00
Bastian Wagner
f2e6704943 feat: use cash flow presentation in transaction histories 2026-08-01 20:58:22 +02:00
Bastian Wagner
41a557f2c9 test(overview): dedupe the MockChart test double into a shared helper
The vi.mock('chart.js', ...) MockChart class was copy-pasted verbatim
between chart-canvas.spec.ts and overview.spec.ts. Extract it to
shared/chart-canvas/testing/mock-chart.ts and import it via
vi.hoisted(async () => import(...)) in each spec, since vi.mock's
factory is hoisted above regular imports and can't reference a
plain top-level import.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 20:33:22 +02:00
Bastian Wagner
435b8d5c53 feat(overview): add KPI charts to team overview page
Adds three chart.js-backed KPI cards (Kassenstand-Verlauf, Einnahmen &
Ausgaben, Top-10 offene Beitraege) to the existing Uebersicht page,
consuming the new GET teams/:id/overview/stats endpoint via a new
TeamStatsApi service. Introduces a small reusable ChartCanvas shared
component that wraps the Chart.js instance lifecycle via @Input()/
ngOnChanges, following this codebase's existing input-decorator
convention rather than effect().

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 20:21:50 +02:00
Bastian Wagner
5dae4362b2 feat(cashbox): book a catalog penalty directly as a transaction
Adds a catalog picker to the member-booking form in the cashbox (prefills
amount/note/type, stays editable) and a "Buchen" button on each penalty
catalog entry that jumps to the cashbox with that entry preselected via a
penaltyId query param. No backend changes — reuses the existing POST
/transactions flow, the catalog only supplies starting values.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 18:50:58 +02:00
Bastian Wagner
3551641a85 feat(teams): manage player active status and team-role with treasurer safeguard
Team managers (captain and above) can now deactivate/reactivate a player and
change their team-role from the player detail page. Deactivation zeroes the
open balance via an auditable adjustment transaction instead of overwriting
the balance field, and both actions are blocked if they would leave a team
without an active treasurer. Also hardens the existing PUT teams/:id/players
endpoint down to profile-only fields, fixing a typo bug and closing a gap
where any authenticated user could mutate a player's active/role/balance in
any team.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 15:42:09 +02:00
Bastian Wagner
c7dfdd7498 fix: address penalty catalog review findings 2026-08-01 14:46:58 +02:00
Bastian Wagner
fa05e55d43 feat: manage penalty catalog in modern frontend 2026-08-01 13:32:22 +02:00
Bastian Wagner
e3bff40181 Merge branch 'feature/admin-user-management' 2026-08-01 11:50:27 +02:00
Bastian Wagner
484c7473fb feat: add admin user frontend contract 2026-08-01 09:17:57 +02:00
Bastian Wagner
81040efd8b css 2026-07-31 22:34:52 +02:00
Bastian Wagner
e722d9e26b css 2026-07-31 22:28:57 +02:00
Bastian Wagner
e5ba292815 scss 2026-07-31 22:12:38 +02:00
Bastian Wagner
1d4546d483 styling 2026-07-31 22:01:09 +02:00
Bastian Wagner
6bea4f766a first commit 2026-07-31 21:02:47 +02:00