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

# Mehrere Gutscheine einlösen

> Bis zu zehn Gutscheine je Bestellung zulassen, die Eingabefelder dafür einrichten und prozentuale von absoluten Gutscheinen getrennt ausweisen.

Standardmäßig nimmt der Shop einen Gutschein je Bestellung an. Mit dieser Erweiterung sind es bis zu zehn. Sobald der Kunde die erste Nummer eingelöst hat, erscheint ein weiteres Eingabefeld.

Die Zehn setzt sich zusammen aus dem ersten Gutschein und neun weiteren. Diese Trennung zieht sich durch die ganze Umsetzung: Der erste Gutschein wird im Template wie bisher angesprochen, die neun weiteren stecken in einer Schleife.

![Screen Multivoucher](https://mintcdn.com/websaleag-44ee7ea6/UyjGmXApgB40YKCW/images/screen-multivoucher.png?fit=max\&auto=format\&n=UyjGmXApgB40YKCW\&q=85\&s=2f91cdd82e66cc6052f1704a9311d26d)

## Welche Gutscheine sich kombinieren lassen

Nicht jede Gutscheinart ist kombinierbar. Kombinieren lassen sich derzeit:

| Gutscheinart | Bedingung |
| - | - |
| Kauf- und Werbegutscheine mit prozentualem Rabatt | müssen auf Positionsebene ausgewiesen werden, also `ShowPercentalVoucherDiscountForPosition-Allow = yes` |
| Kaufgutscheine mit festem Betrag | ohne zugewiesenen Mehrwertsteuersatz |
| Werbegutscheine mit festem Betrag | ohne zugewiesenen Mehrwertsteuersatz |
| Gutscheine ohne Einfluss auf Positionen oder warenwertabhängige Summen | beispielsweise Versandkostenerlass, Berechtigungscodes und Gutscheine, die kostenfreie Produkte zusteuern |

> [!WARNING]
>
> Ein Werbegutschein mit festem Betrag wirkt in dieser Kombination **ausnahmslos auf alle Produkte**. Der sonst übliche Ausschluss nicht werbegutscheinfähiger Produkte greift hier nicht. Prüfen Sie das, bevor Sie preisgebundene Ware im Sortiment haben.

Ob sich zwei konkrete Gutscheine vertragen, lässt sich zusätzlich je Gutschein steuern. Über die Sonderfunktion für Kombinierbarkeit lassen sich Gutscheine als ausschließlich kennzeichnen oder über Erlaubnis- und Sperrlisten aneinander binden. Schlägt diese Prüfung fehl, erscheint der Ablehnungsgrund 27.

Wegweiser: [Prozentuale Gutscheine](https://dokumentation.websale.de/v8s/gutscheine-anbieten/prozentuale-gutscheine.md)

## Voraussetzung

Der Gutschein-Generator muss freigeschaltet sein. Wenden Sie sich dafür an Ihren WEBSALE-Ansprechpartner.

Kommen die Gutscheine aus einem externen System und liegen deshalb nicht im WEBSALE-Format vor, ergänzen Sie im Abschnitt `<Voucher-Txt>` der `shop.config` den Eintrag `ExternalVouchers-Allow = yes`.

## Schritt 1: Die Funktion im Testmodus einschalten

Die Einrichtung läuft bewusst in zwei Stufen. Setzen Sie den Schalter zunächst auf `test`, dann wirkt die Funktion ausschließlich im Testmodus des Shops und für echte Kunden ändert sich nichts.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Voucher-Txt>
   MultiVoucher-Allow                      = test
   UseRoundedPercentalMultiVoucherDiscount =        # [yes|no], Voreinstellung: no
   MultiVoucher-MinOrderBehavior           =        # [UseMax], Voreinstellung: Summe
</Voucher-Txt>
```

| Eintrag | Bedeutung |
| - | - |
| `MultiVoucher-Allow` | `yes` schaltet die Funktion frei, `test` nur im Testmodus des Shops, jeder andere Wert lässt sie aus |
| `UseRoundedPercentalMultiVoucherDiscount` | `yes` rundet bei prozentualen Gutscheinen die Zwischenergebnisse, sonst wird erst nach Addition aller Gutscheinbeträge gerundet |
| `MultiVoucher-MinOrderBehavior` | `UseMax` prüft gegen den höchsten Mindestbestellwert der eingelösten Gutscheine, jeder andere Wert gegen deren Summe |

`MultiVoucher-MinOrderBehavior` entscheidet darüber, wie streng die Aktion ist. Drei Gutscheine mit je 50 Euro Mindestbestellwert verlangen in der Voreinstellung einen Warenkorb über 150 Euro, mit `UseMax` genügen 50 Euro. Das ist die Stellschraube, an der sich der wirtschaftliche Rahmen einer Mehrfachaktion entscheidet.

> [!WARNING]
>
> Das Abschalten ist heikler als das Einschalten. Eine laufende Sitzung, in der schon mehrere Codes stecken, würde durch das Abschalten in einen widersprüchlichen Zustand geraten. Der Shop lässt den Wechsel auf `no` deshalb nur für Sitzungen wirksam werden, in denen noch kein zusätzlicher Gutschein eingegeben wurde. Bestehende Sitzungen mit mehreren Codes laufen mit der alten Einstellung weiter.

Referenz: [Abschnitt Voucher-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/preise-steuern-und-waehrung.md#voucher-txt)

## Schritt 2: Die Eingabefelder einrichten

Der erste Gutschein bleibt unverändert, die weiteren kommen in die Schleife `VOUCHER-MultiVoucher`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Basket~" method="post">

   <!-- Erster Gutschein -->
   <input type="text" name="~WS-VoucherNumber_input~" value="~WS-VoucherNumber~"
          {WS-VoucherNumber} disabled readonly{/WS-VoucherNumber}>
   {WS-VoucherNumber}
      {ST-Voucher_checked}
         <button type="submit" name="~BT-Voucher_delete~">Gutschein löschen</button>
      {/ST-Voucher_checked}
      {!ST-Voucher_checked}
         <button type="submit" name="~BT-Voucher~">Gutschein einlösen</button>
      {/!ST-Voucher_checked}
   {/WS-VoucherNumber}
   {!WS-VoucherNumber}
      <button type="submit" name="~BT-Voucher~">Gutschein einlösen</button>
   {/!WS-VoucherNumber}

   <!-- Weitere Gutscheine -->
   {VOUCHER-MultiVoucher}
      {@VOUCHER-MultiVoucher}
         <input type="text" name="~WS-VoucherNumber_input~" value="~WS-VoucherNumber~"
                {WS-VoucherNumber} disabled readonly{/WS-VoucherNumber}>
         {ST-Voucher_checked}
            <button type="submit" name="~BT-Voucher_delete~">Gutschein löschen</button>
         {/ST-Voucher_checked}
         {!ST-Voucher_checked}
            <button type="submit" name="~BT-Voucher~">Gutschein einlösen</button>
         {/!ST-Voucher_checked}
      {/@VOUCHER-MultiVoucher}
   {/VOUCHER-MultiVoucher}

</form>
```

> [!WARNING]
>
> In der Schleife stecken **nur die zusätzlichen** Gutscheine, nicht der erste. Wer alle eingegebenen Nummern anzeigen will, muss das Tag zweimal setzen, einmal außerhalb und einmal innerhalb der Schleife. Diese Aufteilung ist die häufigste Fehlerquelle bei dieser Erweiterung.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Eingegebene Gutscheinnummern:

~WS-VoucherNumber~
{VOUCHER-MultiVoucher}
   {@VOUCHER-MultiVoucher}
      ~WS-VoucherNumber~
   {/@VOUCHER-MultiVoucher}
{/VOUCHER-MultiVoucher}
```

Innerhalb der Schleife beziehen sich die gutscheinbezogenen Tags auf den jeweiligen Gutschein des Durchlaufs. Das gilt für alle `VOUCHER-`Tags, die Gutscheindaten lesen, beispielsweise `VOUCHER-DataExists`, `VOUCHER-Number` und `VOUCHER-ChargeID`, sowie zusätzlich für `BASKET-VoucherRest`, `BASKET-VoucherDeleteLink`, `BASKET-VoucherNotApplicable`, `BASKET-PR-VoucherApplies` und `ST-Voucher_OK`.

Die Werte der zusätzlichen Gutscheine geben Sie nach demselben Muster aus.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-MultiVoucher}
   {@VOUCHER-MultiVoucher}
      {ST-Voucher_checked}
         Gutschein (~WS-VoucherNumber~)
         ~BASKET-VoucherDiscount~ ~WS-CurrencySymbol~
      {/ST-Voucher_checked}
   {/@VOUCHER-MultiVoucher}
{/VOUCHER-MultiVoucher}
```

Referenz: [WS-VoucherNumber\_input](https://dokumentation.websale.de/v8s/referenz/tags/ws/warenkorb-preise-waehrung-und-bonus.md#die-tags-im-uberblick) · [WS-VoucherNumber](https://dokumentation.websale.de/v8s/referenz/tags/ws/warenkorb-preise-waehrung-und-bonus.md#die-tags-im-uberblick) · [ST-Voucher\_checked](https://dokumentation.websale.de/v8s/referenz/tags/voucher-gutschein.md#verwandte-themen) · [BT-Voucher\_delete](https://dokumentation.websale.de/v8s/referenz/tags/bt/produkt-und-warenkorb.md#schaltflachen-die-anderswo-beschrieben-sind) · [BT-Voucher](https://dokumentation.websale.de/v8s/referenz/tags/bt/produkt-und-warenkorb.md#schaltflachen-die-anderswo-beschrieben-sind) · [VOUCHER-MultiVoucher](https://dokumentation.websale.de/v8s/referenz/tags/voucher-gutschein.md) · [BASKET-VoucherDiscount](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#der-gutschein-in-der-rechnung)

## Schritt 3: Die zwei neuen Fehlermeldungen ergänzen

Mit mehreren Gutscheinen kommen zwei Ablehnungsgründe hinzu, die es vorher nicht geben konnte. Ergänzen Sie beide dort, wo Sie die Gutscheineingabe eingebaut haben.

| Grund | Wann er auftritt |
| - | - |
| 26 | dieselbe Gutscheinnummer wurde ein zweites Mal eingegeben |
| 27 | der Gutschein verträgt sich nicht mit einem bereits eingelösten |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MSG-Voucher_error(26)}
   Diese Gutscheinnummer haben Sie bereits eingegeben.
{/MSG-Voucher_error(26)}

{MSG-Voucher_error(27)}
   Dieser Gutschein lässt sich nicht mit den bereits eingelösten kombinieren.
{/MSG-Voucher_error(27)}
```

Referenz: [MSG-Voucher\_error](https://dokumentation.websale.de/v8s/referenz/tags/msg-meldungen.md#gutscheine)

## Schritt 4: Im Testmodus prüfen

Rufen Sie den Shop im Testmodus auf und lösen Sie verschiedene kombinierbare Gutscheine ein.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.beispielshop.de/?test=on
https://www.beispielshop.de/?test=off
```

Prüfen Sie dabei nicht nur, dass mehrere Codes angenommen werden, sondern auch die Summen. Gerade das Zusammenspiel aus prozentualen und absoluten Gutscheinen und die Rundung lassen sich nur an echten Zahlen beurteilen.

Wegweiser: [Testmodi des Shops ein-/ausschalten](https://dokumentation.websale.de/v8s/domains/testmodi-des-shops-ein-ausschalten.md)

## Schritt 5: Live schalten

Setzen Sie den Schalter auf `yes` und entfernen Sie alle Klammerungen, die Sie für den Test in die Templates eingebaut haben.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Voucher-Txt>
   MultiVoucher-Allow = yes
</Voucher-Txt>
```

## Prozentuale und absolute Gutscheine getrennt ausweisen

Prozentuale Gutscheine stecken bereits in der Zwischensumme, absolute werden erst davon abgezogen. Für den Kunden ist das nicht erkennbar, wenn beide in einer Zeile stehen. Deshalb lassen sich beide Arten getrennt ausgeben, und die Bereiche erscheinen nur, wenn es die jeweilige Art überhaupt gibt.

![Multivoucher Prozentuale Absolute Getrennt](https://mintcdn.com/websaleag-44ee7ea6/UyjGmXApgB40YKCW/images/multivoucher-prozentuale-absolute-getrennt.jpg?fit=max\&auto=format\&n=UyjGmXApgB40YKCW\&q=85\&s=0165bce11e72780bf239d81d0b3ad85c)

### Die prozentualen Gutscheine bei der Zwischensumme

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BASKET-SubTotalSum}

   Zwischensumme: ~BASKET-SubTotalSum~ ~WS-CurrencySymbol~

   {BASKET-PercentalVoucherDiscountSum}
      nach Abzug prozentualer Gutscheine im Wert von
      ~BASKET-PercentalVoucherDiscountSum~ ~WS-CurrencySymbol~<br>

      {VOUCHER-Number}
         {ST-Voucher_checked}
            {VOUCHER-AmountType_isPercent}
               ~VOUCHER-Number~ ~BASKET-PercentalVoucherDiscount~ ~WS-CurrencySymbol~<br>
            {/VOUCHER-AmountType_isPercent}
         {/ST-Voucher_checked}
      {/VOUCHER-Number}

      {VOUCHER-MultiVoucher}
         {@VOUCHER-MultiVoucher}
            {ST-Voucher_checked}
               {VOUCHER-AmountType_isPercent}
                  ~VOUCHER-Number~ ~BASKET-PercentalVoucherDiscount~ ~WS-CurrencySymbol~<br>
               {/VOUCHER-AmountType_isPercent}
            {/ST-Voucher_checked}
         {/@VOUCHER-MultiVoucher}
      {/VOUCHER-MultiVoucher}
   {/BASKET-PercentalVoucherDiscountSum}

{/BASKET-SubTotalSum}
```

Das Muster wiederholt sich zweimal, einmal für den ersten Gutschein und einmal in der Schleife. `VOUCHER-AmountType_isPercent` sorgt dafür, dass in diesem Block nur prozentuale Gutscheine auftauchen.

### Die absoluten Gutscheine darunter

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BASKET-VoucherDiscountSum}
   {ST-Voucher_checked}
      Gutschein-Rabatt<br>

      {VOUCHER-Number}
         {ST-Voucher_checked}
            {VOUCHER-AmountType_isAbsolute}
               ~VOUCHER-Number~ ~BASKET-VoucherDiscount~ ~WS-CurrencySymbol~<br>
            {/VOUCHER-AmountType_isAbsolute}
         {/ST-Voucher_checked}
      {/VOUCHER-Number}

      {VOUCHER-MultiVoucher}
         {@VOUCHER-MultiVoucher}
            {ST-Voucher_checked}
               {VOUCHER-AmountType_isAbsolute}
                  ~VOUCHER-Number~ ~BASKET-VoucherDiscount~ ~WS-CurrencySymbol~<br>
               {/VOUCHER-AmountType_isAbsolute}
            {/ST-Voucher_checked}
         {/@VOUCHER-MultiVoucher}
      {/VOUCHER-MultiVoucher}

      ~BASKET-VoucherDiscountSum~ ~WS-CurrencySymbol~
   {/ST-Voucher_checked}
{/BASKET-VoucherDiscountSum}
```

### Die Gesamtersparnis ausweisen (optional)

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-Voucher_checked}
   Gewährte Gutschein-Rabatte<br>
      ~WS-DisablePriceAndNumberFormat~
      ~DC-CommercialCalc1_set($BASKET-PercentalVoucherDiscountSum$)~
      ~DC-CommercialCalc1_add($BASKET-VoucherDiscountSum$)~
      ~WS-EnablePriceAndNumberFormat~
      ~DC-CommercialCalc1~ ~WS-CurrencySymbol~<br>

   davon prozentuale Gutscheine:
      ~BASKET-PercentalVoucherDiscountSum~ ~WS-CurrencySymbol~<br>

   davon absolute Gutscheine:
      ~BASKET-VoucherDiscountSum~ ~WS-CurrencySymbol~<br>
{/ST-Voucher_checked}
```

> [!WARNING]
>
> Die Preisformatierung muss für die Rechnung abgeschaltet werden. Sonst gehen die Beträge mit Tausenderpunkt und Komma in die Addition, und das Ergebnis stimmt nicht. Schalten Sie sie unmittelbar danach wieder ein, damit die Formatierung im übrigen Template erhalten bleibt.

Referenz: [BASKET-SubTotalSum](https://dokumentation.websale.de/v8s/referenz/tags/basket/warenkorbsummen.md#warenwert-und-zwischensumme) · [BASKET-PercentalVoucherDiscountSum](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#der-gutschein-in-der-rechnung) · [BASKET-PercentalVoucherDiscount](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#basket-percentalvoucherdiscount) · [BASKET-VoucherDiscountSum](https://dokumentation.websale.de/v8s/referenz/tags/basket/gutscheine-im-warenkorb.md#der-gutschein-in-der-rechnung) · [VOUCHER-AmountType\_isPercent](https://dokumentation.websale.de/v8s/referenz/tags/voucher-gutschein.md#wert-und-abzugsart) · [VOUCHER-AmountType\_isAbsolute](https://dokumentation.websale.de/v8s/referenz/tags/voucher-gutschein.md#wert-und-abzugsart) · [WS-DisablePriceAndNumberFormat](https://dokumentation.websale.de/v8s/referenz/tags/ws/shop-seite-und-technik.md#die-tags-im-uberblick) · [DC-CommercialCalc1\_set](https://dokumentation.websale.de/v8s/referenz/tags/dc/parameter.md)

## Verwandte Themen

* Wegweiser: [Gutscheine anbieten: Übersicht](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anbieten-uebersicht.md)
* Wegweiser: [Gutschein-Eingabe vorsehen](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutschein-eingabe-vorsehen.md)
* Wegweiser: [Prozentuale Gutscheine](https://dokumentation.websale.de/v8s/gutscheine-anbieten/prozentuale-gutscheine.md)
* Wegweiser: Testmodi des Shops ein-/ausschalten


## Related topics

- [META-Gutscheine](https://dokumentation.websale.de/v8s/gutscheine-anbieten/meta-gutscheine.md)
- [Gutscheine anbieten: Übersicht](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anbieten-uebersicht.md)
- [Gutschein-Eingabe vorsehen](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutschein-eingabe-vorsehen.md)
- [Sektionen: Positionen und Zahlung](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-positionen-und-zahlung.md)
- [Preise, Steuern und Währung](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/preise-steuern-und-waehrung.md)


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