Anhang A: Kalkulationsformeln und -regeln (v6 DE)
AUFBAU DER KALKULATION – PRICERULES.DATA
Pfad zu den Dateien
Die Dateien zur Anpassung der printQ-Berechnung finden Sie auf dem FTP-Server, indem Sie diesem Pfad folgen:
/datacenter/storage/app/calculation
Definition von Kalkulationsregeln
Eine Regel muss immer aus zwei Zeilen bestehen: dem Regelnamen und der Formel.
Eine Regel kann niemals mehrere Formeln haben; nur die erste Formel wird verwendet.
Um für eine Regel mehrere Formeln hinterlegen zu können, muss die Regel mehrmals angelegt werden mit der neuen dazugehörigen Formel.
Eine neue Regel muss immer mit einem „#“ beginnen; ist das nicht der Fall, wird die Regel nicht beachtet.
Kommentare müssen in der Zeile vor der Regel platziert werden. Sollte es Kommentare in derselben Zeile der Regel geben, wird diese nicht beachtet.
Korrekte Regelbezeichnung:
#addPagesRule
Falsche Regelbezeichnung:
//#addPagesRule
/#addPagesRule
--#addPagesRule
Definition von Regeln und Formeln
Es können Wenn/dann-Konditionen definiert werden. Dies funktioniert mit der kurzen „
if
“-Anweisung:if ( ? : )“ Kondition ? wenn Kondition wahr : wenn Kondition falsch
Wenn eine Kondition verwendet wird, müssen sowohl beide Steuerzeichen verwendet – „?“ und „:“ – als auch die Syntax eingehalten werden.
Beispiel:
pp.sqMeter > 0 ? pp.sqMeter * pp.getTierPrice(pp. getPaper(‚paper_sq_rn‘), pp.sqMeter * pp.getQty() * (pp. getPages(‚page_number‘)/2) ) * (pp.getPages(‚page_number‘)/2) : pp.getPaper(‚paper_sq_rn‘) * (pp.getPages(‚page_number‘)/2)
Kondition: pp.sqMeter > 0
Wert falls wahr: pp.sqMeter * pp.getTierPrice(pp.getPaper(‚paper_ sq_rn‘), pp.sqMeter * pp.getQty() * (pp.getPages(‚page_ number‘)/2) ) * (pp.getPages(‚page_number‘)/2)
Wert falls falsch: pp.getPaper(‚paper_sq_rn‘) * (pp.getPages(‚page_ number‘)/2)
In diesem Beispiel soll der Quadratmeter mit den anderen Werten multipliziert werden. Deshalb überprüfen wir, ob der kalkulierte Quadratmeter – pp.sqMeter – größer ist als 0. Ist das der Fall, fügen wir ihn zur Formel hinzu. Wenn nicht, wird er ignoriert.
Regelnamen, Funktionen und Variablen
Es gibt vordefinierte Regeln. Diese lauten:
#sqmSetupRule
#runningPriceRule
#sqmPriceRule
#priceForAllPageOptionsRule
#totalPriceRule
#adjustPriceRule
Zudem gibt es dynamische Regeln, u.a.:
#addPagesRule
#addPaperRule
Für jede Teilprodukt-Option gibt es eine in dieser Form definierte Regel. Der Aufbau lautet wie folgt: #addDeinteilproduktcodeRule. Dabei muss der erste Buchstabe der Teilprodukt-Option großgeschrieben sein. Auf diesem Weg können auch weitere Teilprodukt-Optionen in die Kalkulation integriert werden.
Statische Funktionen
pp.getTierPrice Diese Funktion hat zwei Parameter: zunächst einen Satz aus Preisen und Mengen und dann die Menge selbst. Der Aufbau im Eingabefeld im Backend sollte wie folgt lauten: 100,50;200,25;500,10;
pp.getQty()
Gibt die aktuelle Menge zurück
Dynamische Funktionen
pp.getPages
,pp.getPaper
,pp.getBook_binding
usw. Der Aufbau der dynamischen Regel lautet:pp.getDeinteilproduktoptioncode
Dabei muss der erste Buchstabe der Teilprodukt-Option ein Großbuchstabe sein. Diese Funktion hat einen Parameter, mit dem die Inhalte der Attribute abgerufen werden können.
Beispiel:
pp.getFormat(‚format_setup_price‘) , pp.getPaper(‚paper_ p100kg‘) , pp.getOptions(‚options_price_adjustment_second‘)
Statische Variablen
price.adjustPrice
Dieser Preis wird in der Regel mittels #totalPriceRule berechnet. Es ist der Gesamtpreis, der verändert werden kann.price.priceForAllPageOptions
In dieser Variablen stammt der kalkulierte Preis aus der Regel: #priceForAllPageOptionsRule.price.runningPrice
Der Wert dieser Variablen stammt aus der Regel #runningPriceRule.pp.sqMeter
beinhaltet die Quadratmeter des gewählten Formates oder des benutzerdefinierten Formates.pp.sqmSetup
Berechneter Wert aus der Regel #sqmSetupRule.
Dynamische Variablen
price.priceForPages
,price.priceForPaper
,price. priceForBook_binding
usw. Dies sind Werte, die in den Regeln#addPagesRule
,#addPaperRule
,#addBook_bindingRule
usw. kalkuliert wurden. Der Wert einer neuen Regel kann mitprice.priceForDeinteilproduktcode
übertragen werden.
Errors und Logdatei
Eine nicht korrekt definierte Formel, zum Beispiel durch eine fehlende Klammer, erzeugt einen Fehler und die Kalkulation liefert eine 0 zurück. Die Fehler werden in einer zentralen Datei geloggt und können dort eingesehen werden. Die Datei befindet sich unter:
var/log/newPriceCalculation.log
AUFBAU DER KALKULATION – ADJUSTPRICERULES.DATA
Die Datei AdjustPriceRules.data ergänzt die obige Datei PriceRules.data und folgt den gleichen Regeln. Diese wurden lediglich getrennt, um die Kalkulation der Teilprodukt Optionen und der Produktoptionen unabhängig voneinander pflegen zu können und die Übersicht zu gewährleisten.