Skip to main content
Skip table of contents

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:

CODE
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 mit price.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.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.