mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-09-06 03:20:49 +02:00
Send new members a welcome mail that doubles as their first invoice
Accepting a member left the board writing the "welcome, you are a member from
the 1st, and this is what it costs" mail by hand. The member file now offers it
directly: it greets the member, names the membership number and the start of the
membership, and lists every claim that is still open -- admission fee and first
contribution -- with a payment hint that adapts to whether a direct debit
mandate is active.
"Mitglied seit" rejects future dates, so a member accepted this month cannot
carry their actual start date yet; {{membership.start_date}} therefore falls
back to the 1st of the month following the acceptance decision. Individual
claims can be deselected before sending, the finished mail can be previewed,
and the result is archived in the member file like every other generated mail.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d6cd58a788
commit
aa0c16347b
@@ -38,6 +38,7 @@ from ccma.ui.labels import display_label, storage_key
|
||||
from ccma.ui.messages import MessageAction, MessageBannerList, TabMessage
|
||||
from ccma.ui.payment_dialog import PaymentCreateDialog, PaymentEditDialog
|
||||
from ccma.ui.scrolling import ScrollableFrame
|
||||
from ccma.ui.welcome_mail_dialog import WelcomeMailDialog
|
||||
|
||||
# Shared column sizing for the ledger-style tables (Forderungen/Zahlungen/Spenden): date-
|
||||
# and amount-like columns get the same fixed width, status columns get a third more
|
||||
@@ -355,6 +356,13 @@ class MemberTab(ttk.Frame):
|
||||
self.claims.grid(row=1, column=0, sticky="nsew")
|
||||
self.claims.bind("<Double-1>", lambda _event: self._open_selected_claim())
|
||||
self.claims.bind("<Return>", lambda _event: self._open_selected_claim())
|
||||
claim_actions = ttk.Frame(contribution_tab)
|
||||
claim_actions.grid(row=2, column=0, sticky="e", pady=(8, 0))
|
||||
ttk.Button(
|
||||
claim_actions,
|
||||
text="Willkommens- und Erstrechnungsmail",
|
||||
command=self._send_welcome_mail,
|
||||
).pack(side="left")
|
||||
|
||||
contribution_override_tab.columnconfigure(0, weight=1)
|
||||
contribution_override_tab.rowconfigure(1, weight=1)
|
||||
@@ -1177,6 +1185,14 @@ class MemberTab(ttk.Frame):
|
||||
except OSError as exc:
|
||||
messagebox.showerror("Datei konnte nicht geöffnet werden", str(exc), parent=self)
|
||||
|
||||
def _send_welcome_mail(self) -> None:
|
||||
WelcomeMailDialog(self, self.repository, self.member_id, self._welcome_mail_sent)
|
||||
|
||||
def _welcome_mail_sent(self) -> None:
|
||||
self._refresh_documents()
|
||||
self._refresh_events()
|
||||
self.on_changed()
|
||||
|
||||
def _create_document(self) -> None:
|
||||
DocumentTemplateDialog(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user