# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.neonlines.de/artikel-konfigurator/grundlegendes/preisberechnung-and-gewichtsberechnung/formel-beispiele.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
