Beispiel: Versandsteuerung per Script
Diese Seite zeigt an einem durchgängigen Beispiel, wie sich mit Maskendesigner-Scripts eine mehrstufige Logik umsetzen lässt: Sie kombiniert Eigenfelder des Mitglieds und Eigenfelder der Sparte und berechnet daraus automatisch die Versandart.
Der konkrete Ablauf hier ist auf einen bestimmten Verein zugeschnitten. Nehmen Sie ihn als Vorlage und passen Sie Feldnamen, Auswahlwerte und Regeln an Ihre Bedürfnisse an. Voraussetzung ist Netxp:Verein Pro.
Was das Beispiel tut
Beim Öffnen und bei jeder relevanten Änderung wird die Versandart des Mitglieds automatisch gesetzt:
- Der Versandmodus der Sparte bestimmt die Voreinstellung (Einzelversand → Postversand, Paketversand → Abteilungsversand).
- Die Mitgliedsart entscheidet, ob überhaupt versendet wird.
- Ist Onlineversand gewählt, wird bei gültiger E-Mail auf Onlineversand umgestellt – sonst kommt ein Fehler und das Speichern wird verhindert.
- Ein Admin-Kennzeichen kann die Automatik ausschalten (manuelle Vorgabe).
Bei Mitgliedern in mehreren Sparten gilt: Paketversand, sobald irgendeine aktive Sparte auf Paketversand steht.
Schritt 1 – Eigene Felder anlegen
Beim Mitglied (Verwaltung → Optionen → Mitglieder → Eigene Felder):
| Feldname (technisch) | Typ | Werte / Hinweis |
|---|---|---|
Mitgliedsart | Auswahl | Vollmitglied, Ehrenmitglied, Gesellschaft (+ eigene) |
OnlineVersand | Ja/Nein (Checkbox) | Online gewünscht? |
Versandart | Auswahl (oder Text) | Kein Versand, Postversand, Abteilungsversand, Onlineversand – Ergebnisfeld |
VersandManuell | Ja/Nein (Checkbox) | Admin-Override: wenn gesetzt, rechnet das Script nicht |
Bei der Sparte (Verwaltung → Optionen → Verein → Eigene Felder der Sparte):
| Feldname (technisch) | Typ | Werte |
|---|---|---|
Versandmodus | Auswahl | Einzelversand, Paketversand |
Der Script-Code spricht die Felder über den technischen Feldnamen an und
vergleicht die Auswahl gegen wortgleiche Texte (Groß-/Kleinschreibung
zählt). Paketversand im Feld muss also genau Paketversand im Script sein.
Schritt 2 – Felder auf die Maske ziehen
Im Maskendesigner die vier Mitglieds-Felder und das
Standardfeld E-Mail auf die Mitgliedermaske legen. Für Versandart das
Bearbeitungsverhalten „ImmerGesperrt" setzen (Ergebnisfeld, nicht von Hand
änderbar). Versandmodus gehört auf die Sparten-Maske.
Schritt 3 – Script an den Events hinterlegen
Denselben Code (Schaltfläche Scripts im Designer) an alle folgenden Ereignisse hängen, damit er in jeder Situation neu rechnet:
- Formular (global) →
load Mitgliedsart→changedOnlineVersand→changedEmail→changed(damit eine korrigierte E-Mail den Fehler aufhebt)VersandManuell→changed
var manuell = form.getValue("OwnField:VersandManuell") === true;
if (!manuell) {
// 1) Versandmodus aus den Sparten: Paketversand, sobald IRGENDEINE
// aktive Sparte Paketversand ist.
var sparten = data.getSparten();
var paket = false;
for (var i = 0; i < sparten.length; i++) {
if (sparten[i].aktiv && sparten[i].feld("Versandmodus") === "Paketversand") {
paket = true;
}
}
var standard = paket ? "Abteilungsversand" : "Postversand";
// 2) Mitgliedsart -> Versand überhaupt aktiv?
var art = form.getValue("OwnField:Mitgliedsart");
var aktiv = (art === "Vollmitglied" || art === "Ehrenmitglied" || art === "Gesellschaft");
// 3) Standard-Versandart
var versandart = aktiv ? standard : "Kein Versand";
// 4) Online-Option (nur bei aktivem Versand)
form.clearError("OwnField:OnlineVersand");
if (aktiv && form.getValue("OwnField:OnlineVersand") === true) {
if (util.isValidEmail(form.getValue("Email"))) {
versandart = "Onlineversand";
} else {
form.setError("OwnField:OnlineVersand",
"Für Onlineversand ist eine gültige E-Mail-Adresse nötig.");
}
}
form.setValue("OwnField:Versandart", versandart);
}
Wie die Logik zusammenspielt
- Die Reihenfolge steckt im Script: Mitgliedsart → Standard aus den Sparten → Online-Option → Ergebnis.
VersandManuellumschließt alles: Ist es gesetzt, wird gar nichts automatisch verändert (Admin-Vorgabe gewinnt).- Online greift nur bei aktivem Versand – deshalb steht die Online-Prüfung hinter der Mitgliedsart-Prüfung.
form.setError(...)blockiert automatisch das Speichern, bis eine gültige E-Mail vorliegt oder die Online-Option wieder aus ist.
Grenzen
Dieses Script läuft nur für das gerade geöffnete Mitglied. Für einen jährlichen Massenlauf über viele Mitglieder braucht es einen separaten Vorgang mit derselben Regel – das Script ersetzt ihn nicht.