Zum Hauptinhalt springen
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

Der Ablauf

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

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

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

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
  • Wegweiser: Asynchronous-Server-Side-Events (ASSE)
  • Referenz: Abschnitt <[Templates](/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik#templates)>
  • Referenz: Positionen im Warenkorb