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
| Platzhalter | Bedeutung |
|---|---|
{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)
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}.
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}
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:
| Operator | Wirkung |
|---|---|
netto / net | Wert als Nettowert behandeln |
brutto / gross | Wert als Bruttowert behandeln |
floor | Auf die angegebene Schrittweite abrunden |
ceil | Auf die angegebene Schrittweite aufrunden |
round | Auf die angegebene Anzahl Nachkommastellen runden |
stepsize | Prüft, ob ein Wert zu einer Schrittweite passt |
length | Lä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.