For conditions, mappings, and calculations, DEPLAW uses FEEL (Friendly Enough Expression Language). In principle, all standard FEEL functions are available. In the header fields of ServiceTasks, the following DEPLAW-specific functions are additionally available.

Because in DEPLAW every variable is a string, almost every calculation follows the same pattern: convert to a number, calculate, and format back as text.

STRING "1.234,50 €" bigDecimal() NUMBER · calculate 1234.5 euro() STRING "1.234,50 €"

Pattern to remember: bigDecimal(...) turns the text into a number you can calculate with; euro(...) formats the result back into a euro string for letters and placeholders.

Function overview

Function Category Purpose
bigDecimal(x) Conversion String → number (rounding-safe)
euro(x) Conversion Number → euro string
parseDate(x) Conversion Convert a date between German and ISO format
parseToJson(x) Conversion JSON string → JSON object
toBoolean(x) Conversion Boolean value → "Ja" / "Nein"
isNullOrEmpty(x) Check Empty or unset?
isDate(x, code) Check Valid date in de/en format?
isNumber(x) Check Valid number?
sortJsonTable(...) Table Sort the rows of a table JSON
jsonToHtmlTable(...) Table Table JSON → HTML table
getDunningNoticeCatalogDescription(x) Domain-specific Payment order catalog number → description
calcRVGwithDate(...) Domain-specific Calculate RVG fees
calcGKGwithDate(...) Domain-specific Calculate GKG fees

Conversion and formatting

bigDecimal(X) — Converts a string (including euro values) into a number in a rounding-safe way.

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

euro(X) — Converts a number into a euro value (string).

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

parseDate(X) — Converts a date between German and ISO format (in either direction).

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

parseToJson(X) — Converts a JSON string into a JSON object.

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

toBoolean(X) — Normalizes a boolean value to "Ja" or "Nein".

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

Check functions

isNullOrEmpty(X) — Checks whether a value is empty or unset.

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

isDate(X, landcode) — Checks whether a value is a valid date in the specified format (landcode = "de" or "en").

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

isNumber(X) — Checks whether a value is a number.

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

Table functions

jsonToHtmlTable(...) — Converts a specifically structured JSON into an HTML table. The parameters are: jsonTable, tableStyling, columnWidthList, columnStylingList, lastRowStylingList, enableHeadline, enableLastRow, jsonColumnname, jsonRowname, jsonLastRowName.

Example JSON:

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

Call (combined with sorting and 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) — Sorts the rows of a JSON by a column.

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

with

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"]
  ]
}

Domain-specific functions

getDunningNoticeCatalogDescription(X) — Replaces a catalog number from the payment order domain with its description.

getDunningNoticeCatalogDescription("5")   → "Dienstleistungsvertrag"

calcRVGwithDate(objectValueInput, feeCategory, factor, rvgFeeDate) — Calculates RVG fees (supports RVG from 01.08.2013 onward). The date automatically determines the applicable legal framework.

  • feeCategory: "2300" for fees (e.g. business or proceedings fee), "7200" for expenses
  • factor: factor as a string, e.g. "0.5", "0,9", "1,3"
  • rvgFeeDate: reference date of the calculation
KOSTENSCHUTZ_GGW = "399,99"
calcRVGwithDate(KOSTENSCHUTZ_GGW, "2300", "1.3", "01.01.2025")   → "66,95"

calcGKGwithDate(objectValueInput, factor, rvgFeeDate) — Calculates GKG fees (supports GKG from 01.08.2013 onward). Here too, the date determines the applicable legal framework.

  • factor: factor as a string, e.g. "0.5", "0,9", "1,3"
  • rvgFeeDate: reference date of the calculation
KOSTENSCHUTZ_GGW = "3999"
calcGKGwithDate(KOSTENSCHUTZ_GGW, "3.0", "01.01.2025")   → "420"