mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-08-26 07:15:20 +02:00
feat: add member address and SEPA data
This commit is contained in:
@@ -42,6 +42,16 @@ class OptionsDialog(tk.Toplevel):
|
||||
self.manual_numbers_var = tk.BooleanVar(value=number_policy["mode"] == "manual")
|
||||
self.number_pattern_var = tk.StringVar(value=number_policy["pattern"])
|
||||
self.number_preview_var = tk.StringVar()
|
||||
organization = repository.get_configuration().get("organization") or {}
|
||||
if not isinstance(organization, dict):
|
||||
organization = {}
|
||||
self.organization_vars = {
|
||||
key: tk.StringVar(value=str(organization.get(key, "")))
|
||||
for key in (
|
||||
"name", "street", "postal_code", "city", "country", "email", "phone",
|
||||
"website", "iban", "bic", "creditor_id",
|
||||
)
|
||||
}
|
||||
self.title("Optionen")
|
||||
self.geometry("900x650")
|
||||
self.minsize(760, 540)
|
||||
@@ -65,16 +75,19 @@ class OptionsDialog(tk.Toplevel):
|
||||
paths = ttk.Frame(notebook, padding=16)
|
||||
appearance = ttk.Frame(notebook, padding=16)
|
||||
member_numbers = ttk.Frame(notebook, padding=16)
|
||||
organization = ttk.Frame(notebook, padding=16)
|
||||
automation = ttk.Frame(notebook, padding=16)
|
||||
changelog = ChangelogView(notebook)
|
||||
notebook.add(paths, text="Pfade")
|
||||
notebook.add(appearance, text="Darstellung")
|
||||
notebook.add(member_numbers, text="Mitgliedsnummern")
|
||||
notebook.add(organization, text="Verein / Absender")
|
||||
notebook.add(automation, text="Hausmeister")
|
||||
notebook.add(changelog, text="Changelog")
|
||||
self._build_paths(paths)
|
||||
self._build_appearance(appearance)
|
||||
self._build_member_numbers(member_numbers)
|
||||
self._build_organization(organization)
|
||||
self._build_automation(automation)
|
||||
|
||||
buttons = ttk.Frame(root)
|
||||
@@ -148,6 +161,27 @@ class OptionsDialog(tk.Toplevel):
|
||||
style="Muted.TLabel",
|
||||
).grid(row=1, column=1, sticky="w")
|
||||
|
||||
def _build_organization(self, parent: ttk.Frame) -> None:
|
||||
parent.columnconfigure(1, weight=1)
|
||||
fields = (
|
||||
("Vereinsname", "name"),
|
||||
("Straße und Hausnummer", "street"),
|
||||
("Postleitzahl", "postal_code"),
|
||||
("Ort", "city"),
|
||||
("Land", "country"),
|
||||
("E-Mail-Adresse", "email"),
|
||||
("Telefonnummer", "phone"),
|
||||
("Webseite", "website"),
|
||||
("IBAN", "iban"),
|
||||
("BIC", "bic"),
|
||||
("SEPA-Gläubiger-ID", "creditor_id"),
|
||||
)
|
||||
for row, (label, key) in enumerate(fields):
|
||||
ttk.Label(parent, text=label).grid(row=row, column=0, sticky="w", padx=(0, 12), pady=5)
|
||||
ttk.Entry(parent, textvariable=self.organization_vars[key], width=48).grid(
|
||||
row=row, column=1, sticky="ew", pady=5
|
||||
)
|
||||
|
||||
def _build_automation(self, parent: ttk.Frame) -> None:
|
||||
parent.columnconfigure(1, weight=1)
|
||||
ttk.Checkbutton(
|
||||
@@ -350,6 +384,9 @@ class OptionsDialog(tk.Toplevel):
|
||||
try:
|
||||
self.config_obj.save()
|
||||
self.repository.save_member_number_policy(mode=number_mode, pattern=number_pattern)
|
||||
self.repository.save_organization(
|
||||
{key: variable.get() for key, variable in self.organization_vars.items()}
|
||||
)
|
||||
except (OSError, RepositoryError) as exc:
|
||||
messagebox.showerror("Optionen konnten nicht gespeichert werden", str(exc), parent=self)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user