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.

Wo die Datei liegt
Die Datei liegt im Konfigurationsverzeichnis des Subshops: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:
Wann der Shop die Datei liest
Der Shop liest diediscount.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. LiegtValidFrom 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 ausDiscountID und Type läuft die Bereinigung in vier Schritten:
- Zeilen, deren
Amountkleiner oder gleich einem weiter unten stehendenAmountderselben Gruppe ist, fallen heraus. Bei widersprüchlichen Stufen gewinnt die spätere Zeile der Datei. - Die verbleibenden Stufen werden nach
DiscountID,TypeundAmountsortiert. - Benachbarte Stufen mit identischem Rabattsatz werden auf die kleinste
Amountzusammengezogen. Zwei Stufen mit je zehn Prozent ab Menge 10 und ab Menge 25 ergeben also eine einzige Stufe ab Menge 10. - Führende Stufen mit dem Rabattsatz
0werden entfernt.
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 AbschnittOrderConditions der shop.config. Die wichtigsten Schalter dafür sind:
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 mitType = 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.