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

# VOUCHER- (Gutschein)

> Alle Eigenschaften eines Gutscheins im Template ausgeben: Wert und Abzugsart, Gültigkeit und Einlösegrenzen, Gutscheintypen, Produkt- und Kundenfilter, Mehrwährung, Sonderfunktionen und Meta-Gutscheine.

Ein Gutschein ist mehr als ein Betrag. Er hat eine Laufzeit, gilt vielleicht nur für bestimmte Produkte, nur für bestimmte Kunden, nur in bestimmten Subshops, lässt sich begrenzt oft einlösen und verträgt sich womöglich nicht mit anderen Gutscheinen. All das legt der Gutschein-Generator im Online-Servicebereich fest, und all das lässt sich im Template auslesen.

Die `VOUCHER-`Tags greifen auf diese Felder zu. Sie beantworten zwei verschiedene Fragen: Was ist mit dem Gutschein, den der Käufer gerade eingelöst hat, und was steht hinter einer beliebigen Gutscheinnummer.

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

## Die eine Regel, die für alle Tags gilt

Jedes Tag dieser Seite braucht einen Gutschein, auf den es sich bezieht. Dafür gibt es genau zwei Wege.

| Zusammenhang | Gemeint ist |
| - | - |
| innerhalb von `{ST-Voucher_OK}` | der Gutschein, den der Käufer eingelöst hat |
| innerhalb von `{VOUCHER-LoadData()}` | der Gutschein, dessen Nummer im Argument steht |

> [!WARNING]
>
> Außerhalb dieser beiden Bereiche sind alle Tags wirkungslos. Die einzigen Ausnahmen sind `VOUCHER-LoadData()` selbst und `VOUCHER-DataExists`, die den Rahmen ja erst aufspannen, sowie die vier Tags zu Meta-Gutscheinen, die sich auf die Sitzung beziehen.

Auf der neuen Seite steht sie einmal hier, und die Abschnitte darunter verweisen nur noch auf Abweichungen.

## Einen Gutschein laden

`VOUCHER-LoadData()` lädt einen Gutschein über seine Nummer. Das Argument unterstützt Tag-in-Tag.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-LoadData(1234)}
   {VOUCHER-DataExists}
      <p>Gutschein ~VOUCHER-Number~ über ~VOUCHER-Value_absoluteamount~ ~VOUCHER-CurrencyCode~</p>
   {/VOUCHER-DataExists}

   {!VOUCHER-DataExists}
      <p>Diese Gutscheinnummer kennen wir nicht.</p>
   {/!VOUCHER-DataExists}
{/VOUCHER-LoadData(1234)}
```

> [!WARNING]
>
> `VOUCHER-LoadData()` greift **immer**, auch wenn es die Nummer gar nicht gibt. Ob der Gutschein existiert, sagt allein `VOUCHER-DataExists`. Das verhält sich genauso wie `PR-LoadData()` bei Produkten. Wer die Prüfung weglässt, zeigt bei einer erfundenen Nummer eine Seite voller leerer Felder.

Geladen wird unabhängig davon, ob der Käufer den Gutschein gerade einlösen könnte. Ein abgelaufener oder bereits aufgebrauchter Gutschein lässt sich auf diesem Weg also trotzdem anzeigen. Das ist genau der Zweck, beispielsweise für eine Statusseite "Ihr Gutschein".

## Nummer, Charge und Währung

| Tag | Liefert |
| - | - |
| `VOUCHER-Number` | die Gutscheinnummer |
| `VOUCHER-ChargeID` | die Kennung der Charge |
| `VOUCHER-ChargeLabel` | die Label der Charge, kommagetrennt |
| `VOUCHER-ChargeCreator` | den Namen des Erstellers im Online-Servicebereich |
| `VOUCHER-CurrencyCode` | den Währungscode nach ISO, dreistellig |

Ein Gutschein kann mehrere Chargen-Label tragen. `VOUCHER-ChargeLabel` gibt sie dann als kommagetrennte Liste aus. Die Auswahlliste steht im Abschnitt `ChargeLabelValues` der `global.config`, und im Abschnitt `ChargeLabel` lässt sich die Angabe zur Pflicht machen.

> [!WARNING]
>
> Die Chargen-Kennung zählt im Shopsystem immer als Label, auch wenn der Ersteller gar keines vergeben hat. Für die Verträglichkeitsprüfung weiter unten ist das wichtig, denn damit hat jeder Gutschein mindestens ein Label.

## Wert und Abzugsart

Zuerst die Frage, **wie** der Gutschein rechnet, dann die Frage, **wie viel**.

| Tag | Code | Bedeutung |
| - | - | - |
| `VOUCHER-AmountType_isAbsolute` | 0 | fester Betrag |
| `VOUCHER-AmountType_isPercent` | 1 | Prozentsatz |
| `VOUCHER-AmountType_isCappedSetChildPosition` | 2 | Abzug des Set-Unterproduktpreises |

`VOUCHER-AmountType_code` gibt denselben Code als Zahl aus.

| Tag | Liefert |
| - | - |
| `VOUCHER-Value_absoluteamount` | den festen Betrag |
| `VOUCHER-Value_absoluteamount_left` | den noch verfügbaren Restbetrag |
| `VOUCHER-Value_percent` | den Prozentsatz |
| `VOUCHER-Value_cappedsetchildpositionamount` | den Abzug beim Set-Unterprodukt |
| `VOUCHER-MaxDiscountValue` | den Höchstbetrag bei einem prozentualen Gutschein |
| `VOUCHER-VATIndex` | den Index des Mehrwertsteuersatzes |
| `VOUCHER-VATRate` | den Mehrwertsteuersatz |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-AmountType_isAbsolute}
   <p>~VOUCHER-Value_absoluteamount~ ~VOUCHER-CurrencyCode~ Gutschrift</p>
   {VOUCHER-Value_absoluteamount_left}
      <p>Davon sind noch ~VOUCHER-Value_absoluteamount_left~ ~VOUCHER-CurrencyCode~ offen.</p>
   {/VOUCHER-Value_absoluteamount_left}
{/VOUCHER-AmountType_isAbsolute}

{VOUCHER-AmountType_isPercent}
   <p>
      ~VOUCHER-Value_percent~ Prozent Rabatt
      {VOUCHER-MaxDiscountValue}, höchstens ~VOUCHER-MaxDiscountValue~ ~VOUCHER-CurrencyCode~{/VOUCHER-MaxDiscountValue}
   </p>
{/VOUCHER-AmountType_isPercent}
```

Alle Wert-Tags greifen auch als Klammerung, und zwar dann, wenn ein Wert hinterlegt ist. Bei einem prozentualen Gutschein ist `VOUCHER-Value_absoluteamount` leer und umgekehrt. Fragen Sie deshalb zuerst die Abzugsart ab und geben Sie darin den passenden Wert aus.

Der Abzug des Set-Unterproduktpreises ist ein Sonderfall für Setprodukte. Ein Höchstbetrag lässt sich dabei nicht zusätzlich festlegen. Zu dieser Gutscheinart berät Sie Ihr Ansprechpartner bei der WEBSALE AG.

## Gültigkeit und Einlösegrenzen

| Tag | Liefert |
| - | - |
| `VOUCHER-ValidFrom_date` | das Datum, ab dem der Gutschein gilt |
| `VOUCHER-ValidFrom_unixtimestamp` | denselben Zeitpunkt als Unix-Zeitstempel |
| `VOUCHER-ValidUntil_date` | das Datum, bis zu dem er gilt |
| `VOUCHER-ValidUntil_unixtimestamp` | denselben Zeitpunkt als Unix-Zeitstempel |
| `VOUCHER-ValidInSubhops_list` | die Subshops als kommagetrennte Liste |
| `VOUCHER-MinOrder_Value` | den Mindestbestellwert |
| `VOUCHER-MaxRedeemable` | wie oft der Gutschein insgesamt einlösbar ist |
| `VOUCHER-MaxRedeemable_Redeemed` | wie oft er schon eingelöst wurde |
| `VOUCHER-MaxRedeemable_Remaining` | wie oft er noch einlösbar ist |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-MaxRedeemable}
   {VOUCHER-MaxRedeemable_Remaining}
      <p>Dieser Gutschein kann noch ~VOUCHER-MaxRedeemable_Remaining~-mal eingelöst werden.</p>
   {/VOUCHER-MaxRedeemable_Remaining}
   {!VOUCHER-MaxRedeemable_Remaining}
      <p>Dieser Gutschein ist aufgebraucht.</p>
   {/!VOUCHER-MaxRedeemable_Remaining}
{/VOUCHER-MaxRedeemable}
```

> [!WARNING]
>
> Die beiden Zähler ergeben nur innerhalb von `{VOUCHER-MaxRedeemable}` einen Sinn. Ohne festgelegte Höchstzahl gibt es nichts zu zählen, und die Klammerung greift dann ohnehin nicht.

`VOUCHER-ValidInSubhops_list` liefert eine rohe Liste. Mit den `DC-`Tags lässt sie sich in einzelne Einträge zerlegen.

### Wie weit der Mindestbestellwert noch entfernt ist

Drei weitere Tags beziehen sich nicht auf den Gutschein, sondern auf den aktuellen Warenkorb.

| Tag | Liefert |
| - | - |
| `VOUCHER-MinOrder_Base` | den für diesen Gutschein angerechneten Warenwert |
| `VOUCHER-MinOrder_Remaining` | wie viel noch bis zum Mindestbestellwert fehlt |
| `VOUCHER-MinOrder_NotReached` | Klammerung: der Mindestbestellwert ist nicht erreicht |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-MinOrder_NotReached}
   <p>
      Für diesen Gutschein fehlen noch ~VOUCHER-MinOrder_Remaining~ ~WS-Currency~
      bis zum Mindestbestellwert von ~VOUCHER-MinOrder_Value~ ~WS-Currency~.
   </p>
{/VOUCHER-MinOrder_NotReached}
```

Sie sind der Unterschied zwischen "Gutschein nicht einlösbar" und "es fehlen noch zwölf Euro", und das Zweite verkauft besser.

> [!WARNING]
>
> Die drei arbeiten **nur** innerhalb von `{ST-Voucher_OK}` und in der Mehrfachgutschein-Schleife. Innerhalb von `{VOUCHER-LoadData()}` geben sie bewusst nichts aus, denn dort liegt der Gutschein nicht zwingend im aktuellen Vorgang und ein Abstand zum Warenkorb lässt sich nicht berechnen.

Die Werte kommen bereits im Zahlenformat des Shops. Das Währungszeichen setzen Sie selbst.

## Die Gutscheintypen

`VOUCHER-Type_code` gibt den Typ als Zahl aus, acht Klammerungen fragen ihn einzeln ab.

| Code | Typ | Klammerung |
| - | - | - |
| 0 | Individualgutschein, Restbetrag nutzbar | `VOUCHER-Type_isStandard_RemainderReusable` |
| 1 | Individualgutschein, Restbetrag verfällt | `VOUCHER-Type_isStandard_RemainderExpires` |
| 2 | Universalgutschein ohne Einschränkung | `VOUCHER-Type_isUniversal_NoRestrictions` |
| 3 | Universalgutschein, einmal je Kunde | `VOUCHER-Type_isUniversal_OncePerCustomer` |
| 4 | Universalgutschein, nur für Neukunden | `VOUCHER-Type_isUniversal_NewCustomersOnly` |
| 5 | Individualgutschein, Restbetrag nutzbar, nur für Neukunden | `VOUCHER-Type_isStandard_RemainderReusable_NewCustomersOnly` |
| 6 | Individualgutschein, Restbetrag verfällt, nur für Neukunden | `VOUCHER-Type_isStandard_RemainderExpires_NewCustomersOnly` |
| 7 | individueller Mehrfachgutschein | `VOUCHER-Type_isUniversal_customerBinding` |

Die Codes 0 bis 6 kombinieren drei Merkmale: Individual- oder Universalgutschein, Restbetrag nutzbar oder verfallend, und ob eine Anmeldung nötig ist. Die Codes 3 bis 6 setzen einen angemeldeten Kunden voraus.

Typ 7 ist der Sonderfall: Dieser Gutschein lässt sich mehrfach einlösen, bindet sich aber beim ersten Einlösen an das Konto, das ihn zuerst verwendet hat. Danach ist er für andere Konten gesperrt. An welches Konto, sagt `VOUCHER-BoundUserIndex`.

> [!WARNING]
>
> `VOUCHER-BoundUserIndex` gibt den Userindex aus, an den der Gutschein gebunden ist, und greift als Klammerung, wenn eine Bindung besteht. Damit lässt sich bei einem Gutschein vom Typ 7 unterscheiden, ob er noch frei ist oder schon vergeben.

### Werbegutschein oder Kaufgutschein

| Tag | Code | Bedeutung |
| - | - | - |
| `VOUCHER-CampaignType_isCampaign` | 1 | Werbegutschein, gilt nur für bestimmte Produkte |
| `VOUCHER-CampaignType_isRegular` | 2 | Kaufgutschein, gilt für alle Produkte |

`VOUCHER-CampaignType_code` gibt den Code als Zahl aus.

## Produkt- und Kategoriefilter

Drei Klammerungen sagen, ob und wie ein Filter gesetzt ist, eine Schleife listet die Regeln auf.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-CatProdFilter_active}
   {VOUCHER-CatProdFilter_active_onlyValidFor}<h3>Gilt nur für:</h3>{/VOUCHER-CatProdFilter_active_onlyValidFor}
   {VOUCHER-CatProdFilter_active_notValidFor}<h3>Gilt nicht für:</h3>{/VOUCHER-CatProdFilter_active_notValidFor}

   <ul>
      {@VOUCHER-CatProdFilter_data}
         <li>
            ~VOUCHER-CatProdFilter_data_index~
            {VOUCHER-CatProdFilter_data_index_isCatIndex}(Kategorie){/VOUCHER-CatProdFilter_data_index_isCatIndex}
            {VOUCHER-CatProdFilter_data_index_isProdIndex}(Produkt){/VOUCHER-CatProdFilter_data_index_isProdIndex}
            {VOUCHER-CatProdFilter_data_index_isProdNumber}(Artikelnummer){/VOUCHER-CatProdFilter_data_index_isProdNumber}
            {VOUCHER-CatProdFilter_data_type_isWildCard}mit Platzhalter{/VOUCHER-CatProdFilter_data_type_isWildCard}
         </li>
      {/@VOUCHER-CatProdFilter_data}
   </ul>
{/VOUCHER-CatProdFilter_active}
```

| Tag | Bedeutung | Steht in |
| - | - | - |
| `VOUCHER-CatProdFilter_active` | Klammerung: ein Filter ist gesetzt | Standard |
| `VOUCHER-CatProdFilter_active_onlyValidFor` | Klammerung: Positivliste | Standard |
| `VOUCHER-CatProdFilter_active_notValidFor` | Klammerung: Ausschlussliste | Standard |
| `VOUCHER-CatProdFilter_data` | Anzahl, Klammerung und Schleife über die Regeln | Standard |
| `VOUCHER-CatProdFilter_data_index` | die Kennung der Regel | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_index_code` | 1 Kategorie, 2 Produktindex, 3 Artikelnummer | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_index_isCatIndex` | Klammerung: Kategorieindex | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_index_isProdIndex` | Klammerung: Produktindex | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_index_isProdNumber` | Klammerung: Artikelnummer | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_type_isOnlyValidFor` | Klammerung: diese Regel schließt ein | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_type_isNotValidFor` | Klammerung: diese Regel schließt aus | `{@…_data}` |
| `VOUCHER-CatProdFilter_data_type_isWildCard` | Klammerung: die Kennung enthält Platzhalter | `{@…_data}` |

Ein Filter kann einschließende und ausschließende Regeln zugleich enthalten. Deshalb gibt es die Unterscheidung zweimal: einmal auf Gutscheinebene als `_active_onlyValidFor` und `_active_notValidFor`, und einmal je Regel als `_data_type_isOnlyValidFor` und `_data_type_isNotValidFor`.

> [!WARNING]
>
> `VOUCHER-CatProdFilter_data_index_code` steht ausschließlich innerhalb der Schleife, so wie alle anderen `_data_`-Tags. Im allgemeinen Bereich greift es nicht.

### Setprodukte im Filter

| Tag | Code | Bedeutung |
| - | - | - |
| `VOUCHER-CatProdFilter_SetBehavior_AsUnit` | 0 | Setprodukte als Einheit betrachten |
| `VOUCHER-CatProdFilter_SetBehavior_Single` | 1 | Setprodukte einzeln betrachten |

`VOUCHER-CatProdFilter_SetBehavior` gibt den Code als Zahl aus.

## Kundenfilter

Aufbau wie beim Produktfilter, nur mit Kunden statt Produkten.

| Tag | Bedeutung | Steht in |
| - | - | - |
| `VOUCHER-CustomerFilter_active` | Klammerung: der Gutschein gilt nur für bestimmte Kunden | Standard |
| `VOUCHER-CustomerFilter_data` | Anzahl, Klammerung und Schleife | Standard |
| `VOUCHER-CustomerFilter_data_index` | die Kennung des Kunden | `{@…_data}` |
| `VOUCHER-CustomerFilter_data_index_code` | 0 Userindex, 1 Kundennummer | `{@…_data}` |
| `VOUCHER-CustomerFilter_data_index_isUserIndex` | Klammerung: Userindex | `{@…_data}` |
| `VOUCHER-CustomerFilter_data_index_isCustomerNumber` | Klammerung: Kundennummer | `{@…_data}` |

> [!WARNING]
>
> Achten Sie auf die Zahlen: Beim Kundenfilter beginnt die Codeliste bei 0, beim Produktfilter bei 1. Die beiden Listen sehen gleich aus, zählen aber unterschiedlich.

## Zugesteuerte Produkte

Ein Gutschein kann dem Warenkorb Produkte hinzufügen, beispielsweise eine Zugabe.

| Tag | Bedeutung | Steht in |
| - | - | - |
| `VOUCHER-VoucherProducts_active` | Klammerung: der Gutschein steuert Produkte zu | Standard |
| `VOUCHER-VoucherProducts_data` | Anzahl, Klammerung und Schleife | Standard |
| `VOUCHER-VoucherProducts_data_prodnumber` | die Artikelnummer | `{@…_data}` |

> [!WARNING]
>
> `VOUCHER-VoucherProducts_active` gilt im gewöhnlichen Rahmen, so wie die übrigen Klammerungen auf Gutscheinebene. Die Schleife `{@VOUCHER-CustomerFilter_data}` ist dafür nicht nötig.

## Mehrere Währungen

Ist ein Gutschein für mehrere Währungen hinterlegt, geben fünf Tags die Werte in einem technischen Format aus, das sich mit den `DC-`Tags zerlegen lässt.

| Tag | Liefert |
| - | - |
| `VOUCHER-MultiCurrency_CurrenciesData` | die gültigen Währungen |
| `VOUCHER-MultiCurrency_AbsoluteAmountData` | die Gutscheinwerte je Währung |
| `VOUCHER-MultiCurrency_AbsoluteAmountUsedData` | die bereits eingelösten Beträge je Währung |
| `VOUCHER-MultiCurrency_MaxDiscountData` | die Höchstbeträge je Währung |
| `VOUCHER-MultiCurrency_MinOrderData` | die Mindestbestellwerte je Währung |

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<c>EUR</c><c>CHF</c>
<g><c>EUR</c><a>10.00</a></g><g><c>CHF</c><a>12.00</a></g>
```

Die Währungsliste kommt in der ersten Form, alle übrigen in der zweiten mit Währung und Betrag je Gruppe. Zum Zerlegen nehmen Sie `DC-DynamicLoopX_setSeparatorTags()` und `DC-DynamicLoopX_settaggedData()`, für die Betragsgruppen zusätzlich `DC-FPX_extractTaggedData()`.

Die einfachen Tags wie `VOUCHER-Value_absoluteamount` liefern bei einem Mehrwährungsgutschein den Wert in der Währung des aktuellen Vorgangs. Die Mehrwährungstags brauchen Sie nur, wenn Sie alle Währungen zugleich zeigen wollen.

Referenz: [DC- (Datenkonvertierung)](https://dokumentation.websale.de/v8s/referenz/tags/dc/cookie-daten.md)

## Sonderfunktionen

Diese Klammerungen sagen, welche Zusatzregeln für den Gutschein gelten.

| Tag | Greift, wenn |
| - | - |
| `VOUCHER-SpecialFeatures` | überhaupt eine Sonderfunktion gesetzt ist |
| `VOUCHER-SpecialFeatures_FreeShipping` | der Gutschein versandkostenfreie Lieferung gewährt |
| `VOUCHER-SpecialFeatures_ValidOnlyForApp` | er nur in der App einlösbar ist |
| `VOUCHER-SpecialFeatures_RejectForUserAccountsWithDiscountOrDiscountList` | er für Kunden mit eigenem Rabatt gesperrt ist |
| `VOUCHER-SpecialFeatures_DisableOtherDiscounts` | er andere Rabatte außer Kraft setzt |
| `VOUCHER-SpecialFeatures_DisableAutoBasket` | er den automatischen Warenkorb unterbindet |
| `VOUCHER-SpecialFeatures_InventoryState` | er vom Lagerbestand abhängt |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-SpecialFeatures_FreeShipping}
   <p>Mit diesem Gutschein liefern wir versandkostenfrei.</p>
{/VOUCHER-SpecialFeatures_FreeShipping}
```

Die erste eignet sich als Rahmen um den ganzen Block mit Sonderhinweisen.

> [!WARNING]
>
> `_DisableOtherDiscounts` ist für den Käufer erklärungsbedürftig. Wer einen Kundenrabatt hat und diesen Gutschein einlöst, verliert den Rabatt für diese Bestellung. Weisen Sie im Template darauf hin, sonst entstehen Rückfragen.

### Abhängigkeit vom Lagerbestand

| Tag | Liefert |
| - | - |
| `VOUCHER-SpecialFeatures_InventoryState_ValueList` | die Lagerzustände `green`, `yellow` und `red`, für die der Gutschein gilt |
| `VOUCHER-SpecialFeatures_InventoryState_SetBehavior` | 0 für Setprodukte als Einheit, 1 für einzeln |

### Abhängigkeit von freien Produktdatenfeldern

Ein Gutschein kann daran geknüpft sein, dass ein freies Produktdatenfeld einen bestimmten Wert enthält. Dieselbe Prüfung gibt es auch in der umgekehrten Richtung als Ausschluss.

| Tag | Bedeutung |
| - | - |
| `VOUCHER-SpecialFeatures_AddProdFieldsFilter` | Klammerung: der Gutschein hängt an Produktdatenfeldern |
| `VOUCHER-SpecialFeatures_AddProdFieldsFilter_SetBehavior` | 0 für Setprodukte als Einheit, 1 für einzeln |
| `VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter` | Anzahl, Klammerung und Schleife über die Prüfungen |
| `VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter_FieldName` | den technischen Feldnamen |
| `VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter_ValueInList` | den Wert, der im Feld stehen muss |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-SpecialFeatures_AddProdFieldsFilter}
   <p>Dieser Gutschein gilt für Artikel mit folgenden Merkmalen:</p>
   <ul>
      {@VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter}
         <li>
            ~VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter_FieldName~
            enthält ~VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter_ValueInList~
         </li>
      {/@VOUCHER-SpecialFeatures_AddProdFieldsFilter_Filter}
   </ul>
{/VOUCHER-SpecialFeatures_AddProdFieldsFilter}
```

Dieselben fünf Tags gibt es mit `Negative` hinter `AddProdFieldsFilter`, also `VOUCHER-SpecialFeatures_AddProdFieldsFilterNegative` und so fort. Sie beschreiben Artikel, für die der Gutschein **nicht** gilt.

## Mehrere Gutscheine zugleich

Ist die Mehrfachgutschein-Funktion freigeschaltet, kann der Käufer weitere Gutscheine eingeben. `VOUCHER-MultiVoucher` läuft über sie.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-MultiVoucher}
   {@VOUCHER-MultiVoucher}
      <input type="text" name="~WS-VoucherNumber_input~" value="~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}
```

Als Einzel-Tag gibt `VOUCHER-MultiVoucher` die Zahl der **zusätzlichen** Gutscheine aus. Der erste eingegebene zählt nicht mit, der steht außerhalb der Schleife.

Die Schleife läuft über die zusätzlichen Gutscheine und hängt noch einen leeren Durchlauf an, solange die Höchstzahl nicht erreicht ist, ein gültiger Gutschein vorliegt und alle eingegebenen geprüft und gültig sind. Dieser leere Durchlauf ist das Eingabefeld für den nächsten Gutschein.

### Vertragen sich die Gutscheine

Ob zwei Gutscheine zusammen einlösbar sind, entscheidet das Shopsystem über Label. Jeder Gutschein hat eigene Label, dazu eine Positivliste und eine Ausschlussliste.

| Tag | Bedeutung |
| - | - |
| `VOUCHER-SpecialFeatures_Compatibility_labels` | Anzahl, Klammerung und Schleife über die eigenen Label |
| `VOUCHER-SpecialFeatures_Compatibility_whitelist` | dasselbe für die Positivliste |
| `VOUCHER-SpecialFeatures_Compatibility_blacklist` | dasselbe für die Ausschlussliste |
| `VOUCHER-SpecialFeatures_Compatibility_exclusive` | Klammerung: der Gutschein ist exklusiv |
| `VOUCHER-SpecialFeatures_Compatibility_ok` | Klammerung: er verträgt sich mit allen anderen |
| `VOUCHER-SpecialFeatures_Compatibility_notCompatible` | Schleife über die Gutscheine, mit denen er sich nicht verträgt |
| `VOUCHER-SpecialFeatures_Compatibility_notCompatible_errorCode` | den Grund als Zahl |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!VOUCHER-SpecialFeatures_Compatibility_ok}
   <p>Dieser Gutschein lässt sich nicht zusammen einlösen mit:</p>
   <ul>
      {@VOUCHER-SpecialFeatures_Compatibility_notCompatible}
         <li>~VOUCHER-SpecialFeatures_Compatibility_notCompatible~</li>
      {/@VOUCHER-SpecialFeatures_Compatibility_notCompatible}
   </ul>
{/!VOUCHER-SpecialFeatures_Compatibility_ok}
```

Ohne sie lässt sich einem Käufer nicht erklären, warum sein zweiter Gutschein abgelehnt wurde.

Exklusiv heißt: Dasselbe Label steht zugleich in der Positivliste und in der Ausschlussliste. Ein solcher Gutschein verträgt sich mit keinem anderen aus dieser Gruppe.

> [!WARNING]
>
> `VOUCHER-SpecialFeatures_Compatibility_notCompatible` gibt als Einzel-Tag die Nummer des jeweils anderen Gutscheins aus und läuft als Schleife über alle unverträglichen. Der Fehlercode daneben ist eine technische Zahl ohne Beschriftung. Zeigen Sie ihn dem Käufer nicht roh an, sondern übersetzen Sie ihn im Template.

## Meta-Gutscheine

Ein Meta-Gutschein ist ein Sammelcode, hinter dem mehrere einzelne Gutscheine stehen. Gibt der Käufer den Sammelcode ein, löst das Shopsystem alle dahinterliegenden Gutscheine zugleich ein.

| Tag | Bedeutung |
| - | - |
| `VOUCHER-MetaCode` | den Sammelcode, zugleich Klammerung |
| `VOUCHER-MetaSubCount` | die Zahl der eingelösten Einzelgutscheine |
| `VOUCHER-IsFromMeta` | Klammerung: dieser Gutschein stammt aus einem Sammelcode |
| `VOUCHER-MetaShowAsBlock` | Klammerung: der Sammelcode wird als Block angezeigt |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{VOUCHER-MetaCode}
   <p>Aktionscode ~VOUCHER-MetaCode~ mit ~VOUCHER-MetaSubCount~ Gutscheinen eingelöst.</p>
{/VOUCHER-MetaCode}

{@VOUCHER-MultiVoucher}
   {VOUCHER-IsFromMeta}<span class="hinweis">aus dem Aktionscode</span>{/VOUCHER-IsFromMeta}
{/@VOUCHER-MultiVoucher}
```

> [!WARNING]
>
> `VOUCHER-IsFromMeta` und `VOUCHER-MetaShowAsBlock` sind reine Klammerungen. Es gibt sie weder als Einzel-Tag noch als Schleife.
>
> `VOUCHER-MetaSubCount` zählt die **erfolgreich eingelösten** Einzelgutscheine, nicht die hinterlegten. Waren einzelne davon abgelaufen oder aufgebraucht, ist die Zahl kleiner als im Sammelcode konfiguriert. Formulieren Sie den Text entsprechend.

Es lässt sich immer nur ein Sammelcode zugleich einlösen. Welche Einzelgutscheine dahinterstehen, steht in einer Konfigurationsdatei des Shops, nicht im Gutschein-Generator.

`VOUCHER-MetaShowAsBlock` steuert die Darstellung. Der Wert kommt aus den Daten des Sammelcodes, und fehlt er dort, greift die Einstellung aus der Shopkonfiguration. Mit dieser Klammerung zeigen Sie die Einzelgutscheine entweder als einen Block oder einzeln auflistbar.

Die vier Meta-Tags beziehen sich auf die Sitzung und nicht auf einen geladenen Gutschein. Sie sind damit die einzigen Tags dieser Seite, die auch außerhalb von `{VOUCHER-LoadData()}` und `{ST-Voucher_OK}` arbeiten. `VOUCHER-IsFromMeta` greift zusätzlich innerhalb der Mehrfachgutschein-Schleife auf den jeweiligen Gutschein zu.

## Die Tags im Überblick

| Gruppe | Tags | Typ |
| - | - | - |
| Laden | `VOUCHER-LoadData()` | nur Bereichs-Tag |
| Laden | `VOUCHER-DataExists` | Bereich und negativer Bereich |
| Kennungen | `VOUCHER-Number`, `VOUCHER-ChargeID`, `VOUCHER-ChargeLabel`, `VOUCHER-ChargeCreator`, `VOUCHER-CurrencyCode` | Einzel-Tag und Klammerung |
| Abzugsart | `VOUCHER-AmountType_code` | nur Einzel-Tag |
| Abzugsart | `VOUCHER-AmountType_isAbsolute`, `_isPercent`, `_isCappedSetChildPosition` | nur Klammerung |
| Werte | `VOUCHER-Value_absoluteamount`, `_absoluteamount_left`, `VOUCHER-Value_percent`, `VOUCHER-Value_cappedsetchildpositionamount`, `VOUCHER-MaxDiscountValue`, `VOUCHER-VATIndex`, `VOUCHER-VATRate` | Einzel-Tag und Klammerung |
| Gültigkeit | `VOUCHER-ValidFrom_date`, `_unixtimestamp`, `VOUCHER-ValidUntil_date`, `_unixtimestamp`, `VOUCHER-ValidInSubhops_list`, `VOUCHER-MinOrder_Value` | Einzel-Tag und Klammerung |
| Einlösegrenzen | `VOUCHER-MaxRedeemable`, `_Redeemed`, `_Remaining` | Einzel-Tag und Klammerung |
| Mindestbestellwert | `VOUCHER-MinOrder_Base`, `VOUCHER-MinOrder_Remaining` | Einzel-Tag und Klammerung |
| Mindestbestellwert | `VOUCHER-MinOrder_NotReached` | nur Klammerung |
| Typ | `VOUCHER-Type_code`, `VOUCHER-CampaignType_code` | nur Einzel-Tag |
| Typ | die acht `VOUCHER-Type_is…`, `VOUCHER-CampaignType_isCampaign`, `_isRegular` | nur Klammerung |
| Typ | `VOUCHER-BoundUserIndex` | Einzel-Tag und Klammerung |
| Produktfilter | `VOUCHER-CatProdFilter_data` | Einzel-Tag, Klammerung und Schleife |
| Produktfilter | `VOUCHER-CatProdFilter_data_index`, `_data_index_code`, `VOUCHER-CatProdFilter_SetBehavior` | nur Einzel-Tag |
| Produktfilter | alle übrigen `VOUCHER-CatProdFilter_…` | nur Klammerung |
| Kundenfilter | `VOUCHER-CustomerFilter_data` | Einzel-Tag, Klammerung und Schleife |
| Kundenfilter | `VOUCHER-CustomerFilter_data_index`, `_data_index_code` | nur Einzel-Tag |
| Kundenfilter | `VOUCHER-CustomerFilter_active`, `_data_index_isUserIndex`, `_data_index_isCustomerNumber` | nur Klammerung |
| Zugesteuerte Produkte | `VOUCHER-VoucherProducts_data` | Einzel-Tag, Klammerung und Schleife |
| Zugesteuerte Produkte | `VOUCHER-VoucherProducts_data_prodnumber` | nur Einzel-Tag |
| Zugesteuerte Produkte | `VOUCHER-VoucherProducts_active` | nur Klammerung |
| Mehrwährung | die fünf `VOUCHER-MultiCurrency_…` | Einzel-Tag und Klammerung |
| Sonderfunktionen | `VOUCHER-SpecialFeatures_…_SetBehavior` | nur Einzel-Tag |
| Sonderfunktionen | `VOUCHER-SpecialFeatures_…_ValueList`, `_Filter_FieldName`, `_Filter_ValueInList` | Einzel-Tag und Klammerung |
| Sonderfunktionen | `VOUCHER-SpecialFeatures_…_Filter` | Einzel-Tag, Klammerung und Schleife |
| Sonderfunktionen | alle übrigen `VOUCHER-SpecialFeatures_…` | nur Klammerung |
| Mehrfachgutschein | `VOUCHER-MultiVoucher` | alle vier Verwendungsarten |
| Verträglichkeit | `_Compatibility_labels`, `_whitelist`, `_blacklist`, `_notCompatible` | Einzel-Tag, Klammerung und Schleife |
| Verträglichkeit | `_Compatibility_notCompatible_errorCode` | nur Einzel-Tag |
| Verträglichkeit | `_Compatibility_exclusive`, `_Compatibility_ok` | nur Klammerung |
| Meta-Gutschein | `VOUCHER-MetaCode`, `VOUCHER-MetaSubCount` | Einzel-Tag und Klammerung |
| Meta-Gutschein | `VOUCHER-IsFromMeta`, `VOUCHER-MetaShowAsBlock` | nur Klammerung |

Alle Tags sind auf allen Templates zulässig. Maßgeblich ist nicht das Template, sondern der Rahmen aus `{VOUCHER-LoadData()}` oder `{ST-Voucher_OK}`, wie am Anfang dieser Seite beschrieben.

## Verwandte Themen

* Wegweiser: Gutscheine anbieten
* Referenz: `ST-Voucher_OK` und `ST-Voucher_checked` auf der Seite [ST- (Seitenzustand)](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md)
* Referenz: `BT-Voucher` und `BT-Voucher_delete` auf der Seite [BT- (Buttons)](https://dokumentation.websale.de/v8s/referenz/tags/bt/adressen.md)
* Referenz: `WS-VoucherNumber` und `WS-VoucherNumber_input` auf der Seite [WS- (Allgemeine Tags)](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md)
* Referenz: [DC- (Datenkonvertierung)](https://dokumentation.websale.de/v8s/referenz/tags/dc/cookie-daten.md)


## Related topics

- [$wsVoucher - Gutscheine](https://dokumentation.websale.de/frontend/referenz/module/wsvoucher.md)
- [Sektionen: Positionen und Zahlung](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-positionen-und-zahlung.md)
- [Voucher](https://dokumentation.websale.de/frontend/referenz/aktionen/voucher.md)
- [Gutschein „versandkostenfrei“](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutschein-versandkostenfrei.md)
- [Gutschein-Eingabe vorsehen](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutschein-eingabe-vorsehen.md)


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