mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-08-25 23:15:18 +02:00
feat: add itemized claims and payments
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user