Zum Hauptinhalt springen

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.

Beispielcharakter

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:

  1. Der Versandmodus der Sparte bestimmt die Voreinstellung (Einzelversand → Postversand, Paketversand → Abteilungsversand).
  2. Die Mitgliedsart entscheidet, ob überhaupt versendet wird.
  3. Ist Onlineversand gewählt, wird bei gültiger E-Mail auf Onlineversand umgestellt – sonst kommt ein Fehler und das Speichern wird verhindert.
  4. 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)TypWerte / Hinweis
MitgliedsartAuswahlVollmitglied, Ehrenmitglied, Gesellschaft (+ eigene)
OnlineVersandJa/Nein (Checkbox)Online gewünscht?
VersandartAuswahl (oder Text)Kein Versand, Postversand, Abteilungsversand, Onlineversand – Ergebnisfeld
VersandManuellJa/Nein (Checkbox)Admin-Override: wenn gesetzt, rechnet das Script nicht

Bei der Sparte (Verwaltung → Optionen → Verein → Eigene Felder der Sparte):

Feldname (technisch)TypWerte
VersandmodusAuswahlEinzelversand, Paketversand
Namen und Werte müssen exakt passen

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 → changed
  • OnlineVersand → changed
  • Email → 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.
  • VersandManuell umschließ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.

Verwandte Themen​