Bedingungen & Logik

If-, Case- und verschachtelte Logikmuster.

Mit If() und Case() bilden Sie Preislogik, Materialumschalter und optionale Komponenten direkt in Formeln ab.

Grundform von If()

If(Bedingung; WertWennWahr; WertWennFalsch)

Beispiele:
If($width > 1000; $width * 1.1; $width)  → 10 % Aufschlag für breite Ausführungen
If($material == "steel"; 7.85; 2.7)      → Dichte je Material

Verschachtelte Bedingungen

Mehrstufige Regeln lassen sich über verschachtelte If()-Aufrufe aufbauen, etwa für Staffelpreise oder Abhängigkeiten vom Material.

If($width > 2000;
  $width * 1.2;
  If($width > 1000;
    $width * 1.1;
    $width
  )
)   → Staffelpreis

Case für mehrere Verzweigungen

Case() prüft die Bedingungen der Reihe nach und liefert den Wert der ersten wahren. Die Argumente kommen paarweise als Bedingung;Wert, ein optionales letztes Argument ist der Standardwert, wenn keine Bedingung zutrifft.

Case(Bedingung1; Wert1; Bedingung2; Wert2; ...; Standard)

Die Bedingungen werden der Reihe nach geprüft; Case liefert den Wert der ersten wahren Bedingung.
Das letzte Argument ist der Standardwert, wenn keine Bedingung zutrifft (ohne ihn liefert Case 0).
Jede Bedingung ist ein Vergleich (zum Beispiel $Profile = "Milan"), kein bloßer Wert.

Beispiel:
Case($Profile = "Milan"; 13; $Profile = "Milan Slim"; 12; 0)
→ 13 bei $Profile "Milan", 12 bei "Milan Slim", sonst 0

Jede Bedingung in Case() ist ein Vergleich, zum Beispiel $Profile == "Milan". Case vergleicht das erste Argument nicht mit den folgenden Werten: Ein nicht leerer Text an der Stelle einer Bedingung gilt als wahr, und Case liefert den falschen Zweig.

Typische Muster

  • Aufschlag: If($width > 1000; $price * 1.1; $price)
  • Materialfaktor: If($material == "steel"; 7.85; 2.7)
  • Mindestens 1: max($count; 1)
  • Sichere Division: If($d != 0; $v / $d; 0)
  • Optionale Komponente: If($hasDoor == 1; $doorPrice; 0)
  • Mehrere Zweige: Case($Profile = "Milan"; 13; $Profile = "Milan Slim"; 12; 0) — Auswahl nach Profilname.

Zu tief verschachtelte If()-Ketten werden schwer lesbar. Nutzen Sie Case() oder teilen Sie die Logik in mehrere Berechnungszeilen auf.