Zum Hauptinhalt springen
Die Konfiguration discount.dat definiert die Rabattgruppen, über die WEBSALE V8s den Gruppierungsrabatt gewährt. Jede Zeile ist eine Stufe einer Staffel, bemessen entweder nach Bestellmenge oder nach Bestellwert. Sie erstellen diese Datei nicht von Hand. Geschrieben wird sie vom WSPManager oder vom angebundenen Warenwirtschaftssystem, sobald Sie dort Produkte einer Rabattgruppe zuordnen. Rabattgruppen 1
Ein Produkt kann immer nur einer Rabattgruppe angehören.
Wegweiser: Rabatte festlegen · Referenz: GD-Tags für Gruppierungsrabatte, shop.config, Warenkorb und Bestellprozess · Grundlagen: Grundlagen zu Konfigurationen

Wo die Datei liegt

Die Datei liegt im Konfigurationsverzeichnis des Subshops:
Für den Produktdatenexport gibt es eine Rückfallebene. Findet der Export dort keine Datei, greift er auf eine discount.dat direkt im Konfigurationsverzeichnis des Shops zurück, also eine Ebene höher und ohne Subshop-Unterverzeichnis. So lässt sich eine gemeinsame Staffel für alle Subshops pflegen.

Aufbau

Die Datei ist tabulatorgetrennt aufgebaut. Die erste Zeile enthält die Spaltennamen, ab der zweiten Zeile folgt je Rabattstufe eine Zeile. Die folgenden Spaltennamen schreibt der WSPManager. Wenn Sie ein Warenwirtschaftssystem anbinden, muss dieses dieselben Namen verwenden. Beispiel einer Datei mit zwei Rabattgruppen. Winterware staffelt nach Menge, Zubehoer nach Warenwert, und die dritte Stufe von Winterware gilt nur in einem bestimmten Zeitraum. Das Tabulatorzeichen ist als (TAB) dargestellt:
Die Spaltennamen werden unabhängig von Groß- und Kleinschreibung gesucht, und die Reihenfolge der Spalten ist frei. Mehr als zehn Spalten wertet der Shop nicht aus.

Wann der Shop die Datei liest

Der Shop liest die discount.dat nicht bei jedem Aufruf, sondern erst dann, wenn mindestens eine Position im Warenkorb eine DiscountID trägt. Daraus folgt eine nützliche Diagnoseregel: Wenn ein Gruppierungsrabatt nicht greift, prüfen Sie zuerst, ob am Produkt überhaupt eine Rabattgruppe hinterlegt ist. Eine korrekt gepflegte discount.dat bleibt ohne Wirkung, solange kein Produkt auf sie verweist.

Welche Zeilen verworfen werden

Nicht jede Zeile der Datei landet in der Staffel. Die folgenden Regeln gelten dabei. Abgelaufene und künftige Zeiträume fallen heraus. Liegt ValidFrom in der Zukunft oder ValidUntil in der Vergangenheit, überspringt der Shop die Zeile vollständig. Sie erscheint dann auch nicht in der Anzeige der Staffel. Ein Zeitstempel muss vollständig sein. Das Format YYYYMMDDhhmmss hat vierzehn Stellen. Kürzere Angaben führen beim Produktdatenexport dazu, dass die Zeile verworfen wird. Schreiben Sie also 20261201000000, nicht 20261201. Leere Pflichtwerte verwerfen die Zeile. Eine Zeile ohne DiscountID, mit einem Type außerhalb von 1 und 2, mit einem Rabattsatz von 0 oder kleiner oder mit einem Amount von 0 oder kleiner wird übergangen. Fehlt eine der vier Pflichtspalten in der Kopfzeile, wird die ganze Datei ignoriert. Das betrifft DiscountID, Type, Discount und Amount. ValidFrom und ValidUntil dürfen fehlen. Der Shop meldet das nicht als Fehler, der Rabatt bleibt einfach aus.

Wie der Shop die Staffel normalisiert

Der Shop verwendet die Datei nicht so, wie sie dasteht. Er baut daraus zuerst eine bereinigte Staffel. Das erklärt, warum die angezeigte Staffel manchmal weniger Stufen hat als die Datei Zeilen. Je Kombination aus DiscountID und Type läuft die Bereinigung in vier Schritten:
  1. Zeilen, deren Amount kleiner oder gleich einem weiter unten stehenden Amount derselben Gruppe ist, fallen heraus. Bei widersprüchlichen Stufen gewinnt die spätere Zeile der Datei.
  2. Die verbleibenden Stufen werden nach DiscountID, Type und Amount sortiert.
  3. Benachbarte Stufen mit identischem Rabattsatz werden auf die kleinste Amount zusammengezogen. Zwei Stufen mit je zehn Prozent ab Menge 10 und ab Menge 25 ergeben also eine einzige Stufe ab Menge 10.
  4. Führende Stufen mit dem Rabattsatz 0 werden entfernt.
Für die Ausgabe über die GD-Tags gilt die normalisierte Staffel, nicht der Dateiinhalt. Wenn eine Stufe im Shop fehlt, obwohl sie in der Datei steht, ist sie mit hoher Wahrscheinlichkeit einem dieser vier Schritte zum Opfer gefallen. Referenz: GD-Tags für Gruppierungsrabatte

Zusammenspiel mit den anderen Rabatten

Ob und wie der Gruppierungsrabatt mit den übrigen Rabattarten zusammenwirkt, steuern Sie im Abschnitt OrderConditions der shop.config. Die wichtigsten Schalter dafür sind:
ConsiderProductGroupDiscountForOrderDiscount und UseOnlyHighestDiscount schließen sich gegenseitig aus. Setzen Sie beides gleichzeitig, schreibt der Shop einen kritischen Fehler ins Log und ignoriert ConsiderProductGroupDiscountForOrderDiscount.
Ist für einen Kunden die Sperre “nur Kundenrabatt” gesetzt, entfällt der Gruppierungsrabatt für ihn vollständig.

Beim Produktdatenexport

Dieselbe Datei wertet der Produktdatenexport aus, wenn er Preise an Preisportale übergibt. Dort gilt eine Besonderheit, die sich aus der Sache ergibt: Der Export bepreist ein einzelnes Stück. Deshalb berücksichtigt er von den Mengenstaffeln mit Type = 1 nur Stufen mit einem Amount von 1 oder kleiner. Eine Staffel, die erst ab zehn Stück greift, taucht im exportierten Preis nicht auf. Wertstaffeln mit Type = 2 greifen dagegen, sobald der Stückpreis den Amount erreicht. Treffen im Export mehrere passende Stufen zu, gewinnt die mit dem höchsten Rabattsatz. Ob der Gruppierungsrabatt dort zusätzlich zum Auftragswertrabatt abgezogen wird oder nur der jeweils höhere von beiden, hängt an derselben Einstellung wie im Shop.