mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-09-06 03:20:49 +02:00
Ask every member to check the data the club stores about them
The club has to keep its member data current, and until now that meant writing
to each member by hand. "Datenüberprüfung anfragen" in the members tab sends one
mail per member, each listing that member's own record: number, name, nickname,
birth date, contact data, address, status, member since, payment frequency, and
the bank details only for members who have any.
Two decisions the record itself forced:
A field with no value is printed as "(nicht hinterlegt)" rather than left out.
The point of the mail is to have gaps filled in, and a missing line is a gap
nobody sees.
The IBAN is masked down to its country code and last four digits. That is enough
to recognise the account, and it keeps a full account number out of a mail the
club sends to dozens of people at once.
Every member is listed as a recipient, with the live memberships that have an
address preselected -- a member who resigned at year's end may still need to
confirm their address, so the board can add them by hand. Members without an
address are skipped and reported instead of failing the run.
Delivery reuses the existing mail machinery: the configured delivery mode, one
SMTP/IMAP connection for the whole run, an archive copy in the member file, a
"data_review_email_sent" event, and the read-only guard before anything is
rendered. A member whose mail fails is reported as a warning and the run
continues -- one bad address must not stop a mailing to the whole club halfway
through. Because the run cannot be taken back, the recipient count is confirmed
once more before it starts.
Subject and text come from a new "Datenüberprüfung" template, editable like the
others, with {{data.sheet}} for the whole record and a {{#data}} block for a
layout of the board's own.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0252a0c0e3
commit
9e9bb7d668
@@ -185,8 +185,9 @@ is removed. A loop that is not closed in the same row is rejected.
|
||||
|
||||
## Mail templates
|
||||
|
||||
Every e-mail CCMA sends -- the welcome mail with its first invoice, dunning mails
|
||||
and SEPA pre-notifications -- is rendered from a plain text template. The shipped
|
||||
Every e-mail CCMA sends -- the welcome mail with its first invoice, dunning mails,
|
||||
SEPA pre-notifications and the data-review request -- is rendered from a plain text
|
||||
template. The shipped
|
||||
defaults are copied into the store's `templates/mail/` directory on first start
|
||||
and can be edited there or under Optionen -> E-Mail-Vorlagen. An existing file is
|
||||
never overwritten; a deleted one is restored from the shipped default.
|
||||
@@ -207,6 +208,31 @@ rejects unknown ones when saving. A line that contains nothing but placeholders
|
||||
which render empty (an optional hint, an empty list) is dropped, and
|
||||
`{{#claims}} ... {{/claims}}` repeats its content once per claim.
|
||||
|
||||
## Data-review mailing
|
||||
|
||||
"Datenüberprüfung anfragen" in the members tab asks members to check the data the
|
||||
club stores about them. Every member appears in the recipient list; preselected are
|
||||
the live memberships (accepted, active, suspended, resigned at year's end, honorary)
|
||||
that have an e-mail address. Members without one are skipped and reported.
|
||||
|
||||
Each recipient gets one mail listing their own record -- number, name, nickname,
|
||||
birth date, contact data, address, status, member since, payment frequency, and the
|
||||
bank details only for members who have any. A field with no value is printed as
|
||||
`(nicht hinterlegt)` so the gap is visible, and the IBAN is masked down to its
|
||||
country code and last four digits, which is enough to recognise the account.
|
||||
|
||||
The text comes from the `Datenüberprüfung` template. Besides the usual member and
|
||||
organization placeholders it offers `{{data.sheet}}` (the whole record, one field per
|
||||
line), `{{data.count}}`, `{{member.iban_masked}}`, and the repeat block
|
||||
`{{#data}}{{field.label}}: {{field.value}}{{/data}}` for a custom layout.
|
||||
|
||||
Delivery follows the configured e-mail mode (local `.eml` files, direct send, or
|
||||
IMAP drafts); the run is confirmed once more with the recipient count because it
|
||||
cannot be taken back. Every mail is archived below the member's
|
||||
`files/documents/Datenpruefung/` directory and logged as a `data_review_email_sent`
|
||||
event. A member whose mail fails is reported as a warning and the run continues with
|
||||
the rest.
|
||||
|
||||
## Read-only stores
|
||||
|
||||
The member store may be mounted read-only -- the encrypted volume holding the
|
||||
|
||||
Reference in New Issue
Block a user