# Formel-Beispiele

## Preisberechnungen

Der max-Operator wählt aus einer Liste immer den größten Wert aus. Im folgenden Szenario werden die Quadratmeter (berechnet in einer Zwischenberechnung) mit dem Produktpreis multiplziert. Durch den max-Operator wird der Preis niemals kleiner als 49.99.

{% tabs %}
{% tab title="Profimodus" %}

```json
{"max":[
  49.99,
  {"*":[
    {"var":"calculations.quadratmeter"},
    {"var":"product.price"}
  ]}
]}
```

{% endtab %}
{% endtabs %}

## Flächenberechnungen

{% hint style="info" %}
Annahme: Zwei Felder: Länge (length) und Breite (width).

Eingabe in cm
{% endhint %}

### Länge x Breite

{% tabs %}
{% tab title="Einfacher Modus" %}

```javascript
fields.laenge.value * fields.breite.value
```

{% endtab %}

{% tab title="Profimodus" %}

```json
{"*":[
  {"var":"fields.hoehe.value"},
  {"var":"fields.breite.value"}
]}
```

{% endtab %}
{% endtabs %}

### Länge x Breite und Umrechnung in m²

{% tabs %}
{% tab title="Einfacher Modus" %}

```javascript
(fields.laenge.value * fields.breite.value) / 10000
```

{% endtab %}

{% tab title="Profimodus" %}

```json
{"/":[
  {"*":[
    {"var":"fields.hoehe.value"},
    {"var":"fields.breite.value"}
  ],
  10000
}
```

{% endtab %}
{% endtabs %}

### Länge x Breite und Umrechnung in m², Wert darf nicht kleiner sein als 0,5m²

Der max-Operator nimmt den größeren der beiden Werte, in diesem Beispiel entweder 0.5 oder das Ergebnis der Berechnung.&#x20;

**Beispiel I**

* Kundeneingabe Länge (cm): 10, Breite (cm): 10
* Ergebnis in m²: 0.01  m²
* Ergebnis der Formel: 0.5, da der max-Operator den größeren Wert auswählt

**Beispiel II** &#x20;

* Kundeneingabe Länge (cm): 100, Breite (cm): 60
* Ergebnis in m²: 0.6  m²
* Ergebnis der Formel: 0.6, da der max-Operator den größeren Wert auswählt.

{% tabs %}
{% tab title="Profimodus" %}

```json
{"max":[
  0.5,
  {"/":[
    {"*":[
      {"var":"fields.hoehe.value"},
      {"var":"fields.breite.value"}
    ],
    10000
  }
]}
```

{% endtab %}
{% endtabs %}

### Länge x Breite und Umrechnung in m², Wert darf nicht größer sein als 0,5m²

Der min-Operator nimmt den kleinsten der beiden Werte, in diesem Beispiel entweder 0.5 oder das Ergebnis der Berechnung.&#x20;

**Beispiel I**

* Kundeneingabe Länge (cm): 10, Breite (cm): 10
* Ergebnis in m²: 0.01  m²
* Ergebnis der Formel: 0.01, da der min-Operator den kleinsten Wert auswählt

**Beispiel II** &#x20;

* Kundeneingabe Länge (cm): 100, Breite (cm): 60
* Ergebnis in m²: 0.6  m²
* Ergebnis der Formel: 0.5, da der min-Operator den kleinsten Wert auswählt.

{% tabs %}
{% tab title="Profimodus" %}

<pre><code><strong>{"min":[
</strong><strong>  0.5,
</strong><strong>  {"/":[
</strong>    {"*":[
      {"var":"fields.hoehe.value"},
      {"var":"fields.breite.value"}
    ],
    10000
  }
]}

</code></pre>

{% endtab %}
{% endtabs %}

## Validierungen / Sichtbarkeitssteuerung

Bei Validierungen / Sichbarkeitssteuerungen wird muss immer ein bool'scher Wert (wahr / falsch) zurückgeliefert werden.

### Prüfung, ob bestimmter Werte eines Mehrfachauswahlfeldes gewählt wurden

Hier wird geprüft, ob "rechts" im Feld mit dem Schlüsselwert "seiten" gewählt wurde

{% tabs %}
{% tab title="Profimodus" %}

<pre class="language-json"><code class="lang-json">{"in":[
<strong>  "rechts", 
</strong>  {"map":[{"var":"fields.seiten.value"}, {"var":"value"}]}
]}
</code></pre>

{% endtab %}
{% endtabs %}

### Prüfung, ob einer von zwei Werten eines Mehrfachauswahlfeldes gewählt wurde

Hier wird geprüft, ob "rechts" oder "links" im Feld mit dem Schlüsselwert "seiten" gewählt wurde

{% tabs %}
{% tab title="Profimodus" %}

```json
{"or":[
  {"in":[
    "rechts", 
    {"map":[{"var":"fields.seiten.value"}, {"var":"value"}]}
  ]},
  {"in":[
    "links", 
    {"map":[{"var":"fields.seiten.value"}, {"var":"value"}]}
  ]}
]}
```

{% endtab %}
{% endtabs %}

### Prüfung, ob exakt zwei Werte eines Mehrfachauswahlfeldes gewählt wurde

Hier wird geprüft, ob "rechts" UND "links" im Feld mit dem Schlüsselwert "seiten" gewählt wurde

{% tabs %}
{% tab title="Profimodus" %}

```json
{"and":[
  {"in":[
    "rechts", 
    {"map":[{"var":"fields.seiten.value"}, {"var":"value"}]}
  ]},
  {"in":[
    "links", 
    {"map":[{"var":"fields.seiten.value"}, {"var":"value"}]}
  ]}
]}
```

{% endtab %}
{% endtabs %}

### Prüfung, ob Wert innerhalb eines Bereichs liegt

{% tabs %}
{% tab title="Einfacher Modus" %}

```
fields.breite.value >= 20 && fields.breite.value <= 1500
```

{% endtab %}

{% tab title="Profimodus" %}

```json
{"and":[
    {">=":[{"var":"fields.breite.value"}, 20]},
    {"<=":[{"var":"fields.breite.value"}, 2000]}
]}
```

{% endtab %}
{% endtabs %}
