Preisformeln
Syntax der Ausdrücke, verfügbare Variablen und Funktionen, Rundung und Verweise auf andere Preisgruppen.
Eine Formel ist ein Ausdruck mit {variable}-Tokens und Rechenoperationen. Beispiele:
{base_price} * 1.23
{base_price} * {currency_rate} * 1.10
{base_price} + ({product.weight} * 2.50)Ausdrücke werden mit Dezimalzahlen und nicht mit Gleitkommazahlen berechnet – bei Rundungen gehen keine Cent verloren.
Schritt für Schritt: eine Formel erstellen
- Öffne Katalog → Preise, Register Formeln.
- Klicke über der Liste auf +. Rechts öffnet sich ein Editor; anstelle des Namens steht zunächst Neue Formel.
- Gib den Namen im Kopfbereich des Editors ein.
- Gib den Ausdruck im Register Ausdruck ein. Variablen werden im Feld hervorgehoben. Über die Schaltfläche Variable oberhalb des Felds kannst du eine Variable an der Cursorposition einfügen. Dort findest du auch Preise anderer Gruppen (
{base_price_CODE}). - Warte kurz – die Formel wird beim Schreiben automatisch geprüft. Bei einem gültigen Ausdruck erscheint ein Satz wie „Bei einem Basispreis von 100,00 und Preisen anderer Gruppen von 120,00 ergibt sich 130,00.“ Andernfalls erscheint eine rote Meldung vom Server. Bei einem Fehler kannst du nicht speichern.
- Prüfe im Register Erweitert den Code (Pflichtfeld, unternehmensweit eindeutig; nur Buchstaben, Ziffern und
_; wird aus dem Namen gebildet, bis du einen eigenen eingibst; nach dem Speichern kannst du ihn ändern). Lege Rundung und Dezimalstellen (0–10) fest. Die Beschreibung ist optional. - Klicke unten auf Speichern.
- Die Formel berechnet noch keinen Preis, solange sie nicht von einer Gruppe verwendet wird: Wähle im Gruppeneditor im Register Berechnung die Methode Formel und gib sie als Gruppenformel an (Preise – Ansicht und Preisgruppen). Im Register Gruppen des Formeleditors siehst du, welche Gruppen sie bereits verwenden.
Die Felder Quellwährung und Zielwährung im Register Erweitert dienen nur zur Beschreibung – die Berechnung liest sie nicht aus. Der Kurs {currency_rate} gilt immer von der Währung der Gruppe, deren Preis die Formel ausliest, zur Währung der Gruppe, deren Preis sie berechnet.
Schritt für Schritt: eine Formel für ein Produkt prüfen
Der Satz unter dem Ausdruck rechnet mit Beispielwerten. Für ein echtes Produkt kannst du eine gespeicherte Formel im Bereich Am Produkt prüfen des Registers Ausdruck testen.
- Speichere die Formel. Vor dem Speichern steht im Bereich: Speichere die Formel, um sie an einem Produkt zu prüfen.
- Gib im Produktfeld einen Namen, eine SKU oder eine EAN ein und wähle das Produkt aus der Liste.
- Wähle die Preisgruppe, für die du rechnest.
- Klicke auf Prüfen.
- Lies Jetzt berechnet (Formelergebnis anhand der aktuellen Daten), Gespeicherter Preis (der aktuelle Produktpreis in dieser Gruppe) und Basispreis ab. Hat das Produkt keinen Preis in der Gruppe, erscheint Kein Preis in dieser Gruppe.
Die Prüfung speichert nichts. Gespeicherte Preise ändern sich erst, wenn du die Gruppe neu berechnest.
Variablen
| Variable | Bedeutung |
|---|---|
{base_price} | Basispreis dieser Zeile |
{currency_rate} | Wechselkurs |
{product.weight}, {product.weight_kg} | Produktgewicht |
{price_group.decimal_places} | Anzahl der Dezimalstellen der Gruppe |
Die Produktkosten kannst du nicht verwenden – das Produkt hat keine Kostenspalte, und eine Formel, die darauf verweist, wird beim Speichern abgelehnt.
Der Zugriff auf andere Objektfelder ist gesperrt. Nur die obige Liste ist zugelassen. Das dient der Sicherheit: Eine Formel kann nicht dazu verwendet werden, beliebige Systemdaten abzurufen.
Verweise auf andere Preisgruppen
Eine Formel kann für dasselbe Produkt den Preis aus einer anderen Preisgruppe anhand ihres Namens oder Codes übernehmen:
{base_price_WHOLESALE} * 1.15Abgerufen wird der effektive Preis jener Gruppe, also nach der Vorrangfolge Überschreibung → berechnet → Basis.
Wenn sich der Preis in einer Quellgruppe ändert, werden Gruppen, die darauf verweisen, automatisch neu berechnet – auch wenn dabei eine fehlende Preiszeile angelegt werden muss. Gegenseitige Verweise (A fragt B ab, B fragt A ab) werden erkannt und lösen keine Endlosschleife aus.
Gruppenname und -code können die Variablen base_price und currency_rate nicht überschreiben; sie sind reserviert.
Funktionen und Operationen
Verfügbare Operationen: +, -, *, /, **, % und unäres Minus. Der Exponent ist begrenzt, damit eine einzelne Formel das System nicht lahmlegen kann.
Funktionen: abs, round, min, max, ceil, floor, round99, ceil99, floor99.
Runden
Methoden: keine, mathematisch, aufrunden, abrunden, auf die nächsten 5 Cent und auf die Endung ,99. Preise haben immer zwei Dezimalstellen; die Einstellung von drei oder mehr Stellen wird daher wie zwei behandelt. So bleibt „aufrunden“ tatsächlich aufwärts gerichtet. Es wird mit Dezimalzahlen gerechnet – das ist kein bloßes Detail: Mit Gleitkommazahlen konnte ein glatter Preis von 48,00 fälschlich als 48,99 statt 47,99 enden.
Ein fehlender Wechselkurs ist ein Fehler, kein Anlass zum Raten
Benötigt die Formel einen Wechselkurs und ist weder der direkte noch der umgekehrte Kurs verfügbar, wird ein Fehler ausgegeben. Das System setzt dann nicht den Kurs 1 ein – ein Basispreis von 100 PLN, der stillschweigend als 100 EUR eingetragen wird, wäre schlimmer als ein nicht umgerechneter Preis und ein sichtbarer Fehler.
Ein Kurs wird nur abgerufen, wenn der Ausdruck {currency_rate} verwendet. Eine Formel mit festem Umrechnungsfaktor (zum Beispiel {base_price_MAIN_PLN} / 4.3) funktioniert auch ohne gespeicherten Wechselkurs. Nach dem Import von Kursen (täglich von der EZB) werden die Preise der Gruppen in beiden Währungen eines Währungspaars automatisch neu berechnet.
Eine deaktivierte Formel berechnet keine Preise
Der Schalter Aktiv im Formeleditor deaktiviert die Formel: Eine Gruppe, die sie verwendet, meldet eine fehlgeschlagene Neuberechnung und behält den bisherigen Preis. Eine Workflowregel mit einer deaktivierten Formel wird übersprungen.
Vor der Verwendung testen
Du kannst die Formel wie oben beschrieben an einem Produkt prüfen, bevor eine Gruppe sie verwendet. Die Validierung weist außerdem Ausdrücke mit gefährlichen Konstruktionen oder nicht geschlossenen Klammern zurück.
Fehlermeldungen kommen auf Englisch direkt vom Server. Häufige Meldungen sind: Expression cannot be empty, Unbalanced braces in expression, Undefined formula variable: '…', Dangerous keyword '…' not allowed; bei einem fehlenden Wechselkurs erscheint No exchange rate configured for PLN -> EUR.
Nicht mit Attributformeln verwechseln
Berechnete Attribute haben eine eigene Formelsprache mit Textfunktionen. Syntax und verfügbare Funktionen unterscheiden sich – übertrage Ausdrücke nicht von der einen in die andere Sprache.
Möchtest du NOXTI mit deinen Bestellungen kennenlernen? Wir zeigen dir NOXTI mit deinen Vertriebskanälen und deinem Lager.
Präsentation vereinbaren