feat: add itemized claims and payments

This commit is contained in:
Marcel Peterkau
2026-06-21 18:20:55 +02:00
parent c717d6806b
commit 80d4d5ef90
12 changed files with 1049 additions and 6 deletions
+33
View File
@@ -8,6 +8,7 @@ from ccma.config import AppConfig
from ccma.domain.models import HousekeeperFinding, Member
from ccma.services.housekeeper import Housekeeper
from ccma.storage.repository import MemberRepository, RepositoryError
from ccma.ui.claim_tab import ClaimTab
from ccma.ui.dialogs import NewMemberDialog
from ccma.ui.icons import IconStore
from ccma.ui.member_tab import MemberTab
@@ -276,6 +277,7 @@ class MainWindow(ttk.Frame):
member_id,
on_close=lambda: self.tabs.close(key),
on_changed=self.refresh_overview,
on_open_claim=self.open_claim,
)
self.tabs.add(
key,
@@ -285,6 +287,37 @@ class MainWindow(ttk.Frame):
icon_name="account",
)
def open_claim(self, member_id: str, claim_id: str) -> None:
key = f"claim:{member_id}:{claim_id}"
if self.tabs.focus(key):
return
try:
_data, claim = self.repository.get_claim(member_id, claim_id)
except RepositoryError as exc:
messagebox.showerror("Forderung konnte nicht geöffnet werden", str(exc), parent=self)
return
tab = ClaimTab(
self.notebook,
self.repository,
member_id,
claim_id,
on_close=lambda: self.tabs.close(key),
on_changed=lambda: self._claim_changed(member_id),
)
self.tabs.add(
key,
tab,
str(claim.get("title") or "Forderung"),
image=self.icons.get("receipt", 16) or self.icons.get("file-document", 16),
icon_name="receipt",
)
def _claim_changed(self, member_id: str) -> None:
member_tab = self.tabs.tabs.get(f"member:{member_id}")
if isinstance(member_tab, MemberTab) and member_tab.winfo_exists():
member_tab.refresh()
self.refresh_overview()
def open_members(self) -> None:
key = "members"
if self.tabs.focus(key):