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

# CBPOD- (Anreichern von Bestelldaten)

> Die beiden Tags für das Anreichern von Bestelldaten: je Warenkorbposition ein eigenes Template parsen und dessen Inhalt in die Bestelldaten an das Warenwirtschaftssystem übergeben.

Manchmal braucht das angeschlossene Warenwirtschaftssystem zu einer Bestellposition mehr, als die Bestelldaten von Haus aus mitliefern. Für diesen Fall gibt es die Funktion CustomizedBasketPositionOrderData, kurz CBPOD.

Sie funktioniert so: Sie hinterlegen bis zu fünf eigene Templates. Der Shop parst jedes davon für jede einzelne Warenkorbposition, kodiert das Ergebnis hexadezimal und schreibt es in die Bestelldaten. Was in diesen Templates steht, bestimmen Sie mit der gewohnten Tag-Technik.

Die beiden Tags mit dem Präfix `CBPOD-` sind die Klammer, in die dieser Inhalt gehört.

Wegweiser: [Anreichern von Bestelldaten](https://dokumentation.websale.de/v8s/referenz/tags/cbpod.md)

## Der Ablauf

| Schritt | Wo |
| - | - |
| Die Templates im Abschnitt `<Templates>` der Shopkonfiguration `shop.config` eintragen, als `CustomizedBasketPositionOrderData01` bis `…05` | `shop.config` |
| Die Templates anlegen und mit Tags füllen | Templateverzeichnis |
| Der Shop parst jedes Template je Warenkorbposition einmal | zur Bestellung |
| Das Ergebnis wird hexadezimal kodiert in die Bestelldaten geschrieben | Bestelldaten |

Für diese Funktion ist keine Freischaltung durch die WEBSALE AG nötig. Sie ist aktiv, sobald in der Shopkonfiguration mindestens eines der fünf Templates eingetragen ist.

> [!WARNING]
>
> Der Inhalt landet **hexadezimal kodiert** in den Bestelldaten. Er ist dort nicht lesbar, und das empfangende System muss ihn dekodieren. Stimmen Sie das ab, bevor Sie anfangen zu bauen.

## Das vollständige Beispiel

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

      ~BASKET-PR-Number~;~BASKET-PR-Name~;~BASKET-PR-Quantity~

      {CBPOD-PR-SetChildData}
         Set mit ~CBPOD-PR-SetChildData~ Unterprodukten:
         {@CBPOD-PR-SetChildData}
            ~BASKET-PR-Number~;~BASKET-PR-Quantity~
         {/@CBPOD-PR-SetChildData}
      {/CBPOD-PR-SetChildData}

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

Innerhalb der Schleife stehen alle BASKET-Tags und alle allgemeinen WEBSALE-Tags zur Verfügung. Sie sind nicht auf Produktdaten beschränkt: auch Kundendaten, bereits vorliegende JSON-Daten oder ein Versand über die asynchrone Datenübermittlung sind möglich.

## CBPOD-PR-Data

Die äußere Klammer und die Schleife, in der die Daten der Warenkorbposition zusammengestellt werden.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{CBPOD-PR-Data}
   {@CBPOD-PR-Data}
      <!-- die Daten dieser Position -->
   {/@CBPOD-PR-Data}
{/CBPOD-PR-Data}
```

> [!WARNING]
>
> Die Schleife `{@CBPOD-PR-Data}` läuft **genau einmal**, nicht über alle Warenkorbpositionen. Das Template wird vom Shop je Position einmal geparst, und die Schleife liefert die Position, um die es in diesem Durchlauf geht. Wer sie wie eine gewöhnliche Positionsschleife behandelt und darin zählt oder summiert, bekommt für jede Position dasselbe Ergebnis von eins.

Warum es die Schleife dann überhaupt gibt: Sie setzt den Bezug auf die aktuelle Position. Erst innerhalb der Schleife wissen die BASKET-Tags, welche Position gemeint ist. Ohne sie liefern sie nichts.

### Auf die Zahl der Positionen prüfen

Als Bereichs-Tag nimmt `CBPOD-PR-Data` eine Zahl oder eine kommagetrennte Liste von Zahlen als Parameter entgegen. Der Bereich greift, wenn der Warenkorb genau so viele sichtbare Positionen hat.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{CBPOD-PR-Data(1)}
   <!-- greift nur bei genau einer Position im Warenkorb -->
{/CBPOD-PR-Data(1)}

{CBPOD-PR-Data(1,2,3)}
   <!-- greift bei einer, zwei oder drei Positionen -->
{/CBPOD-PR-Data(1,2,3)}

{!CBPOD-PR-Data(1)}
   <!-- greift bei jeder anderen Anzahl -->
{/!CBPOD-PR-Data(1)}
```

Ohne Parameter greift der Bereich, sobald der Warenkorb überhaupt sichtbare Positionen enthält. Die Prüfung auf eine bestimmte Anzahl ist für Sonderfälle gedacht, beispielsweise um Einzelbestellungen anders an die Warenwirtschaft zu übergeben als Sammelbestellungen.

> [!WARNING]
>
> Gezählt werden die sichtbaren Positionen des gesamten Warenkorbs, nicht die Set-Unterprodukte und nicht die Position, die gerade bearbeitet wird.

## CBPOD-PR-SetChildData

Gibt die Set-Unterprodukte der Position aus. Anders als die äußere Schleife läuft diese tatsächlich über mehrere Einträge.

| Verwendung | Ergebnis |
| - | - |
| Einzel-Tag | die Anzahl der Set-Unterprodukte dieser Position |
| Bereichs-Tag | greift, wenn die Position Set-Unterprodukte hat |
| Schleifen-Tag | läuft über die Set-Unterprodukte |

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

   {CBPOD-PR-SetChildData}
      {@CBPOD-PR-SetChildData}
         ~BASKET-PR-Number~;~BASKET-PR-Quantity~
      {/@CBPOD-PR-SetChildData}
   {/CBPOD-PR-SetChildData}

   {!CBPOD-PR-SetChildData}
      <!-- eine gewöhnliche Position ohne Set -->
   {/!CBPOD-PR-SetChildData}
{/@CBPOD-PR-Data}
```

Innerhalb der Set-Schleife beziehen sich die BASKET-Tags auf das jeweilige Unterprodukt, außerhalb auf das Set-Oberprodukt. Der Wechsel geschieht automatisch mit dem Betreten und Verlassen der Schleife.

## Was auf diesen Templates nicht geht

> [!WARNING]
>
> `BASKET-PR-Data` und `BASKET-PR-SetChildData` sind auf den CustomizedBasketPositionOrderData-Templates nicht verwendbar. An ihre Stelle treten genau die beiden CBPOD-Tags. Die übrigen BASKET-Tags funktionieren wie gewohnt, aber nur innerhalb der CBPOD-Schleifen.
>
> Beide Tags sind ausschließlich auf den fünf CBPOD-Templates zulässig. Auf jedem anderen Template sind sie ungültig.

Scheitert die interne Berechnung der Warenkorbdaten, blendet der Shop sämtliche CBPOD-Bereiche aus und gibt nichts aus. In den Bestelldaten steht dann ein leerer Eintrag statt einer Fehlermeldung. Prüfen Sie beim Einrichten deshalb am tatsächlichen Ergebnis in den Bestelldaten und nicht nur an der Vorschau.

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `CBPOD-PR-Data` | – | ja | ja | ja |
| `CBPOD-PR-SetChildData` | ja | ja | ja | ja |

Zulässig sind beide nur auf den Templates, die in der Shopkonfiguration unter `CustomizedBasketPositionOrderData01` bis `…05` hinterlegt sind. `CBPOD-PR-SetChildData` zusätzlich nur innerhalb der Schleife `{@CBPOD-PR-Data}`.

## Verwandte Themen

* Wegweiser: Anreichern von Bestelldaten
* Wegweiser: [JSON-Schnittstelle](https://dokumentation.websale.de/v8s/externe-dienste/json-schnittstelle.md)
* Wegweiser: Asynchronous-Server-Side-Events (ASSE)
* Referenz: Abschnitt `<[Templates](/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik#templates)>`
* Referenz: [Positionen im Warenkorb](https://dokumentation.websale.de/v8s/referenz/tags/altcurrency.md#positionen-im-warenkorb)


## Related topics

- [Anreichern von Produktdaten](https://dokumentation.websale.de/v8s/produkte/anreichern-von-produktdaten.md)
- [Übersicht Bestelldaten](https://dokumentation.websale.de/v8s/materialien/uebersicht-bestelldaten.md)
- [Schnittstellen](https://dokumentation.websale.de/v8s/schnittstellen.md)
- [Produkteigenschaften als Liste anzeigen](https://dokumentation.websale.de/v8s/produkte/produkteigenschaften-als-liste-anzeigen.md)
- [Für spezielle Branchen](https://dokumentation.websale.de/v8s/schnittstellen/spezielle-branchen.md)


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