> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Konfiguration discount.dat

> Aufbau und Wirkung der Rabattgruppen in der discount.dat: Spalten, Gültigkeitszeiträume, wann der Shop die Datei liest, welche Zeilen er verwirft und wie er die Staffel normalisiert.

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](https://mintcdn.com/websaleag-44ee7ea6/qpKXKLTjn0wDjacH/images/rabattgruppen-1.jpg?fit=max\&auto=format\&n=qpKXKLTjn0wDjacH\&q=85\&s=8f42bc00678a7c89d50d4bc211540034)

> [!WARNING]
>
> Ein Produkt kann immer nur **einer** Rabattgruppe angehören.

Wegweiser: [Rabatte festlegen](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/rabatte-festlegen.md) · Referenz: GD-Tags für Gruppierungsrabatte, [shop.config, Warenkorb und Bestellprozess](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md) · Grundlagen: [Grundlagen zu Konfigurationen](https://dokumentation.websale.de/v8s/grundlagen-konfiguration/konfiguration-grundlagen.md)

## Wo die Datei liegt

Die Datei liegt im Konfigurationsverzeichnis des Subshops:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
konfiguration/<Subshop-ID>/discount.dat
```

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.

| Parameter | Spaltenbezeichnung im WSPManager | Zweck | Werte |
| - | - | - | - |
| `DiscountID` | Für | Name der Rabattgruppe | freier Text |
| `Type` | Typ | ob der Rabatt nach Bestellmenge oder nach Bestellwert bemessen wird | `1` Bestellmenge, `2` Bestellwert |
| `Discount` | Rabatt in Prozent | Rabatt in Prozent | Zahl ohne Prozentzeichen, beispielsweise `10` |
| `Amount` | Preis/Menge | je nach `Type` die Bestellmenge oder der Bestellwert, ab der oder dem der Rabatt gilt | Zahl größer als `0` |
| `ValidFrom` | nur über Warenwirtschaft oder Produktdatenimport | Zeitpunkt, ab dem der Rabatt gelten soll. Optional | Format `YYYYMMDDhhmmss` |
| `ValidUntil` | nur über Warenwirtschaft oder Produktdatenimport | Zeitpunkt, bis zu dem der Rabatt gelten soll. Optional | Format `YYYYMMDDhhmmss` |

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:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
DiscountID (TAB)  Type (TAB)  Discount (TAB)  Amount (TAB)  ValidFrom (TAB)        ValidUntil
Winterware (TAB)  1 (TAB)     5 (TAB)         10 (TAB)       (TAB)
Winterware (TAB)  1 (TAB)     10 (TAB)        25 (TAB)       (TAB)
Winterware (TAB)  1 (TAB)     15 (TAB)        50 (TAB)      20261201000000 (TAB)  20261231235959
Zubehoer (TAB)    2 (TAB)     3 (TAB)         100 (TAB)      (TAB)
Zubehoer (TAB)    2 (TAB)     7 (TAB)         250 (TAB)      (TAB)
```

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:

| Parameter | Wirkung |
| - | - |
| `ConsiderProductGroupDiscountForOrderDiscount` | der Gruppierungsrabatt wird vor der Berechnung des Auftragswertrabatts abgezogen |
| `ConsiderProductGroupDiscountForOtherDiscounts-Allow` | der Gruppierungsrabatt fließt in die Bemessungsgrundlage der übrigen Rabatte ein |
| `ConsiderAllGroupDiscountIDsForGroupDiscountBase` | als Bemessungsgrundlage zählen alle Positionen mit irgendeiner `DiscountID`, nicht nur die mit derselben |

> [!WARNING]
>
> `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.


## Related topics

- [Konfigurations-Typen](https://dokumentation.websale.de/v8s/grundlagen-konfiguration/konfigurations-typen.md)
- [Rabatte festlegen](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/rabatte-festlegen.md)
- [Konfiguration: Grundlagen](https://dokumentation.websale.de/v8s/grundlagen-konfiguration/konfiguration-grundlagen.md)
- [Konfiguration title.dat](https://dokumentation.websale.de/v8s/referenz/konfigurationen/konfiguration-title-dat.md)
- [Konfiguration salutation.dat](https://dokumentation.websale.de/v8s/referenz/konfigurationen/konfiguration-salutation-dat.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.