Docs  /  Preise & Regeln  /  Preisformeln & JavaScript-Berechnungen

Preisformeln & JavaScript-Berechnungen

Zuletzt aktualisiert: 01. Januar 2026

Mit Formeln kannst du komplexe Preisberechnungen realisieren, die über einfache Aufpreise hinausgehen. Formeln greifen auf die Werte und Aufpreise aller Merkmale zu und berechnen daraus einen Preis in Echtzeit.

Für Standardfälle reichen einfache Formel-Ausdrücke. Für sehr komplexe Logik steht zusätzlich vollständiger JavaScript-Code zur Verfügung.

Wo werden Formeln hinterlegt?

Formeln werden in den Preiseinstellungen einer Option oder direkt als Formel-Preisregel auf Komponentenebene hinterlegt. Du kannst Formeln für einzelne Optionen oder als Gesamtpreis-Formel verwenden.

Einfache Formeln

Merkmalswerte referenzieren

[merkmal_name]          → Zahlenwert des Merkmals (bei Freieingabe)
[merkmal_name.price]    → Aufpreis der gewählten Option
[_base_price]           → Basispreis der Komponente

Grundoperatoren

+   Addition
-   Subtraktion
*   Multiplikation
/   Division
^   Potenz
()  Klammern für Reihenfolge

Funktionen

ROUND(wert, stellen)    → Runden auf n Dezimalstellen
CEIL(wert)              → Aufrunden auf ganze Zahl
FLOOR(wert)             → Abrunden auf ganze Zahl
MAX(a, b)               → Größerer der beiden Werte
MIN(a, b)               → Kleinerer der beiden Werte
IF(bedingung, a, b)     → Wenn bedingung wahr → a, sonst → b
ABS(wert)               → Absolutwert (ohne Vorzeichen)

Praxisbeispiele

Flächenpreis (Breite × Höhe):

[breite] * [hoehe] * 0.025

Flächenpreis mit Mindestpreis:

MAX([breite] * [hoehe] * 0.025, 49.00)

Aufgerundeter Meterpreis:

CEIL([laenge] / 100) * 12.50

Staffelpreis (Mengenrabatt):

IF([menge] >= 100, [menge] * 8.90,
  IF([menge] >= 50, [menge] * 9.50,
    [menge] * 10.90))

Kombination aus Fläche und Aufpreisen:

([breite] * [hoehe] * 0.020) + [farbe.price] + [antrieb.price]

Erweiterte Berechnungen mit JavaScript

Wenn die einfache Formel-Syntax nicht ausreicht, kannst du vollständigen JavaScript-Code hinterlegen. Das erlaubt beliebig komplexe Berechnungslogik — Schleifen, Arrays, externe Lookups, eigene Algorithmen.

Grundstruktur

Der JavaScript-Code muss am Ende einen numerischen Wert zurückgeben:

// Alle Merkmalswerte stehen als Variablen zur Verfügung
var flaeche = breite * hoehe;
var grundpreis = flaeche * 0.025;

// Mindestpreis
if (grundpreis < 49) {
    grundpreis = 49;
}

// Rückgabe
grundpreis;

Merkmalswerte im JavaScript

Alle Merkmale stehen als JavaScript-Variablen bereit — benannt nach ihrem internen Namen:

// Zahlenwerte direkt
breite          // Wert des Merkmals "breite"
hoehe           // Wert des Merkmals "hoehe"
menge           // Wert des Merkmals "menge"

// Aufpreise der gewählten Option
farbe_price     // Aufpreis der gewählten Farbe
antrieb_price   // Aufpreis des gewählten Antriebs

// Basispreis
_base_price     // Basispreis der Komponente

Praxisbeispiele

Komplexer Staffelpreis mit Tabelle:

var staffel = [
    { ab: 1,   preis: 10.90 },
    { ab: 10,  preis: 9.50 },
    { ab: 50,  preis: 8.90 },
    { ab: 100, preis: 7.90 },
    { ab: 500, preis: 6.90 }
];

var einzelpreis = staffel[0].preis;
for (var i = 0; i < staffel.length; i++) {
    if (menge >= staffel[i].ab) {
        einzelpreis = staffel[i].preis;
    }
}

menge * einzelpreis;

Preisberechnung mit Zuschlägen je nach Kombination:

var basis = breite * hoehe * 0.022;

// Material-Zuschlag
var materialFaktor = 1.0;
if (material === 'edelstahl') materialFaktor = 1.35;
if (material === 'holz')      materialFaktor = 1.20;

// Expressaufschlag
var express = (lieferzeit === 'express') ? basis * 0.25 : 0;

// Mindestpreis
Math.max(basis * materialFaktor + express, 59.00);

Preisberechnung mit Rundungsregeln nach Branchenstandard:

// Fläche in m² (Eingabe in cm)
var flaeche_m2 = (breite / 100) * (hoehe / 100);

// Auf 0,1 m² aufrunden (Mindestabnahme)
var flaeche_gerundet = Math.ceil(flaeche_m2 * 10) / 10;

// Preis aus Preiszone
var preis_pro_m2 = 45.00;
if (flaeche_gerundet > 5)  preis_pro_m2 = 42.00;
if (flaeche_gerundet > 10) preis_pro_m2 = 38.00;

flaeche_gerundet * preis_pro_m2 + antrieb_price;

Verfügbare JavaScript-APIs

Im Formel-Kontext stehen Standard-JavaScript-Objekte zur Verfügung:

Math.round(), Math.ceil(), Math.floor()
Math.min(), Math.max(), Math.abs()
Math.pow(), Math.sqrt()
parseInt(), parseFloat()
Array, Object, JSON

Kein Zugriff auf DOM, externe HTTP-Requests oder Browser-APIs — die Berechnung läuft serverseitig.

Formeln testen

Im Backend zeigt die Vorschau sofort das Ergebnis bei verschiedenen Eingabewerten. Gib Testwerte ein und prüfe ob die Berechnung stimmt.

KI-Agent für Formeln und JavaScript

Der KI-Agent kann sowohl einfache Formeln als auch komplexen JavaScript-Code erstellen:

„Der Preis soll Breite mal Höhe mal 0,025 Euro sein, aber mindestens 49 Euro."

„Ich brauche einen Staffelpreis: bis 10 Stück 10,90€, ab 10 Stück 9,50€, ab 50 Stück 8,90€, ab 100 Stück 7,90€."

„Der Preis soll auf volle 0,1 m² aufgerundet werden und bei größerer Fläche günstiger pro m² werden."

Der Agent schreibt den Code und hinterlegt ihn direkt in der Komponente.

Fehlersuche

Formel ergibt 0 oder NaN:

  • Merkmalsnamen prüfen — Groß-/Kleinschreibung beachten
  • Sicherstellen dass das referenzierte Merkmal ein Zahlenfeld ist
  • JavaScript-Syntax auf Fehler prüfen (fehlende Semikolons, Klammern)

JavaScript gibt keinen Wert zurück:

  • Sicherstellen dass am Ende ein numerischer Ausdruck steht (kein return, kein console.log)
  • Auf undefined oder null prüfen bei bedingter Logik

Unerwartete Werte:

  • Einheiten beachten (mm vs. cm vs. m)
  • console.log() zur Fehlersuche — Ausgaben erscheinen in der Browser-Konsole der Vorschau

Nächste Schritte


← Alle Artikel 14 Tage kostenlos testen