Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MeinVLN-Vorlagen — TG-Vorlagensystem
Self-Service-Word-Vorlagen für Teilnehmergemeinschaften (TG) im MeinVLN-Portal
(https://mein.vlnsachsen.de, Modul 0_meinvln/vorlagen/).
Mit dem Modul erzeugen TG und Verband aus DOCX-Vorlagen fertige Briefe und Dokumente – mit automatisch eingesetzten Stammdaten, eigenen Eingabefeldern, QR-/GiroCodes, verknüpften Kopf-/Fußbausteinen und Serienbrief-Funktion. Ausgabe als DOCX oder PDF.
Sinn & Zweck
Jede Teilnehmergemeinschaft schreibt immer wieder dieselben Standarddokumente (Anschreiben, Vereinbarungen, Bescheide …). Bisher hieß das: Word-Datei suchen, Adressen und Namen von Hand eintragen, Tippfehler riskieren.
Das TG-Vorlagensystem dreht das um:
- Der Verband stellt geprüfte Standardvorlagen zentral bereit (globale Vorlagen) – jede TG sieht sie automatisch.
- Jede TG pflegt zusätzlich ihre eigenen Vorlagen und kann eine globale Vorlage bei Bedarf durch eine eigene Fassung ersetzen (Override).
- Stammdaten werden automatisch eingesetzt: TG-Adresse, Vorsitz, Ansprechpartner, Datum usw. müssen nie wieder abgetippt werden.
- Beim Erzeugen fragt das System nur noch die wirklich variablen Werte ab und liefert das fertige Dokument als DOCX oder PDF.
Das Modul liefert dabei nur Oberfläche, Speicherung und die TG-Standardplatzhalter – das
eigentliche Befüllen, Verknüpfen, die DOCX→PDF-Wandlung und der Serienbrief laufen über die
bestehende Word-Engine require/require-word.php (PHPWord).
Rollen / Wer darf was
| Rolle | Rechte |
|---|---|
Verbandsmitarbeiter (is_verbandsmitarbeiter()) |
verwaltet die globalen Vorlagen für alle TGen; die TG-Auswahl dient nur als Datenkontext zum Testen |
TG-Vorsitz / Sachbearbeiter (is_tg() + tg_access(vkz)) |
pflegt eigene Vorlagen und kann globale Vorlagen durch eigene Fassungen überschreiben |
Arten von Vorlagen
Geltungsbereich (scope)
global– vom Verband bereitgestellt, für alle TGen sichtbar.tg– eigene Vorlage einer einzelnen TG.- Override – eine eigene TG-Vorlage ersetzt gezielt eine globale (
override_of).
Die effektive Vorlagenliste einer TG = globale Vorlagen (ohne überschriebene) + eigene Vorlagen.
Typ (typ)
einzel– eigenständige Vorlage.teil– Baustein (z. B. Kopf-/Fußzeile) zum Einbetten oder Anhängen.master– verknüpfte Vorlage, die Bausteine einbettet oder aneinanderhängt (siehe Verknüpfte Vorlagen).
Die DOCX-Dateien selbst liegen im zentralen Dateisystem (Ordner <VKZ>/Vorlagen bzw.
0/Vorlagen für globale); in der Datenbank (TG_VORLAGE) stehen nur die Metadaten.
Platzhalter
Im Word-Dokument werden Platzhalter als Text in der Form ${NAME} geschrieben. Beim Erzeugen
ersetzt das System sie durch die passenden Werte.
Automatisch befüllt (Standardplatzhalter)
TG-Stammdaten
${TG_NAME} · ${TG_KURZ} · ${TG_VKZ} · ${TG_STRASSE} · ${TG_PLZ} · ${TG_ORT} ·
${TG_PLZORT} · ${TG_TELEFON} · ${TG_FAX} · ${TG_MAIL} · ${TG_ADRESSE}
Personenrollen – je Rolle derselbe Feldsatz
_ANREDE, _ANREDEKOMPLETT, _NAME, _VORNAME, _NACHNAME, _MAIL, _TELEFON, _MOBIL,
_DURCHWAHL, _FUNKTION, kombiniert mit:
| Präfix | Person |
|---|---|
VORSITZ_… |
Vorsitz der TG |
STELLV1_… / STELLV2_… |
1. / 2. Stellvertretung |
ANSPRECH_… |
Ansprechpartner |
NUTZER_… |
aktuell angemeldete:r Benutzer:in |
Beispiel: ${VORSITZ_NACHNAME}, ${ANSPRECH_MAIL}, ${NUTZER_FUNKTION}.
Datum/Zeit (Zeitzone Europe/Berlin)
${HEUTE} · ${HEUTE_LANG} · ${WOCHENTAG} · ${TAG} · ${MONAT} · ${JAHR} · ${UHRZEIT}
Eingabe beim Erzeugen
- Freie Platzhalter – jeder weitere
${X}im Dokument wird beim Erzeugen automatisch als Eingabefeld angeboten. - Eigene (typisierte) Felder – im „Bearbeiten"-Dialog lassen sich Felder mit Label und Typ
definieren (
text,zahl,selectmit Auswahlwerten). Sie werden im Erzeugen-Dialog typgerecht gerendert. Der Button „Aus Dokument" liest die erkannten freien${…}aus und legt passende Feldzeilen an.
Bild-Platzhalter (QR / Barcode / GiroCode)
Auch als Text ${NAME} ins Dokument schreiben – beim Erzeugen wird der Platzhalter durch
das erzeugte Bild ersetzt:
| Platzhalter | Inhalt |
|---|---|
${QRCODE} |
beliebiger QR-Code |
${BARCODE} |
Strichcode |
${GIROCODE} |
SEPA-Überweisungs-QR (EPC069-12, ECC-Level M) mit IBAN/BIC/Betrag/Verwendung |
Registriert werden sie pro Vorlage über settings.bilder; die konkreten Werte (z. B. Betrag,
Verwendungszweck) erfasst der Erzeugen-Dialog.
Verknüpfte Vorlagen
Eine master-Vorlage kann Bausteine (teil) zusammenführen:
- Einbetten – die Master-DOCX enthält
${KOPF}/${FUSS}; die gefüllten Bausteine werden an diese Stellen eingebettet (mit LibreOffice-Round-Trip für Word-Strict-Konformität). - Merge – mehrere Teil-Vorlagen werden jeweils gefüllt und dann aneinandergehängt.
So lassen sich z. B. einheitliche Kopf-/Fußzeilen einmal pflegen und in vielen Vorlagen wiederverwenden.
Serienbrief
Ein Dokument für viele Empfänger aus einer Tabelle:
- XLSX hochladen (wird nur transient verarbeitet, nicht dauerhaft gespeichert).
- Spalten → Platzhalter zuordnen.
- Ausgabe als ZIP (einzelne Dateien), DOCX (Sammeldokument) oder PDF.
Die TG-Standardplatzhalter bleiben dabei für alle Zeilen konstant, die zugeordneten Spalten variieren je Empfänger.
Bild-Platzhalter je Zeile lassen sich an XLSX-Spalten binden – typischer Fall Beitragsbescheid: jeder Empfänger erhält einen GiroCode mit individuellem Betrag und Verwendungszweck, während IBAN/BIC fester Default bleiben. Beträge werden robust geparst (deutsche „1.234,56" wie englische „1234.56").
Alt-Vorlagen mit Feldfunktionen (MACROBUTTON)
Der historische VLN-Vorlagenbestand nutzt MACROBUTTON-Feldfunktionen mit Anzeigetext
[ Label ] statt ${…}. Diese werden von der Engine nicht erkannt und müssen vor dem
Einsatz in echte ${…}-Platzhalter umgewandelt werden.
Beim Hochladen erkennt das System solche Feldfunktionen automatisch und öffnet einen
Konvertier-Dialog: Da die Labels oft mehrdeutig sind (viele [ Name ] für
TG/Bauträger/Vorsitz …), erfolgt die Zuordnung kontextbezogen Feld für Feld. Die konvertierte
DOCX ersetzt die alte; Nicht-Standard-Felder werden direkt als eigene Felder hinterlegt.
Beispiel im Ordner
beispiel/:Finanzierungsvereinbarung_Kostenbeteiligung_TG.docx(58 Body- + 4 Kopfzeilenfelder → 28 Platzhalter).
Ausgabe & Download
- Erzeugen und Serienbrief liefern eine fertige Datei zum Download (Streaming mit
Content-Disposition, temporäre Dateien werden danach aufgeräumt). - DOCX → PDF über LibreOffice (
soffice) im Container. - Rohvorlage herunterladen – die gespeicherte, unbefüllte DOCX (mit
${…}-Platzhaltern) lässt sich herunterladen, in Word anpassen und wieder hochladen. - Downloads laufen ohne
target="_blank"(PWA-Geisterfenster-Falle).