> ## 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.

# GD- (Gruppierungsrabatte)

> Rabattgruppen aus der discount.dat im Template ausgeben: alle Stufen auflisten, die erreichte Stufe hervorheben und den gewährten Rabatt für eine einzelne Rabattgruppe abfragen.

Gruppierungsrabatte fassen Produkte zu einer Rabattgruppe zusammen und gewähren einen Rabatt, sobald der Warenkorb für diese Gruppe eine Menge oder einen Warenwert erreicht. Welche Gruppen es gibt und ab welcher Schwelle wie viel Rabatt gilt, steht in der `discount.dat`. Welches Produkt zu welcher Gruppe gehört, steht im Produktdatenfeld "Rabattgruppe".

Die `GD-`Tags machen diese Regeln im Template sichtbar. Sie werden auf zwei Arten verwendet: als Schleife über alle hinterlegten Stufen, um eine Rabattstaffel anzuzeigen, oder als gezielte Abfrage für eine einzelne Rabattgruppe, um den aktuell gewährten Rabatt an einem Produkt oder im Warenkorb auszugeben.

Wegweiser: [Rabatte festlegen](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/rabatte-festlegen.md) · Referenz: [discount.dat](https://dokumentation.websale.de/v8s/referenz/konfigurationen/konfiguration-discount-dat.md)

## Die Rabattstaffel auflisten

`GD-Data` hat drei Gesichter. Als Einzel-Tag gibt es die Anzahl der Stufen aus, als Klammerung greift es, wenn überhaupt Stufen vorhanden sind, und als Schleife läuft es über die Stufen.

| Tag | Liefert |
| - | - |
| `GD-Data` | die Anzahl der Stufen, die Prüfung auf Vorhandensein und die Schleife |
| `GD-Data_ID` | die ID der Rabattgruppe des aktuellen Durchlaufs |
| `GD-Data_FromQuantity` | die Mindestmenge, ab der die Stufe gilt |
| `GD-Data_FromPrice` | den Mindestwarenwert, ab dem die Stufe gilt |
| `GD-Data_Discount(<Stellen>)` | den Rabattsatz dieser Stufe |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{GD-Data}
   <p>Unsere Rabattstaffel umfasst ~GD-Data~ Stufen.</p>

   <ul>
      {@GD-Data}
         <li>
            {GD-Data_FromQuantity}ab Menge ~GD-Data_FromQuantity~{/GD-Data_FromQuantity}
            {GD-Data_FromPrice}ab ~GD-Data_FromPrice~ Warenwert{/GD-Data_FromPrice}
            ~GD-Data_Discount~ % Rabatt in Gruppe ~GD-Data_ID~
         </li>
      {/@GD-Data}
   </ul>
{/GD-Data}
```

Jede Stufe hat entweder eine Mengenschwelle oder eine Wertschwelle, niemals beides. Deshalb sind `GD-Data_FromQuantity` und `GD-Data_FromPrice` auch Klammerungen: die Klammerung greift genau bei der Art von Schwelle, die diese Stufe verwendet, und bleibt bei der anderen leer. So schreiben Sie beide Zeilen untereinander und bekommen immer die passende.

`GD-Data_Discount` gibt den Rabattsatz ohne Nachkommastellen aus. Für gebrochene Sätze geben Sie die gewünschte Stellenzahl von 0 bis 5 im Argument an, beispielsweise `~GD-Data_Discount(2)~` für "7,50".

### Nur eine Rabattgruppe auflisten

Mit einer ID im Argument beschränkt sich die Schleife auf die Stufen dieser einen Rabattgruppe. Das ist der übliche Fall in der Produktansicht, wo nur die Staffel des angezeigten Produkts interessiert.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{GD-Data($PR-DiscountID$)}
   <ul>
      {@GD-Data($PR-DiscountID$)}
         <li>
            {GD-Data_FromQuantity}ab ~GD-Data_FromQuantity~ Stück{/GD-Data_FromQuantity}
            {GD-Data_FromPrice}ab ~GD-Data_FromPrice~{/GD-Data_FromPrice}
            ~GD-Data_Discount~ %
         </li>
      {/@GD-Data($PR-DiscountID$)}
   </ul>
{/GD-Data($PR-DiscountID$)}
```

> [!WARNING]
>
> Innerhalb einer laufenden `@GD-Data`-Schleife darf keine zweite Schleife mit einer anderen ID stehen. Das Shopsystem führt nur einen Schleifenzähler, und eine verschachtelte Schleife mit abweichender ID wird als ungültiges Tag abgewiesen. Listen Sie mehrere Rabattgruppen deshalb nacheinander auf, nicht ineinander.

## Die erreichte Stufe hervorheben

`GD-Data_DiscountGranted` greift bei der Stufe, die aufgrund des aktuellen Warenkorbs tatsächlich gewährt wird. Damit heben Sie in der Staffel hervor, wo der Besucher gerade steht.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{GD-Data($PR-DiscountID$)}
   {@GD-Data($PR-DiscountID$)}
      <li class="{GD-Data_DiscountGranted}erreicht{/GD-Data_DiscountGranted}">
         {GD-Data_FromQuantity}ab ~GD-Data_FromQuantity~ Stück{/GD-Data_FromQuantity}
         {GD-Data_FromPrice}ab ~GD-Data_FromPrice~{/GD-Data_FromPrice}
         ~GD-Data_Discount~ %
      </li>
   {/@GD-Data($PR-DiscountID$)}
{/GD-Data($PR-DiscountID$)}
```

> [!WARNING]
>
> `GD-Data_DiscountGranted` funktioniert nur, wenn die Schleife mit einer Rabattgruppen-ID im Argument geöffnet wurde. Das Shopsystem ermittelt den gewährten Satz beim Eintritt in die Schleife, und dafür braucht es die ID. In einer Schleife ohne Argument bleibt der Vergleichswert bei null, und die Klammerung greift bei keiner einzigen Stufe.

Die Zuordnung erfolgt über den Rabattsatz. Sind in einer Rabattgruppe zwei Stufen mit demselben Satz hinterlegt, werden beide als erreicht markiert. Das fällt nur bei ungewöhnlich gebauten Staffeln auf.

## Den Rabatt einer Rabattgruppe abfragen

Außerhalb der Staffel fragen Sie eine Rabattgruppe direkt über ihre ID ab. Alle Tags dieses Abschnitts erwarten die ID als erstes Argument, üblicherweise als `$PR-DiscountID$` in der Produktansicht oder als `$BASKET-PR-DiscountID$` auf der Warenkorbseite.

| Tag | Liefert |
| - | - |
| `GD-DiscountForID_Available(<ID>)` | greift, wenn zu dieser ID überhaupt Stufen hinterlegt sind |
| `GD-DiscountForID_Granted(<ID>, <Stellen>)` | den aufgrund des Warenkorbs gewährten Rabattsatz |
| `GD-DiscountForID_TimeDependent(<ID>)` | greift, wenn zu dieser ID mindestens eine zeitabhängige Stufe hinterlegt ist |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{GD-DiscountForID_Available($PR-DiscountID$)}
   {GD-DiscountForID_Granted($PR-DiscountID$)}
      <p>Ihr Rabatt für dieses Produkt: ~GD-DiscountForID_Granted($PR-DiscountID$,2)~ %</p>
   {/GD-DiscountForID_Granted($PR-DiscountID$)}

   {!GD-DiscountForID_Granted($PR-DiscountID$)}
      <p>Für dieses Produkt gibt es einen Mengenrabatt.</p>
   {/!GD-DiscountForID_Granted($PR-DiscountID$)}
{/GD-DiscountForID_Available($PR-DiscountID$)}
```

> [!WARNING]
>
> `GD-DiscountForID_Available` sagt nur, dass zu dieser ID Regeln existieren, nicht dass gerade ein Rabatt gewährt wird. Ob tatsächlich etwas gewährt wird, beantwortet `GD-DiscountForID_Granted` als Klammerung. Wer nur `Available` prüft und dann den Satz ausgibt, schreibt bei einem noch nicht erreichten Schwellenwert eine Null auf die Seite.

Zeitabhängige Stufen gelten nur in einem hinterlegten Zeitraum. `GD-DiscountForID_TimeDependent` erkennt, dass eine Rabattgruppe solche Stufen enthält, und erlaubt Ihnen einen entsprechenden Hinweis wie "Aktionsrabatt".

### Den Bezugswert ausgeben

Zwei weitere Tags geben aus, worauf sich der gewährte Rabatt stützt. Damit zeigen Sie dem Besucher, wie viel er in dieser Rabattgruppe bereits im Warenkorb hat.

| Tag | Liefert |
| - | - |
| `GD-DiscountForID_Base(<ID>, <Stellen>)` | den Warenwert, der für diese Rabattgruppe zusammenkommt |
| `GD-DiscountForID_BaseQuantity(<ID>, <Stellen>)` | die Menge, die für diese Rabattgruppe zusammenkommt |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{GD-DiscountForID_Available($PR-DiscountID$)}
   <p>
      In dieser Rabattgruppe haben Sie ~GD-DiscountForID_BaseQuantity($PR-DiscountID$)~ Stück
      im Warenkorb, Warenwert ~GD-DiscountForID_Base($PR-DiscountID$,2)~.
   </p>
{/GD-DiscountForID_Available($PR-DiscountID$)}
```

Sie verhalten sich wie `GD-DiscountForID_Granted` und nehmen dieselben Argumente, geben statt des Rabattsatzes aber den Bezugswert beziehungsweise die Bezugsmenge aus.

### Die nächsthöhere Stufe zeigen

Mit zwei weiteren Argumenten rechnen die Tags so, als läge zusätzlich ein bestimmter Wert oder eine bestimmte Menge im Warenkorb. Damit beantworten Sie die Frage "Was bekomme ich, wenn ich noch eines dazulege".

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<p>
   Mit einem Stück mehr erhalten Sie
   ~GD-DiscountForID_Granted($PR-DiscountID$,0,$PR-Price$,1)~ % Rabatt.
</p>
```

Die Argumente sind der Reihe nach: Rabattgruppen-ID, Nachkommastellen, zusätzlicher Preis, zusätzliche Menge.

> [!WARNING]
>
> Der dritte und der vierte Parameter wirken nur gemeinsam. Das Shopsystem wertet sie erst aus, wenn alle vier Argumente angegeben sind. Ein Aufruf mit nur drei Argumenten rechnet mit dem unveränderten Warenkorb, ohne dass das auffällt. Geben Sie die Nachkommastellen deshalb auch dann an, wenn Sie null Stellen wollen.

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `GD-Data(<ID>)` | ja | ja | ja | ja |
| `GD-Data_ID` | ja | ja | ja | – |
| `GD-Data_FromQuantity` | ja | ja | ja | – |
| `GD-Data_FromPrice` | ja | ja | ja | – |
| `GD-Data_Discount(<Stellen>)` | ja | ja | ja | – |
| `GD-Data_DiscountGranted` | – | ja | ja | – |
| `GD-DiscountForID_Granted(<ID>, …)` | ja | ja | ja | – |
| `GD-DiscountForID_Base(<ID>, …)` | ja | ja | ja | – |
| `GD-DiscountForID_BaseQuantity(<ID>, …)` | ja | ja | ja | – |
| `GD-DiscountForID_Available(<ID>)` | – | ja | ja | – |
| `GD-DiscountForID_TimeDependent(<ID>)` | – | ja | ja | – |

Die Tags der `GD-Data_`Familie gelten nur innerhalb der `@GD-Data`-Schleife. Die übrigen Tags sind auf allen Templates zulässig.

Die Klammerungen von `GD-Data_ID`, `GD-Data_FromQuantity` und `GD-Data_FromPrice` vergleichen mit dem Argument, wenn eines angegeben ist. `{GD-Data_ID(VIP)}` greift also nur beim Durchlauf der Rabattgruppe VIP. Ohne Argument greifen sie, wenn überhaupt ein Wert vorliegt.

> [!WARNING]
>
> Bei `GD-Data_Discount` dient das Argument den Nachkommastellen. Als Klammerung mit Argument vergleicht das Shopsystem trotzdem die Stellenzahl mit dem formatierten Rabattsatz, was praktisch nie zutrifft. Verwenden Sie `GD-Data_Discount` mit Argument nur als Einzel-Tag.

## Verwandte Themen

* Wegweiser: [Rabatte festlegen](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/rabatte-festlegen.md)
* Referenz: discount.dat
* Referenz: [BD- (Mengenrabatte)](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise.md)
* Referenz: [PR- (Produktdaten)](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md)


## Related topics

- [Konfiguration discount.dat](https://dokumentation.websale.de/v8s/referenz/konfigurationen/konfiguration-discount-dat.md)
- [Rabatte festlegen](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/rabatte-festlegen.md)
- [Sektionen: Positionen und Zahlung](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-positionen-und-zahlung.md)


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