Files
2026-07-02 08:18:00 +02:00

1.5 KiB

calc — Berechnung

Zweck: Wertet einen oder mehrere arithmetische bzw. logische Ausdrücke aus und schreibt die Ergebnisse als Kontextvariablen — über einen sicheren eigenen Parser (kein eval).

Parameter

Name Pflicht? Default Beschreibung
<var name="…" expr="…"/> ja (min. 1) Wiederholbar. name = Ziel-Kontextvariable, expr = Ausdruck (Fallback: Element-Text statt expr-Attribut).

Unterstützte Operatoren: + - * / %, == != < > <= >=, and/or/not (XML-freundliche Alternative zu &&/||/!). Funktionen: round(x, stellen), ceil, floor, abs, min, max, len, upper, lower, concat(...), ifelse(bedingung, dann, sonst). true/false werden zu 1/0. Dezimalkomma (1,50) wird toleriert.

Eingangswerte: Beliebige Kontextvariablen via {{platzhalter}} — sie werden vor dem Parsen aufgelöst.

Ausgangswerte: Jede <var> wird unter ihrem name in den Kontext geschrieben. Vorherige <var>-Zeilen sind in nachfolgenden sofort verfügbar. Bei Auswertungsfehler bricht der Task mit error ab.

<task type="calc" id="berechne">
  <var name="brutto"     expr="{{netto}} * 1.19" />
  <var name="rabatt"     expr="round({{brutto}} * {{rabatt_pct}} / 100, 2)" />
  <var name="endsumme"   expr="{{brutto}} - {{rabatt}}" />
  <var name="grosskunde" expr="{{endsumme}} > 10000" />
  <var name="info"       expr="concat('Endsumme: ', {{endsumme}}, ' EUR')" />
</task>