Zum Hauptinhalt springen

Eigene Preisformeln

Reichen die Standardberechnungen nicht aus, wählst du unter „Formel zur Preisberechnung" die Option „Eigene Preisberechnung" und trägst deine Formel in das Feld „Eigene Preisberechnung" ein.

Platzhalter

PlatzhalterBedeutung
{unitvalue1} bis {unitvalue10}Die vom Kunden eingegebenen Werte der jeweiligen Dimension
{unitprice}Der Artikelpreis aus den Stammdaten, inklusive gültigem Staffelpreis
{basepricevalue}Die im Artikel gepflegte „Grundeinheit"
{surcharge1}, {surcharge2}Die Werte aus „Aufschlag 1 Preis" und „Aufschlag 2 Preis"

Beispiel für den klassischen Dreisatz mit Aufschlag:

{unitprice} / {basepricevalue} * {unitvalue1} + {surcharge1}

Beispiel für eine Fläche mit unterschiedlichen Faktoren je Dimension:

{unitprice} / {basepricevalue} + ({unitvalue1} * 5) + ({unitvalue2} * 10)
hinweis

Wählst du eine eigene Formel, werden die Aufschläge nicht mehr automatisch addiert. Wenn du sie brauchst, nimm {surcharge1} und {surcharge2} selbst in die Formel auf.

Werte aus anderen Zusatzfeldern

Zusätzlich kannst du den Inhalt eines beliebigen Zusatzfelds des Artikels einsetzen. Schreibe dazu {product.} mit dem technischen Namen des Zusatzfelds, zum Beispiel {product.mein_material}.

hinweis

Das funktioniert nur für Zusatzfelder vom Typ Text. Der Inhalt wird als Text eingesetzt und eignet sich damit vor allem für Bedingungen, nicht zum Rechnen.

Bedingungen

Eine Formel darf aus mehreren Regeln bestehen. Jede Regel hat die Form Bedingung : Preis, mehrere Regeln trennst du mit einem Komma. Es gilt die erste Regel, deren Bedingung zutrifft.

({unitvalue1} * {unitvalue2}) > 400 : ({unitprice} * {unitvalue1} * {unitvalue2}) + {surcharge2},
({unitvalue1} * {unitvalue2}) > 100 : {unitprice} * {unitvalue1} * {unitvalue2},
({unitvalue1} * {unitvalue2}) > 0 : ({unitprice} * {unitvalue1} * {unitvalue2}) + {surcharge1}
warnung

Für jeden möglichen Wert muss genau eine Regel zutreffen. Im Beispiel oben deckt die letzte Regel alle Werte größer 0 ab, sodass nichts durchfällt. Bleibt ein Wertebereich ohne passende Regel, kann für diesen Fall kein Preis berechnet werden.

Steuersensitive Werte

Zahlen, die du in Rauten einfasst, werden als Nettowerte behandelt und je nach Kunde korrekt in brutto umgerechnet:

  • #10# ergibt 10 € netto, bei 19 % Steuer also 11,90 € brutto.
  • #{surcharge1}# behandelt den gepflegten Aufschlag als Nettowert.

Bei Netto-Kunden und in steuerfreien Ländern bleibt der Wert unverändert.

JsonLogic für komplexe Fälle

Mit der Option „Eigene Preisberechnung mit JsonLogic" hinterlegst du die Berechnung im JSON-Format. Das lohnt sich, wenn du runden, staffeln oder mehrere Bedingungen verschachteln musst.

Verfügbare Werte: unitprice, unitvalue1 bis unitvalue10, surcharge1, surcharge2, product.taxRate sowie context.taxState.

Zusätzlich zu den JsonLogic-Standardoperatoren stehen zur Verfügung:

OperatorWirkung
netto / netWert als Nettowert behandeln
brutto / grossWert als Bruttowert behandeln
floorAuf die angegebene Schrittweite abrunden
ceilAuf die angegebene Schrittweite aufrunden
roundAuf die angegebene Anzahl Nachkommastellen runden
stepsizePrüft, ob ein Wert zu einer Schrittweite passt
lengthLänge eines Werts oder einer Liste

Beispiel: Der Preis wird immer auf volle halbe Meter aufgerundet.

{"*": [{"var": "unitprice"}, {"ceil": [{"var": "unitvalue1"}, 0.5]}]}

Testen nicht vergessen

Lege den Artikel nach jeder Formeländerung einmal mit verschiedenen Werten in den Warenkorb — besonders an den Grenzen deiner Bedingungen. Erscheint im Warenkorb der Hinweis auf ungültige Angaben, konnte die Formel nicht berechnet werden.