> ## 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- (PrimeShopping)

> Die Prime-Pakete eines Kunden im Template ausgeben: Laufzeit, Status und Kündigungsfrist, die im Paket enthaltenen Optionen und die daraus abgeleiteten aktiven Vorteile.

Bei PrimeShopping kauft ein Kunde ein Paket und bekommt dafür für eine bestimmte Laufzeit Vorteile, beispielsweise versandkostenfreie Lieferung oder eigene Preise. Ein solches Paket ist im Shop ein Setprodukt: das Set selbst ist das Paket, seine Bestandteile sind die einzelnen Vorteile, hier Optionen genannt.

Die `PRIME-`Tags geben diese Pakete im Template aus. Sie arbeiten auf zwei Ebenen: `PRIME-Package` läuft über die Pakete des Kunden und beschreibt jedes einzelne mitsamt Laufzeit und Kündigungsmöglichkeit, `PRIME-ValidOptions` beantwortet die davon unabhängige Frage, welche Vorteile für diesen Kunden gerade tatsächlich gelten.

Wegweiser: [PrimeShopping](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-positionen-und-zahlung.md#primeshopping)

Alle Tags dieser Seite beziehen sich auf den angemeldeten Kunden und sind auf allen Templates zulässig. Ihr natürlicher Ort ist die Verwaltung der Prime-Pakete im Kundenkonto.

## Die Pakete des Kunden

`PRIME-Package` ist Zähler, Klammerung und Schleife in einem.

| Verwendung | Bedeutung |
| - | - |
| `~PRIME-Package~` | Zahl der Prime-Pakete des Kunden |
| `{PRIME-Package}` | greift, wenn der Kunde mindestens ein Paket hat |
| `{@PRIME-Package}` | läuft über alle Pakete |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PRIME-Package}
   <p>Sie haben ~PRIME-Package~ Prime-Pakete.</p>

   <ul>
      {@PRIME-Package}
         <li>~PRIME-Package_ProdName~</li>
      {/@PRIME-Package}
   </ul>
{/PRIME-Package}

{!PRIME-Package}
   <p>Sie haben derzeit kein Prime-Paket.</p>
{/!PRIME-Package}
```

> [!WARNING]
>
> Das bisherige Beispiel schließt den negativen Bereich falsch mit `{!/PRIME-Package}`. Richtig ist `{/!PRIME-Package}`, also Schrägstrich vor dem Ausrufezeichen.
>
> Alle übrigen Tags dieser Seite außer `PRIME-ValidOptions` setzen die `PRIME-Package`-Schleife voraus. Außerhalb davon sind sie ungültige Tags und erzeugen eine Meldung im Template.

## Welches Paket ist das

Vier Tags beschreiben das Paket selbst, also das Set-Oberprodukt.

| Tag | Liefert |
| - | - |
| `PRIME-Package_ProdIndex` | den Produktindex des Pakets |
| `PRIME-Package_CatIndex` | den Kategorieindex des Pakets |
| `PRIME-Package_ProdName` | den Produktnamen des Pakets |
| `PRIME-Package_ProdDescr` | die Produktbeschreibung des Pakets |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@PRIME-Package}
   {PRIME-Package_ProdName}
      <h3>~PRIME-Package_ProdName~</h3>
   {/PRIME-Package_ProdName}

   {PRIME-Package_ProdDescr}
      <p>~PRIME-Package_ProdDescr~</p>
   {/PRIME-Package_ProdDescr}
{/@PRIME-Package}
```

Jedes Wert-Tag dieser Seite greift zusätzlich als Klammerung und als negative Klammerung, und zwar genau dann, wenn ein Wert vorliegt. Im Shopsystem gilt die Regel einheitlich.

> [!WARNING]
>
> Name, Beschreibung und Kategorieindex stammen aus dem Produkt und bleiben leer, wenn sich die Produktdaten des Pakets nicht laden lassen, etwa weil das Produkt inzwischen aus dem Sortiment genommen wurde. Der Produktindex steht dagegen immer zur Verfügung. Klammern Sie die Ausgabe deshalb, und verwenden Sie den Produktindex, wenn Sie einen verlässlichen Schlüssel brauchen.

## Laufzeit und Status

Beginn und Ende der Laufzeit kommen jeweils als Dreiergespann aus Tag, Monat und Jahr.

| Tag | Liefert |
| - | - |
| `PRIME-Package_ValidFrom_day()` | den Tag des Laufzeitbeginns |
| `PRIME-Package_ValidFrom_month()` | den Monat des Laufzeitbeginns |
| `PRIME-Package_ValidFrom_year` | das Jahr des Laufzeitbeginns |
| `PRIME-Package_ValidUntil_day()` | den Tag des Laufzeitendes |
| `PRIME-Package_ValidUntil_month()` | den Monat des Laufzeitendes |
| `PRIME-Package_ValidUntil_year` | das Jahr des Laufzeitendes |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@PRIME-Package}
   {PRIME-Package_ValidFrom_day}
      <p>
         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~
      </p>
   {/PRIME-Package_ValidFrom_day}
{/@PRIME-Package}
```

Die Tages- und Monats-Tags nehmen wahlweise `true` oder `false` als Argument. Mit `true` kommt der Wert zweistellig mit führender Null, mit `false` einstellig. Die Jahres-Tags haben dieses Argument nicht, ein Jahr ist immer vierstellig.

> [!WARNING]
>
> Das bisherige Beispiel zu `PRIME-Package_ValidFrom_day` schließt die Klammerung mit `{PRIME-Package_ValidFrom_day}` statt mit `{/PRIME-Package_ValidFrom_day}`. Der fehlende Schrägstrich öffnet eine zweite Klammerung, statt die erste zu schließen.

Zwei Klammerungen beschreiben den Zustand des Pakets.

| Tag | Greift |
| - | - |
| `PRIME-Package_valid` | solange das Laufzeitende nicht erreicht ist |
| `PRIME-Package_canceled` | wenn das Paket gekündigt wurde |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@PRIME-Package}
   {PRIME-Package_valid}
      {PRIME-Package_canceled}
         <p class="hinweis">Gekündigt, läuft noch bis zum Laufzeitende.</p>
      {/PRIME-Package_canceled}
   {/PRIME-Package_valid}

   {!PRIME-Package_valid}
      <p class="hinweis">Laufzeit abgelaufen.</p>
   {/!PRIME-Package_valid}
{/@PRIME-Package}
```

`PRIME-Package_valid` vergleicht ausschließlich das Laufzeitende mit dem aktuellen Zeitpunkt. Eine Kündigung ändert daran nichts, ein gekündigtes Paket bleibt bis zum Laufzeitende gültig. Auch der Laufzeitbeginn spielt keine Rolle. Die beiden Klammerungen sind deshalb unabhängig voneinander und lassen sich wie im Beispiel verschachteln.

Als Einzel-Tag geben sie `TRUE` oder nichts aus. Für die Anzeige ist die Klammerung der richtige Weg, das Einzel-Tag eignet sich höchstens für eine Auswertung per JavaScript.

## Kündigen

Drei Angaben gehören zur Kündigung, dazu der Link, der sie auslöst.

| Tag | Liefert |
| - | - |
| `PRIME-Package_PeriodOfNotice` | die Kündigungsfrist in Tagen |
| `PRIME-Package_PeriodOfNoticeUntil_day()` | den Tag, bis zu dem gekündigt werden kann |
| `PRIME-Package_PeriodOfNoticeUntil_month()` | den zugehörigen Monat |
| `PRIME-Package_PeriodOfNoticeUntil_year` | das zugehörige Jahr |
| `PRIME-Package_CancelLinkNoConfirm` | den Link, der das Paket kündigt |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@PRIME-Package}
   {!PRIME-Package_canceled}
      {PRIME-Package_PeriodOfNoticeUntil_day}
         <p>
            Kündbar bis zum
            ~PRIME-Package_PeriodOfNoticeUntil_day(true)~.~PRIME-Package_PeriodOfNoticeUntil_month(true)~.~PRIME-Package_PeriodOfNoticeUntil_year~
            (Frist: ~PRIME-Package_PeriodOfNotice~ Tage)
         </p>
      {/PRIME-Package_PeriodOfNoticeUntil_day}

      {PRIME-Package_CancelLinkNoConfirm}
         <a href="~PRIME-Package_CancelLinkNoConfirm~"
            onclick="return window.confirm('Möchten Sie dieses Prime-Paket wirklich kündigen?');">
            Kündigen
         </a>
      {/PRIME-Package_CancelLinkNoConfirm}
   {/!PRIME-Package_canceled}
{/@PRIME-Package}
```

> [!WARNING]
>
> `PRIME-Package_CancelLinkNoConfirm` führt keine Rückfrage. Ein Aufruf dieses Links kündigt das Paket sofort. Bauen Sie die Rückfrage deshalb selbst ein, so wie im Beispiel mit `onclick`.

Die Klammerung `PRIME-Package_CancelLinkNoConfirm` greift nur, solange das Paket noch läuft **und** noch nicht gekündigt ist. Sie brauchen also keine eigene Prüfung, um die Schaltfläche auszublenden. Das Beispiel klammert zusätzlich mit `{!PRIME-Package_canceled}`, damit auch der Fristtext verschwindet.

Der Kündigungstermin wird nur gesetzt, solange er noch in der Zukunft liegt. Ist die Frist verstrichen, bleiben die drei `PeriodOfNoticeUntil`-Tags leer und ihre Klammerung greift nicht. Genau deshalb steht im Beispiel die Klammerung um den Fristtext.

## Die Optionen eines Pakets

Die Bestandteile des Sets sind die Optionen des Pakets. `PRIME-Package_Option` ist dafür wieder Zähler, Klammerung und Schleife.

| Tag | Liefert |
| - | - |
| `PRIME-Package_Option` | Zahl der Optionen, Klammerung und Schleife |
| `PRIME-Package_Option_ProdIndex` | den Produktindex der Option |
| `PRIME-Package_Option_CatIndex` | den Kategorieindex der Option |
| `PRIME-Package_Option_ProdName` | den Produktnamen der Option |
| `PRIME-Package_Option_ProdDescr` | die Produktbeschreibung der Option |
| `PRIME-Package_Option_Code()` | den Typ der Option |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@PRIME-Package}
   {PRIME-Package_Option}
      <ul>
         {@PRIME-Package_Option}
            <li>
               {PRIME-Package_Option_ProdName}~PRIME-Package_Option_ProdName~{/PRIME-Package_Option_ProdName}

               {PRIME-Package_Option_Code(2)}
                  <span class="badge">Versand frei</span>
               {/PRIME-Package_Option_Code(2)}
            </li>
         {/@PRIME-Package_Option}
      </ul>
   {/PRIME-Package_Option}
{/@PRIME-Package}
```

Folgende Typen sind festgelegt.

| Typ | Bedeutung |
| - | - |
| 2 | Prime-Versand |
| 3 | kein Mindestbestellwert |
| 4 | Kunde darf Prime-Produkte bestellen |
| 5 | Prime-Preise werden gewährt |

`PRIME-Package_Option_Code` ohne Argument gibt den Typ als Zahl aus. Mit Argument wird es zur Klammerung und greift, wenn der Typ dem Argument entspricht.

> [!WARNING]
>
> Mit Argument ist `PRIME-Package_Option_Code` ausschließlich eine Klammerung. `~PRIME-Package_Option_Code(2)~` als Einzel-Tag ist ein ungültiges Tag.

Die Tags der Option gelten nur innerhalb der `PRIME-Package_Option`-Schleife, die ihrerseits in der `PRIME-Package`-Schleife steht. Das Paket selbst ist dabei nicht Teil der Optionsliste, es wird über die `PRIME-Package_`Tags des vorigen Abschnitts beschrieben.

## Die aktiven Vorteile des Kunden

Ein Kunde kann mehrere Pakete haben, und Pakete können dieselbe Option enthalten. Welche Vorteile daraus gerade tatsächlich gelten, beantwortet `PRIME-ValidOptions`. Dieses Tag arbeitet unabhängig von den Paketen.

| Tag | Liefert |
| - | - |
| `PRIME-ValidOptions` | Zahl der aktiven Optionen, Klammerung und Schleife |
| `PRIME-ValidOptions_Code()` | den Typ der aktiven Option |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PRIME-ValidOptions}
   <ul class="prime-vorteile">
      {@PRIME-ValidOptions}
         {PRIME-ValidOptions_Code(2)}<li>Versandkostenfrei</li>{/PRIME-ValidOptions_Code(2)}
         {PRIME-ValidOptions_Code(3)}<li>Ohne Mindestbestellwert</li>{/PRIME-ValidOptions_Code(3)}
         {PRIME-ValidOptions_Code(5)}<li>Prime-Preise</li>{/PRIME-ValidOptions_Code(5)}
      {/@PRIME-ValidOptions}
   </ul>
{/PRIME-ValidOptions}

{!PRIME-ValidOptions}
   <p>Derzeit sind keine Prime-Vorteile aktiv.</p>
{/!PRIME-ValidOptions}
```

Die Typen sind dieselben wie bei den Paketoptionen, siehe die Tabelle im vorigen Abschnitt.

Es greift genau wie `PRIME-Package_Option_Code` auch als Klammerung, ohne Argument nach vorhandenem Wert und mit Argument nach dem Typ. Das Beispiel oben nutzt diese Form.

`PRIME-ValidOptions` beantwortet die Frage nach den Vorteilen besser als eine Auswertung der Pakete, denn ein abgelaufenes Paket zählt hier nicht mehr mit. Für die Übersicht der Pakete im Kundenkonto nehmen Sie `PRIME-Package`, für die Vorteilsanzeige an anderen Stellen des Shops `PRIME-ValidOptions`.

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `PRIME-Package` | ja | ja | ja | ja |
| `PRIME-Package_ProdIndex` | ja | ja | ja | – |
| `PRIME-Package_CatIndex` | ja | ja | ja | – |
| `PRIME-Package_ProdName` | ja | ja | ja | – |
| `PRIME-Package_ProdDescr` | ja | ja | ja | – |
| `PRIME-Package_ValidFrom_day()` | ja | ja | ja | – |
| `PRIME-Package_ValidFrom_month()` | ja | ja | ja | – |
| `PRIME-Package_ValidFrom_year` | ja | ja | ja | – |
| `PRIME-Package_ValidUntil_day()` | ja | ja | ja | – |
| `PRIME-Package_ValidUntil_month()` | ja | ja | ja | – |
| `PRIME-Package_ValidUntil_year` | ja | ja | ja | – |
| `PRIME-Package_valid` | ja | ja | ja | – |
| `PRIME-Package_canceled` | ja | ja | ja | – |
| `PRIME-Package_PeriodOfNotice` | ja | ja | ja | – |
| `PRIME-Package_PeriodOfNoticeUntil_day()` | ja | ja | ja | – |
| `PRIME-Package_PeriodOfNoticeUntil_month()` | ja | ja | ja | – |
| `PRIME-Package_PeriodOfNoticeUntil_year` | ja | ja | ja | – |
| `PRIME-Package_CancelLinkNoConfirm` | ja | ja | ja | – |
| `PRIME-Package_Option` | ja | ja | ja | ja |
| `PRIME-Package_Option_ProdIndex` | ja | ja | ja | – |
| `PRIME-Package_Option_CatIndex` | ja | ja | ja | – |
| `PRIME-Package_Option_ProdName` | ja | ja | ja | – |
| `PRIME-Package_Option_ProdDescr` | ja | ja | ja | – |
| `PRIME-Package_Option_Code()` | ja | ja | ja | – |
| `PRIME-ValidOptions` | ja | ja | ja | ja |
| `PRIME-ValidOptions_Code()` | ja | ja | ja | – |

`PRIME-Package` und `PRIME-ValidOptions` sind auf allen Templates zulässig. Alle `PRIME-Package_`Tags gelten innerhalb der `PRIME-Package`-Schleife, die `PRIME-Package_Option_`Tags innerhalb der `PRIME-Package_Option`-Schleife und `PRIME-ValidOptions_Code` innerhalb der `PRIME-ValidOptions`-Schleife. Die beiden `Code`-Tags sind mit Argument ausschließlich Klammerungen.

## Verwandte Themen

* Wegweiser: PrimeShopping
* Wegweiser: [Set-Produkte](https://dokumentation.websale.de/v8s/warenkorb/warenkorb-anzeigen-loeschen.md#set-produkte)
* Referenz: [PR- (Abo, Bonus und weitere Produktarten)](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md)


## Related topics

- [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)
- [Prime-Shopping](https://dokumentation.websale.de/v8s/marketing-funktionen/prime-shopping.md)
- [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)


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