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

# Prime-Shopping

> Kostenpflichtige Vorteilspakete mit fester Laufzeit anbieten, die dem Käufer Prime-Preise, Prime-Produkte, Prime-Versand oder den Wegfall des Mindestbestellwerts verschaffen.

Mit Prime-Shopping verkaufen Sie Ihren Kunden ein Vorteilspaket. Wer es kauft, erhält für eine feste Laufzeit besondere Konditionen, beispielsweise Versandkostenfreiheit, günstigere Preise oder Zugang zu Produkten, die anderen Kunden verschlossen bleiben. Die Vorteile gelten für jede Bestellung während der Laufzeit.

Technisch ist ein Prime-Paket ein Set-Produkt mit fester Zusammenstellung. Das Set-Oberprodukt ist das Paket, das der Kunde kauft. Die Set-Unterprodukte sind die Optionen, also die einzelnen Vorteile. Wer diese Bauweise einmal verstanden hat, versteht auch, warum manche der folgenden Regeln so streng sind.

![Prime](https://mintcdn.com/websaleag-44ee7ea6/UyjGmXApgB40YKCW/images/prime.png?fit=max\&auto=format\&n=UyjGmXApgB40YKCW\&q=85\&s=8dcc228c07762a2d0cab72d3277d4abe)

Wegweiser: [Set-Produkte mit fester Zusammenstellung](https://dokumentation.websale.de/v8s/set-produkte/set-produkte-mit-fester-zusammenstellung.md)

## Die Prime-Optionen

Jedem Prime-Paket weisen Sie zwischen einer und zehn Optionen zu. Jede Option ist ein Set-Unterprodukt und trägt in den Produktdaten einen Code.

| Code | Bedeutung |
| - | - |
| 1 | das Prime-Paket selbst, also das Set-Oberprodukt |
| 2 | Prime-Versand kann genutzt werden |
| 3 | kein Mindestbestellwert |
| 4 | Prime-Produkte dürfen bestellt werden |
| 5 | Prime-Preise werden gewährt |

Code 1 ist dem Set-Oberprodukt vorbehalten. Als Option zählt nur, was einen Code größer als 1 trägt. Der Shop ignoriert Set-Unterprodukte mit Code 1 beim Ermitteln der Berechtigungen.

### Was die einzelnen Optionen bewirken

**Prime-Produkte** sehen alle Kunden im Shop, bestellen können sie aber nur Kunden mit dieser Option. Die Kennzeichnung erfolgt in den Produktdaten, die Durchsetzung übernimmt der Shop.

**Prime-Preise** hinterlegen Sie je Produkt in den Produktdaten, wahlweise mit einem Gültigkeitszeitraum. Der Prime-Preis lässt sich allen Kunden als Anreiz anzeigen, abgerechnet wird er nur bei Kunden mit dieser Option. Loggt sich ein Prime-Kunde erst ein, nachdem er Produkte in den Warenkorb gelegt hat, rechnet der Shop den Warenkorb auf die Prime-Preise um.

**Kein Mindestbestellwert** hebt einen im Shop vorgesehenen Mindestbestellwert für diesen Kunden auf.

**Prime-Versand** gibt dem Kunden Zugriff auf Versandarten, die Sie eigens für Prime-Kunden angelegt haben, beispielsweise mit niedrigeren Kosten oder ohne Versandkosten. Da eine Versandart ohnehin lieferlandabhängig konfigurierbar ist, lässt sich Versandkostenfreiheit auch auf einzelne Länder begrenzen.

Ein Prime-Vorteil greift auch dann sofort, wenn der Kunde das passende Prime-Paket gerade erst im Warenkorb liegen hat. Der Shop prüft neben dem Kundenkonto auch den aktuellen Warenkorb. Damit kann ein Kunde Paket und Prime-Produkt im selben Einkauf bestellen.

## Welcher Kunde sieht welchen Preis

Sie entscheiden im Template, welcher Preis als Kaufpreis und welcher als Anreiz erscheint.

| Kundenart | Kaufpreis | Zweiter Preis als Anreiz |
| - | - | - |
| nicht eingeloggt | `~PR-Price~`, beispielsweise 10 € | `~PR-PrimePrice~`, beispielsweise 8 €, als "Ihr Preis als Prime-Kunde wäre" |
| eingeloggt, ohne Prime | `~PR-Price~`, beispielsweise 10 € | `~PR-PrimePrice~`, beispielsweise 8 €, als "Ihr Preis als Prime-Kunde wäre" |
| eingeloggt, mit Prime | `~PR-PrimePrice~`, beispielsweise 8 € | `~PR-Price~`, beispielsweise 10 €, als regulärer Verkaufspreis |

> [!WARNING]
>
> Ist der Prime-Preis höher als der reguläre Preis, verwendet der Shop immer den regulären Preis. Prime-Preise lassen sich außerdem nicht mit Staffelpreisen kombinieren.

## Laufzeit, Kündigung und Verlängerung

Jedes Prime-Paket hat eine feste Laufzeit und eine Kündigungsfrist. Beides kommt aus den Produktdaten, für die Kündigungsfrist gibt es einen Rückfallwert in der Shopkonfiguration.

| Angabe | Herkunft | Verhalten, wenn sie fehlt |
| - | - | - |
| Laufzeit | Produktdaten, in Tagen oder Jahren | 365 Tage |
| Kündigungsfrist | Produktdaten, in Tagen | Wert aus `PrimeShoppingDefaultPeriodOfNotice`, sonst 30 Tage |

Der Kunde kann sein Paket im Kundenkonto kündigen, solange die Kündigungsfrist läuft. Der Shop merkt die Kündigung im Kundenkonto vor.

> [!WARNING]
>
> Prime-Pakete verlängern sich **nicht** automatisch. Kündigung und Verlängerung laufen über das ERP-System. Schreiben Sie deshalb keinen Text wie "wird automatisch verlängert" oder "nächste Zahlung am …" in Ihre Templates, solange das ERP-System nichts dergleichen tut. Ihr WEBSALE Ansprechpartner sagt Ihnen, was in Ihrem Fall vorgesehen ist.

Die Kündigungsfrist wird beim Kauf in das Kundenkonto geschrieben und bleibt dort stehen. Ändern Sie sie später in den Produktdaten, gilt für bereits verkaufte Pakete weiterhin der Wert vom Kaufzeitpunkt. Schaltjahre berücksichtigt der Shop bei Laufzeiten in Jahren selbst.

## Voraussetzungen

Prime-Shopping muss von der WEBSALE AG für Ihren Shop freigeschaltet werden. Wenden Sie sich dafür an Ihren WEBSALE Ansprechpartner.

## Schritt 1: Prime-Pakete anlegen und Optionen zuweisen

Legen Sie das Prime-Paket als Set-Oberprodukt an und die Optionen als Set-Unterprodukte. Mindestens eine Option ist Pflicht, mehr als zehn sind nicht möglich.

Wie Sie Prime-Pakete und Prime-Optionen in den Produktdaten kennzeichnen, steht in der Dokumentation zur Produktdaten-Schnittstelle.

> [!WARNING]
>
> Diese beiden Regeln sind unumkehrbar, weil im Kundenkonto nur der Produkt-Index des Set-Oberprodukts gespeichert wird:
>
> * Ein Prime-Paket darf niemals nachträglich aus dem Shop entfernt werden.
> * Der Produkt-Index eines Prime-Pakets darf niemals nachträglich geändert werden.
>
> Andernfalls verlieren alle Kunden, die dieses Paket gekauft haben, ihre Vorteile.

Dass nur der Produkt-Index gespeichert wird, hat auch einen Vorteil. Die Optionen eines bestehenden Prime-Pakets lassen sich jederzeit erweitern, ohne ein einziges Kundenkonto anzufassen. Der Shop liest sie bei jedem Aufruf frisch aus den Set-Unterprodukten.

Weitere Regeln beim Anlegen:

* Werden mehrere Prime-Pakete angeboten, in einem oder in mehreren Subshops, müssen sie sich im Produkt-Index des Set-Oberprodukts unterscheiden.
* Set-Oberprodukt und Set-Unterprodukte dürfen keine Varianten haben.
* Wir empfehlen, Prime-Pakete nur für reine Online-Clearing-Zahlungsarten freizugeben, über `DenyPayments`.

Die maximale Bestellmenge müssen Sie nicht eigens setzen. Der Shop erzwingt für jedes Prime-Shopping-Produkt `MaxQuantity = 1` selbst. Ein ausdrücklicher Eintrag in den Produktdaten schadet aber nicht und macht die Absicht sichtbar.

> [!WARNING]
>
> Für Prime-Pakete gibt es keine Subshop-Abhängigkeit. Existiert in einem Subshop ein Produkt mit dem Index, der im Kundenkonto steht, gilt das Prime-Paket dort. Achten Sie deshalb darauf, dass in verschiedenen Subshops keine zwei **unterschiedlichen** Prime-Pakete denselben Produkt-Index tragen.

## Schritt 2: Kein Mindestbestellwert bei Bonuspunkten und Gutscheinen (optional)

Bieten Sie die Option "kein Mindestbestellwert" an, legen Sie fest, ob sie auch Mindestbestellwerte aus Bonuspunkten und Gutscheinen aushebelt.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<OrderConditions>
   ...
   MinimumOrder-PrimeShoppingHasAbsolutePriority = yes
   ...
</OrderConditions>
```

Mit `yes` kann ein Prime-Kunde einen Gutschein mit einem Mindestbestellwert von 10 EUR auch bei einem Warenkorbwert von 0 EUR einlösen. Ohne den Parameter bleibt der Mindestbestellwert des Gutscheins bestehen.

Referenz: [Abschnitt OrderConditions](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md#orderconditions)

## Schritt 3: Prime-Versand definieren (optional)

Legen Sie fest, welche Versandarten Prime-Kunden zur Verfügung stehen. Dafür ergänzen Sie den Abschnitt `+Deliverer` der jeweiligen Versandart.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   ...
   AllowForPrimeShopping-Qualification = only-for-prime
   ...
</+Deliverer>
```

| Wert | Wirkung |
| - | - |
| `only-for-prime` | Die Versandart steht ausschließlich Prime-Bestellungen zur Verfügung |
| `not-for-prime` | Die Versandart steht Prime-Bestellungen nicht zur Verfügung |
| Parameter weggelassen | Die Versandart steht allen zur Verfügung |

Der Shop kennt genau diese beiden Werte. Jede andere Angabe wird wie ein fehlender Parameter behandelt, die Versandart steht dann also allen offen.

> [!WARNING]
>
> Setzen Sie `only-for-prime` nicht bei allen Versandarten. Nicht-Prime-Kunden hätten dann keine einzige Versandart mehr und könnten nicht bestellen. Mindestens eine Versandart muss ohne diese Einschränkung bleiben.

Referenz: [Abschnitt +Deliverer](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md#deliverer)

## Schritt 4: Standard-Kündigungsfrist festlegen (optional)

Fehlt die Kündigungsfrist in den Produktdaten oder ist sie 0, greift der Wert aus der Shopkonfiguration.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Basic>
   ...
   PrimeShoppingDefaultPeriodOfNotice = 30
   ...
</Basic>
```

Die Angabe erfolgt in Tagen. Ohne Eintrag gelten 30 Tage.

Greift der Rückfallwert und ist er länger als die Laufzeit des Pakets, verschickt der Shop eine Benachrichtigungs-E-Mail an den Shopbetreiber. Diese Prüfung läuft nur beim Rückfallwert. Steht in den Produktdaten eine eigene Kündigungsfrist, die länger als die Laufzeit ist, bleibt die Meldung aus. Prüfen Sie diese Kombination deshalb selbst.

Referenz: [Abschnitt Basic](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#basic)

## Schritt 5: Hinweismeldungen in der Konfiguration hinterlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   ...
   ProductPrimePackageAlreadyPurchased    = Sie haben ~PR-Name~ bereits erworben und können es nicht mehrfach kaufen.
   ProductPrimeProductNoValidPrimePackage = Dieses Produkt ist Prime-Kunden vorbehalten. Bitte erwerben Sie zunächst ein Prime-Paket.
   ProductPrimeProductNoLogIn             = Dieses Produkt ist Prime-Kunden vorbehalten. Bitte melden Sie sich an, um es bestellen zu können.
   ...
</NotifyMessages-Txt>
```

> [!WARNING]
>
> Wollen Sie, dass ein Kunde Prime-Paket und Prime-Produkt im selben Einkauf bestellen kann, muss `ProductPrimeProductNoValidPrimePackage` **leer** bleiben. Andernfalls lassen sich Prime-Produkte erst ab dem nächsten Einkauf bestellen.

Referenz: [Abschnitt NotifyMessages-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md#notifymessages-txt)

## Schritt 6: Template für die Paketverwaltung anmelden

![Prime Design](https://mintcdn.com/websaleag-44ee7ea6/UyjGmXApgB40YKCW/images/prime_design.png?fit=max\&auto=format\&n=UyjGmXApgB40YKCW\&q=85\&s=3f510215756a3456918ccd59eb126955)

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Templates>
   ...
   PrimePackagesManage = ws_prime_package_manage.htm
   ...
</Templates>
```

Referenz: [Abschnitt Templates](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#templates)

## Schritt 7: Die Paketverwaltung im Kundenkonto aufbauen

Legen Sie das eben angemeldete Template an und speichern Sie es in Ihrem Template-Verzeichnis, beispielsweise `benutzer/templates/translation`.

### Die Rückmeldung nach einer Kündigung

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MSG-PrimePackagesManage(1)}
   Ihr Prime-Paket wurde gekündigt. Möchten Sie es wieder nutzen,
   können Sie es gern erneut bestellen.
{/MSG-PrimePackagesManage(1)}

{MSG-PrimePackagesManage(2)}
   Dieses Prime-Paket wurde bereits gekündigt oder ist abgelaufen.
{/MSG-PrimePackagesManage(2)}

{MSG-PrimePackagesManage(3)}
   Dieses Prime-Paket wurde leider nicht gefunden.
   Bitte wenden Sie sich telefonisch unter (0000) 123 456 an uns.
{/MSG-PrimePackagesManage(3)}
```

### Die Liste der Pakete

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Anzahl Ihrer Prime-Pakete: ~PRIME-Package~

{@PRIME-Package}

   ~PRIME-Package_ProdName~<br>
   ~PRIME-Package_ProdDescr~<br>

   Enthaltene Optionen:
   {@PRIME-Package_Option}
      {!PRIME-Package_Option_Code(1)}
         ~PRIME-Package_Option_ProdName~<br>
         ~PRIME-Package_Option_ProdDescr~<br>
      {/!PRIME-Package_Option_Code(1)}
   {/@PRIME-Package_Option}

   Laufzeit:
   ~PRIME-Package_ValidFrom_day(true)~.~PRIME-Package_ValidFrom_month(true)~.~PRIME-Package_ValidFrom_year~
   bis
   ~PRIME-Package_ValidUntil_day(true)~.~PRIME-Package_ValidUntil_month(true)~.~PRIME-Package_ValidUntil_year~<br>

   {PRIME-Package_canceled}
      Dieses Prime-Paket ist gekündigt oder abgelaufen.<br>
   {/PRIME-Package_canceled}

   {!PRIME-Package_canceled}
      {PRIME-Package_PeriodOfNoticeUntil_day}
         ~DC-Int1_set($PRIME-Package_PeriodOfNotice$)~
         {!DC-Int1(0)}
            Kündbar bis ~PRIME-Package_PeriodOfNoticeUntil_day(true)~.~PRIME-Package_PeriodOfNoticeUntil_month(true)~.~PRIME-Package_PeriodOfNoticeUntil_year~<br>
         {/!DC-Int1(0)}
      {/PRIME-Package_PeriodOfNoticeUntil_day}
   {/!PRIME-Package_canceled}

   {PRIME-Package_CancelLinkNoConfirm}
      <a href="~PRIME-Package_CancelLinkNoConfirm~"
         onclick="return window.confirm('Prime-Paket wirklich kündigen?');">Dieses Prime-Paket kündigen</a>
   {/PRIME-Package_CancelLinkNoConfirm}

   {!PRIME-Package_valid}
      <a href="~PR-Link($PRIME-Package_ProdIndex$)~">Prime-Paket erneut kaufen</a>
   {/!PRIME-Package_valid}

{/@PRIME-Package}
```

Der Kündigungslink erscheint von selbst nur dann, wenn das Paket noch läuft und noch nicht gekündigt ist. Sie brauchen ihn nicht zusätzlich zu klammern.

> [!WARNING]
>
> `PRIME-Package_valid` prüft ausschließlich, ob das Enddatum noch in der Zukunft liegt. Ein gekündigtes Paket, das noch läuft, ist also gleichzeitig `valid` und `canceled`. Wenn Sie eine der beiden Aussagen allein abfragen, prüfen Sie nicht das, was Sie vermutlich meinen.

`PRIME-Package_PeriodOfNoticeUntil_day` ist leer, sobald die Kündigungsfrist abgelaufen ist. Die Klammerung um diesen Tag ist deshalb der einfachste Weg, den Hinweis "kündbar bis" nur dann zu zeigen, wenn er noch stimmt.

Referenz: [MSG-PrimePackagesManage](https://dokumentation.websale.de/v8s/referenz/tags/msg-meldungen.md#prime-pakete-und-prime-produkte) · [PRIME-Package\_CancelLinkNoConfirm](https://dokumentation.websale.de/v8s/referenz/tags/prime-primeshopping.md#die-tags-im-uberblick) · [PR-LoadData()](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md#die-tags-im-uberblick)

## Schritt 8: Prime-Pakete in der Produktdetailansicht darstellen

Ergänzen Sie `ws_product.htm`. Der Shop unterscheidet hier zwischen einem Prime-Paket und jedem anderen Produkt.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!PR-PrimeShopping}
   ...
   Darstellung aller übrigen Produktarten
   ...
{/!PR-PrimeShopping}

{PR-PrimeShopping}
   {PR-SetParent}
      ~PR-Name~<br>
      ~PR-Descr~<br>

      {Cat-AdvData($SetProducts,999)}
         Enthaltene Optionen:<br>
         {@PR-Data}
            ~PR-Name~<br>
            ~PR-Descr~<br>
         {/@PR-Data}
      {/Cat-AdvData($SetProducts,999)}

      {PR-SetPrice}
         Gesamtpreis: ~PR-SetPrice~ ~WS-CurrencySymbol~<br>
      {/PR-SetPrice}
      {!PR-SetPrice}
         Gesamtpreis: ~PR-Price~ ~WS-CurrencySymbol~<br>
      {/!PR-SetPrice}

      {PR-PrimeShoppingBillCountries}
         Dieses Prime-Paket gilt nur in folgenden Ländern:<br>
         ~DC-DynamicLoop1_set($PR-PrimeShoppingBillCountries$)~
         {DC-DynamicLoop1}
            {@DC-DynamicLoop1}
               ~DC-3ISOCodeToCountry($DC-DynamicLoop1_data$)~<br>
            {/@DC-DynamicLoop1}
         {/DC-DynamicLoop1}
      {/PR-PrimeShoppingBillCountries}

      Gültig für ~PR-PrimeShoppingDuration~
      {PR-PrimeShoppingDurationUnit(0)}Tage{/PR-PrimeShoppingDurationUnit(0)}
      {PR-PrimeShoppingDurationUnit(1)}Jahre{/PR-PrimeShoppingDurationUnit(1)}
      ab Kauf.<br>

      Die Kündigungsfrist beträgt ~PR-PrimeShoppingPeriodOfNotice~ Tage.<br>
   {/PR-SetParent}
{/PR-PrimeShopping}
```

> [!WARNING]
>
> Die Kündigungsfrist wird immer in Tagen geführt, auch wenn die Laufzeit in Jahren angegeben ist. Setzen Sie hinter die Kündigungsfrist deshalb keine von `PR-PrimeShoppingDurationUnit` gesteuerte Einheit. Die Einheit gilt ausschließlich für die Laufzeit.

`PR-PrimeShopping` gibt ohne Parameter den Optionscode des Produkts aus und greift als Klammerung bei jedem Code außer 0. Mit Parameter prüft es einen bestimmten Code, `{PR-PrimeShopping(1)}` trifft also genau das Prime-Paket selbst.

Referenz: [PR-PrimeShopping](https://dokumentation.websale.de/v8s/referenz/tags/prime-primeshopping.md) · [PR-PrimeShoppingDuration](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [PR-PrimeShoppingDurationUnit](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [PR-PrimeShoppingBillCountries](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [PR-PrimeShoppingPeriodOfNotice](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [DC-DynamicLoop1…3\_set](https://dokumentation.websale.de/v8s/referenz/tags/dc/schleifen.md#die-tags-im-uberblick) · [DC-DynamicLoop1…3](https://dokumentation.websale.de/v8s/referenz/tags/dc/schleifen.md) · [DC-DynamicLoop1\_data](https://dokumentation.websale.de/v8s/referenz/tags/dc/parameter.md) · [DC-3ISOCodeToCountry()](https://dokumentation.websale.de/v8s/referenz/tags/dc/vergleiche.md#dc-3isocodetocountry)

## Schritt 9: Prime-Pakete im Warenkorb anzeigen

Ergänzen Sie `ws_basket.htm` nach demselben Muster.

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

      {!BASKET-PR-PrimeShopping}
         ...
         Darstellung aller übrigen Produktarten
         ...
      {/!BASKET-PR-PrimeShopping}

      {BASKET-PR-PrimeShopping}
         ~BASKET-PR-Name~<br>
         Artikelnummer: ~BASKET-PR-Number~<br>

         {BASKET-PR-SetChildData}
            Enthaltene Optionen:
            {@BASKET-PR-SetChildData}
               ~BASKET-PR-Name~
            {/@BASKET-PR-SetChildData}<br>
         {/BASKET-PR-SetChildData}

         Gültig für ~BASKET-PR-PrimeShoppingDuration~
         {BASKET-PR-PrimeShoppingDurationUnit(0)}Tage{/BASKET-PR-PrimeShoppingDurationUnit(0)}
         {BASKET-PR-PrimeShoppingDurationUnit(1)}Jahre{/BASKET-PR-PrimeShoppingDurationUnit(1)}<br>

         Die Kündigungsfrist beträgt ~BASKET-PR-PrimeShoppingPeriodOfNotice~ Tage.<br>

         {BASKET-PR-PrimeShoppingBillCountries}
            Dieses Prime-Paket gilt nur in folgenden Ländern:
            ~DC-DynamicLoop1_set($BASKET-PR-PrimeShoppingBillCountries$)~
            {DC-DynamicLoop1}
               {@DC-DynamicLoop1}
                  ~DC-3ISOCodeToCountry($DC-DynamicLoop1_data$)~,
               {/@DC-DynamicLoop1}<br>
            {/DC-DynamicLoop1}
         {/BASKET-PR-PrimeShoppingBillCountries}

         {BASKET-PR-SetSum}
            ~BASKET-PR-SetSum~ ~WS-CurrencySymbol~<br>
         {/BASKET-PR-SetSum}
         {!BASKET-PR-SetSum}
            ~BASKET-PR-Sum~ ~WS-CurrencySymbol~<br>
         {/!BASKET-PR-SetSum}

      {/BASKET-PR-PrimeShopping}

   {/@BASKET-PR-Data}
{/BASKET-PR-Data}
```

> [!WARNING]
>
> Geben Sie `~BASKET-PR-PrimeShopping~` nicht als Einzeltag aus. Der Tag liefert den Optionscode als nackte Zahl, der Kunde läse also beispielsweise "Typ: 1". Verwenden Sie den Tag als Klammerung und schreiben Sie den Text selbst.

Die Länderklammerung um `BASKET-PR-PrimeShoppingBillCountries` ist nicht nur Kosmetik. Ohne sie steht die Überschrift auch dann auf der Seite, wenn das Paket in allen Ländern gilt und die Liste leer bleibt.

Referenz: [BASKET-PR-PrimeShopping](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping) · [BASKET-PR-PrimeShoppingDuration](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping) · [BASKET-PR-PrimeShoppingDurationUnit](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping) · [BASKET-PR-PrimeShoppingPeriodOfNotice](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping) · [BASKET-PR-PrimeShoppingBillCountries](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping)

## Schritt 10: Fehlermeldungen auf den Templates platzieren

Diese Meldungen gehören auf die Warenkorbseite `ws_basket.htm`, die Bestellübersicht `ws_place_order.htm` und die Loginseite `ws_login.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MSG-PrimeShopping_error}
   {MSG-PrimeShopping_error(1)}
      Bitte melden Sie sich an, um das Prime-Paket bestellen zu können.
   {/MSG-PrimeShopping_error(1)}
   {MSG-PrimeShopping_error(2)}
      Sie haben dieses Prime-Paket bereits erworben. Ein erneuter Kauf ist erst
      nach Ende der Laufzeit oder nach einer Kündigung möglich.
   {/MSG-PrimeShopping_error(2)}
   {MSG-PrimeShopping_error(3)}
      Dieses Prime-Paket steht für das gewählte Rechnungsland nicht zur Verfügung.
      Bitte wählen Sie ein anderes Prime-Paket oder ein anderes Rechnungsland.
   {/MSG-PrimeShopping_error(3)}

   {@BASKET-PR-Data}
      {BASKET-PR-PrimeShoppingAffectedByNotification}
         ~BASKET-PR-Name~
      {/BASKET-PR-PrimeShoppingAffectedByNotification}
   {/@BASKET-PR-Data}
{/MSG-PrimeShopping_error}

{MSG-PrimeProduct_error}
   In Ihrem Warenkorb liegen Produkte, die Prime-Kunden vorbehalten sind:
   {@BASKET-PR-Data}
      {BASKET-PR-PrimeProductAffectedByNotification}
         ~BASKET-PR-Name~
      {/BASKET-PR-PrimeProductAffectedByNotification}
   {/@BASKET-PR-Data}

   {MSG-PrimeProduct_error(1)}
      Bitte melden Sie sich an, um diese Produkte bestellen zu können.
   {/MSG-PrimeProduct_error(1)}
   {MSG-PrimeProduct_error(2)}
      Bitte erwerben Sie zunächst ein entsprechendes Prime-Paket.
   {/MSG-PrimeProduct_error(2)}
{/MSG-PrimeProduct_error}
```

| Meldung | Fall 1 | Fall 2 | Fall 3 |
| - | - | - | - |
| `MSG-PrimeShopping_error` | Kunde nicht angemeldet | Paket bereits gekauft | Rechnungsland nicht zugelassen |
| `MSG-PrimeProduct_error` | Kunde nicht angemeldet | keine Berechtigung für Prime-Produkte | entfällt |

In beiden Fällen markiert der Shop die betroffenen Warenkorbpositionen. Über die Klammerungen `BASKET-PR-PrimeShoppingAffectedByNotification` und `BASKET-PR-PrimeProductAffectedByNotification` können Sie dem Kunden genau sagen, welche Position ihn aufhält, statt ihn selbst suchen zu lassen.

Referenz: [MSG-PrimeShopping\_error](https://dokumentation.websale.de/v8s/referenz/tags/msg-meldungen.md#prime-pakete-und-prime-produkte) · [MSG-PrimeProduct\_error](https://dokumentation.websale.de/v8s/referenz/tags/msg-meldungen.md#prime-pakete-und-prime-produkte) · [BASKET-PR-Data](https://dokumentation.websale.de/v8s/referenz/tags/basket/mehrfach-lieferadressen-und-belegexemplare.md#basket-pr-d) · [BASKET-PR-Name](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md) · [BASKET-PR-PrimeShoppingAffectedByNotification](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping) · [BASKET-PR-PrimeProductAffectedByNotification](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping)

## Schritt 11: Abweichendes Design für Prime-Kunden (optional)

Um eingeloggten Kunden mit gültigem Prime-Paket ein anderes Design zu zeigen, beispielsweise einen anderen Header, klammern Sie die betreffenden Stellen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PRIME-Package}
   {PRIME-ValidOptions}
      ... andere CSS-Klassen, anderes Design ...
   {/PRIME-ValidOptions}
{/PRIME-Package}
```

Referenz: [PRIME-Tags](https://dokumentation.websale.de/v8s/referenz/tags/prime-primeshopping.md)

## Schritt 12: Prime-Produkte und Prime-Preise kennzeichnen (optional)

In der Produktdetailansicht `ws_product.htm`:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-Data}
   ...
   {PR-PrimeProduct}
      Dieses Produkt ist Prime-Kunden vorbehalten.
   {/PR-PrimeProduct}
   ...
   {PR-PrimePrice}
      Prime-Kunden zahlen für dieses Produkt nur ~PR-PrimePrice~ ~WS-CurrencySymbol~.
   {/PR-PrimePrice}
   ...
{/PR-Data}
```

In der Warenkorbseite `ws_basket.htm`:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BASKET-PR-Data}
   {@BASKET-PR-Data}
      ...
      {BASKET-PR-PrimeProduct}
         Dieses Produkt ist Prime-Kunden vorbehalten.
      {/BASKET-PR-PrimeProduct}
      ...
      {BASKET-PR-PriceIsPrimePrice}
         Für dieses Produkt wird ein Prime-Preis gewährt.
      {/BASKET-PR-PriceIsPrimePrice}
      ...
   {/@BASKET-PR-Data}
{/BASKET-PR-Data}
```

Referenz: [PR-PrimeProduct](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [PR-PrimePrice](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md) · [BASKET-PR-PrimeProduct](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping) · [BASKET-PR-PriceIsPrimePrice](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md#prime-shopping)

## Was der Shop von sich aus verhindert

Einige Regeln setzt der Shop durch, ohne dass Sie etwas konfigurieren müssen. Sie sollten sie trotzdem kennen, weil sie im Template sichtbar werden.

### Folgekäufe desselben Pakets

Ein noch gültiges Prime-Paket lässt sich nicht erneut kaufen.

| Fall | Was geschieht |
| - | - |
| Der angemeldete Kunde legt ein bereits gekauftes Paket in den Warenkorb | Der Shop lehnt ab und zeigt die Hinweismeldung. Sie können den Warenkorb-Button auf der Produktseite ausblenden |
| Der Kunde meldet sich an, das bereits gekaufte Paket liegt schon im Warenkorb | Der Bestellvorgang wird abgelehnt. Der Kunde muss das Paket aus dem Warenkorb entfernen |

### Gastbestellung

Liegt ein Prime-Paket im Warenkorb, deaktiviert der Shop die Gastbestellung. Der Kunde muss ein Konto haben, weil das Paket nur im Kundenkonto gespeichert werden kann. Blenden Sie die Gastbestellung in diesem Fall auch im Template aus, damit der Kunde nicht vor einem Weg steht, den es nicht gibt.

### Speicherung im Kundenkonto

Im Kundenkonto stehen je Paket nur der Produkt-Index des Set-Oberprodukts, das Start- und Enddatum, der Kündigungsstatus und die Kündigungsfrist. Höchstens zehn Pakete je Kunde sind möglich. Die Optionen werden bei jedem Aufruf frisch aus den Set-Unterprodukten gelesen.

## Verwandte Themen

* Wegweiser: [Set-Produkte mit fester Zusammenstellung](https://dokumentation.websale.de/v8s/set-produkte/set-produkte-mit-fester-zusammenstellung.md)
* Wegweiser: [Versandarten konfigurieren](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen.md)
* Wegweiser: [Mindestbestellwert](https://dokumentation.websale.de/v8s/weitere-funktionen-im-bestellprozess-kontext/mindestbestellwert-und-mindermengenzuschlag.md#mindestbestellwert)


## Related topics

- [Besondere Produktarten im Warenkorb](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md)
- [Texte und Meldungen](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md)
- [PRIME- (PrimeShopping)](https://dokumentation.websale.de/v8s/referenz/tags/prime-primeshopping.md)
- [Sektionen: Positionen und Zahlung](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-positionen-und-zahlung.md)
- [TAC- (Anzeige von Zahlungs- und Versandarten)](https://dokumentation.websale.de/v8s/referenz/tags/tac-anzeige-von-zahlungs-und-versandarten.md)


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