Für Bedingungen, Mappings und Berechnungen nutzt DEPLAW FEEL (Friendly Enough Expression Language). Grundsätzlich stehen alle Standard-FEEL-Funktionen zur Verfügung. In den Header-Feldern von ServiceTasks kommen zusätzlich die folgenden DEPLAW-spezifischen Funktionen hinzu.

Weil in DEPLAW jede Variable eine Zeichenkette ist, folgt fast jede Berechnung demselben Muster: in eine Zahl umwandeln, rechnen, wieder als Text formatieren.

STRING "1.234,50 €" bigDecimal() ZAHL · rechnen 1234.5 euro() STRING "1.234,50 €"

Merkmuster: bigDecimal(...) macht aus dem Text eine Zahl, mit der Sie rechnen; euro(...) formatiert das Ergebnis wieder als Euro-String für Schreiben und Platzhalter.

Funktionsübersicht

Funktion Kategorie Zweck
bigDecimal(x) Konvertierung String → Zahl (rundungssicher)
euro(x) Konvertierung Zahl → Euro-String
parseDate(x) Konvertierung Datum zwischen DE- und ISO-Format umwandeln
parseToJson(x) Konvertierung JSON-String → JSON-Objekt
toBoolean(x) Konvertierung Wahrheitswert → "Ja" / "Nein"
isNullOrEmpty(x) Prüfung leer oder nicht gesetzt?
isDate(x, code) Prüfung gültiges Datum im Format de/en?
isNumber(x) Prüfung gültige Zahl?
sortJsonTable(...) Tabelle Zeilen eines Tabellen-JSON sortieren
jsonToHtmlTable(...) Tabelle Tabellen-JSON → HTML-Tabelle
getDunningNoticeCatalogDescription(x) Fachlich Mahnbescheid-Katalognummer → Beschreibung
calcRVGwithDate(...) Fachlich RVG-Gebühren berechnen
calcGKGwithDate(...) Fachlich GKG-Gebühren berechnen

Konvertierung und Formatierung

bigDecimal(X) — Wandelt eine Zeichenkette (auch Euro-Werte) rundungssicher in eine Zahl um.

FORDERUNG_BEZAHLT = "13,34 €"
bigDecimal(FORDERUNG_BEZAHLT)   → 13.34

euro(X) — Wandelt eine Zahl in einen Euro-Wert (Zeichenkette) um.

FORDERUNG_BEZAHLT = 13.34
euro(FORDERUNG_BEZAHLT)         → "13,34 €"

parseDate(X) — Wandelt ein Datum zwischen deutschem und ISO-Format um (in beide Richtungen).

parseDate("01.03.2022")         → "2022-03-01"
parseDate("2022-03-01")         → "01.03.2022"

parseToJson(X) — Wandelt einen JSON-String in ein JSON-Objekt um.

JSON = "{ \"foo\": \"Baa\", \"test\": \"TEST\" }"
parseToJson(JSON).test          → "TEST"

toBoolean(X) — Normalisiert einen Wahrheitswert zu "Ja" oder "Nein".

toBoolean("true"), toBoolean("ja"), toBoolean("Ja")   → "Ja"
toBoolean("false"), toBoolean("nein")                 → "Nein"

Prüffunktionen

isNullOrEmpty(X) — Prüft, ob ein Wert leer oder nicht gesetzt ist.

isNullOrEmpty("null"), isNullOrEmpty(null), isNullOrEmpty("")   → true
isNullOrEmpty("test")                                           → false

isDate(X, landcode) — Prüft, ob ein Wert ein gültiges Datum im angegebenen Format ist (landcode = "de" oder "en").

isDate("01.01.2020", "de")      → true
isDate("2020-01-01", "en")      → true
isDate("2020-01-01", "de")      → false

isNumber(X) — Prüft, ob ein Wert eine Zahl ist.

isNumber("2020-01-01")          → false
isNumber("100"), isNumber("100,34"), isNumber("100.34")   → true

Tabellen-Funktionen

jsonToHtmlTable(...) — Wandelt ein speziell aufgebautes JSON in eine HTML-Tabelle um. Die Parameter lauten: jsonTable, tableStyling, columnWidthList, columnStylingList, lastRowStylingList, enableHeadline, enableLastRow, jsonColumnname, jsonRowname, jsonLastRowName.

Beispiel-JSON:

KOSTENAUFSTELLUNG_TABELLE =
{
  "spalten": ["Datum", "Name", "Aktenzeichen", "Betrag"],
  "zeilen": [
    ["12.12.2020", "Peter Tester", "12345/20", "875,30 €"]
  ],
  "endzeile": ["875,30 €"]
}

Aufruf (kombiniert mit Sortierung und Parsing):

jsonToHtmlTable(
  sortJsonTable(parseToJson(KOSTENAUFSTELLUNG_TABELLE), "zeilen", 0, "asc"),
  "width:100%;",
  "15%,35%,35%,15%",
  ",,,text-align:right;",
  "text-align:right;",
  true, true,
  "spalten", "zeilen", "endzeile"
)

sortJsonTable(json, sortRowName, sortColumnIndex, sortOrder) — Sortiert die Zeilen eines JSON nach einer Spalte.

sortJsonTable(parseToJson(JSON_INPUT), "zeilen", 2, "asc")

mit

JSON_INPUT =
{
  "spalten": ["Datum", "Tarif", "Höhe", "Wirksam"],
  "zeilen": [
    ["01.01.2025", "A", "102,50 €", "Unwirksam"],
    ["02.01.2025", "112/112", "13,67 €", "Unwirksam"],
    ["01.01.2020", "B", "0,13 €", "Wirksam"],
    ["01.01.2001", "VC3", "35,00 €", "Wirksam"]
  ]
}

Fachspezifische Funktionen

getDunningNoticeCatalogDescription(X) — Ersetzt eine Katalognummer aus dem Mahnbescheidsbereich durch ihre Beschreibung.

getDunningNoticeCatalogDescription("5")   → "Dienstleistungsvertrag"

calcRVGwithDate(objectValueInput, feeCategory, factor, rvgFeeDate) — Berechnet die RVG-Gebühren (unterstützt RVG ab dem 01.08.2013). Über das Datum wird automatisch die passende Rechtsordnung ausgewählt.

  • feeCategory: "2300" für Gebühren (z. B. Geschäfts- oder Verfahrensgebühr), "7200" für Auslagen
  • factor: Faktor als Zeichenkette, z. B. "0.5", "0,9", "1,3"
  • rvgFeeDate: Stichtag der Berechnung
KOSTENSCHUTZ_GGW = "399,99"
calcRVGwithDate(KOSTENSCHUTZ_GGW, "2300", "1.3", "01.01.2025")   → "66,95"

calcGKGwithDate(objectValueInput, factor, rvgFeeDate) — Berechnet die GKG-Gebühren (unterstützt GKG ab dem 01.08.2013). Auch hier bestimmt das Datum die anzuwendende Rechtsordnung.

  • factor: Faktor als Zeichenkette, z. B. "0.5", "0,9", "1,3"
  • rvgFeeDate: Stichtag der Berechnung
KOSTENSCHUTZ_GGW = "3999"
calcGKGwithDate(KOSTENSCHUTZ_GGW, "3.0", "01.01.2025")   → "420"