Mit WEBSALE V8s können Sie Ihren Kunden eine Vielzahl an Versandarten zur Verfügung stellen.

Die grundlegende Konfiguration neu einzurichtender Shops wurde von WEBSALE noch vor dem Livegang des Shops per Fragebogen "Kaufmännische Einstellungen" ermittelt und eingestellt. In diesem Fragebogen wurde abgefragt, welche Einstellungen für den Versand in einem Shop verwendet werden sollen, z. B. in Hinblick auf

Lieferanten und Versandkosten je Lieferland,

Abhängigkeiten von Versand- und Zahlungsart,

Ausschluss von Lieferländern,

Rechenwerte bei Versandkosten.

In der Shopkonfiguration shop.config können Sie Versandarten hinzufügen, bearbeiten, aktivieren oder deaktivieren. Auch die Kosten für die verschiedenen Versandarten werden hier festgelegt, separat für jede Versandart.

Im Bestellprozess entscheiden sich Ihre Kunden für eine Versandart ebenso wie für eine Zahlungsart auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm). Wegen möglicher Abhängigkeiten wird üblicherweise zuerst die Zahlungsart gewählt und dann die Versandart. Die Auswahl der Versandart wird realisiert mittels einer Struktur aus div-Containern, wodurch Sie das Design nach Ihren Wünschen gestalten können. Darüber hinaus können Sie eigene JavaScript-Funktionen verwenden, um Ihren Kunden visuelle Effekte oder individuelle Informationen zu einer Versandart anzubieten.

Für eine (statische) Übersichtsseite aller Versandarten, die Informationen über Versandkosten, Zustelloptionen, Lieferländern, usw. enthält und meist im Footer verlinkt wird, finden Sie die Integrationsanleitung unter Globale Anzeige der Versandarten.

Wegweiser: Globale Anzeige der Versandarten
Materialien: Template-Beispiel zur globalen Anzeige der Versandarten
Referenz: Tags für die globale Anzeige von Zahlungs- und Versandarten

 

Inhalt

1 Versandarten anlegen

1.1 Grundeinstellungen

1.1.1 Festlegung der Lieferländer

1.1.2 Zahlungsart-Versandart-Kombinationen

1.2 Versandkosten

1.2.1 Versandkostenberechnung nach Gewicht, Warenwert oder Volumen

1.2.2 Steuersatz für Versandkostenberechnung

1.2.3 Versandkosten in alternativer Währung anzeigen

1.2.4 Versandkostenerlass/-Rabatt für Kunden

1.2.5 Versandkostenerlass/-Rabatt für Produkte (versandkostenfreie Produkte, Download-Produkte)

1.2.6 Versandkostenfrei ab

1.3 Beispiele

2 Ausgabe der Versandarten im Bestellprozess

2.1 Komplett-Anzeige mit Einzel-Tag WS-DeliveryFields

2.2 Einzelpositionierung der Versandarten mit DELIV-Data-Tags

2.2.1 Versandarten in der Shopkonfiguration shop.config anlegen

2.2.2 Auswahl der Versandarten im Bestellprozess

2.2.3 Hervorheben der ausgewählten Versandart

2.2.4 Versandkostenberechnung

2.2.5 Versandkosten in alternativer Währung anzeigen

2.2.6 Versandkostenerlass/-Rabatt

2.2.7 Hinweis für ausgegraute, nicht verfügbare Versandarten

2.2.8 Zusatzinformationen zu Versandarten abfragen

2.2.9 Code-Beispiel für das Template ws_pay_deliv.htm

2.2.10 Zusätzliche Information mit den Bestelldaten übergeben

2.2.11 Typ der Versandart

3 Erweiterte Einstellungen beim Anlegen von Versandarten

3.1 Versandart abhängig vom Produkt

3.2 Versandart abhängig vom Lagerbestand

3.3 Versandart abhängig vom Gewicht/Volumen

3.4 Versandart nur bestimmten Kunden anbieten

3.5 Kostenpflichtige Zusatzleistungen anbieten

3.6 Bestellabschluss ohne ausgewählte Versandart blockieren

3.7 Versandkostenfreie Nachbestellung anbieten (für Folgebestellungen)

3.8 Versandart abhängig von Adressdaten

3.9 Nicht verfügbare Versandarten ausgegraut darstellen

3.10 Zusatzinformationen zu Versandarten abfragen

3.11 Versandart abhängig von URL-Referern

3.12 Versandart abhängig von Produktdatenfeldern

4 Spezielle Versandarten

4.1 Büchersendung

4.2 DHL Kurier

4.3 Versand mit Altersbeschränkung (Eigenhändig Plus)

5 Versandoptionen und Services für Käufer

5.1 Sendungsverfolgung

5.1.1 DHL-Sendungsverfolgung

5.1.2 Post AT-Sendungsverfolgung

5.1.3 SwissPost-Sendungsverfolgung

5.2 Teillieferung/Komplettlieferung anbieten

5.3 Wunsch-Liefertermin

5.4 Versand an Lieferadressen

5.4.1 Jede Warenkorbposition an eine eigene Lieferadresse senden (MultiDelivery)

5.4.2 Eine Warenkorbposition aufteilen und an mehrere Lieferadressen senden (Split-Order)

5.4.3 Belegexemplare versenden (SampleCopy)

5.4.4 Versandart pro Warenkorbposition und Lieferadresse auswählbar (MultiDelivererSelection)

 

1 Versandarten anlegen

In der Shopkonfiguration shop.config legen Sie Versandarten an und bearbeiten sie. Hier wird für jede einzelne Versandart ein <+Deliverer>-Abschnitt angelegt, in dem alle Einstellungen vorgenommen werden. Auch mehrere Versandarten (z. B. Normalzustellung, Expresszustellung) desselben Versanddienstleisters benötigen jeweils eigene <+Deliverer>-Abschnitte.

1.1 Grundeinstellungen

Setzen Sie im Parameter Allow den Wert auf yes, um die jeweilige Versandart zu aktivieren. Der Wert no deaktiviert die Versandart. Um eine Versandart dauerhaft zu entfernen, löschen Sie den betreffenden <+Deliverer>-Abschnitt. Tragen Sie im Parameter Name-Txt den Namen der Versandart ein (z. B. "UPS") sowie eine eindeutige ID im Parameter ID. Diese Versandarten-ID benötigen Sie für die Zuordnung einer Versandart zu den Zahlungsarten. Fügen Sie hinter dem Parameter Suffix-Txt optional eine kurze Beschreibung der Versandart hinzu. Ergänzen Sie den Parameter Img mit dem Namen des Symbols der Versandart. Mit den Parametern ImgOnClick und RadioOnClick können Sie JavaScript-Funktionen integrieren, die beim Klicken auf das Versandsymbol oder den Radiobutton ausgelöst werden. Der Parameter DisplayInList-Flag steuert die Anzeige der Versandart auf der statischen Übersichtsseite.

<+Deliverer>
   Allow                = yes
   Name-Txt             = UPS
   ID                   = 1
   Suffix-Txt           = versandkostenfrei
   Link                 = http://www.ups.de
   Img                  = logo_ups.gif
   ImgOnClick           = selectDelivererImage('~ID~');
   RadioOnClick         = selectDeliverer('~ID~');
   DisplayInList-Flag   = yes
   ...
</+Deliverer>

Alle weiteren möglichen Parameter, um Versandarten zu konfigurieren, finden Sie in der Referenz <+Deliverer>:
Referenz: Abschnitt +Deliverer

Die Reihenfolge, in der die Versandarten in der Shopkonfiguration shop.config angelegt sind, bestimmt die Reihenfolge der Anzeige im Shop (z. B. auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) während des Bestellprozesses). Wenn der Käufer (noch) nicht angemeldet ist, wird standardmäßig die erste (oberste) verfügbare Versandart aus der Shopkonfiguration shop.config vorausgewählt. Bei einem angemeldeten Bestandskunden wird die zuletzt von ihm verwendete Versandart vorausgewählt. Bringen Sie die <+Deliverer>-Abschnitte in der Shopkonfiguration shop.config in die gewünschte Reihenfolge.

Zum Inhaltsverzeichnis

1.1.1 Lieferländer festlegen

Legen Sie für jede Versandart das Liefergebiet fest, für das sie verfügbar sein soll und im Shop angezeigt wird.

DeliveryCountry-Rule bietet dazu 2 alternative Einstellungen: Länder zulassen (AllowCountries) oder Länder ausschließen (DenyCountries).

Beispiel 1: Die Versandart soll nur für Lieferungen innerhalb Deutschlands verfügbar sein.

<+Deliverer>
   ...
   DeliveryCountry-Rule    = AllowCountries
   DeliveryCountry-List    = DEU
   ...
</+Deliverer>

Beispiel 2: Die Versandart soll für die Länder (im dreistelligen ISO-Code) ausgeschlossen sein, die im Parameter DeliveryCountry-List angegeben sind. Die Versandart gilt nur für Lieferung außerhalb Deutschlands.

<+Deliverer>
   ...
   DeliveryCountry-Rule    = DenyCountries
   DeliveryCountry-List    = DEU
   ...
</+Deliverer>

Ergänzen Sie einen kurzen Informationstext, z. B. "innerhalb Deutschlands" (Country-Txt).

<+Deliverer>
   ...
   Country-Txt             = innerhalb Deutschlands
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

1.1.2 Zahlungsarten-Versandarten-Kombinationen

Sie können einstellen, dass die Versandarten von den angebotenen Zahlungsarten abhängen. So lässt sich beispielsweise festlegen, dass die Versandart "Selbstabholung" nur in Kombination mit der Zahlungsart "Barzahlung" möglich ist.


Tipp:

Informieren Sie den Käufer bereits bei der Anzeige der Zahlungsarten über die möglichen Versandarten. WEBSALE V8s unterstützt hierzu zusätzliche Anzeigetexte bei der jeweiligen Zahlungsart.

Wählt der Käufer eine ungültige Kombination, zeigt WEBSALE V8s eine entsprechende Fehlermeldung an. Optional können Sie auch eine automatische Vorauswahl der gültigen Versandarten aktivieren. Dann bekommt der Käufer nur noch gültige Versandarten zur Auswahl angeboten.

Schritt 1: Hinweismeldung hinterlegen

Fügen Sie in der Shopkonfiguration shop.config im Abschnitt <NotifyMessages-Txt> den neuen Parameter PaymentDeliverer hinzu.

<NotifyMessages-Txt>
   ...
   PaymentDeliverer = Die gewählte Zahlungsart "~WS-Payment~" kann leider nicht mit der Versandart "~WS-Delivery~" gewählt werden. Bitte überprüfen Sie Ihre Eingaben und versuchen Sie es erneut.
   ...
</NotifyMessages-Txt>

Referenz: Abschnitt NotifyMessages-Txt

Schritt 2: Zuordnung der erlaubten Versandarten zu den einzelnen Zahlungsarten

Hinterlegen Sie in der Shopkonfiguration shop.config in den Abschnitten <PaymentXXX-Txt> der jeweiligen Zahlungsarten beim Parameter DelivererID-List eine Liste der gültigen Versandarten.

<PaymentXXX-Txt>
   ...
   DelivererID-List = 1,2      # Zahlungsart nur mit bestimmten Versandarten erlauben
   ...
</PaymentXXX-Txt>

Referenz: Abschnitt PaymentXXX-Txt

Die anzugebenden Nummern beziehen sich dabei auf den Parameter ID, der jeweils in den Abschnitten <+Deliverer> der Versandarten hinterlegt wurde.

<+Deliverer>
   Allow    = yes
   ID       = 1
   Name-Txt = UPS
   ...
</+Deliverer>
 
<+Deliverer>
   Allow    = yes
   ID       = 2
   Name-Txt = DHL
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Bei dieser Methode wird die Seite sofort neu aufgebaut, sobald der Käufer eine Zahlungsart auswählt. Anschließend kann er nur noch die für die gewählte Zahlungsart gültigen Versandarten auswählen. Alle anderen Versandarten werden nicht oder ausgegraut angezeigt.

Automatische Vorauswahl der gültigen Versandarten

Im Auslieferungsstandard eines Shops wird auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) dem Käufer eine oder mehrere Versandarten angeboten, abhängig von den Produkten im Warenkorb und der ausgewählten Zahlungsart. Diese Funktionalität basiert auf JavaScript, das im Browser des Shop-Kunden aktiviert sein muss.

Falls Sie ein eigenes JavaScript verwenden, muss dieses in der Shopkonfiguration shop.config in den Abschnitten <+Deliverer> referenziert sein.

Achten Sie bei Verwendung eigener JavaScripts darauf, dass das Formular zur Eingabe der Zahlungsart und Versandart den Namen und die ID PaymentDelivery behält (wichtig!).

<form action="~FORM-PayDeliv~" name="PaymentDelivery" id="PaymentDelivery" method=post>
   ...
</form>

Referenz: FORM-PayDeliv

Zum Inhaltsverzeichnis

1.2 Versandkosten

1.2.1 Versandkostenberechnung nach Gewicht, Warenwert oder Volumen

In diesem Schritt legen Sie die Versandkosten abhängig vom Gewicht, Warenwert oder Volumen der Artikel fest. Die Kosten können prozentual oder absolut berechnet werden. Dabei sind bis zu 500 Staffelungen nach folgendem Schema möglich.

Jede Versandkosten-Staffelung besteht aus einer Klammer mit einem "Ab"-Wert, Doppelpunkt und der Angabe der Versandkosten.

Beispiel WeightCost-List (in der Einheit, die in den Produktdaten verwendet wird):

Ab einem Gewicht von 0 kg sollen die Versandkosten 0 EUR betragen: (0:0)

Ab einem Gewicht von 7,5 kg betragen die Versandkosten 5% des Warenwertes: (7.5:5%)

Ab einem Gewicht von 50 kg betragen die Versandkosten 29,95 EUR: (50:29.95)

Beispiel BasicCost-List:

Ab einem Warenwert von 0 EUR sollen die Versandkosten 5 EUR betragen: (0:5)

Ab einem Warenwert von 20 EUR betragen die Versandkosten 5% des Warenwertes: (20:5%)

Ab einem Warenwert von 50 EUR ist der Versand kostenfrei: (50:0)

Beispiel VolumeCost-List:

Ab einem Volumen von 0 m3 sollen die Versandkosten 0 EUR betragen: (0:0)

Ab einem Volumen von 0,5 m3 betragen die Versandkosten 5% des Warenwertes: (0.5:5%)

Ab einem Volumen von 1 m3 betragen die Versandkosten 20 EUR: (1:20)

Ergänzen Sie für die versandkostenfreie Lieferung den Parameter NoCost-Txt und einen kurzen Text, der bei versandkostenfreier Lieferung bei dieser Versandart angezeigt wird.

<+Deliverer>
   ...
   WeightCost-List         = (0:0)(7.5:5%)(50:29.95)
   BasicCost-List          = (0:5)(20:5%)(50:0)
   VolumeCost-List         = (0:0)(0.5:5%)(1:20)
   ...
   NoCost-Txt              = (versandkostenfrei)
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

1.2.2 Steuersatz für Versandkostenberechnung

Für die Berechnung der Mehrwertsteuer für Versandkosten unterstützt WEBSALE V8s zwei Möglichkeiten: dynamische und statische Berechnung. Welche Berechnungsmethode im Shop angewendet werden soll, muss vom Versandhändler festgelegt werden. Alle Informationen hierzu finden Sie unter

Wegweiser: Mehrwertsteuer

Zum Inhaltsverzeichnis

1.2.3 Versandkosten in alternativer Währung anzeigen

Ist eine alternative Währung gewählt, werden die Versandkosten automatisch in der alternativen Währung berechnet und hinter den Versandkosten in der primären Währung angezeigt, im Format "(Betrag ISO-Code)".

Wegweiser: Alternative Währung

Zum Inhaltsverzeichnis

1.2.4 Versandkostenrabatt/-erlass für Kunden

Es gibt im Shop die Möglichkeit, Bestandskunden einen Erlass oder prozentualen Rabatt auf die Versandkosten zu gewähren (im Online-Servicebereich > Shop-Datenbanken > Kundendaten). Hierbei kann einzeln konfiguriert werden, ob dieser Erlass/Rabatt bei der jeweiligen Versandart akzeptiert wird oder nicht.

Tragen Sie hierfür im Abschnitt <+Deliverer> der Shopkonfiguration shop.config im Parameter UserDiscount-Allow die Angabe yes ein, um den Erlass/Rabatt für diese Versandart zu aktivieren. Für einen Ausschluss dieser Versandart tragen Sie den Wert no ein.

<+Deliverer>
   ...
   UserDiscount-Allow                = yes
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Versandkostenrabatt

Ist bei dem Bestandskunden ein Versandkostenrabatt hinterlegt, so kann dies auf jedem beliebigen Template angezeigt werden.

{ST-LoggedIn}
 
   {A-UserDeliveryCostDiscount}
      Für Sie wurde ein Versandkostenrabatt in Höhe von ~A-UserDeliveryCostDiscount~ % hinterlegt.
   {/A-UserDeliveryCostDiscount}
 
   {!A-UserDeliveryCostDiscount}
      Für Sie wurde kein Rabatt hinterlegt.
   {/!A-UserDeliveryCostDiscount}
 
{/ST-LoggedIn}

Referenz: A-UserDeliveryCostDiscount

Wurde dem Bestandskunden bei der Bestellung ein Rabatt gewährt, so wird dies in den Bestelldaten ausgewiesen.

Versandkostenerlass

Ist bei dem Bestandskunden ein Versandkostenerlass hinterlegt, so kann dies auf jedem beliebigen Template angezeigt werden.

{ST-LoggedIn}
 
   {A-UserDeliveryCostFree}
      Für Sie wurde ein Lieferkostenerlass hinterlegt. Sie bestellen versandkostenfrei.
   {/A-UserDeliveryCostFree}
   {!A-UserDeliveryCostFree}
      Für Sie wurde kein Erlass hinterlegt.
   {/!A-UserDeliveryCostFree}
 
{/ST-LoggedIn}

Referenz: A-UserDeliveryCostFree

Zum Inhaltsverzeichnis

1.2.5 Versandkostenrabatt/-erlass für Produkte (Download-Produkte)

Wenn Sie versandkostenfreie Produkte, wie z. B. Downloads, in Ihrem Shop anbieten, ergänzen Sie folgende Parameter:

HideForFreeDelivery: Die Versandart soll ausgeblendet werden, wenn sich ausschließlich versandkostenfreie Produkte (z. B. Downloads) im Warenkorb befinden.
HideForNoFreeDelivery: Die Versandart soll ausgeblendet werden, wenn sich keine oder nicht ausschließlich versandkostenfreie Produkte im Warenkorb befinden.

Beispiel: Eine kostenpflichtige Versandart soll …

… ausgeblendet werden (HideForFreeDelivery = yes), wenn sich ausschließlich versandkostenfreie Produkte im Warenkorb befinden (etwa 1 MP3-Download), aber …

… eingeblendet bleiben (HideForNoFreeDelivery = no), wenn sich auch nicht versandkostenfreie Produkte im Warenkorb befinden (1 MP3-Download + 1 CD):

<+Deliverer>
   ...
   BasicCost-List            = (0:4.99)
   HideForFreeDelivery       = yes
   HideForNoFreeDelivery     = no
   ...
</+Deliverer>

Wegweiser: Download-Produkte anbieten
Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

1.2.6 "Versandkostenfrei ab …"

Wenn Sie Ihren Kunden die versandkostenfreie Lieferung ab einem bestimmten Warenwert anbieten möchten, setzen Sie in der entsprechenden Versandart im Parameter BasicCost-List den Wert im Format ("Warenwert":"Versandkosten") ein. Für eine versandkostenfreie Lieferung beispielsweise ab 50 Euro Warenwert also (50:0).

Im Parameter NoCost-Txt können Sie einen kurzen Text hinterlegen, der ab 50 Euro Warenwert, also bei kostenfreier Lieferung angezeigt wird.

<+Deliverer>
   ...
   BasicCost-List          = (50:0)
   NoCost-Txt              = (versandkostenfrei)
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

1.3 Beispiele

Beispiel 1: Versandart "DHL", deutschlandweit, versandkostenfrei ab 49 EUR Bestellwert, darunter pauschal 5,99 EUR

<+Deliverer>
   Allow                   = yes
   ID                      = 1
   Name-Txt                = DHL
   Country-Txt             = innerhalb Deutschlands
   NoCost-Txt              = (versandkostenfrei)
   BasicCost-List          = (0:5.99)(49:0)
   DeliveryCountry-Rule    = AllowCountries
   DeliveryCountry-List    = DEU
   ...
</+Deliverer>

Beispiel 2: Versandart "Spedition", innerhalb D, A, CH. Versandkosten nach Gewicht gestaffelt, verfügbar ab 30 kg Gewicht

Gewicht-Maßeinheit in den Produktdaten: Kilogramm

<+Deliverer>
   Allow                   = yes
   ID                      = 2
   Name-Txt                = Spedition
   Country-Txt             = innerhalb Deutschland, Österreich und Schweiz
   WeightCost-List         = (30:9.95)(40:14.95)(50:19.95)
   DeliveryCountry-Rule    = AllowCountries
   DeliveryCountry-List    = DEU,AUT,CHE
   MinWeight               = 30
   ...
</+Deliverer>

Beispiel 3: Versandart "DHL Kurier", deutschlandweit, Versandkosten pauschal 14,99 EUR, bis maximal 2,5 kg Gewicht

Gewicht-Maßeinheit in den Produktdaten: Gramm

<+Deliverer>
   Allow                   = yes
   ID                      = 3
   Name-Txt                = DHL Kurier
   AvailabilityCheck-ID    = dhlkurier                # prüft die eingegebene Postleitzahl der Lieferadresse, ob sie sich im Liefergebiet von "DHL Kurier" befindet.
   Country-Txt             = innerhalb Deutschlands
   WeightCost-List         = (0:14.99)
   DeliveryCountry-Rule    = AllowCountries
   DeliveryCountry-List    = DEU
   MaxWeight               = 2500
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer


Hinweis:

Weitere Beispiele finden Sie unter Anwendungsbeispiele Versandarten

Zum Inhaltsverzeichnis

2 Ausgabe der Versandarten im Bestellprozess

Es gibt 2 Möglichkeiten, die Versandarten im Bestellprozess anzeigen zu lassen: Als Komplett-Anzeige aller Informationen mit einem einzigen Tag oder die flexible Positionierung mit vielen einzelnen Tags (siehe 2.2 Einzelpositionierung der Versandarten).

2.1 Komplett-Anzeige mit Einzel-Tag WS-DeliveryFields

Die Auswahl der Versandarten wird durch ein einziges Tag (WS-DeliveryFields) auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) erzeugt. Dies ermöglicht Ihnen, das Design dieser Auswahl optimal an ihre Wünsche anzupassen. Sie können bei Bedarf eigene JavaScript-Funktionen verwenden, um Ihren Käufern zum Beispiel visuelle Effekte oder individuelle Informationen zu einer Versandart anzubieten.

Das Tag WS-DeliveryFields zeigt automatisch alle Versandarten an, die Sie in der Shopkonfiguration aktiviert und konfiguriert haben.

Platzieren Sie dazu das Tag einmal auf Ihrem Template innerhalb der <form action="~Form-PayDeliv~">, falls noch nicht vorhanden.

<form action="~FORM-PayDeliv~">
   {MSG-PayDeliv_Notify}~MSG-PayDeliv_Notify~{/MSG-PayDeliv_Notify}
   ...
   Bitte wählen Sie eine Versandart:
   ~WS-DeliveryFields~
   
   {ST-Change}
      <input name="~BT-PayDeliv_Change~" type="submit" value="Änderung übernehmen">
   {/ST-Change}
 
   {!ST-Change}
      <input name="~BT-PayDeliv_Back~" type="submit" value="zurück">
      <input name="~BT-PayDeliv_Next~" type="submit" value="weiter">
   {/!ST-Change}
   ...
</form>

Alle Informationen über den Aufbau der erzeugten div-Struktur und zur Anpassung der CSS-IDs und Klassen mit Styles und JavaScript finden Sie in der Beschreibung des WS-DeliveryFields-Tags.

Referenz: FORM-PayDeliv

Referenz: MSG-PayDeliv_Notify

Referenz: WS-DeliveryFields

Referenz: BT-PayDeliv_Change

Referenz: BT-PayDeliv_Back

Referenz: BT-PayDeliv_Next

Referenz: ST-Change

Anzeige der gewählten Versandart

Nachdem der Käufer eine Versandart ausgewählt hat, können Sie diese auf der Bestellübersichtsseite, Bestelleingangsbestätigungsseite und Bestelleingangsbestätigungs-E-Mail anzeigen lassen.

Platzieren Sie dazu das Tag WS-Delivery auf Ihrem Template:

...
   Sie haben folgende Versandart gewählt:
   ~WS-Delivery~
 
...

Referenz: WS-Delivery

Zum Inhaltsverzeichnis

2.2 Einzelpositionierung der Versandarten mit DELIV-Data-Tags

Neben der Methode mit dem Einzel-Tag WS-DeliveryFields, alle Zahlungsarten automatisch auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) anzubieten, können Sie auch die zahlreichen DELIV-Data-Tags verwenden. Hierbei wird kein vorgegebenes HTML-Konstrukt erzeugt (vgl. Aufbau der div-Struktur), sondern Sie können jedem Element individuelle CSS-Styles zuordnen und somit die Ausgabe absolut frei gestalten und positionieren.

Die DELIV-Data-Tags können auf allen Templates verwendet werden.

2.2.1 Versandarten in der Shopkonfiguration shop.config anlegen

Stellen Sie wie oben beschrieben die notwendigsten Parameter in der Shopkonfiguration shop.config ein. Für jede Versandart benötigen Sie einen eigenen <+Deliverer>-Abschnitt.

<+Deliverer>
   Allow                    = yes
   ID                       = 1
   Name-Txt                 = XYZ
   Country-Txt              = weltweite Zustellung
   Suffix-Txt               =
   NoCost-Txt               = (versandkostenfrei)
   Img                      =
   ImgOnClick               = selectDelivererImage('~ID~');
   RadioOnClick             = selectDeliverer('~ID~');
   ...
</+Deliverer>

Alle weiteren möglichen Parameter für die Konfiguration der Versandarten finden Sie unter:

Referenz: Abschnitt <+Deliverer>

Zum Inhaltsverzeichnis

 

2.2.2 Auswahl der Versandarten im Bestellprozess

Folgender Code ist für das Template Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) im Bestellprozess. Das Formular <form action="~FORM-PayDeliv~"> muss neben der DELIV-Data-Schleife auch die Auswahl der Zahlungsarten PAY-Data auf dem gleichen Template umschließen.

Das versteckte Eingabefeld js_paydeliv lädt die Seite neu, um die ausgewählte Versandart hervorzuheben und Abhängigkeiten mit Zahlungsarten zu berücksichtigen. Der Käufer bleibt auf dieser Seite für die Auswahl einer Zahlungsart. Ohne dieses versteckte Eingabefeld gelangt man sofort auf die Bestellübersichtsseite (ws_place_order.htm).

<form action="~FORM-PayDeliv~" method="post" name="PaymentDelivery" id="PaymentDelivery">
<input type="hidden" name="js_paydeliv" id="js_paydeliv" value="">
 
<h1>Zahlungsarten</h1>
{PAY-Data}
   ...
{/PAY-Data}
 
<h1>Versandarten</h1>
 
{DELIV-Data}
   {@DELIV-Data}
   
      <input id="~DELIV-Data_Selection_html_id~" class="~DELIV-Data_Selection_html_class_global~ ~DELIV-Data_Selection_html_class_active~" 
         type="radio" name="~DELIV-Data_Selection_radioname~" value="~DELIV-Data_Selection_radiovalue~" 
         ~DELIV-Data_Selection_disabled~ ~DELIV-Data_Selection_checked~ onClick="~DELIV-Data_Selection_html_js_onclick~">
      ~DELIV-Data_NameSuffix~ <!-- ~DELIV-Data_NameSuffix~ zeigt die Parameter Name-TxtCountry-Txt und NoCost-Txt zusammen an --> <br>
      {DELIV-Data_Suffix}
         ~DELIV-Data_Suffix~<br>
      {/DELIV-Data_Suffix}
 
      {DELIV-Data_Image}
         <img src="~DELIV-Data_Image~" {DELIV-Data_Image_html_js_onclick}onClick="~DELIV-Data_Image_html_js_onclick~"{/DELIV-Data_Image_html_js_onclick}>
      {/DELIV-Data_Image}
 
   {/@DELIV-Data}
{/DELIV-Data}
 
</form>

Referenz: DELIV-Data
Referenz: DELIV-Data_Selection_html_id
Referenz: DELIV-Data_Selection_html_class_global
Referenz: DELIV-Data_Selection_html_class_active
Referenz: DELIV-Data_Selection_radioname
Referenz: DELIV-Data_Selection_radiovalue
Referenz: DELIV-Data_Selection_disabled
Referenz: DELIV-Data_Selection_checked
Referenz: DELIV-Data_Selection_html_js_onclick
Referenz: DELIV-Data_NameSuffix
Referenz: DELIV-Data_Name
Referenz: DELIV-Data_Country
Referenz: DELIV-Data_Suffix
Referenz: DELIV-Data_Image
Referenz: DELIV-Data_Image_html_js_onclick


Hinweis:

Ausführliche Code-Beispiele mit allen DELIV-Data-Tags, die viele Funktionalitäten im Zusammenhang mit Versandarten abbilden, finden Sie weiter unten: Code-Beispiel (komplett)

Zum Inhaltsverzeichnis

 

2.2.3 Hervorheben der ausgewählten Versandart

Um die ausgewählte Versandart optisch hervorzuheben fügen Sie einen <div>-Container um den bestehenden Code innerhalb der DELIV-Data-Schleife ein. Klammern Sie die CSS-Klasse mit dem positiven Bereichs-Tag DELIV-Data_selected. Das Tag DELIV-Data_html_class_active(main) ersetzt die bisherige CSS-Klasse .ws_deliverydiv_main_active. Natürlich können Sie auch eigene Klassen definieren oder mit Inline-Styles arbeiten.

{DELIV-Data}
   {@DELIV-Data}
      <div {DELIV-Data_selected}class="~DELIV-Data_html_class_active(main)~"{/DELIV-Data_selected}>
         ...
      </div>
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_selected
Referenz: DELIV-Data_html_class_active
Referenz: Div-Struktur und CSS-Styles der WS-DeliveryFields

Zum Inhaltsverzeichnis

 

2.2.4 Versandkostenberechnung

Definieren Sie Ihre Versandkosten im Abschnitt <+Deliverer> der Shopkonfiguration shop.config wie oben unter Versandkostenberechnung beschrieben. Die Anzeige der Versandkosten erfolgt durch das Einzel-Tag DELIV-Data_Cost.

{DELIV-Data}
   {@DELIV-Data}
      ...
      {DELIV-Data_Cost}
         Zusätzliche Versandkosten: ~DELIV-Data_Cost~
      {/DELIV-Data_Cost}
      ...
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_Cost
Referenz: DELIV-Data_NetCost
Referenz: DELIV-Data_GrossCost

Zum Inhaltsverzeichnis

 

2.2.5 Versandkosten in alternativer Währung anzeigen

Wenn Sie die Kosten der Versandart in einer alternativen Währung anzeigen wollen, verwenden Sie folgende Tags:

{DELIV-Data}
   {@DELIV-Data}
      ...
      {DELIV-Data_AltCurrencyCost}
         ~DELIV-Data_AltCurrencyCost~
         ~DELIV-Data_AltCurrencyNetCost~
         ~DELIV-Data_AltCurrencyGrossCost~
      {/DELIV-Data_AltCurrencyCost}
      ...
   {/@DELIV-Data}
{/DELIV-Data}

Wegweiser: Alternative Währung
Referenz: DELIV-Data_AltCurrencyCost
Referenz: DELIV-Data_AltCurrencyNetCost
Referenz: DELIV-Data_AltCurrencyGrossCost

Zum Inhaltsverzeichnis

 

2.2.6 Versandkostenerlass/-Rabatt

Konfigurieren Sie die Versandkostenfreiheit oder den kundenindividuellen Rabatt im Abschnitt <+Deliverer> der Shopkonfiguration shop.config wie oben unter Versandkostenrabatt/-erlass beschrieben. Ergänzen Sie innerhalb der DELIV-Data-Schleife die Tags DELIV-Data_UserDeliveryCostDiscount. Klammern Sie diesen Bereich zusätzlich mit ST-LoggedIn, damit er nur dann angezeigt wird, wenn der Kunde angemeldet ist.

{DELIV-Data}
   {@DELIV-Data}
      ...
      {ST-LoggedIn}
         {DELIV-Data_UserDeliveryCostDiscount}
            Sie erhalten einen Zahlungskostenrabatt in Höhe von ~DELIV-Data_UserDeliveryCostDiscount~ ~WS-CurrencySymbol~.
         {/DELIV-Data_UserDeliveryCostDiscount}
      {/ST-LoggedIn}
      ...
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_UserDeliveryCostDiscount
Referenz: DELIV-Data_UserDeliveryCostNetDiscount
Referenz: DELIV-Data_UserDeliveryCostGrossDiscount
Referenz: DELIV-Data_UserDeliveryCostDiscountRate

Zum Inhaltsverzeichnis

 

2.2.7 Hinweis für ausgegraute, nicht verfügbare Versandarten

Wenn Sie nicht verfügbare Versandarten ausgegraut anzeigen lassen (siehe oben Nicht verfügbare Versandarten ausgegraut darstellen), können Sie mit folgenden Tags einen Hinweistext anzeigen, warum die Versandart nicht zur Verfügung steht:

{DELIV-Data}
   {@DELIV-Data}
      ...
      {DELIV-Data_disabled} <!-- Versandart ist nicht verfügbar -->
         ~DELIV-Data_disabledmessage~ <!-- Nummer des Ablehnungsgrundes: ~DELIV-Data_disabledcode~ -->
      {/DELIV-Data_disabled}
      ...
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_disabled
Referenz: DELIV-Data_disabledmessage
Referenz: DELIV-Data_disabledcode

Zum Inhaltsverzeichnis

 

2.2.8 Zusatzinformationen zu Versandarten abfragen

Konfigurieren Sie die zusätzlichen Eingabefelder in der Shopkonfiguration shop.config wie oben unter Zusatzinformationen zu Versandarten abfragen beschrieben.

Hier ein Beispiel mit allen 3 möglichen Arten: Eingabefeld, Checkbox und Auswahlliste:

<DelivererAdditionalInput-Definitions>
   <+AdditionalInput>
      ID                             = phone_input
      FieldDescr                     = Ihre Telefonnummer:
      MaxLength                      = 120
      Required                       = yes
      AdditionalInfoText             = * Geben Sie hier für Rückfragen der Spedition Ihre Telefonnummer ein.
      RequiredErrorMessage-Txt       = Bitte füllen Sie das Feld "Ihre Telefonnummer" aus.
      Type                           = input
   </+AdditionalInput>
   <+AdditionalInput>
      ID                             = confirmation_checkbox
      FieldDescr                     = Bestätigen Sie die Weitergabe Ihrer Telefonnummer
      Required                       = yes
      AdditionalInfoText             = * Aktivieren Sie die Checkbox.
      RequiredErrorMessage-Txt       = Bitte aktivieren Sie die Checkbox.
      Type                           = checkbox
   </+AdditionalInput>
   <+AdditionalInput>
      ID                             = deliverytime_listbox
      FieldDescr                     = Wann soll die Lieferung erfolgen?
      MaxLength                      = 120
      Required                       = yes
      AdditionalInfoText             = * Wählen sie ein Zeitfenster aus der Liste
      RequiredErrorMessage-Txt       = Bitte wählen Sie Ihre gewünschte Tageszeit der Zustellung aus.
      Type                           = listbox
      <+listentry>
            ID                       = 
            Entry-Txt                = Bitte auswählen
      </+listentry>
      <+listentry>
            ID                       = 1
            Entry-Txt                = vormittags (8 - 12 Uhr)
      </+listentry>
      <+listentry>
            ID                       = 2
            Entry-Txt                = nachmittags (12 - 16 Uhr)
      </+listentry>
      <+listentry>
            ID                       = 3
            Entry-Txt                = abends (16 - 20 Uhr)
      </+listentry>
   </+AdditionalInput>
 
</DelivererAdditionalInput-Definitions>

Referenz: Abschnitt <DelivererAdditionalInput-Definitions>

Im Abschnitt <+Deliverer> weisen Sie den Versandarten, für die Sie diese Zusatzinformationen benötigen, den Parameter +UseAdditionalInput-ID mit den entsprechenden IDs aus dem Abschnitt <DelivererAdditionalInput-Definitions> zu. Die Reihenfolge der IDs beeinflusst bei mehreren zusätzlichen Eingabefeldern die Reihenfolge im Shop.

<+Deliverer>
   ...
   +UseAdditionalInput-ID       = phone_input
   +UseAdditionalInput-ID       = confirmation_checkbox
   +UseAdditionalInput-ID       = deliverytime_listbox
   ...
</+Deliverer>

Referenz: Abschnitt <+Deliverer>

Um die zusätzlichen Eingabefelder im Bestellprozess anzuzeigen, kopieren Sie folgendes Code-Beispiel in die DELIV-Data-Schleife auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm):

{DELIV-Data}
   {@DELIV-Data}
   ...
   {DELIV-Data_AdditionalInput}
      {@DELIV-Data_AdditionalInput}
 
         {Deliv-Data_Additionalinput_descr}
            ~Deliv-Data_Additionalinput_descr~ {DELIV-Data_AdditionalInput_required}*{/DELIV-Data_AdditionalInput_required}
         {/Deliv-Data_Additionalinput_descr}
 
         {DELIV-Data_AdditionalInput_type_isInput}
            <input type="text" name="~DELIV-Data_Additionalinput_input~" value="~DELIV-Data_Additionalinput_value~" 
               maxlength="~DELIV-Data_AdditionalInput_maxlength~">
         {/DELIV-Data_AdditionalInput_type_isInput}
 
         {DELIV-Data_AdditionalInput_type_isCheckbox}
            <input type="checkbox" name="~DELIV-Data_Additionalinput_input~" value="checked" ~DELIV-Data_Additionalinput_value~>
         {/DELIV-Data_AdditionalInput_type_isCheckbox}
 
         {DELIV-Data_AdditionalInput_type_isListbox}
            <select name="~DELIV-Data_Additionalinput_input~">
               {@DELIV-Data_AdditionalInput_listbox}
                  <option value="~DELIV-Data_AdditionalInput_listbox_value~" ~DELIV-Data_AdditionalInput_listbox_selected~>
                     ~DELIV-Data_AdditionalInput_listbox_value_txt~
                  </option>
               {/@DELIV-Data_AdditionalInput_listbox}
            </select>
         {/DELIV-Data_AdditionalInput_type_isListbox}
 
         {DELIV-Data_AdditionalInput_additionalinfotext}
            ~DELIV-Data_AdditionalInput_additionalinfotext~
         {/DELIV-Data_AdditionalInput_additionalinfotext}
 
         {DELIV-Data_AdditionalInput_error}
            {DELIV-Data_AdditionalInput_errormessage}
               ~DELIV-Data_AdditionalInput_errormessage~
            {/DELIV-Data_AdditionalInput_errormessage}
         {/DELIV-Data_AdditionalInput_error}
 
      {/@DELIV-Data_AdditionalInput}
   {/DELIV-Data_AdditionalInput}
   ...
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_AdditionalInput
Referenz: DELIV-Data_AdditionalInput_descr
Referenz: DELIV-Data_AdditionalInput_required
Referenz: DELIV-Data_AdditionalInput_type_isInput
Referenz: DELIV-Data_AdditionalInput_input
Referenz: DELIV-Data_AdditionalInput_value
Referenz: DELIV-Data_AdditionalInput_maxlength
Referenz: DELIV-Data_AdditionalInput_type_isCheckbox
Referenz: DELIV-Data_AdditionalInput_type_isListbox
Referenz: DELIV-Data_AdditionalInput_listbox
Referenz: DELIV-Data_AdditionalInput_listbox_value
Referenz: DELIV-Data_AdditionalInput_listbox_selected
Referenz: DELIV-Data_AdditionalInput_listbox_value_txt
Referenz: DELIV-Data_AdditionalInput_additionalinfotext
Referenz: DELIV-Data_AdditionalInput_error
Referenz: DELIV-Data_AdditionalInput_errormessage

Zum Inhaltsverzeichnis

 

2.2.9 Code-Beispiel (komplett) für die Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm)

Das Code-Beispiel beinhaltet neben den oben beschriebenen DELIV-Data-Tags auch alle Tags, die auf die CSS-Styles (IDs und Klassen) der bisherigen Implementierung mit dem Einzel-Tag WS-DeliveryFields zugreifen (sog. Drop-In Replacements). Somit können Sie den Code einfach in Ihr Template übernehmen, ohne an den CSS-Styles Anpassungen vornehmen zu müssen.

Alle Informationen über den Aufbau der bisher erzeugten div-Struktur und zur Anpassung der CSS-IDs und Klassen mit Styles und JavaScript finden Sie in der Beschreibung des Tags WS-DeliveryFields.

<form action="~FORM-PayDeliv~" method="post" name="PaymentDelivery" id="PaymentDelivery">
<input type="hidden" name="js_paydeliv" id="js_paydeliv" value="">

<h1>Zahlungsarten</h1>
{PAY-Data}
   {@PAY-Data}
      ...
   {/@PAY-Data}				
{/PAY-Data}

<h1>Versandarten</h1>
{DELIV-Data}
   {@DELIV-Data}
   <div id="~DELIV-Data_html_id(main)~" class="~DELIV-Data_html_class_global(main)~ ~DELIV-Data_html_class_counter(main)~ ~DELIV-Data_html_class_active(main)~ ~DELIV-Data_html_class_disable(main)~"> <!-- main ~DELIV-Data_Name~ start -->
      <div id="~DELIV-Data_html_id(logo)~" class="~DELIV-Data_html_class_global(logo)~ ~DELIV-Data_html_class_counter(logo)~ ~DELIV-Data_html_class_active(logo)~ ~DELIV-Data_html_class_disable(logo)~"> <!-- logo ~DELIV-Data_Name~ start -->
      {DELIV-Data_Image}
         <img src="~DELIV-Data_Image~" {DELIV-Data_Image_html_js_onclick}onClick="~DELIV-Data_Image_html_js_onclick~"{/DELIV-Data_Image_html_js_onclick}>
      {/DELIV-Data_Image}
      {!DELIV-Data_Image}
          
      {/!DELIV-Data_Image}
      </div> <!-- logo ~DELIV-Data_name~ end -->
      <div id="~DELIV-Data_html_id(radio)~" class="~DELIV-Data_html_class_global(radio)~ ~DELIV-Data_html_class_counter(radio)~ ~DELIV-Data_html_class_active(radio)~ ~DELIV-Data_html_class_disable(radio)~"> <!-- radio ~DELIV-Data_Name~ start -->
         <input id="~DELIV-Data_Selection_html_id~" class="~DELIV-Data_Selection_html_class_global~ ~DELIV-Data_Selection_html_class_active~" type="radio" name="~DELIV-Data_Selection_radioname~" value="~DELIV-Data_Selection_radiovalue~" ~DELIV-Data_Selection_disabled~ ~DELIV-Data_Selection_checked~ onClick="~DELIV-Data_Selection_html_js_onclick~">
      </div> <!-- radio ~DELIV-Data_name~ end -->
      <div id="~DELIV-Data_html_id(text)~" class="~DELIV-Data_html_class_global(text)~ ~DELIV-Data_html_class_counter(text)~ ~DELIV-Data_html_class_active(text)~ ~DELIV-Data_html_class_disable(text)~"> <!-- text ~DELIV-Data_Name~ start -->
         <p id="~DELIV-Data_html_id(name)~" class="~DELIV-Data_html_class_global(name)~ ~DELIV-Data_html_class_counter(name)~ ~DELIV-Data_html_class_active(name)~ ~DELIV-Data_html_class_disable(name)~"> <!-- name ~DELIV-Data_Name~ start -->
            ~DELIV-Data_NameSuffix~
         </p> <!-- name ~DELIV-Data_name~ end -->
         {DELIV-Data_Suffix}
            <div id="~DELIV-Data_html_id(suffix)~" class="~DELIV-Data_html_class_global(suffix)~ ~DELIV-Data_html_class_counter(suffix)~ ~DELIV-Data_html_class_active(suffix)~ ~DELIV-Data_html_class_disable(suffix)~"> <!-- suffix ~DELIV-Data_Name~ start -->
               ~DELIV-Data_Suffix~
            </div> <!-- suffix ~DELIV-Data_name~ end -->
         {/DELIV-Data_Suffix}
         {DELIV-Data_AdditionalInput}
            {@DELIV-Data_AdditionalInput}
            <div id="~DELIV-Data_html_id(additionalinput)~" class="~DELIV-Data_html_class_additionalinput_global(additionalinput)~ ~DELIV-Data_html_class_global(additionalinput)~ ~DELIV-Data_html_class_counter(additionalinput)~ ~DELIV-Data_html_class_active(additionalinput)~ ~DELIV-Data_html_class_disable(additionalinput)~"> <!-- additionalinput_~DELIV-Data_AdditionalInput_ID~ ~DELIV-Data_Name~ start -->
               <p id="~DELIV-Data_html_id(additionalinput_name)~" class="~DELIV-Data_html_class_additionalinput_global(additionalinput_name)~ ~DELIV-Data_html_class_global(additionalinput_name)~ ~DELIV-Data_html_class_counter(additionalinput_name)~ ~DELIV-Data_html_class_active(additionalinput_name)~ ~DELIV-Data_html_class_disable(additionalinput_name)~">
                  ~Deliv-Data_Additionalinput_descr~{DELIV-Data_AdditionalInput_required}{!DELIV-Data_AdditionalInput_type_isCheckbox}*{/!DELIV-Data_AdditionalInput_type_isCheckbox}{/DELIV-Data_AdditionalInput_required}{!DELIV-Data_AdditionalInput_type_isCheckbox}:{/!DELIV-Data_AdditionalInput_type_isCheckbox}
               </p>
               {DELIV-Data_AdditionalInput_type_isInput}
                  <input id="~DELIV-Data_html_id(additionalinput_input)~" type="text" maxlength="~DELIV-Data_AdditionalInput_maxlength~" class="~DELIV-Data_html_class_additionalinput_global(additionalinput_input)~ ~DELIV-Data_html_class_global(additionalinput_input)~ ~DELIV-Data_html_class_counter(additionalinput_input)~ ~DELIV-Data_html_class_active(additionalinput_input)~ ~DELIV-Data_html_class_disable(additionalinput_input)~" name="~DELIV-Data_Additionalinput_input~" value="~DELIV-Data_Additionalinput_value~">
               {/DELIV-Data_AdditionalInput_type_isInput}
               {DELIV-Data_AdditionalInput_type_isCheckbox}
                  <input id="~DELIV-Data_html_id(additionalinput_checkbox)~" type="checkbox" class="~DELIV-Data_html_class_additionalinput_global(additionalinput_checkbox)~ ~DELIV-Data_html_class_global(additionalinput_checkbox)~ ~DELIV-Data_html_class_counter(additionalinput_checkbox)~ ~DELIV-Data_html_class_active(additionalinput_checkbox)~ ~DELIV-Data_html_class_disable(additionalinput_checkbox)~" ~DELIV-Data_Additionalinput_value~ value="checked" name="~DELIV-Data_Additionalinput_input~">
               {/DELIV-Data_AdditionalInput_type_isCheckbox}
               {DELIV-Data_AdditionalInput_type_isListbox}
                  <select class="~DELIV-Data_html_class_additionalinput_global(additionalinput_list)~ ~DELIV-Data_html_class_global(additionalinput_list)~ ~DELIV-Data_html_class_counter(additionalinput_list)~ ~DELIV-Data_html_class_active(additionalinput_list)~ ~DELIV-Data_html_class_disable(additionalinput_list)~" name="~DELIV-Data_Additionalinput_input~" {DELIV-Data_disabled}disabled{/DELIV-Data_disabled}>
                     {@DELIV-Data_AdditionalInput_listbox}
                        <option value="~DELIV-Data_AdditionalInput_listbox_value~" ~DELIV-Data_AdditionalInput_listbox_selected~>~DELIV-Data_AdditionalInput_listbox_value_txt~</option>
                     {/@DELIV-Data_AdditionalInput_listbox}
                  </select>
               {/DELIV-Data_AdditionalInput_type_isListbox}
               {DELIV-Data_AdditionalInput_additionalinfotext}
                  <p id="~DELIV-Data_html_id(additionalinput_infotext)~" class="~DELIV-Data_html_class_additionalinput_global(additionalinput_infotext)~ ~DELIV-Data_html_class_global(additionalinput_infotext)~ ~DELIV-Data_html_class_counter(additionalinput_infotext)~ ~DELIV-Data_html_class_active(additionalinput_infotext)~ ~DELIV-Data_html_class_disable(additionalinput_infotext)~">
                     ~DELIV-Data_AdditionalInput_additionalinfotext~
                  </p>
               {/DELIV-Data_AdditionalInput_additionalinfotext}
               {DELIV-Data_AdditionalInput_errormessage}
                  <p id="~DELIV-Data_html_id(additionalinput_error)~" class="~DELIV-Data_html_class_additionalinput_global(additionalinput_error)~ ~DELIV-Data_html_class_global(additionalinput_error)~ ~DELIV-Data_html_class_counter(additionalinput_error)~ ~DELIV-Data_html_class_active(additionalinput_error)~ ~DELIV-Data_html_class_disable(additionalinput_error)~">
                     ~DELIV-Data_AdditionalInput_errormessage~
                  </p>
               {/DELIV-Data_AdditionalInput_errormessage}
            </div> <!-- additionalinput_~DELIV-Data_AdditionalInput_ID~ ~DELIV-Data_Name~ end -->
            {/@DELIV-Data_AdditionalInput}
         {/DELIV-Data_AdditionalInput}
         {DELIV-Data_disabledmessage}
            <div id="~DELIV-Data_html_id(disabled)~" class="~DELIV-Data_html_class_global(disabled)~ ~DELIV-Data_html_class_counter(disabled)~ ~DELIV-Data_html_class_active(disabled)~ ~DELIV-Data_html_class_disable(disabled)~"> <!-- disabled ~DELIV-Data_Name~ start -->
               ~DELIV-Data_disabledmessage~
            </div> <!-- disabled ~DELIV-Data_name~ end -->
         {/DELIV-Data_disabledmessage}
      </div> <!-- text ~DELIV-Data_name~ end -->
      <div id="~DELIV-Data_html_id(clear)~" class="~DELIV-Data_html_class_global(clear)~ ~DELIV-Data_html_class_counter(clear)~ ~DELIV-Data_html_class_active(clear)~ ~DELIV-Data_html_class_disable(clear)~"> <!-- clear ~DELIV-Data_Name~ start -->
      </div> <!-- clear ~DELIV-Data_name~ end -->
   </div> <!-- main ~DELIV-Data_name~ end -->
   {/@DELIV-Data}
{/DELIV-Data}
...
</form>        

Folgendes Code-Beispiel enthält weder Kommentare, HTML-Tags noch CSS-Styles:

<h1>Versandarten</h1>
{DELIV-Data}
   {@DELIV-Data}
   <div>
      {DELIV-Data_Image}
         <img src="~DELIV-Data_Image~" {DELIV-Data_Image_html_js_onclick}onClick="~DELIV-Data_Image_html_js_onclick~"{/DELIV-Data_Image_html_js_onclick}>
      {/DELIV-Data_Image}
      
      <input type="radio" name="~DELIV-Data_Selection_radioname~" value="~DELIV-Data_Selection_radiovalue~" ~DELIV-Data_Selection_disabled~ ~DELIV-Data_Selection_checked~ onClick="~DELIV-Data_Selection_html_js_onclick~">
      ~DELIV-Data_NameSuffix~
      
      {DELIV-Data_Suffix}
         ~DELIV-Data_Suffix~
      {/DELIV-Data_Suffix}
      
      {DELIV-Data_AdditionalInput}
         {@DELIV-Data_AdditionalInput}
            
            ~Deliv-Data_Additionalinput_descr~{DELIV-Data_AdditionalInput_required}{!DELIV-Data_AdditionalInput_type_isCheckbox}*{/!DELIV-Data_AdditionalInput_type_isCheckbox}{/DELIV-Data_AdditionalInput_required}{!DELIV-Data_AdditionalInput_type_isCheckbox}:{/!DELIV-Data_AdditionalInput_type_isCheckbox}

            {DELIV-Data_AdditionalInput_type_isInput}
               <input type="text" maxlength="~DELIV-Data_AdditionalInput_maxlength~" name="~DELIV-Data_Additionalinput_input~" value="~DELIV-Data_Additionalinput_value~">
            {/DELIV-Data_AdditionalInput_type_isInput}
            
            {DELIV-Data_AdditionalInput_type_isCheckbox}
               <input type="checkbox" ~DELIV-Data_Additionalinput_value~ value="checked" name="~DELIV-Data_Additionalinput_input~">
            {/DELIV-Data_AdditionalInput_type_isCheckbox}
            
            {DELIV-Data_AdditionalInput_type_isListbox}
               <select name="~DELIV-Data_Additionalinput_input~" {DELIV-Data_disabled}disabled{/DELIV-Data_disabled}>
                  {@DELIV-Data_AdditionalInput_listbox}
                     <option value="~DELIV-Data_AdditionalInput_listbox_value~" ~DELIV-Data_AdditionalInput_listbox_selected~>~DELIV-Data_AdditionalInput_listbox_value_txt~</option>
                  {/@DELIV-Data_AdditionalInput_listbox}
               </select>
            {/DELIV-Data_AdditionalInput_type_isListbox}
            
            {DELIV-Data_AdditionalInput_additionalinfotext}
               ~DELIV-Data_AdditionalInput_additionalinfotext~
            {/DELIV-Data_AdditionalInput_additionalinfotext}
            
            {DELIV-Data_AdditionalInput_errormessage}
               ~DELIV-Data_AdditionalInput_errormessage~
            {/DELIV-Data_AdditionalInput_errormessage}

         {/@DELIV-Data_AdditionalInput}
      {/DELIV-Data_AdditionalInput}
         
      {DELIV-Data_disabledmessage}
         ~DELIV-Data_disabledmessage~
      {/DELIV-Data_disabledmessage}
   </div>
   {/@DELIV-Data}
{/DELIV-Data}      

Referenz: Alle DELIV-Data-Tags
Referenz: WS-DeliveryFields

Zum Inhaltsverzeichnis

2.2.10 Zusätzliche Information mit den Bestelldaten übergeben (optional)

Wenn Sie zusätzliche Informationen zu einer Versandart in den Bestelldaten übergeben lassen wollen, fügen Sie in die entsprechenden Abschnitte <+Deliverer> den Parameter +AdditionalInfo-<ID> ein und vergeben eine eindeutige ID.

Beispiel:

<+Deliverer>
   ...
   +AdditionalInfo-deliv-time_01     = Lieferzeit 5 Werktage
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Falls Sie diese zusätzlichen Texte im Shop ausgeben wollen, fügen Sie innerhalb der DELIV-Data-Schleife das Tag DELIV-Data_AdditionalInfo-<ID> ein.

Beispiel:

{DELIV-Data}
   {@DELIV-Data}
      ...
      {DELIV-Data_AdditionalInfo-deliv-time_01}
         ~DELIV-Data_AdditionalInfo-deliv-time_01~
      {/DELIV-Data_AdditionalInfo-deliv-time_01}
      ...
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_AdditionalInfo-<id>

Zum Inhaltsverzeichnis

2.2.11 Typ der Versandart ausgeben (optional)

Ergänzen Sie die Abschnitte <+Deliverer> mit dem Parameter Type und vergeben einen beliebigen alphanumerischen Wert. Der Parameter wird mit dem Wert in die Bestelldaten geschrieben.

Beispiel:

<+Deliverer>
   ...
   Type        = spedition01
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Falls Sie diesen Typ im Shop ausgeben wollen, fügen Sie innerhalb der DELIV-Data-Schleife das Tag DELIV-Data_type ein.

Beispiel:

{DELIV-Data}
   {@DELIV-Data}
      ...
      {DELIV-Data_type}
         Type der Versandart: ~DELIV-Data_type~
      {/DELIV-Data_type}
      ...
   {/@DELIV-Data}
{/DELIV-Data}

Referenz: DELIV-Data_type

Zum Inhaltsverzeichnis

3 Erweiterte Einstellungen beim Anlegen von Versandarten

3.1 Versandarten produktabhängig anbieten

Sie können die verfügbaren Versandarten für jedes Produkt einzeln festlegen. So kann es bei manchen Produkten erforderlich sein, dass bei einer Bestellung dieser Produkte nicht alle Versandarten angeboten werden, sondern nur bestimmte, passende Versandarten. Sperrige Güter, z. B. eine Tischtennisplatte, werden vielleicht nur per Spedition geliefert. Sobald dann eine Tischtennisplatte im Warenkorb liegt, wird dann nur noch die Versandart "Spedition" angeboten.


Hinweis:

Sorgen Sie dafür, dass der Shop in jedem Fall eine Versandart zur Verfügung stellt, die zum Warenkorbinhalt passt. Die Konfiguration produktabhängiger Versandarten kann dazu führen, dass für eine Kombination von Artikeln im Warenkorb keine Versandart angeboten wird, ohne dass das so beabsichtigt war (siehe Schritt 2).

Schritt 1: Testmodus in der Shopkonfiguration shop.config aktivieren

Fügen Sie im Abschnitt <Delivery> der Shopkonfiguration shop.config den Parameter DeliveryFilterID-Mode mit dem Wert test hinzu:

<Delivery>
   ...
   DeliveryFilterID-Mode = test 
   ...
</Delivery>

Referenz: Abschnitt Delivery

Schritt 2: Bestellabschluss ohne ausgewählte Versandart blockieren

Um das Risiko zu vermeiden, dass Ihr Shop aufgrund einer unbeabsichtigten fehlerhaften Konfiguration der Versandarten Bestellungen ohne Auswahl der Versandart zulässt, setzen Sie in jedem Fall im Abschnitt <Basic> der Shopkonfiguration shop.config den Parameter DeliveryRequiredForOrder-Allow auf den Wert yes:

<Basic>
   ...
   DeliveryRequiredForOrder-Allow = yes
   ...
</Basic>

Referenz: Abschnitt Basic

Schritt 3: Produkte kennzeichnen (Produktdaten)

Weisen Sie den entsprechenden Produkten im Produktdatenfeld DeliveryFilterID die gewünschte ID zu, die Sie im Abschnitt <+Deliverer> beim Parameter DeliveryFilterID-List angeben wollen (z. B. "spedition").

Schritt 4: Versandarten zuweisen (Shopkonfiguration shop.config)

Wenn Sie eine bestimmte Versandart nur für bestimmte Produkte im Warenkorb anbieten wollen, nutzen Sie den Parameter DeliveryFilterID-List. Beispielsweise sollen sperrige Produkte ausschließlich per Spedition versandt werden. In der Shopkonfiguration shop.config muss dann für jede denkbare Kombination von Produkten im Warenkorb ein eigener Abschnitt <+Deliverer> angelegt werden, der sich nur bezüglich der DeliveryFilterID-Kombination unterscheidet.

Wir stellen diese Methode in den ersten 2 Beispielen vor.

Falls Sie für viele Produktvarianten eine produktabhängige Steuerung der Versandartenauswahl benötigen (und deshalb nicht etliche Abschnitte <+Deliverer> anlegen wollen, die sich nur durch die DeliveryFilterID-Kombination unterscheiden), empfiehlt sich die Verwendung des Parameters +DeliveryFilterID-List (mit vorangestelltem +-Zeichen).

Diese Methode stellen wir im 4. Beispiel vor.

Referenz: Abschnitt +Deliverer

a) DeliveryFilterID-List für nur wenige Versandarten

Um für eine Versandart festzulegen, dass sie in Abhängigkeit vom Warenkorbinhalt angeboten wird, ergänzen Sie in der Shopkonfiguration shop.config im Abschnitt <+Deliverer> der Versandart(en) den Parameter DeliveryFilterID-List. Geben Sie in diesem Parameter die ID an, die Sie in den Produktdaten vergeben haben, z. B. "spedition". Unter dieser ID fassen Sie alle Produkte zusammen, für die diese Versandart angeboten werden soll.

Beispiel 1:

<+Deliverer>
   ...
   Name                  = Lieferung per Spedition
   DeliveryFilterID-List = spedition
   ...
</+Deliverer>

Diese Versandart wird nur dann angeboten, wenn sich im Warenkorb mindestens ein Produkt befindet, für das im Produktdatenfeld DeliveryFilterID der Wert "spedition" vergeben wurde (zu den Produktdatenfeldern siehe oben, Schritt 3). Bei allen anderen Produkten im Warenkorb darf in diesem Fall das Produktdatenfeld leer sein, es darf jedoch keinen anderen Wert enthalten.

Sie können für Ihre Produkte beliebig viele DeliveryFilterIDs vergeben und im Abschnitt <+Deliverer> kommasepariert angeben. Die Versandart wird jedoch nur dann angeboten, wenn für jede der vergebenen DeliveryFilterIDs mindestens ein Produkt im Warenkorb liegt, der Warenkorb jedoch kein Produkt mit einer anderen DeliveryFilterID enthält.

Beispiel 2:

<+Deliverer>
   ...
   Name                  = Lieferung per Express-Spedition
   DeliveryFilterID-List = spedition,express
   ...
</+Deliverer>

Diese Versandart wird nur angeboten, wenn mindestens ein Produkt im Warenkorb liegt, dem im Feld DeliveryFilterID den Wert "spedition" zugewiesen wurde, und wenn mindestens ein Produkt im Warenkorb liegt, das im Produktdatenfeld DeliveryFilterID den Wert "express" aufweist (zu den Produktdatenfeldern siehe oben, Schritt 3). Die Versandart wird nur dann angeboten, wenn für jede der vergebenen DeliveryFilterIDs mindestens ein Produkt im Warenkorb liegt, der Warenkorb jedoch kein Produkt mit einer anderen DeliveryFilterID enthält.

Sorgen Sie dafür, dass immer auch unabhängige Versandarten angeboten werden, wenn nicht alle Produkte mit einem entsprechenden DeliveryFilterID-Wert versehen sind!

Beispiel 3:

<+Deliverer>
   ...
   Name                   = Paketversand
   DeliveryFilterID-List  =
   ...
</+Deliverer>

Diese Versandart wird nur dann angeboten, wenn keines der Produkte im Warenkorb einen Wert im Produktdatenfeld DeliveryFilterID hat, das betreffende Produktdatenfeld also bei allen Produkten im Warenkorb leer ist.

b) +DeliveryFilterID-List (führendes +-Zeichen) für produktabhängige Steuerung der Versandartenauswahl bei vielen Produktvarianten und entsprechenden Versandarten

Um nicht wie im vorhergehenden Abschnitt a) für jede der angebotenen Versandarten den betreffenden <+Deliverer>-Abschnitt wiederholen zu müssen, wenn sich die Abschnitte nur durch den Wert des Parameters DeliveryFilterID-List unterscheiden, verwenden Sie diesen Parameter mit vorangestelltem +-Zeichen und setzen mehrere davon in einen einzigen <+Deliverer>-Abschnitt. Die betreffende Versandart wird dann angeboten, sobald sie mit einer der angegebenen Kombinationen an DeliveryFilterIDs des Warenkorbs übereinstimmt (Oder-Verknüpfung).

Beispiel 4:

<+Deliverer>
   ...
   Name                   = DHL
   ...
   +DeliveryFilterID-List = standard
   +DeliveryFilterID-List = warensendung
   ...
</+Deliverer>

Diese Versandart wird dann angeboten, wenn mindestens ein Produkt im Warenkorb liegt, dem im Feld DeliveryFilterID den Wert "standard" zugewiesen wurde, oder wenn mindestens ein Produkt im Warenkorb liegt, das im Produktdatenfeld DeliveryFilterID den Wert "warensendung" aufweist (zu den Produktdatenfeldern siehe Schritt 3).
Die Versandart wird nicht angeboten, wenn Produkte mit einem anderen DeliveryFilterID-Wert im Warenkorb liegen, oder wenn sowohl Produkte mit dem Wert "standard" als auch Produkte mit dem Wert "warensendung" im Warenkorb liegen. (Um auch den letzteren Fall abzudecken, müssten Sie einen weiteren +DeliveryFilterID-List-Parameter mit dem Wert standard, warensendung hinzufügen.)

Sorgen Sie dafür, dass immer auch unabhängige Versandarten angeboten werden, wenn nicht alle Produkte mit einem entsprechenden DeliveryFilterID-Wert versehen sind!

Beispiel 5:

<+Deliverer>
   ...
   Name                   = Standardversand
   ...
   +DeliveryFilterID-List =
   ...
</+Deliverer>

Diese Versandart wird nur dann angeboten, wenn keines der Produkte im Warenkorb einen Wert im Produktdatenfeld DeliveryFilterID hat, das betreffende Produktdatenfeld also bei allen Produkten im Warenkorb leer ist.


Hinweis:

Wird der Parameter DeliveryFilterID-List (kein führendes Plus-Zeichen) verwendet, so werden eventuelle Parameter +DeliveryFilterID-List nicht verarbeitet.

Werden ein oder mehrere Parameter +DeliveryFilterID-List angegeben, steht die Versandart zur Verfügung, wenn sie mit einer der angegebenen Kombinationen an DeliveryFilterIDs des Warenkorbs übereinstimmt.

Referenz: Abschnitt +Deliverer

Schritt 5: Einstellungen testen

Rufen Sie den Shop im allgemeinen Testmodus auf, indem Sie an einen beliebigen Shop-Aufruf den Parameter ?test=on anhängen.

Überprüfen Sie, ob die gewünschten Einstellungen korrekt vorgenommen wurden.

Wegweiser: Testmodi des Shops ein-/ausschalten

Schritt 6: Tests abschließen

Um den Test abzuschließen und die Einstellungen für den Produktivbetrieb zu übernehmen, stellen Sie im Abschnitt <Delivery> der Shopkonfiguration shop.config den Parameter DeliveryFilterID-Mode auf den Wert productive:

<Delivery>
   ...
   DeliveryFilterID-Mode = productive
   ...
</Delivery>

Referenz: Abschnitt Delivery

Zum Inhaltsverzeichnis

3.2 Versand abhängig vom Lagerbestand der Produkte

Versandarten können abhängig vom Lagerbestand der Produkte angeboten werden, die im Warenkorb liegen.

Hierfür muss im jeweiligen <+Deliverer>-Abschnitt der Parameter AllowForInventoryStateAtLeast mit der kommaseparierten Liste der gewünschten Lagerbestände angegeben werden.

Die Versandart wird nur dann angeboten, wenn sich mindestens ein Produkt mit jedem angegebenen Lagerbestand im Warenkorb befindet.


Hinweis:

Ein Produkt ohne Lagerbestand wird wie ein Produkt mit Lagerbestand "grün" behandelt!

Beispiel 1:

<+Deliverer>
   ...
   AllowForInventoryStateAtLeast             = green
   ...
</+Deliverer>

Die Versandart wird nur dann angeboten, wenn sich mindestens ein Produkt mit dem Lieferstatus "grün" im Warenkorb befindet:

Produkte im Warenkorb mit Lagerbestand: 1x grün, 1x gelb, 1x rot -> Versandart verfügbar

Produkt im Warenkorb mit Lagerbestand: 1x gelb -> Versandart nicht verfügbar

Beispiel 2:

<+Deliverer>
   ...
   AllowForInventoryStateAtLeast             = green, yellow
   ...
</+Deliverer>

Die Versandart wird nur dann angeboten, wenn sich mindestens ein Produkt mit dem Lieferstatus "grün" und ein Produkt mit dem Lieferstatus "gelb" im Warenkorb befinden:

Produkte im Warenkorb mit Lagerbestand: 1x grün, 1x gelb, 1x rot -> Versandart verfügbar

Produkte im Warenkorb mit Lagerbestand: 1x grün, 1x gelb -> Versandart verfügbar

Produkt im Warenkorb mit Lagerbestand: 1x grün -> Versandart nicht verfügbar

Produkt im Warenkorb mit Lagerbestand: 1x gelb -> Versandart nicht verfügbar

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

3.3 Versandart abhängig vom Gewicht/Volumen der Produkte

Optional können Sie Versandarten in Abhängigkeit von Gewicht und Volumen der Waren anbieten.


Hinweise:

Voraussetzung für die Nutzung dieser Möglichkeit ist, dass Sie jedem Produkt ein Gewicht bzw. ein Volumen zugeordnet haben.

In der Shopkonfiguration shop.config werden die Werte ohne Maßeinheit angegeben. Beachten Sie daher die verwendeten Maßeinheiten in Ihren Produktdaten.

Die Maximalwerte und Minimalwerte für jede Versandart legen Sie in der Shopkonfiguration shop.config in den Abschnitten <+Deliverer> fest (Parameter MinWeight, MaxWeight, MinVolume, MaxVolume).

Beispiel

Standardversand bieten Sie nur bis zu einem maximalen Gewicht von 31,5 kg an, darüber hinaus nur noch Speditionsversand. Die Gewichte Ihrer Produkte haben Sie in den Produktdaten in der Einheit "Kilogramm" hinterlegt.

<+Deliverer>
   ...
   Name-Txt   = Standardversand
   MinWeight  =
   MaxWeight  = 31.50
   ...
</+Deliverer>
 
<+Deliverer>
   ...
   Name-Txt  = Speditionsversand
   MinWeight = 31.51
   MaxWeight =
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

3.4 Versandarten nur bestimmten Kunden anbieten

Sie können eine Versandart in Abhängigkeit vom Käufer anbieten. Dies ist eine typische B2B-Funktionalität.

Schritt 1: Berechtigungen dem Käufer zuweisen

Hierzu muss das Warenwirtschaftssystem dem Kunden bestimmte Berechtigungen zuweisen. Diese Informationen müssen dem Shop via Kundendatenimport übergeben werden. Das verwendete technische Feld (Spalte/Parameter) hat den Namen OWarranty und erwartet eine kommaseparierte Liste von alphanumerischen Berechtigungs-IDs (Berechtigungsgruppen).

Beispiele:

OWarranty = 1,2,abc

Der Kunde gehört zu den Berechtigungsgruppen "1", "2" und "abc".
 

OWarranty = 5

Der Kunde gehört zur Berechtigungsgruppe "5".

Schritt 2: Berechtigungen der Versandart zuweisen

Die alphanumerischen Berechtigungs-IDs werden nun dem Parameter Warranty in den Abschnitten <+Deliverer> der Shopkonfiguration shop.config zugewiesen.

Referenz: Abschnitt +Deliverer

Beispiel:

<+Deliverer>
   Allow    = yes
   Name-Txt = DHL 
   ...
   Warranty = 1,2
   ...
</+Deliverer>

Die Versandart "DHL" wird nur dann im Shop angeboten, wenn der Käufer zur Berechtigungsgruppe "1" oder "2" gehört.

Beispiel:

<+Deliverer>
   Allow    = yes
   Name-Txt = UPS 
   ...
   Warranty = abc
   ...
</+Deliverer>

Die Versandart "UPS" wird nur dann im Shop angeboten, wenn der Käufer zur Berechtigungsgruppe "abc" gehört.

Zum Inhaltsverzeichnis

3.5 Kostenpflichtige Zusatzleistungen anbieten

Sie können auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) kostenpflichtige Zusatzleistungen anbieten. Eine Zusatzleistung könnte z. B. eine Transportversicherung sein. Die Kosten einer Zusatzleistung können fix oder prozentual zum Warenwert angesetzt werden.

WEBSALE V8s unterstützt bis zu 5 verschiedene Zusatzleistungen. Eine Zusatzleistung kann maximal 50 Einträge besitzen.

Beispiel

Transportversicherung mit 3 Einträgen:

Schritt 1: Bereiche der Shopkonfiguration shop.config hinzufügen

Bearbeiten Sie in der Shopkonfiguration shop.config die Bereiche <OrderOptions1...5>.

Referenz: Abschnitte OrderOptions1…5

Schritt 2: Integration auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm)

Die Zusatzleistungen, die Sie in der Shopkonfiguration shop.config angelegt haben, werden durch das Tag WS-OrderOptions(X) im Template der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) angezeigt. Dabei gibt X (1…5) an, welche Zusatzleistung (<OrderOptions1>....<OrderOptions5>) angezeigt werden soll.

Referenz: WS-OrderOptions()

Schritt 3: Integration auf der Warenkorbseite (ws_basket.htm)

Um die Kosten eventueller Zusatzleistungen anzuzeigen und in die Gesamtsumme einrechnen zu lassen, fügen Sie eine entsprechende Schleife auf der Warenkorbseite (ws_basket.htm) ein und platzieren Sie das Tag BASKET-OrderOptionCost innerhalb dieser Schleife.

Referenz: Warenkorb-Gesamtsumme anzeigen

Referenz: BASKET-OrderOptionCost

Schritt 4: Styles (optional)

Die Einträge einer Zusatzleistung werden von WEBSALE V8s automatisch generiert und mit Style-Klassennamen versehen. Sie lassen sich daher gestalterisch bearbeiten und an das Shopdesign anpassen.

Referenz: Styles für kostenpflichtige Zusatzleistungen

Kostenpflichtige Zusatzleistungen in einer alternativen Währung anzeigen

Hier können durch lokale Tags die Kosten der Zusatzleistungen pro Eintrag in der Shop-Währung sowie in der gewählten alternativen Währung angezeigt werden. Diese Ersetzungen werden in der Shopkonfiguration shop.config im Abschnitt <OrderOption1...5> mit dem Parameter Display-Txt konfiguriert.

Beispiel:

<OrderOptionsX>
   ...
   <+Entry>
      Display-Txt = Für diese Zusatzleistung müssen wir einen Aufpreis 
                    von ~Cost~ ~WS-Currency~{AltCurrencyCost}(= ~AltCurrencyCost~ ~AltCurrencySymbol~){/AltCurrencyCost} verlangen
      ...
   </+Entry>
   ...
</OrderOptionsX>

Referenz: Abschnitte OrderOptions...

Wegweiser: Alternative Währung

Zum Inhaltsverzeichnis

 

3.6 Bestellabschluss ohne ausgewählte Versandart blockieren

Durch falsch konfigurierte Versandarten und -kosten kann der Fall eintreten, dass dem Kunden im Bestellprozess keine Versandarten angeboten werden. Um zu verhindern, dass die Bestellung abgeschlossen werden kann, ohne dass der Kunde eine Versandart angeben konnte, gibt es eine entsprechende Einstellungsmöglichkeit in der Shopkonfiguration shop.config. Dadurch bewirken Sie: Setzen einer Versandart ist Pflicht (Zwangssetzen der Versandart).

Fügen Sie in der Shopkonfiguration shop.config im Abschnitt <Basic> den Parameter DeliveryRequiredForOrder-Allow ein und weisen Sie ihm den Wert yes zu, um den Bestellabschluss zu verwehren, wenn keine Versandart ausgewählt wurde.

<Basic>
   ...
   DeliveryRequiredForOrder-Allow = yes
   ...
</Basic>

Referenz: Abschnitt Basic

Zum Inhaltsverzeichnis

 

3.7 Versandkostenfreie Nachbestellung anbieten (für Folgebestellungen)

Bieten Sie Ihren Käufern die Möglichkeit, in einem festgelegten Zeitraum nach der letzten Bestellung Folgebestellungen mit besonderen Versandkonditionen (z. B. kostenloser Versand) abzuschließen. Diese Folgebestellungen können etwa zum Erwerb von "vergessenen" Produkten ("Haben Sie noch etwas vergessen? – Schnell noch versandkostenfrei nachbestellen!") oder für beschleunigte Umtausch-Abwicklungen genutzt werden. (Der Käufer muss nicht auf die Bestätigung/Erstattung seiner Retouren warten, sondern kann sofort neu bestellen.)

Funktionsweise

Der Shopbetreiber legt den Zeitraum fest, in dem erneute Bestellungen des Käufers als Folgebestellungen gelten. Außerdem kann definiert werden, ob nur Bestellungen aus dem jeweiligen Subshop oder auch aus anderen Subshops berücksichtigt werden sollen.

Sind diese Voraussetzungen erfüllt, können Sie den (angemeldeten) Käufer an einer beliebigen Stelle im Shop mit einer Einblendung darüber informieren, dass Sie für alle Folgebestellungen in einem festgelegten Zeitraum gesonderte Versandkonditionen anbieten.

Im Bestellprozess werden dem Käufer auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) dann die Versandarten angezeigt, die für Folgebestellungen vorgesehen sind.

Integration

Schritt 1: Voraussetzungen für Folgebestellungen konfigurieren

Legen Sie in der Shopkonfiguration shop.config den Zeitraum nach einer Bestellung fest, in dem Folgebestellungen als solche gewertet werden. Ergänzen Sie hierfür im Abschnitt <OrderConditions> den Parameter SubSequentOrder-TimeLimitInHours und tragen Sie den gewünschten Zeitraum in Stunden ein.

Außerdem können Sie festlegen, dass auch Bestellungen in anderen Subshops für Folgebestellungen berücksichtigt werden. Ergänzen Sie hierfür im Abschnitt <OrderConditions> den Parameter SubSequentOrder-ConsiderOrdersFromOtherSubShops-List und konfigurieren Sie diesen entsprechend:

<OrderConditions>
   ...
   SubSequentOrder-TimeLimitInHours                     = 24
   SubSequentOrder-ConsiderOrdersFromOtherSubShops-List = 
   ...
</OrderConditions>

Referenz: Abschnitt OrderConditions

Schritt 2: Versandarten festlegen

Um eine Versandart für Folgebestellungen anzubieten, ergänzen Sie in der Shopkonfiguration shop.config im Abschnitt <+Deliverer> der jeweiligen Versandart den Parameter AllowForSubsequentOrder-Qualification und konfigurieren Sie diesen entsprechend:

<+Deliverer>
   ...
   AllowForSubsequentOrder-Qualification = only-for-SubSequentorder
   ...
</+Deliverer>

Denken Sie daran, bei allen anderen Versandarten, die Ihr Shop anbietet, den Parameter AllowForSubsequentOrder-Qualification mit dem Wert not-for-SubSequentOrder einzutragen:

<+Deliverer>
   ...
   AllowForSubsequentOrder-Qualification = not-for-SubSequentorder
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Schritt 3: Anzeige im Shop ergänzen

Fügen Sie folgenden Code z. B. auf der Shop-Startseite (ws_start.htm) ein, um einem angemeldeten Käufer die Informationen über mögliche Folgebestellungen und deren Versandkonditionen als Countdown anzuzeigen:

...
 ~DC-Int1_set($WS-SubSequentOrder_TimeLeftInSeconds$)~
    ~DC-Int1_mod(60)~
    ~DC-Int2_set($WS-SubSequentOrder_TimeLeftInSeconds$)~
    ~DC-Int2_div(60)~
    ~DC-Int3_set($DC-Int2$)~
    ~DC-Int2_mod(60)~
    ~DC-Int3_div(60)~
 
    Bestellen Sie innerhalb der n&auml;chsten ~DC-Int3~ Stunden ~DC-Int2~ Minuten und ~DC-Int1~ Sekunden zu besonderen Versandkonditionen!<br><br>
 
...

Dieser Code würde im Shop z. B. folgende Anzeige ergeben:

Eine Alternative könnte die Anzeige eines festen Zeitpunkts ab der vorangegangenen Bestellung sein, bis zu dem Folgebestellungen als solche gewertet würden:

...
Ihre Bestellung gilt bis ~DC-DateTime_setunixtimestamp($WS-SubSequentOrder_TimestampExpire$)~
   ~DC-DateTime_day(true)~.~DC-DateTime_month(true)~.~DC-DateTime_year(true)~ um ~DC-DateTime_hours(true)~:~DC-DateTime_minutes(true)~ Uhr
      als Folgebestellung und wird zu besonderen Konditionen versandt.
...

Anzeige im Shop:

Referenz: WS-SubSequentOrder_Qualified

Referenz: WS-SubSequentOrder_TimeLeftInSeconds

Referenz: WS-SubSequentOrder_TimeLimitInHours

Referenz: WS-SubSequentOrder_TimeLimitInSecs

Referenz: WS-SubSequentOrder_TimestampExpire

Referenz: WS-SubSequentOrder_TimestampLastOrder

Referenz: DC-DateTime_setunixtimestamp

Zum Inhaltsverzeichnis

 


Hinweis für folgende 3 Abschnitte

3.8 Versandart abhängig von Adressdaten: DelivererAddressDependencies-Definitions
3.9 Nicht verfügbare Versandarten ausgegraut darstellen: DelivererShowDisabled-Definitions
3.10 Zusatzinformationen zu Versandarten abfragen: DelivererAdditionalInput-Definitions

Wenn Sie z. B. eine der folgenden Situationen im Shop abbilden wollen:

Für die Versandart "Selbstabholung" soll keine abweichende Lieferadresse angegeben werden können,

Für eine beliebige Versandart darf als Lieferadresse keine Packstation angegeben werden,

Wurde als abweichende Lieferadresse eine Packstation angegeben, darf diese nur mit einem bestimmten Versender gewählt werden,

Für die Versandart Spedition soll eine Telefonnummer angegeben werden müssen, wenn in der Rechnungs- (oder Liefer-)Adresse keine Telefonnummer hinterlegt ist,

ist die Vorgehensweise grundsätzlich immer dieselbe: Der Shop soll abhängig von einer zu definierenden Bedingung eine bestimmte Aktion ausführen.

Die in den folgenden 3 Abschnitten (3.8 bis 3.10) beschriebenen Konfigurationen funktionieren daher nach demselben Prinzip:

Bedingungen und Abhängigkeiten werden jeweils in einem eigenem Abschnitt der Shopkonfiguration shop.config definiert (im Folgenden jeweils "Schritt 1").

Diese Definition wird mit einer ID gekennzeichnet.

Über diese ID kann von jedem <+Deliverer>-Abschnitt aus auf das konfigurierte Set von Einstellungen zugegriffen werden (im Folgenden immer "Schritt 2").

Vorteil: Sie müssen nicht bei jeder Versandart (in jedem <+deliverer>-Abschnitt) Abhängigkeiten, Bedingungen und Darstellungsoptionen wieder aufs Neue eintragen.

 

3.8 Versandart abhängig von Adressdaten: DelivererAddressDependencies-Definitions

Um einem Shopkunden abhängig von seinen Adressdaten oder von zuvor im Kaufprozess gewählten Optionen nur bestimmte Versandarten anzuzeigen und alle übrigen auszublenden, definieren Sie eine oder mehrere Bedingungen und weisen diese per ID denjenigen <+Deliverer>-Abschnitten zu, die ausgeblendet (nicht angezeigt) werden sollen.

Beispiel:

Ein Kunde soll, wenn er eine Packstation als Lieferadresse angegeben hat, ausschließlich einen Versender auswählen können, der auch an Packstationen liefert (Deutsche Post – DHL). Er soll darüber hinaus auch nicht versehentlich "Selbstabholung" auswählen können:

Auswahl der Lieferadresse

Auswahl der Versandart

Schritt 1: Verfügbarkeit der Versandart definieren und AddressDependency-ID festlegen

Zunächst müssen in einem eigenen Abschnitt <DelivererAddressDependencies-Definitions> der Shopkonfiguration shop.config die Abhängigkeiten zwischen Versandart und Adresseingaben des Shop-Kunden definiert und eine (möglichst "sprechende") ID (AddressDependency-ID) vergeben werden.

Im Abschnitt <+Dependency> wird festgelegt, dass die Eingaben der Lieferadresse untersucht werden (Input = delivaddress). Die Bedingung in diesem Beispiel prüft das frei verwendbare Lieferadressen-Feld "suffix5", das zwischen Privatadresse, Firmenanschrift oder eben Packstation unterscheidet.
Wegweiser: Freie Auswahllisten/Suffix-Auswahllisten für Lieferadresse

Die Bedingung, dass die Bestellung nicht an eine Packstation geliefert wird, ist erfüllt, wenn in diesem Feld der Lieferadresse nicht der Wert "DHL Packstation" steht (Type = notvalue).

...
<DelivererAddressDependencies-Definitions>
   <+AddressDependency>
      AddressDependency-ID = not_for_packstation
      <+DependencyGroup>
         <+Dependency>   
            Input          = delivaddress
            <+Condition>
               Field       = suffix5
               Type        = notvalue
               Value       = DHL Packstation
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+AddressDependency>
</DelivererAddressDependencies-Definitions>
...

Referenz: Abschnitt DelivererAddressDependencies-Definitions

Schritt 2: Abhängigkeiten per UseAddressDependency-ID den Versandarten zuweisen, die ausgeblendet werden sollen

Weisen Sie jetzt die definierten Abhängigkeiten einfach per ID allen <+Deliverer>-Abschnitten außer DHL zu:

...
<+Deliverer>
   Name-Txt                   = UPS
   +UseAddressDependency-ID   = not_for_packstation
   ...
</+Deliverer>
<+Deliverer>
   Name-Txt                   = Hermes
   +UseAddressDependency-ID   = not_for_packstation
   ...
</+Deliverer>
<+Deliverer>
   Name-Txt                   = DPD
   +UseAddressDependency-ID   = not_for_packstation
   ...
</+Deliverer>
<+Deliverer>
   Name-Txt                   = DHL
   ...
</+Deliverer>
<+Deliverer>
   Name-Txt                   = Selbstabholung
   +UseAddressDependency-ID   = not_for_packstation
   ...
</+Deliverer>
...

Hat der Shopkunde "DHL Packstation" als Lieferadresse gewählt, stehen alle Versandarten außer "DHL" nicht mehr zur Verfügung und werden nicht angezeigt.

Es empfiehlt sich jedoch, die nicht zur Verfügung stehenden Versandarten nicht einfach auszublenden, sondern ausgegraut (nicht auswählbar) darzustellen und einen entsprechenden Hinweis anzuzeigen. Siehe folgendes Kapitel "DelivererShowDisabled-Definitions".

Referenz: Abschnitt +Deliverer

 


Regeln für das Zusammenwirken der Abhängigkeiten in Bezug auf einen <+Deliverer>-Abschnitt

Damit ein <+Deliverer>-Abschnitt verfügbar ist,
 müssen alle zugewiesenen AddressDependency-IDs erfüllt sein.

Eine AddressDependency ist erfüllt, wenn …
         … mindestens eine DependencyGroup erfüllt ist.

Eine DependencyGroup ist erfüllt, wenn …
                 … alle Dependency-Abschnitte erfüllt sind.

Ein <+Dependency>-Abschnitt ist erfüllt, wenn …
                         … alle Conditions erfüllt sind.

Zum Inhaltsverzeichnis

 

3.9 Nicht verfügbare Versandarten ausgegraut darstellen: DelivererShowDisabled-Definitions

Mit WEBSALE V8s können Sie einzelne Versandarten ausgegraut darstellen, sodass Käufern signalisiert wird, dass diese Versandarten zwar im Shop grundsätzlich vorhanden sind, jedoch im konkreten Fall nicht auswählbar sind. Die Gründe, warum Versandarten nicht verfügbar sind, werden oben näher erklärt (z. B. abhängig von Lagerbestand, Lieferland, Kunden- und Adressdaten, Mindestbestellwert, Zahlungsart, usw.).

Für jede Versandart kann eine solche Konfiguration einfach zugewiesen werden, indem Sie der betreffenden Versandart die frei bestimmbare ShowDisabled-GroupID vergeben. Mittels dieser ID wendet die Shop-Software die getroffenen Einstellungen auf die jeweilige Versandart an.

Schritt 1: ShowDisabled-GroupID festlegen und Hinweistexte hinterlegen

Um nicht verfügbare Versandarten ausgegraut anzuzeigen, legen Sie den Abschnitt <DelivererShowDisabled-Definitions> in der Shopkonfiguration shop.config an:

...
<DelivererShowDisabled-Definitions>
   <+ShowDisabled-Rule>
      ShowDisabled-GroupID                      = VersandartNichtVerfuegbar
      ShowDisabled-Allow                        = always
      ShowDisabled-MultipleEntriesDisabled-Mode = show-first
      <ShowDisabled-Txt>
               1 = Die Versandart ist für das gewählte Lieferland nicht verfügbar
               9 = nicht für Büchersendungen
              15 = nur für Eigenhändig Plus-Bestellungen
              28 = Bitte wählen Sie keine abweichende Lieferadresse, wenn Sie die Ware bei uns vor Ort abholen möchten
         default = Diese Versandart ist leider nicht verfügbar
      </ShowDisabled-Txt>
   </+ShowDisabled-Rule>
</DelivererShowDisabled-Definitions>
...

Im Parameter ShowDisabled-GroupID vergeben Sie eine eindeutige ID, die Sie später den gewünschten Versandarten zuordnen.

Mit dem Parameter ShowDisabled-Allow legen Sie fest, ob nicht verfügbare Versandarten entweder nie angezeigt werden, immer oder aus bestimmten Gründen (kommaseparierte Liste aus ShowDisabled-Txt) ausgegraut wird.

Bei mehreren inaktiven Versandarten definieren Sie mit ShowDisabled-MultipleEntriesDisabled-Mode, ob alle ausgegraut angezeigt werden sollen oder nur eine einzige, die erste inaktive Versandart. Die anderen inaktiven Versandarten werden in diesem Fall gar nicht angezeigt.

Die Codes im Abschnitt <ShowDisabled-Txt> werden fallabhängig von der Shopsoftware ausgegeben. Daher können Sie jedem Code eine passende Meldung zuweisen. Für alle Fälle, für die keine entsprechende Meldung hinterlegt wurde, wird der "default"-Text ausgegeben. Eine Liste von Ablehnungsgründen finden Sie in der Referenz:

Referenz: Abschnitt DelivererShowDisabled-Definitions

Schritt 2: Die Regeln zur ausgegrauten Darstellung per UseShowDisabled-GroupID den Versandarten zuweisen

Ebenfalls in der Shopkonfiguration shop.config, jedoch jetzt in den <+Deliverer>-Abschnitten, weisen Sie denjenigen Versandarten (also jedem einzelnen <+Deliverer>-Abschnitt), für die Sie das wünschen, per UseShowDisabled-GroupID die Definition zu, die Sie in Schritt 1 vorgenommen haben (ShowDisabled-GroupID):

...
<+Deliverer>
   Name-Txt                  = Abholung in unserer Filiale
   ...
   UseShowDisabled-GroupID   = VersandartNichtVerfuegbar
   ...
</+Deliverer>
...

Referenz: Abschnitt +Deliverer


Hinweis:

Konfigurations-Beispiele für das Zusammenwirken von <DelivererShowDisabled-Definitions> und <+Deliverer> finden sie unter Anwendungsbeispiele Versandarten.

Zum Inhaltsverzeichnis

 

3.10 Zusatzinformationen zu Versandarten abfragen: Abschnitt "DelivererAdditionalInput-Definitions"

Wenn ein Kunde ein sperriges oder sehr schweres Produkt (zum Beispiel einen Hydraulik-Holzspalter) bestellt, das nur per Spedition geliefert werden kann, sollte der Spedition eine Telefonnummer des Kunden übermittelt werden, um den genauen Lieferzeitpunkt zu vereinbaren. Bei der Bestellung müssen Sie als Shopbetreiber in solchen Fällen dafür sorgen, dass der Kunde seine Telefonnummer im Zuge der Bestellung angibt.

Ein Eingabefeld, das im Bestellprozess mit der ausgewählten Versandart auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) eingeblendet wird, ermöglicht die Erfassung der Telefonnummer. Dieses Feld soll aber nur dann angezeigt werden, wenn der Kunde seine Telefonnummer nicht bereits zusammen mit seinen übrigen Adressdaten angegeben hatte. Die Anzeige des Eingabefelds muss also so konfiguriert werden, dass sie vom Fehlen dieser Information abhängig ist.


Hinweis:

Die abgefragten Zusatzinformationen werden in die Bestelldaten übernommen. Wenn Sie ein Warenwirtschaftssystem nutzen, klären Sie bitte, ob diese Informationen aus den Bestelldaten berücksichtigt und verarbeitet werden können.

Schritt 1: Abhängigkeiten definieren und ID festlegen

Damit Sie dieselben Konfigurationen nicht in jedem einzelnen <+Deliverer>-Abschnitt vornehmen müssen, wird die Konfiguration in einem eigenen Abschnitt in der Shopkonfiguration shop.config hinterlegt. Je <+Deliverer>-Abschnitt kann dann mittels einer ID auf die zu verwendende Zusatzinformation verwiesen werden. Sie können außerdem einstellen, ob die Eingabe der Zusatzinformation eine Pflichteingabe darstellt.

Das folgende Konfigurationsbeispiel zeigt die Abfrage einer Telefonnummer für die Versandart "Spedition", die unter der Voraussetzung eingeblendet wird, dass der Kunde in seiner Rechnungsadresse keine Telefonnummer angegeben hat:

<DelivererAdditionalInput-Definitions>
   <+AdditionalInput>
      ID                             = phone_required
      FieldDescr                     = Telefonnummer für Rückfragen
      MaxLength                      = 120
      Required                       = no
      AdditionalInfoText             = *Bitte geben Sie hier für die Rückfragen der Spedition Ihre Telefonnummer ein.
      RequiredErrorMessage-Txt       = Bitte füllen Sie das Feld "Telefonnummer" aus.
      Type                           = input
 
      <+VisibilityDependency>
         <+Dependency>
            Input         = billaddress
            <+Condition>
               Field         = Phone
               Type          = empty
            </+Condition>
         </+Dependency>
      </+VisibilityDependency>
 
      <+RequiredDependency>
         <+Dependency>
            Input         = billaddress      
            <+Condition>
               Field         = Phone
               Type          = empty
            </+Condition>
         </+Dependency>
      </+RequiredDependency>
 
   </+AdditionalInput>
</DelivererAdditionalInput-Definitions>

Referenz: Abschnitt DelivererAdditionalInputDefinitions

Diese Konfiguration prüft, ob der Kunde seine Telefonnummer (Feld "Phone") bereits in seiner Rechnungsadresse eingegeben hat. Wenn das nicht der Fall ist, wird bei Auswahl der Versandart "Spedition" ein zusätzliches Eingabefeld eingeblendet, in das der Kunde eine Kontakt-Telefonnummer eingeben muss, um den Bestellvorgang abschließen zu können.

Anmerkungen zum Konfigurationsbeispiel

<+Condition>-Abschnitte sind immer UND-verknüpft

<+Dependency> Abschnitte sind immer UND-verknüpft

Die optionalen <+Visibility> und <+Required>-Abschnitte sind immer ODER-verknüpft

VisibilityDependency- und RequiredDependency-Angaben sind optional. Diese Abhängigkeiten haben Vorrang vor dem Parameter Required. Soll eine Eingabe immer Pflicht sein, stellen Sie einfach den Parameter Required auf yes. Ist die Pflichteingabe abhängig von Rechnungs/Lieferadresse und/oder anderen Zusatzeingabefeldern, kann dies über RequiredDependencys gesteuert werden. In diesem Fall muss der Parameter Required auf no stehen.

Gleiches gilt für die Verwendung von VisibilityDependency.

Schritt 2: Abhängigkeiten per ID der Versandart zuweisen und Meldung hinterlegen

<+Deliverer>
   ...
   Name-Txt               = Versand per Spedition
   ...
   +UseAdditionalInput-ID = phone_required
   ...
</+Deliverer> 

Referenz: Abschnitt +Deliverer

<NotifyMessages-Txt>
  ... 
  DelivererAdditionalInput = Bitte ergänzen Sie die fehlenden Angaben zur gewählten Versandart.
  ...
</NotifyMessages-Txt>

Referenz: Abschnitt NotifyMessages-Txt

Zum Inhaltsverzeichnis

 

3.11 Versandart abhängig von URL-Referern

Mit dieser Funktion haben Sie die Möglichkeit, die Verfügbarkeit von Versandarten durch bestimmte Referer beim Shop-Aufruf zu steuern.

Beispiel: Wenn der Shop mit dem URL-Parameter www.ihr-shop.com/?ref=versandkostenfrei aufgerufen wird, sollen die kostenpflichtigen Versandarten nicht verfügbar sein und nur eine kostenfreie Versandart angeboten werden. Dazu kennzeichnen Sie die entsprechenden <+Deliverer>-Abschnitte in der Shopkonfiguration shop.config mit den Parametern AllowForReferer-List, DenyForReferer-List und AllowForReferer-Qualification.

<+Deliverer>
   Allow                          = yes
   ID                             = 1
   Name-Txt                       = Standard Paketversand
   BasicCost-List                 = (0:4.95)
   ...
   DenyForReferer-List            = versandkostenfrei   # kommaseparierte Liste: Versandart nicht verfügbar bei Übergabe des Referers "versandkostenfrei"
   ...
</+Deliverer>
<+Deliverer>
   Allow                          = yes
   ID                             = 2
   Name-Txt                       = Express Paketversand
   BasicCost-List                 = (0:12.95)
   ...
   DenyForReferer-List            = versandkostenfrei   # kommaseparierte Liste: Versandart nicht verfügbar bei Übergabe des Referers "versandkostenfrei"
   ...
</+Deliverer>
<+Deliverer>
   Allow                          = yes
   ID                             = 3
   Name-Txt                       = Paketversand (versandkostenfrei)
   BasicCost-List                 = (0:0)
   ...
   AllowForReferer-List           = versandkostenfrei   # kommaseparierte Liste: Versandart ist nur verfügbar bei Übergabe des Referers "versandkostenfrei"
   AllowForReferer-Qualification  = only-for-referer
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

 

3.12 Versandart abhängig von Produktdatenfeldern

Sie haben die Möglichkeit, die Verfügbarkeit von Versandarten abhängig zu machen von

der Produktnummer,

dem Produktindex oder

freien Produktfeldern

der Produkte, die sich im Warenkorb befinden.

Damit können Sie realisieren, dass bestimmte Versandarten z. B. für Produkte mit einem bestimmten Präfix der Produktnummer nicht angeboten werden. Ebenso können Sie festlegen, dass für Produkte mit einer FSK18-Markierung nur Versandarten mit Altersprüfung angezeigt werden.

Schritt 1: Freischaltung/Aktivierung

Für diese Funktion ist keine Freischaltung/Aktivierung seitens WEBSALE erforderlich.

Schritt 2: Freies Produktfeld definieren (optional)

Wenn Sie die Verfügbarkeit von Versandarten von freien Produktfeldern abhängig machen wollen, muss die Funktion "Freie Produktfelder im Warenkorb anzeigen" in Ihrem Shop integriert sein.

Alle Informationen hierzu finden Sie unter Wegweiser: Freie Produktfelder im Warenkorb anzeigen

In den folgenden Schritten gehen wir davon aus, dass im Abschnitt AdditionalProductFieldsInBasket ein Parameter +Field mit dem Wert FSK18 eingetragen wurde und dass den entsprechenden Produkten in diesem Feld der Wert y zugewiesen wurde.

<AdditionalProductFieldsInBasket>
   +Field    =  FSK18
   ...
</AdditionalProductFieldsInBasket>

Referenz: Abschnitt AdditionalProductFieldsInBasket

Schritt 3: Verfügbarkeit der Versandart definieren und ProductDependency-ID festlegen

Im Abschnitt DelivererProductDependencies-Definitions der Shopkonfiguration shop.config definieren Sie die Abhängigkeiten zwischen Versandart und Produkt (per Produktindex, Produktnummer oder freie Produktfelder) und vergeben eine ID. In diesem Fall tragen wir im Parameter Field den Namen des freien Produktfeldes mit dem Präfix AF- ein.

...
<DelivererProductDependencies-Definitions>
   <+ProductDependency>
      ProductDependency-ID = fsk18dependency
      ShowDisabled-Txt     =
      <+DependencyGroup>
         <+Dependency>       
            <+Condition>
               Field          = AF-FSK18   
               Type           = value      
               Value          = y          
               BasketBehavior = match-once
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+ProductDependency>
</DelivererProductDependencies-Definitions>
...

Für alle anderen Versandarten, die nicht zur Verfügung stehen sollen, legen Sie einen Abschnitt DelivererProductDependencies-Definitions mit folgenden Definitionen an:

<DelivererProductDependencies-Definitions>
   ...
   <+ProductDependency>
      ProductDependency-ID = notfsk18dependency
      ShowDisabled-Txt     =
      <+DependencyGroup>
         <+Dependency>       
            <+Condition>
               Field       = AF-FSK18   
               Type        = notvalue
               Value       = y          
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+ProductDependency>
</DelivererProductDependencies-Definitions>

Referenz: Abschnitt DelivererProductDependencies-Definitions

Schritt 4: Abhängigkeiten per UseProductDependency-ID den Versandarten zuweisen

Weisen Sie jetzt die definierten Abhängigkeiten einfach per ID den gewünschten <+Deliverer>-Abschnitten zu.

Der anzubietenden Versandart mit Ident-Check weisen Sie die ID fsk18dependency zu:

...
<+Deliverer>
   Name-Txt                   = Paketversand mit Ident-Check
   ...
   +UseProductDependency-ID   = fsk18dependency
   ...
</+Deliverer>
...

Allen anderen Versandarten, die nicht zur Verfügung stellen sollen, weisen Sie die ID notfsk18dependency zu.

Beispiel:

...
<+Deliverer>
   Name-Txt                   = DHL Paketversand
   ...
   +UseProductDependency-ID   = notfsk18dependency
   ...
</+Deliverer>
...

Referenz: Abschnitt +Deliverer

Wegweiser: Auswahllisten der Adressdaten

Wenn der Käufer ein Produkt mit dem freien Produktdatenfeld FSK18 in den Warenkorb legt, kann er im Bestellprozess nur die Versandart "Paketversand mit Ident-Check" auswählen. Alle anderen Versandarten, denen der Parameter +UseProductDependency-ID = notfsk18dependency zugewiesen wurde, sind nicht verfügbar und werden nicht bzw. ausgegraut dargestellt.

Zum Inhaltsverzeichnis

 

4 Spezielle Versandarten

4.1 Büchersendung/Buchversand

Im Shop können Produkte, die als Büchersendung versendet werden können, entsprechend gekennzeichnet werden. Dazu zählen gedruckte Bücher, Broschüren, Notenblätter und Landkarten.

Hierfür muss festgelegt werden, welche der im Shop angebotenen Versandarten bei Bestellungen mit Büchersendungen zur Verfügung stehen. Dabei ist eine Versandart immer entweder ausschließlich für Büchersendungen oder für "normale" Sendungen zu bestimmen.

Je nach Warenkorb-Inhalt werden dem Kunden im Bestellprozess prinzipiell nur diejenigen Versandarten angezeigt, die für die Produkte definiert wurden.

Integration einer Versandart als "Büchersendung"

Schritt 1: Definieren von Produkten als "buchversandfähig"

Sie können für jedes Produkt definieren, ob es als Büchersendung versendet werden kann. Hierzu muss in den Produktdaten das technische Produktdatenfeld BookDelivery mit den Werten "y" oder "n" übergeben werden:

y = für Büchersendung berechtigt

n = nicht für Büchersendung berechtigt

Schritt 2: Anzeigen eines Hinweises beim Produkt

Ist ein Produkt für die Lieferung per "Büchersendung" berechtigt, kann ein entsprechender Hinweis angezeigt werden:

{PR-BookDelivery}
    Dieses Produkt kann als Büchersendung versendet werden.
{/PR-BookDelivery}

Referenz: PR-BookDelivery

Schritt 3: Versandart für Lieferung per "Büchersendung" aktivieren

Jede Versandart, die im Shop angeboten wird, ist entweder ausschließlich für Büchersendungen oder für "normale" Sendungen verfügbar, unabhängig vom Versanddienstleister. Je nach Inhalt des Warenkorbs werden dem Kunden im Bestellprozess prinzipiell nur diejenigen Versandarten angezeigt, die für die betreffenden Produkte definiert wurden.

Fügen Sie bei den Versandarten, die für Lieferung per "Büchersendung" zur Verfügung stehen sollen, folgenden Parameter hinzu:

<+Deliverer>
   ...
   BookDelivery-Allow = yes
   ...
</+Deliverer>

Alle Versandarten, die den Parameter BookDelivery-Allow nicht besitzen oder dieser den Standard-Wert no hat, sind nur bei "Nicht-Büchersendungen"/"normalen" Bestellungen im Bestellprozess verfügbar.

Referenz: Abschnitt +Deliverer

Referenz: Abschnitt +Deliverer, Versandarten-Parameterkombination

Schritt 4: Bestimmen des Kriteriums, ob eine Bestellung als "Büchersendung" ausgewiesen wird

Bestimmen Sie im Abschnitt <Delivery> in der Shopkonfiguration shop.config das Kriterium dafür, dass eine Bestellung als "Büchersendung" gilt. Die Lieferung per "Büchersendung" soll in einer von 2 Situationen zur Verfügung stehen:

der Warenkorb enthält ausschließlich Produkte, die als "für Büchersendung berechtigt" eingestellt sind (BookDeliveryType = all), oder

der Warenkorb enthält mindestens ein Produkt, das als "für Büchersendung berechtigt" eingestellt ist (BookDeliveryType = one).

Optional können Sie hier auch ein Maximalgewicht und einen Maximalbestellwert angeben. Überschreitet die (Buch-)Bestellung diese Grenzen, gilt die Bestellung nicht mehr als "Büchersendung". Die hierfür benötigten Parameter BookDeliveryMaxWeight und BookDeliveryMaxOrder werden nur dann berücksichtigt, wenn sie angegeben und größer als 0 sind.

Beispiel: Die Bestellung gilt als "Büchersendung", wenn alle Produkte im Warenkorb buchversandfähig/Büchersendungen sind. Dabei sollen keine Beschränkungen von Gewicht und Bestellwert gelten.

<Delivery>
   ...
   BookDeliveryType       = all
   BookDeliveryMaxWeight  =
   BookDeliveryMaxOrder   =
   ...
</Delivery>

Referenz: Abschnitt Delivery

Referenz: Abschnitt Delivery, Versandarten-Parameterkombination

Zum Inhaltsverzeichnis

4.2 DHL Kurier

"DHL Kurier" beliefert – gegen Aufpreis – einige Großstädte und Ballungszentren in Deutschland zwischen 18 und 22 Uhr. Dabei kann der Kunde zwischen zwei Liefer-Zeitfenstern (10 bis 18 Uhr und 18 bis 21 Uhr) wählen.

WEBSALE prüft die im Bestellprozess eingegebene Postleitzahl der Lieferadresse daraufhin, ob sie sich im Liefergebiet von "DHL Kurier" befindet. Nur in diesem Fall wird "DHL Kurier" angeboten.

Die Liefergebiete werden hierzu einmal täglich automatisch von DHL geladen und im Shop aktualisiert.

Schritt 1: Vertragsabschluss mit DHL

Um "DHL Kurier" in Ihrem Shop zu integrieren, ist zunächst ein entsprechender Vertrag mit DHL abzuschließen.

Schritt 2: Freischaltung/Aktivierung durch WEBSALE

"DHL Kurier" muss durch WEBSALE freigeschaltet werden. Ihr WEBSALE Ansprechpartner ist gerne für Sie da.

Schritt 3: Anlegen der Versandart DHL Kurier mit Zeitfenster

Legen Sie in der Shopkonfiguration shop.config zwei separate Abschnitte <+Deliverer> für diese Versandart mit dem jeweiligen Liefer-Zeitfenster an.

Beispiel (Ausschnitt):

<+Deliverer>
   ...                       
   Name-Txt              = DHL Kurier. Lieferung 18:00h bis 20:00h
   AvailabilityCheck-ID  = dhlkurier
   DeliveryCountry-Rule  = AllowCountries                      
   DeliveryCountry-List  = DEU
   ...
</+Deliverer>
 
<+Deliverer>
   ...       
   Name-Txt              = DHL Kurier. Lieferung 20:00h bis 22:00h
   AvailabilityCheck-ID  = dhlkurier
   DeliveryCountry-Rule  = AllowCountries                      
   DeliveryCountry-List  = DEU
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Zum Inhaltsverzeichnis

4.3 Versand mit Altersbeschränkung/Eigenhändig Plus

Für den Versand mit Altersbeschränkung bietet DHL den Service "Eigenhändig Plus" an, der sich für alle Produkte ohne Jugendfreigabe eignet. Die Sendung wird in diesem Fall dem Empfänger nur dann übergeben, wenn sich dieser als volljährige Person legitimieren kann.

Hierzu muss der Empfänger seinen Personalausweis oder Reisepass vorlegen. Seine Ausweisdaten werden mit den Daten abgeglichen, die bei der Bestellung im Shop angegeben wurden. Überprüft werden:

Vorname und Name

Volljährigkeit

Ausweisnummer

Ausstellende Behörde

Übersicht

1 Ablauf für einen Versand mit "Eigenhändig Plus" im Shop

2 Integration

1 Ablauf für einen Versand mit "Eigenhändig Plus" im Shop (siehe Screenshot)

Wenn mindestens ein Produkt mit der Altersbeschränkung "ab 18 Jahren" (konfigurierbar) im Warenkorb liegt und sich die Lieferadresse in Deutschland (konfigurierbar) befindet, dann wird nur noch die Versandart "Eigenhändig Plus" angeboten.

Auf der Bestellübersichts-Seite werden in diesem Fall die erforderlichen Eingabefelder für "Eigenhändig Plus" angeboten. Alle Felder müssen vom Käufer ausgefüllt werden und dienen bei der Auslieferung zur Prüfung der Legitimation:

Checkbox zur Einwilligung des Versands über "Eigenhändig Plus"

Eingabefeld für Geburtsdatum zur Überprüfung des Alters

Eingabefeld für Ausweis-Typ (Personalausweis oder Reisepass)

Eingabefeld für Ausweisnummer

Eingabefeld für Ausstellende Behörde

Alle Felder sind Pflichtfelder und die Bestellung kann erst abgesendet werden, wenn alle Felder ausgefüllt wurden.

In den technischen Bestelldaten übergibt der Shop neben den Adressdaten die folgenden Daten:

Ausweisnummer

Ausweistyp 1 oder 2 (1=Personalausweis, 2=Reisepass)

Ausstellende Behörde

2 Integration

So integrieren Sie das Feature "Eigenhändig Plus" in Ihren Shop:

Schritt 1: Festlegen der Altersbeschränkung in den Produktdaten

Sie können bei jedem Produkt definieren, ob für den Versand eine Altersbeschränkung vorliegt. Hierzu muss das technische Produktdatenfeld "AgeRestricted" mit einem Zahlenwert übergeben werden. Dieser Zahlenwert entspricht dem Alter, ab dem ein Kunde das Produkt bestellen darf.

Schritt 2: Integration des Abschnitts <EigenhaendigPlus>

Fügen Sie folgenden Abschnitt an einer beliebigen Stelle zu Ihrer Shopkonfiguration shop.config hinzu:

<EigenhaendigPlus>
   AgeRestricted-Value       = 18
   DeliveryCountry-List      = DEU
   IDCardType1-Txt           = Personalausweis
   IDCardType2-Txt           = Reisepass
   HeadNotify-Txt            = Bitte vervollständigen Sie folgende Daten
   Notify1-Txt               = Bitte füllen Sie das Feld "Ausweisnummer" aus oder überprüfen Sie Ihre Eingaben.
   Notify2-Txt               = Bitte geben Sie den Ausweistyp an.
   Notify3-Txt               = Bitte geben Sie die ausstellende Behörde an.
   Notify4-Txt               = Bestätigen Sie bitte, dass Sie mind. 18 Jahre alt sind 
                               und der Name des Empfängers mit dem Namen Ihres Ausweises exakt übereinstimmt
   Notify5-Txt               = Bitte füllen Sie die Felder für das Geburtsdatum aus.
   Notify6-Txt               = Das Mindestalter ist nicht erreicht.
   UseInputFieldErrorTags    = yes
</EigenhaendigPlus>

Referenz: Abschnitt_EigenhaendigPlus

Schritt 3: Anlegen der Versandart mit Altersbeschränkung

Legen Sie in der Shopkonfiguration shop.config einen separaten Abschnitt <+Deliverer> für diese Versandart an und setzen Sie dort den Parameter EigenhaendigPlus auf allow.

<+Deliverer>
    ...
    Allow                    = yes
    Name-Txt                 = Lieferung
    Country-Txt              = innerhalb Deutschlands (ab 18 Jahren)
    DeliveryCountry-Rule     = AllowCountries
    DeliveryCountry-List     = DEU
    EigenhaendigPlus         = allow 
    ...
</+Deliverer>

Setzen Sie bei allen anderen <+Deliverer>-Abschnitten (ohne "Eigenhändig Plus") den Parameter EigenhaendigPlus auf deny.

<+Deliverer>
   ...
   EigenhaendigPlus         = deny 
   ...
</+Deliverer>

Referenz: Abschnitt +Deliverer

Schritt 4: Abfrage des Geburtsdatums

Dieses Feature verlangt einen Altersnachweis des Kunden. Anhand des eingegebenen Geburtsdatums berechnet WEBSALE V8s das Alter des Käufers und überprüft, ob es mindestens dem Alter entspricht, das in der Shopkonfiguration shop.config im Abschnitt <EigenhaendigPlus> mit dem Parameter AgeRestricted-Value konfiguriert wurde. Ist dieses Mindestalter nicht erreicht, wird eine entsprechende Fehlermeldung angezeigt.

Das Geburtsdatum für die Rechnungs- und abweichende Lieferadresse muss in der Shopkonfiguration shop.config in den Abschnitten <AddressFields-Txt> und <DeliveryAddressFields-Txt> konfiguriert werden – entweder als optionale oder erforderliche Eingabe.

Rechnungsadresse:

<AddressFields-Txt>
   ...
   DateOfBirth         = Geburtsdatum
   ...
</AddressFields-Txt>

Lieferadresse:

<DeliveryAddressFields-Txt>
   ...
   DateOfBirth         = Geburtsdatum
   ...
</DeliveryAddressFields-Txt>

Referenz: Abschnitt AddressFields-Txt

Referenz: Abschnitt DeliveryAddressFields-Txt

Schritt 5: Integration der Fehlermeldung auf der Bestellübersicht

Integrieren Sie auf dem Template der Bestellübersichtsseite (ws_place_order.htm) die Tags zur Anzeige der Fehlermeldung.

{WS-EigenhaendigPlus_error}
    ~WS-EigenhaendigPlus_errormessage~
{/WS-EigenhaendigPlus_error}

Referenz: WS-EigenhaendigPlus_error

Referenz: WS-EigenhaendigPlus_errormessage

Schritt 6: Integration der Checkbox zum Aktivieren und der Eingabefelder auf der Bestellübersicht

Die notwendigen Eingaben zu dieser Versandart werden auf der Bestellübersichtsseite (ws_place_order.htm) integriert. Im Template kann mit einem entsprechenden Bereich geprüft werden, ob die Versandart "Eigenhändig Plus" aktiviert ist.

Integrieren Sie auf dem Template der Bestellübersichtsseite (ws_place_order.htm) innerhalb der <form action="~FORM-PlaceOrder~"> die Checkbox zum Bestätigen der Bedingungen von "Eigenhändig Plus" und die Eingabefelder für Ausweisnummer, ausstellende Behörde usw.

<form action="~FORM-PlaceOrder~">
   ....
   {ST-EigenhaendigPlus}
      ...
      ~WS-ConfirmEigenhaendigPlus~<br>
      {WS-ConfirmEigenhaendigPlus_error}~WS-ConfirmEigenhaendigPlus_errormessage~{/WS-ConfirmEigenhaendigPlus_error}

      Geburtsdatum:
      {WS-DelivAddr}~D-DateOfBirth_list~{/WS-DelivAddr}
      {!WS-DelivAddr}~A-DateOfBirth_list~{/!WS-DelivAddr}
      {WS-DateOfBirthEigenhaendigPlus_error}~WS-DateOfBirthEigenhaendigPlus_errormessage~{/WS-DateOfBirthEigenhaendigPlus_error}

      Ausweisnummer:
      <input type="text" name="input_idcard_number" value="~WS-IDCardNumber~" maxlength="20">
      {WS-IDCardNumber_error}~WS-IDCardNumber_errormessage~{/WS-IDCardNumber_error}

      Ausweisart:
      ~WS-IDCardTypeList~
      {WS-IDCardType_error}~WS-IDCardType_errormessage~{/WS-IDCardType_error}

      Ausstellende Behörde:
      <input type="text" name="input_idcard_authority" value="~WS-IDCardAuthority~" maxlength="30">
      {WS-IDCardAuthority_error}~WS-IDCardAuthority_errormessage~{/WS-IDCardAuthority_error}
      ...
   {/ST-EigenhaendigPlus}
   ...
</form>

 

Hinweise:

Das Eingabefeld zur Abfrage der Ausweisnummer muss name=input_idcard_number heißen. Die maximale Eingabelänge beträgt 20 Zeichen.

Das Eingabefeld zur Abfrage der ausstellenden Behörde muss name=input_idcard_authority heißen. Die maximale Eingabelänge beträgt 30 Zeichen.

Referenz: ST-EigenhaendigPlus

Referenz: WS-ConfirmEigenhaendigPlus

Referenz: WS-ConfirmEigenhaendigPlus_error

Referenz: WS-ConfirmEigenhaendigPlus_errormessage

Referenz: WS-DateOfBirthEigenhaendigPlus_error

Referenz: WS-DateOfBirthEigenhaendigPlus_errormessage

Referenz: D-DateOfBirth_list

Referenz: A-DateOfBirth_list

Referenz: WS-IDCardNumber

Referenz: WS-IDCardNumber_error

Referenz: WS-IDCardNumber_errormessage

Referenz: WS-IDCardTypeList

Referenz: WS-IDCardType_error

Referenz: WS-IDCardType_errormessage

Referenz: WS-IDCardAuthority

Referenz: WS-IDCardAuthority_error

Referenz: WS-IDCardAuthority_errormessage

Zum Inhaltsverzeichnis

 

5 Versandoptionen und Services für die Käufer

5.1 Sendungsverfolgung

5.1.1 DHL-Sendungsverfolgung

Mit dieser Funktion kann der Käufer den Versandstatus seiner Bestellung(en) komfortabel im Shop prüfen, ohne eine externe Seite des Versanddienstleisters aufzurufen.

Auf der Bestellhistorie findet der Käufer dann beispielsweise folgende Ansicht vor:

Die Anzeige des Versandstatus ist immer abhängig von den Daten, die über die DHL-Schnittstelle übergeben werden. Dies kann vom Leistungsumfang der beauftragten DHL-Schnittstelle als auch von der jeweiligen Konfiguration im DHL-Backend des Händlers abhängig sein.

Die Antwort von DHL wird dann komplett an den Shop übergeben und in einer Datenstruktur zur Verfügung gestellt, die im Frontend für die Darstellung verwendet werden kann. Das Design kann frei an die Wünsche des Händlers angepasst werden.

Abruf der Tracking-Informationen

Standardmäßig wird die TrackingID über die WWS-Infodatenschnittstelle oder REST-OrderManagement-Schnittstelle von der Warenwirtschaft an den Onlineshop übergeben. Die abgerufenen Informationen können dann in der Bestellübersicht/Bestellhistorie im Kundenkonto angezeigt werden.

Alternativ kann die TrackingID auch per JSON-Schnittstelle abgerufen werden. Hierbei erstellt DHL eine JSON-Datei, die von WEBSALE geöffnet wird. Die Informationen werden dann in der WEBSALE Bestellhistorie (ws_order_history.htm) angezeigt.

Sprache und Texte anpassen

Sie können in der Shopkonfiguration shop.config auswählen, in welcher Sprache die Texte des Versandstatus ausgegeben werden sollen.

DHL liefert über seine Schnittstelle bereits Texte mit, die im Frontend angezeigt werden können. Diese Texte können anhand von Fehlercodes, sofern diese über die Schnittstelle mitgeliefert werden, durch individuelle Texte im Frontend ersetzt werden. Eine Anpassung der Texte ist auch über das DHL-Backend möglich.

Integration

Voraussetzungen

Der Händler muss einen entsprechenden Vertrag mit DHL abschließen und dann die Zugangsdaten zur API der DHL-Sendungsverfolgung beantragen.
Diese Zugangsdaten werden für die Einrichtung der Schnittstelle bei WEBSALE benötigt.

Damit der Shop den Versandstatus anzeigen kann, wird die TrackingID (Sendungsverfolgungsnummer) von DHL benötigt. Die TrackingID kann entweder über die WWS-Infodatenschnittstelle oder über die REST-OrderManagement-Schnittstelle abgerufen werden. Alternativ ist auch eine Einbindung mittels JSON-Schnittstelle möglich (Wegweiser: JSON-Schnittstelle). Ihr WEBSALE-Ansprechpartner steht Ihnen bei Fragen gerne zur Verfügung.

Schritt 1: Freischaltung/Aktivierung

Die Funktion muss von WEBSALE technisch freigeschaltet werden. Bitte wenden Sie sich an Ihren WEBSALE-Ansprechpartner.

Schritt 2: Anpassung der Shopkonfiguration shop.config

Fügen Sie in Ihrer Shopkonfiguration shop.config den Abschnitt ShipTrack hinzu und konfigurieren Sie die Parameter:

<ShipTrack>
   <+Entry>
      ID           = DHL
      Provider     = DHL
      Username     = zt123456       # Ihr Track&Trace-Username von DHL
      Password     = passwort123    # Ihr Track&Trace-Passwort von DHL
      LanguageCode = de
   </+Entry>
   ...
</ShipTrack>

Referenz: Abschnitt ShipTrack

Schritt 3: Anzeige des Versandstatus ergänzen

Fügen Sie folgenden Code auf dem gewünschten Template (z. B. auf der Bestellhistorie) ein:

~DC-FPtrackingNumber_set($ERP-HeadData(H13)$)~
~SHIPTRACK-Get(DHL,$DC-FPtrackingNumber_StripHTML$)~
{SHIPTRACK-OK}
   ~EJD-SetRawDataInput($SHIPTRACK-JSONResult$)~
   ~EJD-LoadData(intern,rawdatainput,shiptrack)~
   {EJD-DataOK(shiptrack)}
      ~EJD-SetUseID(shiptrack)~
      ~EJD-DA-TouchValue(data.data.-code)~
      ~DC-FP1_set($EJD-LastValueAccessed$)~
      {DC-FP1(0)}
         <!-- Loop ueber Events -->
         ~EJD-DA-TouchArrayElements(data.data.data.data)~
         ~DC-ZeroLoop1_set($EJD-LastValueAccessed$)~
         {@DC-ZeroLoop1}
            ~DC-FP2_set(data.data.data.data[)~
            ~DC-FP2_append($DC-ZeroLoop1_position$)~
            ~DC-FP2_append(])~
            ~EJD-DA-TouchValue($DC-FP2$.-event-text)~
         {/@DC-ZeroLoop1}
      {/DC-FP1(0)}
   {/EJD-DataOK(shiptrack)}
{/SHIPTRACK-OK}
 
<!-- Ausgabe des aktuellen Status -->
Status: ~EJD-LastValueAccessed~

Referenz: SHIPTRACK-Get()

Referenz: SHIPTRACK-OK

Wegweiser: JSON-Schnittstelle

Referenz: EJD-LastValueAccessed

Dieser Code gibt den aktuellen Text von DHL zurück (z. B. "Ihr Paket wurde erfolgreich zugestellt.").

In der Tag-Beschreibung von ~SHIPTRACK-JSONResult~ finden Sie ein Beispiel der JSON-Datei, die als Ergebnis von ~SHIPTRACK-Get~ ausgegeben wird.

Referenz: SHIPTRACK-JSONResult

Grafische Darstellung

Um einen Zeitstrahl oder Ähnliches zu realisieren, muss der Parameter -standard-event-code aus der JSON-Datei ausgelesen werden. Hier übergibt DHL verschiedene Codes (z. B. PO, BV, ZO, ZF, …). Jeder Code hat eine bestimmte Bedeutung und kann dem Zeitstrahl zugeordnet werden.

Eine Excel-Liste mit den Codes und deren Bedeutung (Stand: 03.11.2021) finden Sie hier:

Event-Codes

Bitte beachten Sie, dass sich Änderungen seitens DHL ergeben können, die Sie bitte direkt bei DHL in Erfahrung bringen.

Beispiel:

~EJD-DA-TouchValue(data.data.data.-standard-event-code)~
~DC-FPeventCode_set($EJD-LastValueAccessed$)~
 
{DC-CompareStringInList($DC-FPeventCode$,"PO,BV,ZO")}
  <!-- Paket befindet sich in Zustellung -->
{/DC-CompareStringInList($DC-FPeventCode$,"PO,BV,ZO")}
 
{DC-CompareStringInList($DC-FPeventCode$,"ZF,ZN,LA,ZU")}
  <!-- Paket wurde zugestellt -->
{/DC-CompareStringInList($DC-FPeventCode$,"ZF,ZN,LA,ZU")}

Wegweiser: JSON-Schnittstelle

Referenz: EJD-DA-TouchValue()

Referenz: DC-CompareStringInList

Sie können dann diese Werte aufgreifen und damit einen Zeitstrahl bauen:

 

Haben Sie alle Schritte durchgeführt, ist die Funktion "DHL-Sendungsverfolgung" vollständig integriert.

Zum Inhaltsverzeichnis

 

5.1.2 Post AT-Sendungsverfolgung

Mit dieser Funktion kann der Käufer den Versandstatus seiner Bestellung(en) komfortabel im Shop prüfen, ohne eine externe Seite des Versanddienstleisters aufzurufen.

Auf der Bestellhistorie findet der Käufer dann beispielsweise folgende Ansicht vor:

Die Anzeige des Versandstatus ist immer abhängig von den Daten, die über die Post-AT-Schnittstelle übergeben werden. Dies kann vom Leistungsumfang der beauftragten Post-AT-Schnittstelle als auch von der jeweiligen Konfiguration im Post-AT-Backend des Händlers abhängig sein.

Die Antwort von Post AT wird dann komplett an den Shop übergeben und in einer Datenstruktur zur Verfügung gestellt, die im Frontend für die Darstellung verwendet werden kann. Das Design kann frei an die Wünsche des Händlers angepasst werden.

Abruf der Tracking-Informationen

Die TrackingID muss von der Warenwirtschaft kommen. WEBSALE ruft die TrackingID mit der JSON-Schnittstelle auf und erhält somit alle Informationen zur Sendungsverfolgung.

Sprache und Texte anpassen

Sie können in der Shopkonfiguration shop.config auswählen, in welcher Sprache die Texte des Versandstatus ausgegeben werden sollen.

Post AT liefert über seine Schnittstelle bereits Texte mit, die im Frontend angezeigt werden können. Diese Texte können anhand von Fehlercodes, sofern diese über die Schnittstelle mitgeliefert werden, durch individuelle Texte im Frontend ersetzt werden. Eine Anpassung der Texte ist auch über das Post-AT-Backend möglich.

Integration

Voraussetzungen

Der Händler muss einen entsprechenden Vertrag mit Post AT abschließen und dann die Zugangsdaten zur API der Sendungsverfolgung von Post AT beantragen.
Diese Zugangsdaten werden für die Einrichtung der Schnittstelle bei WEBSALE benötigt.

Damit der Shop den Versandstatus anzeigen kann, wird die TrackingID (Sendungsverfolgungsnummer) von Post AT benötigt. Die TrackingID wird mittels JSON-Schnittstelle abgerufen. Ihr WEBSALE-Ansprechpartner steht Ihnen bei Fragen gerne zur Verfügung.

Schritt 1: Freischaltung/Aktivierung

Die Funktion muss von WEBSALE technisch freigeschaltet werden. Bitte wenden Sie sich an Ihren WEBSALE-Ansprechpartner.

Schritt 2: Anpassung der Shopkonfiguration shop.config

Fügen Sie in Ihrer Shopkonfiguration shop.config den Abschnitt ShipTrack hinzu und konfigurieren Sie die Parameter:

<ShipTrack>
   <+Entry>
      ID       = POST-AT
      Provider = POST-AT
      Username =            # Ihr Username von Post AT
      Password =            # Ihr Password von Post AT
   </+Entry>
</ShipTrack>

Referenz: Abschnitt ShipTrack

Schritt 3: Anzeige des Versandstatus ergänzen

Fügen Sie folgenden Code auf dem gewünschten Template (z. B. auf der Bestellhistorie) ein:

{SHIPTRACK-OK}
   ~EJD-SetRawDataInput($SHIPTRACK-JSONResult$)~
   ~EJD-LoadData(intern,rawdatainput,shiptrack)~
   {EJD-DataOK(shiptrack)}
      ~EJD-SetUseID(shiptrack)~
      ~EJD-DA-TouchArrayElements(Parcels)~
      ~DC-ZeroLoop1_set($EJD-LastValueAccessed$)~
      {DC-ZeroLoop1}
         {@DC-ZeroLoop1}
            ~EJD-DA-TouchArrayElements(Parcels[$DC-ZeroLoop1_position$].ParcelEvents)~
            ~DC-ZeroLoop2_set($EJD-LastValueAccessed$)~
            {DC-ZeroLoop2}
               {@DC-ZeroLoop2}
                  ~EJD-DA-TouchValue(Parcels[$DC-ZeroLoop1_position$].ParcelEvents[$DC-ZeroLoop2_position$].ParcelEventReasonDescription)~
               {/@DC-ZeroLoop2}
            {/DC-ZeroLoop2}
         {/@DC-ZeroLoop1}
      {/DC-ZeroLoop1}
 
      <!-- Ausgabe des aktuellen Status -->
      Status: ~EJD-LastValueAccessed~
   {/EJD-DataOK(shiptrack)}
{/SHIPTRACK-OK}

Wegweiser: JSON-Schnittstelle

Referenz: SHIPTRACK-Get()

Referenz: SHIPTRACK-OK

Referenz: EJD-LastValueAccessed

Dieser Code gibt den aktuellen Text von Post AT zurück (z. B. "Ihr Paket wurde erfolgreich zugestellt.").

In der Tag-Beschreibung von ~SHIPTRACK-JSONResult~ finden Sie ein Beispiel der JSON-Datei, die als Ergebnis von ~SHIPTRACK-Get~ ausgegeben wird.

Referenz: SHIPTRACK-JSONResult

Grafische Darstellung

Um einen Zeitstrahl oder Ähnliches zu realisieren, muss der Parameter ParcelEventTypeCode ausgelesen werden, aber innerhalb der Loop. Hier übergibt Post AT verschiedene Codes. Jeder Code hat eine bestimmte Bedeutung und kann dem Zeitstrahl zugeordnet werden.

Eine Excel-Liste mit den Codes und deren Bedeutung (Stand: 11.10.2022) finden Sie hier:

Event-Codes

Bitte beachten Sie, dass sich Änderungen seitens Post AT ergeben können, die Sie bitte direkt bei Post AT in Erfahrung bringen.

Beispiel (enthält nicht alle Codes):

{SHIPTRACK-OK}
   ~EJD-SetRawDataInput($SHIPTRACK-JSONResult$)~
   ~EJD-LoadData(intern,rawdatainput,shiptrack)~
   {EJD-DataOK(shiptrack)}
      ~EJD-SetUseID(shiptrack)~
      ~EJD-DA-TouchArrayElements(Parcels)~
      ~DC-ZeroLoop1_set($EJD-LastValueAccessed$)~
      {DC-ZeroLoop1}
         {@DC-ZeroLoop1}
            ~EJD-DA-TouchArrayElements(Parcels[$DC-ZeroLoop1_position$].ParcelEvents)~
            ~DC-ZeroLoop2_set($EJD-LastValueAccessed$)~
            {DC-ZeroLoop2}
               {@DC-ZeroLoop2}
                  ~EJD-DA-TouchValue(Parcels[$DC-ZeroLoop1_position$].ParcelEvents[$DC-ZeroLoop2_position$].ParcelEventTypeCode)~
                  ~DC-FPparcelEventTypeCode_set($EJD-LastValueAccessed$)~
               {/@DC-ZeroLoop2}
            {/DC-ZeroLoop2}
         {/@DC-ZeroLoop1}
      {/DC-ZeroLoop1}
 
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"ANA,ANI,AZT,CLA,CUD")}
         <!-- In Zustellung -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"ANA,ANI,AZT,CLA,CUD")}
      
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"DKT,HIA,NNI,PKI,ZUS")}
         <!-- Sendung Zugestellt -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"DKT,HIA,NNI,PKI,ZUS")}
   {/EJD-DataOK(shiptrack)}
{/SHIPTRACK-OK}

Referenz: EJD-DA-TouchValue()

Referenz: DC-CompareStringInList

Sie können dann diese Werte aufgreifen und damit einen Zeitstrahl bauen:

 

Haben Sie alle Schritte durchgeführt, ist die Funktion "Sendungsverfolgung Post AT" vollständig integriert.

Zum Inhaltsverzeichnis

 

5.1.3 SwissPost-Sendungsverfolgung

Mit dieser Funktion kann der Käufer den Versandstatus seiner Bestellung(en) komfortabel im Shop prüfen, ohne eine externe Seite des Versanddienstleisters aufzurufen.

Auf der Bestellhistorie findet der Käufer dann beispielsweise folgende Ansicht vor:

Die Anzeige des Versandstatus ist immer abhängig von den Daten, die über die SwissPost-Schnittstelle übergeben werden. Dies kann vom Leistungsumfang der beauftragten SwissPost-Schnittstelle als auch von der jeweiligen Konfiguration im SwissPost-Backend des Händlers abhängig sein.

Die Antwort von SwissPost wird dann komplett an den Shop übergeben und in einer Datenstruktur zur Verfügung gestellt, die im Frontend für die Darstellung verwendet werden kann. Das Design kann frei an die Wünsche des Händlers angepasst werden.

Abruf der Tracking-Informationen

Die TrackingID muss von der Warenwirtschaft kommen. WEBSALE ruft die TrackingID mit der JSON-Schnittstelle auf und erhält somit alle Informationen zur Sendungsverfolgung.

Hinweis: Es handelt sich hierbei um keine Live-Abfrage. SwissPost liefert mehrfach täglich zu bestimmten Zeiten die Informationen im JSON-Format an WEBSALE.

Sprache und Texte anpassen

Sie können in der Shopkonfiguration shop.config auswählen, in welcher Sprache die Texte des Versandstatus ausgegeben werden sollen.

SwissPost liefert über seine Schnittstelle bereits Texte mit, die im Frontend angezeigt werden können. Diese Texte können anhand von Fehlercodes, sofern diese über die Schnittstelle mitgeliefert werden, durch individuelle Texte im Frontend ersetzt werden.

Integration

Voraussetzungen

Der Händler muss einen entsprechenden Vertrag mit SwissPost abschließen, die DataTransfer-Schnittstelle einrichten und sich für den "Bericht11" anmelden. Wenden Sie sich hierfür bitte direkt an Ihren Ansprechpartner der SwissPost.

WEBSALE erhält diesen "Bericht11" in Form von XML-Dateien und parst die Dateien in JSON. Diese können dann über eine Connector-API aufgerufen werden. Ihr WEBSALE-Ansprechpartner steht Ihnen bei Fragen gerne zur Verfügung.

Schritt 1: Freischaltung/Aktivierung

Die Funktion muss von WEBSALE technisch freigeschaltet werden. Bitte wenden Sie sich an Ihren WEBSALE-Ansprechpartner.

Schritt 2: Anpassung der Shopkonfiguration shop.config

Fügen Sie in Ihrer Shopkonfiguration shop.config den Abschnitt ShipTrack hinzu und konfigurieren Sie die Parameter:

<Shiptrack>
  <+Entry>
    ID       = WSSwissPostCon
    Provider = WSSwissPostCon
    Endpoint = http://test01.connector.websale.net:8000/api/swiss_post/reports
  </+Entry>
</Shiptrack>

Referenz: Abschnitt ShipTrack

Schritt 3: Anzeige des Versandstatus ergänzen

Fügen Sie folgenden Code auf dem gewünschten Template (z. B. auf der Bestellhistorie) ein:

{SHIPTRACK-OK}
   ~EJD-SetRawDataInput($SHIPTRACK-JSONResult$)~
   ~EJD-LoadData(intern,rawdatainput,shiptrack)~
   {EJD-DataOK(shiptrack)}
      ~EJD-SetUseID(shiptrack)~
      ~EJD-DA-TouchValue(_root_[0].event_number)~
      ~DC-FPparcelEventTypeCode_set($EJD-LastValueAccessed$)~
 
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"1,2,4,5,6,12,13,14,35,36,47,48,49,54,70,71,72,88,91,92")}
         <!-- In Zustellung -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"1,2,4,5,6,12,13,14,35,36,47,48,49,54,70,71,72,88,91,92")}
 
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"10,20,21,24,38,39,40,42,46,63,94")}
         <!-- Sendung Zugestellt -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"10,20,21,24,38,39,40,42,46,63,94")}
 
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"15,17,18,19,31,34,37,41,51,55,95,98,999")}
         <!-- Fehler -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"15,17,18,19,31,34,37,41,51,55,95,98,999")}
 
       <!-- Ausgabe des aktuellen Status -->
      Status: ~EJD-DA-Value(_root_[0].data.eventdescription)~
   {/EJD-DataOK(shiptrack)}
{/SHIPTRACK-OK}

Wegweiser: JSON-Schnittstelle

Referenz: SHIPTRACK-Get()

Referenz: SHIPTRACK-OK

Referenz: EJD-LastValueAccessed

Dieser Code gibt den aktuellen Text von SwissPost zurück (z. B. "Ihr Paket wurde erfolgreich zugestellt.").

In der Tag-Beschreibung von ~SHIPTRACK-JSONResult~ finden Sie ein Beispiel der JSON-Datei, die als Ergebnis von ~SHIPTRACK-Get~ ausgegeben wird.

Referenz: SHIPTRACK-JSONResult

Grafische Darstellung

Um einen Zeitstrahl oder Ähnliches zu realisieren, muss der Parameter ParcelEventTypeCode ausgelesen werden, aber innerhalb der Loop. Hier übergibt SwissPost verschiedene Codes. Jeder Code hat eine bestimmte Bedeutung und kann dem Zeitstrahl zugeordnet werden.

Beispiel (enthält nicht alle Codes):

{SHIPTRACK-OK}
   ~EJD-SetRawDataInput($SHIPTRACK-JSONResult$)~
   ~EJD-LoadData(intern,rawdatainput,shiptrack)~
   {EJD-DataOK(shiptrack)}
      ~EJD-SetUseID(shiptrack)~
      ~EJD-DA-TouchArrayElements(Parcels)~
      ~DC-ZeroLoop1_set($EJD-LastValueAccessed$)~
      {DC-ZeroLoop1}
         {@DC-ZeroLoop1}
            ~EJD-DA-TouchArrayElements(Parcels[$DC-ZeroLoop1_position$].ParcelEvents)~
            ~DC-ZeroLoop2_set($EJD-LastValueAccessed$)~
            {DC-ZeroLoop2}
               {@DC-ZeroLoop2}
                  ~EJD-DA-TouchValue(Parcels[$DC-ZeroLoop1_position$].ParcelEvents[$DC-ZeroLoop2_position$].ParcelEventTypeCode)~
                  ~DC-FPparcelEventTypeCode_set($EJD-LastValueAccessed$)~
               {/@DC-ZeroLoop2}
            {/DC-ZeroLoop2}
         {/@DC-ZeroLoop1}
      {/DC-ZeroLoop1}
 
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"1,2,4,5,6,12,13,14,35,36,47,48,49,54,70,71,72,88,91,92")}
         <!-- In Zustellung -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"1,2,4,5,6,12,13,14,35,36,47,48,49,54,70,71,72,88,91,92")}
      
      {DC-CompareStringInList($DC-FPparcelEventTypeCode$,"10,20,21,24,38,39,40,42,46,63,94")}
         <!-- Sendung zugestellt -->
      {/DC-CompareStringInList($DC-FPparcelEventTypeCode$,"10,20,21,24,38,39,40,42,46,63,94")}
   {/EJD-DataOK(shiptrack)}
{/SHIPTRACK-OK}

Referenz: EJD-DA-TouchValue()

Referenz: DC-CompareStringInList

Sie können dann diese Werte aufgreifen und damit einen Zeitstrahl bauen:

 

Haben Sie alle Schritte durchgeführt, ist die Funktion "SwissPost-Sendungsverfolgung" vollständig integriert.

Zum Inhaltsverzeichnis

 

 

5.2 Teillieferung/Komplettlieferung anbieten

Unterschiedliche Lieferbarkeitsstatus bei den Produkten können dazu führen, dass eine Bestellung nicht sofort an den Käufer versendet werden kann, weil ein oder mehrere Produkte nicht auf Lager sind.

Mit der Teillieferung kann eine Bestellung von mehreren Produkten (mind. 2) auf Wunsch des Käufers gesplittet werden. Somit erhält der Käufer sofort die Produkte, die auf Lager sind. In einer Nachlieferung werden ihm dann die restlichen Produkte zugesendet, die bei der Bestellung noch nicht umgehend lieferbar waren. Zusätzliche Versandkosten werden dem Käufer nicht berechnet. Wird eine Bestellung geteilt, trägt der Händler die Kosten ab dem zweiten Paket.

Der Käufer hat jedoch auch die Möglichkeit, die Komplettlieferung seiner Bestellung zu wählen. Bei Wahl der Komplettlieferung wartet der Käufer solange auf sein Paket, bis die gesamte Menge der bestellten Produkt in einem Paket versendet werden können. Positiver Nebeneffekt für den Händler bei Wahl der Komplettlieferung ist die Versandkostenersparnis seinerseits.

Diese Auswahl können Sie dem Käufer auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) oder auf der Bestellübersichtsseite (ws_place_order.htm) anbieten.

Die Optionen werden nur eingeblendet, wenn die Produkte im Warenkorb die Voraussetzungen (siehe unten) erfüllen.

Um dem Käufer eine Auswahl zwischen Teil- und Komplettlieferung anzubieten, müssen sich im Warenkorb mindestens 2 Produkte befinden, die

unterschiedliche Lieferbarkeitsstatus (siehe unten, "Lieferbarkeitsstatus gruppieren") haben und

davon mindestens ein Produkt nicht sofort lieferbar ist.

Bei den Produkten im Warenkorb darf es sich nicht ausschließlich um ausgeschlossenen Produkte (siehe unten, "Nicht berücksichtigte Produkte") handeln, weil diese Produkte für die Betrachtung irrelevant sind.

Integration

Voraussetzungen

Die Nutzung dieses Features ist aktuell nur in Verbindung mit dem Warenwirtschaftssystem VS/4 von D&G möglich.

Die Lagerbestandsverwaltung im Shop muss aktiviert sein.

Wegweiser: Lagerbestand anzeigen

Schritt 1: Freischaltung/Aktivierung

Für diese Funktion ist keine Freischaltung/Aktivierung seitens WEBSALE notwendig.

Schritt 2: Nicht berücksichtigte Produkte

a) Vom Händler ausgeschlossene Produkte

Sie können für einzelne Produkte festlegen, dass diese für die Bestimmung nicht berücksichtigt werden sollen, ob dem Käufer die Wahl zwischen Teil- und Komplettlieferung angeboten wird.

Dies kann zum Beispiel bei Produkten der Fall sein, die direkt vom Hersteller versendet werden. Somit sind sie für die Betrachtung irrelevant, weil der Versand nicht über den Händler erfolgt, sondern über den Hersteller. Befinden sich solche Produkte im Warenkorb, erfolgt also immer eine "Teillieferung", weil Produkte vom Hersteller in einem separaten Paket versendet werden. Auch sogenannte Streckengeschäfts-Produkte (Drop-Shipping-Produkte) sind für die Betrachtung irrelevant und sollten ausgeschlossen werden, weil der Versand auch hier nicht über den Händler, sondern über Dritte erfolgt.

Informationen hierzu finden Sie in der separaten Produktdaten-Dokumentation unter https://doku.websale.de/schnittstellen.

b) Grundsätzlich ausgeschlossene Produkte

Außerdem werden folgende Produkte bei der Bestimmung, ob eine Teillieferung angeboten werden kann, grundsätzlich nicht berücksichtigt:

Produkte ohne Lieferbarkeitsstatus bzw. Produkte, bei denen die Lagerbestandsverwaltung deaktiviert ist

Set-Unterprodukte
Set-Produkte mit fester Zusammenstellung (SetParent) werden nur als Ganzes betrachtet. Sie bestehen immer aus einem Set-Oberprodukt und dazugehörigen Set-Unterprodukten. Die einzelnen Lieferbarkeitsstatus der Set-Unterprodukte bestimmen den Lieferbarkeitsstatus des Set-Oberproduktes. Für die Teillieferung wird nur der Lieferbarkeitsstatus des Set-Oberproduktes berücksichtigt, nicht jedoch die einzelnen Lieferbarkeitsstatus der Set-Unterprodukte.

Schritt 3: Lieferbarkeitsstatus gruppieren

Ein Split der Lieferung ergibt nur dann Sinn, wenn ein Produkt mit einem bestimmten Lieferbarkeitsstatus die Auslieferung des Paktes verzögern würde. Aus diesem Grund müssen für die einzelnen Lieferbarkeitsstatus in der Shopkonfiguration Gruppen erstellt werden.

Es gibt die folgenden Lieferbarkeitsstatus (und Lieferzeiten, je nach Definition des Händlers):

grün (z. B. lieferbar in 1 - 2 Tagen)

gelb (z. B. lieferbar in 2 - 3 Tagen)

rot (z. B. lieferbar in 7 - 10 Tagen)

Beispiel:
Liegen nur Produkte mit den Lieferbarkeitsstatus grün und gelb im Warenkorb, dann soll nur ein Paket versendet werden. Wegen der nur kurzen Versandverzögerung möchte der Händler keine zusätzlichen Versandkosten tragen (-> es wird nur Komplettlieferung angeboten).

Liegen aber Produkte mit den Lieferbarkeitsstatus grün und rot im Warenkorb, dann sollen mehrere Pakete versendet werden, denn jetzt entsteht eine Situation im Warenkorb, die eine Lieferung deutlich verzögern würde. Der Händler ist auf Grund der großen Zeitspanne von bis zu 9 Tagen bereit, die zusätzlichen Versandkosten zu tragen und seinem Käufer eine schnelle Teillieferung anzubieten.

Für dieses Beispiel müssen dann die folgenden beiden Lieferbarkeitsstatus-Gruppen angelegt werden:

Gruppe 1 = grün, gelb

Gruppe 2 = rot

Legen Sie zum Gruppieren der Lieferbarkeitsstatus in der Shopkonfiguration shop.config den Abschnitt <PartialDeliverySelection> an und nehmen Sie die gewünschten Konfigurationen vor:

<PartialDeliverySelection>
   Allow                       = test
   PreSelection                = complete    
   +BasketInventoryState-Group = green,yellow
   +BasketInventoryState-Group = red
</PartialDeliverySelection>

Referenz: Abschnitt PartialDeliverySelection

Schritt 4: Auswahl zwischen Teil- und Komplettlieferung

Ergänzen Sie folgenden Code auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) oder Bestellübersichtsseite (ws_place_order.htm), um dem Käufer die Auswahl zwischen Teil- und Komplettlieferung mittels Radiobuttons anzubieten.

Beispiel:

...
<form action="~FORM-PayDeliv~">
   ...
   {PD-Available}
      Wie soll Ihre Bestellung geliefert werden?
      <input type="radio" name="~PD-Selection_radioname~" value="~PD-Selection_radiovalue_partial~" ~PD-Selection_radioselected_partial~>
      In mehreren Paketen
 
      <input type="radio" name="~PD-Selection_radioname~" value="~PD-Selection_radiovalue_complete~" ~PD-Selection_radioselected_complete~>
      Komplettlieferung<br>
      In einem Paket - der Umwelt zuliebe.
   {/PD-Available}
   ...
</form>
...

Referenz: PD-Available

Referenz: PD-Selection_radioname

Referenz: PD-Selection_radiovalue_complete

Referenz: PD-Selection_radioselected_complete

Referenz: PD-Selection_radiovalue_partial

Referenz: PD-Selection_radioselected_partial

Schritt 5: Anzeige der getroffenen Auswahl des Käufers (optional)

Ergänzen Sie folgenden Code, um die getroffene Auswahl des Käufers auf der HTML-Bestelleingangsbestätigungsseite (ws_confirm.htm), der PDF-Bestelleingangsbestätigungsseite (pdf_confirm.htm) und/oder der Bestelleingangsbestätigungs-E-Mail (mail_customer_order.htm) anzuzeigen.

Beispiel:

{PD-Available}
   Auswahl des Käufers:
 
   {PD-Selected_complete}
      Danke, dass Sie an die Umwelt denken - wir versenden Ihre komplette Bestellung in einem Paket.
      Das kann unter Umständen dazu führen, dass es 1-2 Tage länger dauert, bis die Bestellung bei Ihnen ist.
   {/PD-Selected_complete}
 
   {PD-Selected_partial}
      Da die Produkte unterschiedlich verfügbar sind, senden wir Ihnen mehrere Pakete zu.
   {/PD-Selected_partial}
 
   {!PD-Selected_complete}
      {!PD-Selected_partial}
         Keine Auswahl getroffen
      {/!PD-Selected_partial}
   {/!PD-Selected_complete}
 
{/PD-Available}

Referenz: PD-Available

Referenz: PD-Selected_complete

Referenz: PD-Selected_partial

Schritt 6: Einstellungen testen

Rufen Sie den Shop im allgemeinen Testmodus auf, indem Sie an einen beliebigen Shop-Aufruf den Parameter ?test=on anhängen.

Überprüfen Sie, ob die gewünschten Einstellungen korrekt vorgenommen wurden.

Referenz: Testmodi des Shops ein-/ausschalten

Schritt 7: Tests abschließen und Feature aktivieren

Um den Test abzuschließen und die Einstellungen für den Produktivbetrieb zu übernehmen, stellen Sie im Abschnitt <PartialDeliverySelection> der Shopkonfiguration shop.config den Parameter Allow auf den Wert yes:

<PartialDeliverySelection>
   ...
   Allow = yes
   ...
</PartialDeliverySelection>

Referenz: Abschnitt PartialDeliverySelection

Haben Sie alle Schritte durchgeführt, ist die Funktion vollständig integriert.

Zum Inhaltsverzeichnis

 

5.3 Wunsch-Liefertermin

Mit dieser Funktion können Sie berücksichtigen, dass ein Kunde an bestimmten Tagen bzw. zu bestimmten Tageszeiten die Lieferung nicht entgegennehmen kann (Urlaub usw.). Als Shop-Betreiber haben Sie die Wahl zwischen der Integration eines "einfachen Wunsch-Liefertermins" (der lediglich die Auswahl eines Datums erlaubt) und einem "erweiterten Wunsch-Liefertermin" (der Ihnen als Shop-Betreiber weitere Optionen bietet, siehe unten). Einfacher und erweiterter Wunsch-Liefertermin sind als Alternativen zu sehen, zwischen denen Sie sich entscheiden müssen: Der Shop funktioniert nicht fehlerfrei, wenn beide Varianten in der Shopkonfiguration shop.config eingetragen sind.

Beispiel

Anzeige der Wunschtermin-Auswahl in Schritt 3 des Bestellvorgangs:

Integration "Einfacher Wunsch-Liefertermin"

Es wird eine Auswahlliste des gewünschten Termins angezeigt. Sonn- und Feiertage, bestimmte Wochentage und eine Bestellzeitgrenze werden nicht berücksichtigt. (Wenn solche Kriterien berücksichtigt werden sollen, wählen Sie den "Erweiterten Wunschtermin".)

Schritt 1: Funktion konfigurieren und aktivieren

Öffnen Sie im Online-Servicebereich die Shopkonfiguration shop.config des jeweiligen Subshops und tragen Sie im Abschnitt <DeliveryDate> die gewünschten Parameterwerte ein (Dieser Abschnitt ist im Standard-Auslieferungsshop bereits enthalten):

...
<DeliveryDate>
   Allow            = yes   # Funktion aktivieren
   Days-Value       = 10    # Zehn Termine zur Auswahl anbieten
   DaysOffset-Value = 5     # Erster Termin 5 Tage nach Bestellung 
</DeliveryDate>
...

Referenz: Abschnitt <DeliveryDate>

Schritt 2: Templates erweitern

Fügen Sie in die Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm) an einer geeigneten Position mit dem Tag WS-DelivDateFields die Auswahlliste des Wunsch-Liefertermins ein.

<form action="~FORM-PayDeliv~" method="post"
   ...
   Wählen Sie einen Liefertermin: ~WS-DelivDateFields~
   ...
</form>

Referenz: WS-DelivDateFields

Referenz: FORM-PayDeliv

Die Auswahlliste wird vom Shop automatisch generiert und hat bereits eine Style-Klasse (siehe verfügbare Styles weiter unten).

Fügen Sie in den Templates Bestellübersichtsseite (ws_place_order.htm) und HTML-Bestelleingangsbestätigungsseite (ws_confirm.htm) das Tag WS-DelivDate zur Anzeige des gewählten Wunsch-Liefertermins ein.

{WS-DelivDate}
   Ihr gewünschtes Lieferdatum: ~WS-DelivDate~
{/WS-DelivDate}

Referenz: WS-DelivDate

Integration "Erweiterter Wunsch-Liefertermin"

Es wird eine Auswahlliste zur Auswahl des gewünschten Termins angezeigt. Dabei werden folgende Parameter berücksichtigt:

Bestellzeitgrenze

Vorlaufzeit bzw. Lieferzeit (in Stunden)

Wochentage, an denen geliefert werden darf

Anzahl der Termine, die zur Auswahl stehen sollen

Feiertage, an denen nicht geliefert werden darf

Auf der Seite mit der Wunschtermin-Auswahl sollten statische Hinweistexte mit den Informationen zu Bestellzeitgrenze und Vorlauf-/Lieferzeit angezeigt werden.

Schritt 1: Funktion konfigurieren und aktivieren

Fügen Sie den Abschnitt <AdvDeliveryDate> in die Shopkonfiguration shop.config ein:

<AdvDeliveryDate>
   Allow          = yes                                           # Funktion aktivieren
   Required       = yes                                           # Standard=no
   TimeLimit      = 10                                            # "Wenn Sie bis 10 Uhr bestellen ..."
   DeliveryTime   = 48                                            # Ganzzahliger Stundenwert
   DeliveryDays   = 1,2,3,4,5,6                                   # ganzzahlige Werte der Wochentage
   Holiydays      = 2018/01/01,2018/01/06,2018/04/18,2018/04/21   # Feiertage, an denen keine Lieferung erfolgt
   DeliveryRange  = 20                                            # Anzahl der Termine
   Name-Txt       = Lieferdatum                                   # Text für die Bestelldaten
   FirstEntry-Txt = Bitte wählen Sie                              # Optionaler Text für den ersten Eintrag in der Auswahlliste
</AdvDeliveryDate>

Referenz: Abschnitt <AdvDeliveryDate>

Wenn Sie den Parameter Required auf yes gesetzt haben, müssen Sie eine Meldung vorgeben, die eingeblendet wird, falls der Käufer keinen Wunsch-Liefertermin gewählt hat. Definieren Sie die Meldung im Abschnitt <NotifyMessages-Txt> mit dem Parameter DeliveryDate.

<NotifyMessages-Txt>
   ...
   DeliveryDate = Bitte geben Sie Ihren gewünschten Liefertermin an.
   ...
</NotifyMessages-Txt>

Referenz: Abschnitt <NotifyMessages-Txt>

Kundenabhängige Konfiguration der Liefertage

Sie können für jeden registrierten Käufer individuelle Wunsch-Liefertage in der Kundendatenbank hinterlegen. Dazu geben Sie die kommaseparierte Liste der Tage an. Den Namen des Import-Parameters finden Sie in der Kundenimport-Dokumentation. Fehlt bei einem Kunden diese Angabe, verwendet WEBSALE V8s ersatzweise die Werte, die beim Parameter DeliveryDays im Abschnitt <AdvDeliveryDate> der Shopkonfiguration shop.config festgelegt sind.

Schritt 2: Templates erweitern

Fügen Sie in das Template Bestellübersichtsseite (ws_place_order.htm) an einer geeigneten Position mit dem Tag WS-DelivDateFields die Auswahlliste des Wunsch-Liefertermins ein. Zusätzlich sollten auch statische Hinweistexte mit den Informationen zu Bestellzeitgrenze und Vorlauf-/Lieferzeit angezeigt werden.

<form action="~FORM-PayDeliv~" method="post"
   ...
   Wählen Sie einen Liefertermin: ~WS-AdvDelivDateFields~
   ...
</form>

Referenz: WS-AdvDelivDateFields

Die Auswahlliste wird vom Shop automatisch generiert und hat bereits eine Style-Klasse (siehe verfügbare Styles weiter unten).

Fügen Sie in den Templates Bestellübersichtsseite (ws_place_order.htm) und HTML-Bestelleingangsbestätigungsseite (ws_confirm.htm) an geeigneten Stellen das Tag WS-AdvDelivDate zur Anzeige des gewählten Wunsch-Liefertermins ein:

{WS-AdvDelivDate}
   Ihr gewünschtes Lieferdatum: ~WS-AdvDelivDate~
{/WS-AdvDelivDate}

Referenz: WS-AdvDelivDate

Styles

Klasse

Steuert das Aussehen von

select_delivery_date

Auswahlliste der Termine für die Funktion "Einfacher Wunsch-Liefertermin"

select_advdelivery_date

Auswahllisten der Termine für die Funktion "Erweiterter Wunsch-Liefertermin"

 

Zum Inhaltsverzeichnis

5.4 Versand an Lieferadressen

Standardmäßig wird eine Bestellung auch mit mehreren Warenkorbpositionen an eine Adresse geliefert: Die Rechnungsadresse oder eine davon abweichende Lieferadresse.

Vorbelegung der Versandart konfigurieren

Im Abschnitt <UserData> der Shopkonfiguration shop.config entscheiden Sie mit dem Parameter PreSelectLastUsedDelivAddr-Allow, ob für Bestandskunden die zuletzt verwendete (always), die zuletzt bearbeitete Lieferadresse (yes) oder die Rechnungsadresse (no) im Bestellprozess vorausgewählt werden soll.

<UserData>
   ...
   PreSelectLastUsedDelivAddr-Allow    = yes
   ...
</UserData>

Referenz: UserData

Sie können Kunden mit mehreren gespeicherten Lieferadressen auch die Möglichkeit anbieten, eine Standard-Lieferadresse zu wählen.

Wegweiser: Standard-Lieferadresse festlegen

Zum Inhaltsverzeichnis

5.4.1 Jede Warenkorbposition an eine eigene Lieferadresse senden (MultiDelivery)

Das Shop-Feature "Mehrere Lieferadressen auswählen" bietet Käufern die Möglichkeit,

jede Warenkorbposition an eine eigene Lieferadresse zu senden (MultiDelivery),

eine Warenkorbposition in frei definierbaren Mengen aufzuteilen und an mehrere Lieferadressen zu versenden (5.4.2 Split-Order),

Belegexemplare an eine eigene Lieferadresse zu senden (5.4.3 SampleCopy),

und zusätzlich für jede Lieferadresse eine eigene Versandart auszuwählen (5.4.4 MultiDelivererSelection).

Dadurch entfällt für den Shopkunden ggf. die zeitaufwändige und kostentreibende Notwendigkeit, die Ware erst zu sich senden zu lassen, dort abzuzählen, umzupacken und erneut zu versenden.

Beispiel:
Der Screenshot zeigt die Aufteilung einer Warenkorbposition zunächst auf zwei, dann drei unterschiedliche Lieferadressen. Zusätzlich werden Belegexemplare an die Rechnungsadresse versendet und unterschiedliche Versanddienstleister/Versandarten ausgewählt.

Für die Berechnung der Versandkosten können Kostenstaffeln hinterlegt werden, die je nach Anzahl der gewählten Lieferadressen zu den Kosten der einzelnen Versandarten (in den <+Deliverer>-Abschnitten) hinzuaddiert werden.


Hinweis:

Bei der Umstellung von der Lieferung des Gesamtwarenkorbs auf die Lieferung an mehrere Adressen werden manche Filter und Abhängigkeiten der Versandarten nicht mehr berücksichtigt.

Diese Funktionen sind technisch miteinander verbunden und bauen aufeinander auf. Sie müssen zunächst MultiDelivery integrieren, um die anderen Funktionen nutzen zu können.

Schritt 1: Freischaltung/Aktivierung

Für diese Funktion ist keine Freischaltung/Aktivierung seitens WEBSALE notwendig.

Schritt 2: Shopkonfiguration anpassen

Aktivieren Sie die Funktion "MultiDelivery" und definieren die Versandkostenberechnung bei Verwendung mehrerer Lieferadressen. In unserem Beispiel werden die Versandkosten nur einmal berechnet - egal wie viele Lieferadressen und somit Pakete versendet werden. Zusätzlich kann konfiguriert werden, ob eine Prüfung auf Zulässigkeit der gewählten Versandart erfolgen soll.

Nehmen Sie folgende Anpassungen und Ergänzungen in der Shopkonfiguration shop.config im Abschnitt <Delivery> vor:

<Delivery>
   ...
   MultiDeliveryAddress-Allow                        = yes
   OrderData-DeliveryAddressFormat                   = MultiDeliveryAlways
   DeliveryCostCalculation-Mode                      = CalculateOnce        # Versandkosten werden nur einmal pro Bestellung berechnet
   MultiDeliveryCheckDeliveryAtCombinedAddress-Allow = yes                  # Delivery-Prüfungen auslösen
   ...
</Delivery>

Referenz: Abschnitt <Delivery>

Schritt 3: Neues Template MultiDeliveryManage anlegen

Die Auswahl der einzelnen Lieferadressen erfolgt auf einem eigenen Template MultiDeliveryManage. Dort kann der Käufer aus seinen gespeicherten Adressen auswählen oder neue Lieferadressen eingeben.

Legen Sie dazu im Abschnitt <Templates> der Shopkonfiguration shop.config den neuen Parameter MultiDeliveryManage an. Vergeben Sie einen Dateinamen für das neue Template, z. B. ws_multidelivery_manage.htm.

<Templates>
   ...
   MultiDeliveryManage    =  ws_multidelivery_manage.htm
   ...
</Templates>

Referenz: Abschnitt <Templates>

Erstellen Sie ein neues HTML-Template und speichern Sie es in Ihrem Templateverzeichnis, z. B. benutzer/templates/translation. Verwenden Sie dabei denselben Dateinamen wie zuvor im Abschnitt <Templates> festgelegt, z. B. ws_multidelivery_manage.htm.

Fügen Sie folgenden Code in den <body> des Templates ein und nehmen Sie ggf. Anpassungen an Ihrem Shopdesign vor.
 

...   
<form action="~FORM-MDM~" id="mdmform" name="mdmform" method="post" class="addr" autocomplete="off">

   {MDM-EditMode}<!-- gespeicherte Lieferadresse ändern -->
      <h1>Lieferadresse ändern</h1>
         
      <!-- Fügen Sie hier die Lieferadress-Felder ein, z. B. über einen FastInclude-Bereich -->
      ~WS-Fast_Include(Incl-DeliveryAddressFields)~
         
      {ST-MultipleData}<!-- Für Käufer mit Kundenkonto -->
         <input type="checkbox" name="~WS-DelivAddr_checkbox_saveaddress~" ~WS-DelivAddr_checkboxchecked_saveaddress~> Diese Lieferadresse speichern?
         <label for="~D-UserDescr_input~">~D-UserDescr_text~</label>
         <input type="text" maxlength="50" name="~D-UserDescr_input~" value="~D-UserDescr~" class="~D-UserDescr_error~">
      {/ST-MultipleData}

      <button name="~MDM-EditMode_buttonname~" type="submit" value="~MDM-EditMode_buttonvalue_cancel~">zurück</button>
      <button name="~MDM-EditMode_buttonname~" type="submit" value="~MDM-EditMode_buttonvalue_save~">übernehmen</button>
   {/MDM-EditMode}

   {!MDM-EditMode}
      {MDM-Notify_error}<!-- Ausgabe von Fehlermeldungen -->
         Error detected, Errorcode: ~MDM-Notify_error~
      {/MDM-Notify_error}

      <!-- Auswahl der gewünschten Lieferadresse -->
      <h1>Wohin sollen wir Ihre Bestellung liefern?</h1>
         
         <!-- An meine Rechnungsadresse -->
         <input type="radio" name="~MDM-Destination_radioname~" value="~MDM-Destination_radiovalue_billingaddress~" ~MDM-Destination_radioselected_billingaddress~> An meine Rechnungsadresse
         
         {ST-MultipleData}<!-- Für Käufer mit Kundenkonto -->
            ~D-LoadData~ 
            {!D-Data}
               <!-- An eine meiner gespeicherten Lieferadressen -->
               <input type="radio" name="~MDM-Destination_radioname~" value="~MDM-Destination_radiovalue_saveddelivaddress~" disabled> An eine meiner gespeicherten Lieferadressen
            {/!D-Data}
            {D-Data}
               <!-- An eine meiner gespeicherten Lieferadressen -->
               <input type="radio" name="~MDM-Destination_radioname~" value="~MDM-Destination_radiovalue_saveddelivaddress~" ~MDM-Destination_radioselected_saveddelivaddress~ ~WS-DelivAddr_radioselected_usedeliv~> An eine meiner gespeicherten Lieferadressen (~D-Data~)
               {MDM-Destination_radioselected_saveddelivaddress}
                  {@D-Data}
                     <input type="radio" name="~D-DeliverySelection_mdm_input~" value="~D-DeliverySelection_mdm_value~" {D-DeliverySelection_mdm_selected}checked{/D-DeliverySelection_mdm_selected}>
                     <label for="~D-DeliverySelection_mdm_input~">~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~<br>~D-Country~</label>
                     <button name="~MDM-EditMode_buttonname~" type="submit" value="~D-DeliverySelection_mdm_editmode_buttonvalue~">ändern</button>
                  {/@D-Data}
               {/MDM-Destination_radioselected_saveddelivaddress}
            {/D-Data}
         {/ST-MultipleData}
         
         {!D-OneTimeData}
            <!-- An eine einmalig verwendete - disabled/deaktiviert, wenn noch keine neue Lieferadressen gespeichert wurde -->
            <input type="radio" name="~MDM-Destination_radioname~" value="~MDM-Destination_radiovalue_onetimedelivaddress~" disabled ~MDM-Destination_radioselected_onetimedelivaddress~> An eine Lieferadresse zur einmaligen Verwendung
         {/!D-OneTimeData}
         
         {D-OneTimeData}
            <!-- An eine einmalig verwendete -->
            <input type="radio" name="~MDM-Destination_radioname~" value="~MDM-Destination_radiovalue_onetimedelivaddress~" ~MDM-Destination_radioselected_onetimedelivaddress~> An eine Lieferadresse zur einmaligen Verwendung (~D-OneTimeData~)
            {MDM-Destination_radioselected_onetimedelivaddress}
               {@D-OneTimeData}
                  <input type="radio" name="~D-DeliverySelection_mdm_onetime_input~" value="~D-DeliverySelection_mdm_onetime_value~" {D-DeliverySelection_mdm_onetime_selected}checked{/D-DeliverySelection_mdm_onetime_selected}>
                  <label for="~D-DeliverySelection_mdm_onetime_input~">~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~<br>~D-Country~</label>
		  <button name="~MDM-EditMode_buttonname~" type="submit" value="~D-DeliverySelection_mdm_onetime_editmode_buttonvalue~">ändern</button>
               {/@D-OneTimeData}
            {/MDM-Destination_radioselected_onetimedelivaddress}
         {/D-OneTimeData}

         <!-- An eine neue Lieferadresse -->
         <input type="radio" name="~MDM-Destination_radioname~" value="~MDM-Destination_radiovalue_newdelivaddress~" ~MDM-Destination_radioselected_newdelivaddress~> An eine neue Lieferadresse
         {MDM-Destination_radioselected_newdelivaddress}
            <!-- Fügen Sie hier die Lieferadress-Felder ein, z. B. über einen FastInclude-Bereich -->
            ~WS-Fast_Include(Incl-DeliveryAddressFields)~
         {/MDM-Destination_radioselected_newdelivaddress}

         <hr>
         <button name="~MDM-Button_OK~" type="submit">Auswahl speichern und zurück zur Bestellung</button>
         <button name="~MDM-Button_Back~" type="submit">Zurück zur Bestellung</button>
         <button name="~MDM-Button_Reload~" type="submit">Reload</button>

   {/!MDM-EditMode}
</form>
...

Alle Tags, die speziell für das Feature "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" zur Verfügung stehen, finden Sie unter folgendem Link:

Referenz: Split-Order: Tags

Wegweiser: Abweichende Lieferadresse abfragen

Schritt 4: Template CombinedAddress anpassen

Auf der Rechnungs- und Lieferadressseite im Bestellablauf (ws_address_combined.htm) muss die neue Option "An mehrere Adressen liefern" eingefügt werden. Damit gelangt der Käufer auf die neue MultiDeliveryManage-Seite. Nach Auswahl einer Lieferadresse kann der Käufer über den Button "Weitere Lieferadresse auswählen" diese Prozedur wiederholen und jeder Warenkorbposition eine eigene Lieferadresse zuordnen. Zurück auf der Rechnungs- und Lieferadressseite im Bestellablauf (ws_address_combined.htm) legt er dann jeweils die Menge des bestellten Produkts pro Lieferadresse fest.

Beachten Sie, dass diese neue Option 2-mal ins Template eingefügt werden muss: Für Gastbesteller (ST-SingleData) und für Bestandskunden (ST-MultipleData). Zur Orientierung sehen Sie hier den Aufbau des Templates innerhalb des Formulars FORM-Addr:

...
<form action="~FORM-Addr~" id="addressform" name="addressform" method="post" class="addr" autocomplete="off">
   ...
   <h1>Ihre Rechnungsadresse</h1>
      ...
      ...
   <h1>Wohin sollen wir liefern?</h1>
   {ST-SingleData}
      An meine Rechnungsadresse
      ...
      An eine Lieferadresse
      ...
      <!-- HIER DER NEUE CODE "An mehrere Adressen liefern" -->
   {/ST-SingleData}
   {ST-MultipleData}
      An meine Rechnungsadresse
      ...
      An eine meiner gespeicherten Lieferadressen
      ...
      An eine neue Lieferadresse
      ...
      <!-- HIER DER NEUE CODE "An mehrere Adressen liefern" -->
   {/ST-MultipleData}
   ...
</form>
...

Ergänzen Sie die Rechnungs- und Lieferadressseite im Bestellablauf (ws_address_combined.htm) 2-mal, innerhalb der Bereiche {ST-SingleData} und {ST-MultipleData}, mit der Übersicht des Warenkorbs, der Schaltfläche "Weitere Lieferadresse auswählen" und den Eingabefeldern für die Menge pro Lieferadresse.
 

...
{WS-MultiDelivery_available}
   <input type="radio" name="~WS-DelivAddr_radioname~" value="~WS-DelivAddr_radiovalue_inputmultidelivery~" ~WS-DelivAddr_radioselected_inputmultidelivery~>
   An mehrere Adressen liefern
   <div {!WS-DelivAddr_radioselected_inputmultidelivery}style="display: none;"{/!WS-DelivAddr_radioselected_inputmultidelivery}>
      {@BASKET-PR-Data}
         <p>~BASKET-PR-Name~</p>

         <!-- Für diesen (Sub-)Shop ist MultiDelivery prinzipiell verfügbar -->
         {BASKET-PR-D_available}
            {!BASKET-PR-D}
               <p>Lieferung erfolgt an meine Rechnungsadresse</p>
            {/!BASKET-PR-D}

            <!-- MultiDelivery -->
            <!-- Auswahl EINER Lieferadresse pro Warenkorb-Position -->
            {BASKET-PR-D-SingleData}
               {D-MultiDeliveryBillAddressUsed}
                  <p>Lieferung erfolgt an meine Rechnungsadresse.</p>
               {/D-MultiDeliveryBillAddressUsed}
               {!D-MultiDeliveryBillAddressUsed}
                  <p>Lieferung erfolgt an folgende Lieferadresse(n):</p>
                  <p>~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~<br>~D-Country~</p>
                  {WS-TplComment}
                  <!--
                  <p>Weiterführende Information(en) zur gewählten Lieferadresse (optional):</p>
                  {D-MultiDeliveryUsed}<p>Diese Lieferadresse wird mindestens einmal verwendet.</p>{/D-MultiDeliveryUsed}
                  {D-MultiDeliveryMultipleUsed}<p>Diese Lieferadresse wird ~D-MultiDeliveryMultipleUsed~ Mal verwendet.</p>{/D-MultiDeliveryMultipleUsed}
                  {D-OneTime}<p>Diese Lieferadresse wird nicht gespeichert und nur für diese Bestellung verwendet.</p>{/D-OneTime}
                  {!D-OneTime}<p>Diese Lieferadresse ist in Ihrem Kundenkonto gespeichert.</p>{/!D-OneTime}
                  -->
                  {/WS-TplComment}
               {/!D-MultiDeliveryBillAddressUsed}
               <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-SingleData_ButtonValue_edit~">ändern</button>
               <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-SingleData_ButtonValue_delete~">löschen</button>
            {/BASKET-PR-D-SingleData}

            {BASKET-PR-D-MultiDataAvailable}
               <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-ButtonValue_new~">Lieferadresse auswählen
            {/BASKET-PR-D-MultiDataAvailable}
            
         {/BASKET-PR-D_available}
         <hr>
      {/@BASKET-PR-Data}
   </div>

{/WS-MultiDelivery_available}
...

Alle Tags, die speziell für das Feature "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" zur Verfügung stehen, finden Sie unter folgendem Link:

Referenz: Split-Order: Tags

Schritt 5: Template Warenkorbseite (ws_basket.htm) anpassen

Fügen Sie auf der Warenkorbseite (ws_basket.htm) folgenden Code innerhalb der @BASKET-PR-Data-Schleife ein.

 

...
{BASKET-PR-D_available}<!-- Für diesen (Sub-)Shop ist MultiDelivery prinzipiell verfügbar. -->
   
   <!-- Fehlermeldungen -->
   {BASKET-PR-MultiDeliveryAddress_ErrorCode}
      <p>Es ist ein Fehler aufgetreten (Fehlercode ~BASKET-PR-MultiDeliveryAddress_ErrorCode~):</p>
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(0)}Kein Fehler aufgetreten/nicht geprüft(intern/emergency){/BASKET-PR-MultiDeliveryAddress_ErrorCode(0)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(1)}Fehler: Adresse nicht gefunden (intern/emergency){/BASKET-PR-MultiDeliveryAddress_ErrorCode(1)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(2)}Belegexempar (SampleCopy) wurde gewählt, ist aber grundsätzlich nicht verfügbar.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(2)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(3)}Belegexempar (SampleCopy) wurde gewählt, ist aber nicht verfügbar, weil die Mindestmenge nicht erreicht wurde.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(3)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(4)}Fehler: Adresse nicht gefunden (intern/emergency){/BASKET-PR-MultiDeliveryAddress_ErrorCode(4)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(5)}Split-Order: Anzahl der abweichenden Lieferadressen stimmt nicht mit der Anzahl der Positionen im Warenkorb überein.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(5)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(6)}Split-Order ist grundsätzlich nicht erlaubt.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(6)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(7)}Split-Order ist nicht erlaubt, da die Mengenabhängigkeit nicht erfüllt ist.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(7)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(8)}Split-Order: Maximale Anzahl wurde überschritten.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(8)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(9)}Split-Order: Bestellmenge wurde überschritten.{/BASKET-PR-MultiDeliveryAddress_ErrorCode(9)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(10)}Split-Order: Restmenge übrig{/BASKET-PR-MultiDeliveryAddress_ErrorCode(10)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(11)}Split-Order: Staffelungsfehler{/BASKET-PR-MultiDeliveryAddress_ErrorCode(11)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(12)}Split-Order: Teilmenge ist 0{/BASKET-PR-MultiDeliveryAddress_ErrorCode(12)}
      {BASKET-PR-MultiDeliveryAddress_ErrorCode(13)}Verteilungsprodukt: Abweichende Lieferadresse ist nicht zulässig{/BASKET-PR-MultiDeliveryAddress_ErrorCode(13)}
   {/BASKET-PR-MultiDeliveryAddress_ErrorCode}   
   
   <!-- MultiDelivery ist aktiviert -->   
   {!BASKET-PR-D}
      <!-- Lieferung "An mehrere Adressen" wurde zwar gewählt, jedoch ohne abweichende Lieferadresse -->
      <p>Lieferung erfolgt an Ihre Rechnungsadresse.</p>
   {/!BASKET-PR-D}
   
   {BASKET-PR-D}
      <!-- MultiDelivery -->
      <!-- Auswahl EINER Lieferadresse pro Warenkorb-Position -->
      {BASKET-PR-D-SingleData}
         <!-- Es wurde eine Lieferadresse bzw. die Rechnugsadresse gewählt -->
         {D-MultiDeliveryBillAddressUsed}
            <p>Lieferung erfolgt an Ihre <b>Rechnungsadresse</b>:</p>
            <p>~A-FirstName~ ~A-LastName~<br>~A-Street1~<br>~A-Zip~ ~A-City~<br>~A-Country~</p>
         {/D-MultiDeliveryBillAddressUsed}
         {!D-MultiDeliveryBillAddressUsed}
            <p>Lieferung erfolgt an folgende Lieferadresse(n):</p>			
            <p>~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~<br>~D-Country~</p>

            <!--
            <p>Weiterführende Information(en) zur gewählten Lieferadresse (optional):</p>
            {D-MultiDeliveryUsed}<p>Diese Lieferadresse wird mindestens einmal verwendet.</p>{/D-MultiDeliveryUsed}
            {D-MultiDeliveryMultipleUsed}<p>Diese Lieferadresse wird ~D-MultiDeliveryMultipleUsed~ Mal verwendet.</p>{/D-MultiDeliveryMultipleUsed}
            {D-OneTime}<p>Diese Lieferadresse wird nicht gespeichert und nur für diese Bestellung verwendet.</p>{/D-OneTime}
            {!D-OneTime}<p>Diese Lieferadresse ist in Ihrem Kundenkonto gespeichert.</p>{/!D-OneTime}
            -->
         {/!D-MultiDeliveryBillAddressUsed}         
      
      {/BASKET-PR-D-SingleData}
   {/BASKET-PR-D}

   {ST-DelivCountryDiffersMultiDelivery_error}
      Verwendeten Adressen sind nicht aus gleichem Land
   {/ST-DelivCountryDiffersMultiDelivery_error}

{/BASKET-PR-D_available}

 

Alle Tags, die speziell für das Feature "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" zur Verfügung stehen, finden Sie unter folgendem Link:

Referenz: Split-Order: Tags

Schritt 6: Template Bestellübersichtsseite (ws_place_order.htm) ergänzen

Fügen Sie auf der Bestellübersichtsseite (ws_place_order.htm) folgenden Code ein:

...
{ST-MultiDeliveryErrorsFixed}
   Ihre Einstellungen zu den verwendeten Versandadressen wurde automatisch korrigiert.<br>
   Bitte überprüfen Sie Ihre Angaben erneut, bevor Sie Ihre Bestellung abschließen.
{/ST-MultiDeliveryErrorsFixed}
...

Referenz: ST-MultiDeliveryErrorsFixed

Schritt 7: Versandart nur bei MultiDelivery/Split-Order verfügbar (optional)

Sie haben die Möglichkeit, Versandarten nur bei Verwendung von MultiDelivery oder Split-Order zur Verfügung zu stellen. Für diese Abhängigkeit ergänzen Sie die Shopkonfiguration shop.config im Abschnitt <DelivererAddressDependencies-Definitions> mit einem neuen <+AddressDependency>-Abschnitt (siehe oben Versandarten abhängig von Adressdaten deaktivieren: DelivererAddressDependencies-Definitions):

<DelivererAddressDependencies-Definitions>
   ...
   <+AddressDependency>
      AddressDependency-ID    = splitdependency                  # ID für die Zuweisung der Versandarten
      ShowDisabled-Txt        = Diese Versandart steht nur bei Verwendung "Lieferung an mehrere Adressen" (MultiDelivery/Split-Order) zur Verfügung.
      <+DependencyGroup>
         <+Dependency>
            Input             = delivaddress-multideliveryused
         </+Dependency>
      </+DependencyGroup>
   </+AddressDependency>
   ...
</DelivererAddressDependencies-Definitions>

Der Wert delivaddress-multideliveryused bedeutet, dass die zugeordnete Versandart nur verfügbar ist, wenn die Option "An mehrere Adressen liefern" vom Käufer gewählt wurde.
Mit delivaddress-oneforallused hingegen wird die Versandart nur dann verfügbar, wenn der Käufer genau eine von der Rechnungsadresse abweichende Lieferadresse (ALA) ausgewählt hat.
Wählt der Käufer als Lieferadresse seine Rechnungsadresse, ist die zugeordnete Versandart bei beiden Werten nicht verfügbar.

Referenz: Abschnitt <DelivererAddressDependencies-Definitions>

Weisen Sie die Abhängigkeit von der Auswahl der Lieferadresse mit Hilfe der AddressDependency-ID den gewünschten Versandarten zu:

<+Deliverer>
   ...
   Name-Txt                   = Express-Zustellung
   ...
   +UseAddressDependency-ID   = splitdependency    # Versandart nur bei mehreren Lieferadressen (MultiDelivery/Split-Order) verfügbar.
   ...
</+Deliverer> 

Referenz: Abschnitt <+Deliverer>

Schritt 8: Zusatzinformationen zu Versandarten nur bei MultiDelivery/Split-Order aktivieren (optional)

Ergänzen Sie die Shopkonfiguration shop.config im Abschnitt <DelivererAdditionalInput-Definitions> mit einem neuen <+AdditionalInput>-Abschnitt (siehe oben Zusatzinformationen zu Versandarten abfragen: "DelivererAdditionalInput-Definitions"):

<DelivererAdditionalInput-Definitions>
   ...
   <+AdditionalInput>
      ID          = multidelivery                   # ID für die Zuweisung der Versandarten
      Type        = input
      ...
      <+VisibilityDependency>
         <+Dependency>
            Input = delivaddress-multideliveryused
         </+Dependency>
      </+VisibilityDependency>
      <+RequiredDependency>
         <+Dependency>
            Input = delivaddress-multideliveryused
         </+Dependency>
      </+RequiredDependency>
   </+AdditionalInput>
   ...
</DelivererAdditionalInput-Definitions>

Der Wert delivaddress-multideliveryused bedeutet, dass die zugeordnete Versandart nur dann ein zusätzliches (Pflicht-)Eingabefeld erhält, wenn mehrere Lieferadressen (MultiDelivery/Split-Order) vom Käufer eingegeben wurden. Hat der Käufer genau eine von der Rechnungsadresse abweichende Lieferadresse (ALA) ausgewählt, können Sie mit dem Wert delivaddress-oneforallused die Zusatzinformation zur Versandart als Pflichtfeld ausgeben lassen. Wählt der Käufer als Lieferadresse seine Rechnungsadresse, wird die Zusatzinformation bei beiden Werten nicht angezeigt.

Referenz: Abschnitt <DelivererAdditionalInput-Definitions>

Weisen Sie die Zusatzinformation, die abhängig von der Verwendung der Split-Order-Funktion ist, den gewünschten Versandarten zu:

<+Deliverer>
   ...
   Name-Txt               = Spedition
   ...
   +UseAdditionalInput-ID = multidelivery    # Versandart erhält nur bei MultiDelivery/Split-Order ein zusätzliches (Pflicht-)Eingabefeld
   ...
</+Deliverer>

Referenz: Abschnitt <+Deliverer>

Haben Sie alle Schritte durchgeführt, ist die Funktion "Mehrere Lieferadressen auswählen (MultiDelivery)" vollständig integriert.

Zum Inhaltsverzeichnis

5.4.2 Eine Warenkorbposition aufteilen und an mehrere Lieferadressen senden (Split-Order)

Mit dieser Funktion kann jede Warenkorbposition in frei definierbaren Mengen aufgeteilt und an mehrere Lieferadressen versendet werden.

 

Voraussetzung

Um im Shop die Funktion Versand an mehrere Lieferadressen pro Warenkorbposition anzubieten, integrieren Sie zuerst die Funktion "Versand an eine Lieferadresse pro Warenkorbposition (MultiDelivery)". Ebenso ist eine Konfiguration der Produktdaten notwendig.

Schritt 1: Freischaltung/Aktivierung

Für diese Funktion ist keine Freischaltung/Aktivierung seitens WEBSALE notwendig.

Schritt 2: Produktdaten anpassen für Split-Order

Jedes Produkt, das für die Funktion Split-Order zur Verfügung stehen soll, muss in den Produktdaten (im Produktdatenfeld MultiDeliveryAddressOptions) entsprechend konfiguriert werden. Informationen hierzu finden Sie in der separaten Produktdaten-Dokumentation unter https://doku.websale.de/schnittstellen.

Format: <mda><1>Anzahl zulässiger Splits</1><2>(optional) verfügbar ab Menge</2><3>(optional) Staffelung</3></mda>

Beispiel: <mda><1>5</1><2>6</2><3>2</3></mda>

Schritt 3: Kostenstaffel in der Shopkonfiguration anpassen (optional)

Vergeben Sie Versandkosten abhängig von der Anzahl der Lieferadressen pro Warenkorbposition.

Das Format einer Staffelung innerhalb einer Klammer besteht aus je 3 Elementen: (<Anzahl Lieferadressen>:<prozentuale Kosten>:<absolute Kosten>)

<Delivery>
   ...
   MultiDeliveryAddressPerBasketPositionCost-List = (2:5.00%:2.00)(3::1.90)(5:4.50%:)    # Kostenstaffel nur bei Split-Order (optional)
   ...
</Delivery>

Referenz: Abschnitt <Delivery>

Ergänzen Sie in der Shopkonfiguration shop.config im Abschnitt <VAT> die gewünschten Einstellungen für die Mehrwertsteuer-Berechnung der Versandkosten:

<VAT>
   ...
   MultiDeliveryAddressUsageVATType   =  static         # Berechnung des Mehrwertsteuersatzes
   MultiDeliveryAddressUsageVATRate   =  1              # Mehrwertsteuerindex (nur bei MultiDeliveryAddressUsageVATType = static)
   ...
</VAT>

Referenz: Abschnitt <VAT>

Schritt 4: Template CombinedAddress anpassen

Fügen Sie in die bereits vorhandene Klammerung {WS-MultiDelivery_available} den folgenden Bereich ein.

{WS-MultiDelivery_available}
   ...
   {@BASKET-PR-Data}
      ...
      {BASKET-PR-D_available}
         ...
         <!-- MultiDelivery -->
         <!-- Vorhandener Quellcode für die Funktion "Auswahl EINER Lieferadresse pro Warenkorb-Position" --->
         ...
 
         <!-- Split Order -->
         <!-- Auswahl der Produktmenge für Lieferungen an unterschiedliche Adressen -->
         {BASKET-PR-MultiDeliveryAddress_available}
 
            {WS-TplComment}<!--
            <p>Liefersplit-Informationen für dieses Produkt:</p>
            {BASKET-PR-MultiDeliveryAddress_mda_available}
               {BASKET-PR-MultiDeliveryAddress_mda_minorderqty}
                  <p>Verfügbar ab Menge ~BASKET-PR-MultiDeliveryAddress_mda_minorderqty~.</p> 
               {/BASKET-PR-MultiDeliveryAddress_mda_minorderqty}
               <p>Auf <b>max. ~BASKET-PR-MultiDeliveryAddress_mda_maxaddresses~ Adressen</b> aufteilbar.</p> 
               {BASKET-PR-MultiDeliveryAddress_mda_denomination}
                  <p>Staffelungsgröße: ~BASKET-PR-MultiDeliveryAddress_mda_denomination~</p>
               {/BASKET-PR-MultiDeliveryAddress_mda_denomination}
            {/BASKET-PR-MultiDeliveryAddress_mda_available}
            -->{/WS-TplComment}
 
            {BASKET-PR-MultiDeliveryAddressUsageCost}
               <p>Der Aufpreis für den Versand an Ihre gewünschte Adresse beträgt ~BASKET-PR-MultiDeliveryAddressUsageCost~ ~WS-Currency~.</p>
            {/BASKET-PR-MultiDeliveryAddressUsageCost}
 
            {BASKET-PR-D-MultiDataquantityleft}   
               <p>Für die Restmenge von ~BASKET-PR-D-MultiDataquantityleft~ wurde keine Lieferadresse angegeben.</p>
               <p>Bitte passen Sie Ihre Lieferadresse(n) an, um die Bestellung abzuschließen.</p>      
            {/BASKET-PR-D-MultiDataquantityleft}
 
         {/BASKET-PR-MultiDeliveryAddress_available}
 
         <!-- Split Order -->
         <!-- Versand an mehrere Lieferadresse pro Warenkorbposition-->
         {BASKET-PR-D-MultiData}
 
            <p>Lieferung Ihres Produkt erfolgt an ~BASKET-PR-D-MultiData~ Adresse(n)</p>
 
            {@BASKET-PR-D-MultiData}
               <!-- Diese Lieferadresse innerhalb der Position wurde geändert -->
               {BASKET-PR-D-MDMaffected}<p>Die Lieferadresse wurde wie gewünscht geändert.</p>{/BASKET-PR-D-MDMaffected}
 
               {BASKET-PR-D-MultiData_quantity_input}
                  <input tpye="text" name="~BASKET-PR-D-MultiData_quantity_input~" value="~BASKET-PR-D-MultiData_quantity~"> gehen an: 
               {/BASKET-PR-D-MultiData_quantity_input}
 
               {D-MultiDeliveryBillAddressUsed}
                  <p>Lieferung erfolgt an <b>meine Rechnungsadresse</b>.</p>
               {/D-MultiDeliveryBillAddressUsed}
 
               {!D-MultiDeliveryBillAddressUsed}
                  <p>Lieferung erfolgt an <b>folgende Lieferadresse(n)</b>:</p>
                  <p>~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~<br>~D-Country~</p>
                  {WS-TplComment}
                  <!--
                  <p><b>Weiterführende Information(en) zur gewählten Lieferadresse (optional):</b></p>
                  {D-MultiDeliveryUsed}<p>Diese Lieferadresse wird mindestens einmal verwendet.</p>{/D-MultiDeliveryUsed}
                  {D-MultiDeliveryMultipleUsed}<p>Diese Lieferadresse wird ~D-MultiDeliveryMultipleUsed~ Mal verwendet.</p>{/D-MultiDeliveryMultipleUsed}
                  {D-OneTime}<p>Diese Lieferadresse wird nicht gespeichert und nur für diese Bestellung verwendet.</p>{/D-OneTime}
                  {!D-OneTime}<p>Diese Lieferadresse ist in Ihrem Kundenkonto gespeichert.</p>{/!D-OneTime}
                  -->
                  {/WS-TplComment}
               {/!D-MultiDeliveryBillAddressUsed}
 
               <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-MultiData_ButtonValue_edit~">ändern</button>
               <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-MultiData_ButtonValue_delete~">löschen</button>
 
            {/@BASKET-PR-D-MultiData}
 
         {/BASKET-PR-D-MultiData}
 
         {BASKET-PR-D-MultiDataAvailable}
            <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-ButtonValue_new~">Lieferadresse auswählen</button>
         {/BASKET-PR-D-MultiDataAvailable}
 
      {/BASKET-PR-D_available}
 
      ...
   {/@BASKET-PR-Data}
   ...
{/WS-MultiDelivery_available}

Alle Tags, die speziell für das Feature "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" zur Verfügung stehen, finden Sie unter folgendem Link:

Referenz: Split-Order: Tags

Schritt 5: Template Warenkorbseite (ws_basket.htm) anpassen

Fügen Sie den Quellcode innerhalb von {@BASKET-PR-Data}, {BASKET-PR-D_available} und {BASKET-PR-D} ein.

{@BASKET-PR-Data}
 
   {BASKET-PR-D_available}
      ...
      {BASKET-PR-D}
         ...
         <!-- MultiDelivery -->
         <!-- Vorhandener Quellcode für die Funktion "Auswahl EINER Lieferadresse pro Warenkorb-Position" --->
         ...
 
         <!-- Split Order -->
         <!-- Versand an mehrere Lieferadresse pro Warenkorbposition-->
         {BASKET-PR-D-MultiData}
            <p>Für das Produkt wurden <b>~BASKET-PR-D-MultiData~</b> unterschiedliche Lieferadresse(n) definiert:</p>
            {@BASKET-PR-D-MultiData}
            
               <p>Für <b>~BASKET-PR-D-MultiData_quantity~ Stück</b> erfolgt die Lieferung an:</p>
               
               {D-MultiDeliveryBillAddressUsed}
                  <p>Ihre <b>Rechnungsadresse</b>:</p>
                  <p>~A-FirstName~ ~A-LastName~<br>~A-Street1~<br>~A-Zip~ ~A-City~<br>~A-Country~</p>
               {/D-MultiDeliveryBillAddressUsed}
               
               {!D-MultiDeliveryBillAddressUsed}
                  <p>Diese <b>Lieferadresse</b>:</p>            
                  <p>~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~<br>~D-Country~</p>
                  {WS-TplComment}<!--
                  <p><b>Weiterführende Information(en) zur gewählten Lieferadresse (optional):</b></p>
                  {D-MultiDeliveryUsed}<p>Diese Lieferadresse wird mindestens einmal verwendet.</p>{/D-MultiDeliveryUsed}
                  {D-MultiDeliveryMultipleUsed}<p>Diese Lieferadresse wird ~D-MultiDeliveryMultipleUsed~ Mal verwendet.</p>{/D-MultiDeliveryMultipleUsed}
                  {D-OneTime}<p>Diese Lieferadresse wird nicht gespeichert und nur für diese Bestellung verwendet.</p>{/D-OneTime}
                  {!D-OneTime}<p>Diese Lieferadresse ist in Ihrem Kundenkonto gespeichert.</p>{/!D-OneTime}
                  -->{/WS-TplComment}
               {/!D-MultiDeliveryBillAddressUsed}
               <hr>
            {/@BASKET-PR-D-MultiData}
 
            {BASKET-PR-D-MultiDataquantityleft}
               <p>Für die Restmenge von ~BASKET-PR-D-MultiDataquantityleft~ wurde keine Lieferadresse angegeben.</p>
               <p>Bitte passen Sie IHre Lieferadresse an, um die Bestellung abzuschließen.</p>
            {/BASKET-PR-D-MultiDataquantityleft}
 
         {/BASKET-PR-D-MultiData}
      {/BASKET-PR-D}
      ...
   {/BASKET-PR-D_available}
 
{/@BASKET-PR-Data}

Alle Tags, die speziell für das Feature "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" zur Verfügung stehen, finden Sie unter folgendem Link:

Referenz: Split-Order: Tags

Schritt 6: Zusätzliche Kosten für Split-Order ausgeben (optional)

Wenn Sie für Split-Order zusätzliche Kosten verlangen (Parameter MultiDeliveryAddressPerBasketPositionCost-List), zeigen Sie diese Beträge mit dem Tag BASKET-TotalMultiDeliveryAddressUsageCost an. Fügen Sie folgenden Code an den entsprechenden Stellen auf der Warenkorbseite (ws_basket.htm) und Bestellübersichtsseite (ws_place_order.htm) ein.

{BASKET-PR-Data}
   ...
   {BASKET-TotalMultiDeliveryAddressUsageCost}
      Gesamt-Aufpreis für Split-Order: ~BASKET-TotalMultiDeliveryAddressUsageCost~ ~WS-CurrencySymbol~
   {/BASKET-TotalMultiDeliveryAddressUsageCost}
   ...
{/BASKET-PR-Data}

Referenz: BASKET-TotalMultiDeliveryAddressUsageCost

Schritt 7: Versandart nur bei MultiDelivery/Split-Order verfügbar (optional)

Siehe oben MultiDelivery

Schritt 8: Zusatzinformationen zu Versandarten nur bei MultiDelivery/Split-Order aktivieren (optional)

Siehe oben MultiDelivery

Schritt 9: Mehrfaches Auswählen der Rechnungsadresse als Lieferadresse ermöglichen (optional)

Wenn dem Käufer ermöglicht werden soll, bei der Auswahl der Lieferadressen mehrfach seine Rechnungsadresse auszuwählen, nutzen Sie folgenden Parameter:

<Delivery>
   ...
   MultipleBillAddressUsageForSingleBasketPosition-Allow = yes
   ...
</Delivery>

Referenz: Abschnitt <Delivery>

Haben Sie alle Schritte durchgeführt, ist die Funktion "Split-Order" vollständig integriert.

Zum Inhaltsverzeichnis

5.4.3 Belegexemplare versenden (SampleCopy)

Mit diesem Feature ist eine Erweiterung der Produktdaten möglich, mit der ein Versand von Belegexemplaren (z. B. im Zusammenhang mit Druckaufträgen) möglich ist.

Die Integrationsbeschreibung baut auf der Integration von "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" auf, da Belegexemplare nicht als eigenständige Funktion integriert werden können. Integrieren Sie also zunächst die Funktion "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" gemäß obenstehender Anleitung und erweitern Sie diese Integration um die nachfolgenden Schritte.

Schritt 1: Freischaltung/Aktivierung

Für diese Funktion ist keine Freischaltung/Aktivierung seitens WEBSALE notwendig.

Schritt 2: Produktdaten anpassen

Jedes Produkt, das für die Funktion "Belegexemplare" zur Verfügung stehen soll, muss in den Produktdaten entsprechend konfiguriert werden. Informationen hierzu finden Sie in der separaten Produktdaten-Dokumentation unter
https://doku.websale.de/schnittstellen.

Format: <mda><1>5</1><2>6</2><3>2</3></mda><sc><1>Kosten (und Steuerung) verfügbar</1><2>(opt.) verfügbar ab Menge</2><3>SampleCopy Menge</3></sc>

Beispiel: <mda><1>5</1><2>6</2><3>2</3></mda><sc><1>3.00</1><2>6</2><3>1</3></sc>

Schritt 3: Shopkonfiguration anpassen

Ergänzen Sie in der Shopkonfiguration shop.config im Abschnitt <VAT> folgende Parameter und Werte:

<VAT>
   ...
   SampleCopyVATType                  =  static        # Berechnung des Mehrwertsteuersatzes
   SampleCopyVATRate                  =  1             # Mehrwertsteuerindex (nur bei MultiDeliveryAddressUsageVATType = static)
   ...
</VAT>

Referenz: Abschnitt <VAT>

Schritt 4: Template Rechnungs- und Lieferadressseite im Bestellablauf (ws_address_combined.htm) anpassen

Hinweis: Die für die Funktion "Belegexemplare" relevanten Code-Zeilen sind in den folgenden Beispielen fett hervorgehoben. Die restlichen Code-Zeilen entsprechen der im Vorfeld vorgenommenen Integration der Funktion "MultiDelivery/Split-Order".

Fügen Sie die folgenden 3 fett hervorgehobenen Codeschnipsel doppelt in die Rechnungs- und Lieferadressseite im Bestellablauf (ws_address_combined.htm) ein – jeweils innerhalb der Klammern {ST-SingleData} als auch {ST-MultipleData}:
 

{WS-MultiDelivery_available}
An mehrere Adressen liefern
...
{@BASKET-PR-Data}
   ...
   {BASKET-PR-MultiDeliveryAddress_available}
      Mehrere Lieferadressen pro Position ist bei diesem Produkt möglich.<br>
      Liefersplit-Info: 
      ...
      {BASKET-PR-MultiDeliveryAddress_mda_available}
         ...
      {/BASKET-PR-MultiDeliveryAddress_mda_available}

      <!-- Infos zur Konfiguration von Belegexemplare (SampleCopy) -->
      Belegexemplar-Info: {!BASKET-PR-MultiDeliveryAddress_sc_available}Nicht verfügbar{/!BASKET-PR-MultiDeliveryAddress_sc_available}
      {BASKET-PR-MultiDeliveryAddress_sc_available}
         {BASKET-PR-MultiDeliveryAddress_sc_minorderqty}
            Verfügbar ab einer Bestellmenge von ~BASKET-PR-MultiDeliveryAddress_sc_minorderqty~. 
         {/BASKET-PR-MultiDeliveryAddress_sc_minorderqty}
         {BASKET-PR-MultiDeliveryAddress_sc_price}
            Aufpreis: ~BASKET-PR-MultiDeliveryAddress_sc_price~. 
         {/BASKET-PR-MultiDeliveryAddress_sc_price}
         {BASKET-PR-MultiDeliveryAddress_sc_quantity}
            Anzahl an gelieferten Belegexemplaren: ~BASKET-PR-MultiDeliveryAddress_sc_quantity~
         {/BASKET-PR-MultiDeliveryAddress_sc_quantity}
         <br>
      {/BASKET-PR-MultiDeliveryAddress_sc_available}
      <!-- Ende Infos zur Konfiguration von Belegexemplare (SampleCopy) -->
   
   {/BASKET-PR-MultiDeliveryAddress_available}
   ...
   {BASKET-PR-D_available}
      ...
      {BASKET-PR-D-SingleData}
         ...
      {/BASKET-PR-D-SingleData}

      {BASKET-PR-D-MultiData}
         ...
         {@BASKET-PR-D-MultiData}
            ...
            <!-- Anzeige Belegexemplare (SampleCopy) -->
            {BASKET-PR-D-MultiData_SampleCopy}
               ~BASKET-PR-MultiDeliveryAddress_sc_quantity~ Belegexemplar(e) gehen an:
            {/BASKET-PR-D-MultiData_SampleCopy}
            <!-- Ende Anzeige Belegexemplare (SampleCopy) -->

            {BASKET-PR-D-MultiData_quantity_input}
               ...
            {/BASKET-PR-D-MultiData_quantity_input}
            ...
            ...
         {/@BASKET-PR-D-MultiData}
         ...
      {/BASKET-PR-D-MultiData}

      <!-- Button für die Bestellung der Belegexemplare (SampleCopy) -->
      {BASKET-PR-D-SampleCopyAvailable}
         Belegexemplar bitte <button name="~BASKET-PR-D-ButtonName~" type="submit" value="~BASKET-PR-D-ButtonValue_SampleCopy_new~">bestellen</button>
         <br>
      {/BASKET-PR-D-SampleCopyAvailable}
      {BASKET-PR-D-SampleCopySelected}
         Belegexemplar gewählt<br>
         {BASKET-PR-SampleCopyCost}
            Kosten für Belegexemplare: ~BASKET-PR-SampleCopyCost~ ~WS-Currency~.<br>
         {/BASKET-PR-SampleCopyCost}
         {!BASKET-PR-SampleCopyCost}
            Für Belegexemplare fallen keine Kosten an.<br>
         {/!BASKET-PR-SampleCopyCost}
      {/BASKET-PR-D-SampleCopySelected}
      <!-- Ende Button Belegexemplare (SampleCopy) -->

      {BASKET-PR-D-MultiDataAvailable}
         ...
      {/BASKET-PR-D-MultiDataAvailable}
      ...
   {/BASKET-PR-D_available}
   ...
{/@BASKET-PR-Data}
...
{/WS-MultiDelivery_available}

 

Schritt 5: Template Warenkorbseite (ws_basket.htm) anpassen

Ergänzen Sie im Warenkorb folgenden (fett hervorgehobenen) Code innerhalb der Klammer {@BASKET-PR-Data}:
 

{BASKET-PR-Data}
   ...
   {@BASKET-PR-Data}
   ...
   ...
      <!-- MultiDelivery/Split-Order -->
      {BASKET-PR-MultiDeliveryAddress_available}
         Mehrere Lieferadressen pro Position sind bei diesem Produkt möglich
         Liefersplit-Info: ...
         {BASKET-PR-MultiDeliveryAddress_mda_available}
            ...
         {/BASKET-PR-MultiDeliveryAddress_mda_available}

         <!-- Infos zur Konfiguration der Belegexemplare (SampleCopy) -->
         Belegexemplar-Info: 
         {!BASKET-PR-MultiDeliveryAddress_sc_available}
            Belegexemplar bei diesem Produkt nicht verfügbar
         {/!BASKET-PR-MultiDeliveryAddress_sc_available}
         {BASKET-PR-MultiDeliveryAddress_sc_minorderqty}
            Verfügbar ab einer Bestellmenge von ~BASKET-PR-MultiDeliveryAddress_sc_minorderqty~. 
         {/BASKET-PR-MultiDeliveryAddress_sc_minorderqty} 
         {BASKET-PR-MultiDeliveryAddress_sc_price}
            Aufpreis: ~BASKET-PR-MultiDeliveryAddress_sc_price~
         {/BASKET-PR-MultiDeliveryAddress_sc_price}
         {BASKET-PR-MultiDeliveryAddress_sc_quantity}
            Anzahl an gelieferten Belegexemplaren: ~BASKET-PR-MultiDeliveryAddress_sc_quantity~
         {/BASKET-PR-MultiDeliveryAddress_sc_quantity}
         <br>
         <!-- Ende Infos Belegexemplare (SampleCopy) -->

      {/BASKET-PR-MultiDeliveryAddress_available}
   
      {BASKET-PR-D_available}
         ...
         {BASKET-PR-D}
            ...
            {BASKET-PR-D-MultiData}
            Lieferung an ~BASKET-PR-D-MultiData~ Adressen:<br>
               {@BASKET-PR-D-MultiData}
                  ...
                  <!-- Info über Anzahl und ausgewählte Lieferadresse des Belegexemplars -->
                  {BASKET-PR-D-MultiData_SampleCopy}
                     ~BASKET-PR-MultiDeliveryAddress_sc_quantity~ Belegexemplar(e) gehen an: 
                     {D-MultiDeliveryBillAddressUsed}~A-FirstName~ ~A-LastName~ (Rechnungsadresse){/D-MultiDeliveryBillAddressUsed}
                     {!D-MultiDeliveryBillAddressUsed}~D-FirstName~, ~D-LastName~{/!D-MultiDeliveryBillAddressUsed}<br>
                     ({D-MultiDeliveryUsed}mind. einmal verwendet{/D-MultiDeliveryUsed} - {D-MultiDeliveryMultipleUsed}insgesamt ~D-MultiDeliveryMultipleUsed~x verwendet{/D-MultiDeliveryMultipleUsed} - {D-OneTime}nicht gespeichert{/D-OneTime}{!D-OneTime}aus Kundenkonto{/!D-OneTime})<br>
                  {/BASKET-PR-D-MultiData_SampleCopy}
                  <!-- Ende Info über Belegexemplare -->            

               {@BASKET-PR-D-MultiData}
            {/BASKET-PR-D-MultiData}
         {/BASKET-PR-D}
         
      {/BASKET-PR-D_available}
      ...
      ...
      ...
   {/@BASKET-PR-Data}

{/BASKET-PR-Data}

 

Falls Sie in den Produktdaten zusätzliche Kosten für Belegexemplare konfiguriert haben, zeigen Sie diesen Aufpreis an den entsprechenden Stellen auf der Warenkorbseite (ws_basket.htm) und der Bestellübersichtsseite (ws_place_order.htm) an:

{BASKET-TotalSampleCopyCost}
   Aufpreis für Belegexemplare: ~BASKET-TotalSampleCopyCost~ ~WS-CurrencySymbol~
{/BASKET-TotalSampleCopyCost}

 


Hinweis:

Belegexemplare werden bei der Versandkostenstaffel für Split-Order (Parameter MultiDeliveryAddressPerBasketPositionCost-List) nicht berücksichtigt.

Wenn im Parameter DeliveryCostCalculation-Mode die Option CalculateSeparateForEachPositionAndUsedDeliveryAddress konfiguriert ist, werden für den Versand des Belegexemplars die Standard-Versandkosten (Abschnitt <+Deliverer>) berechnet.

Alle Tags, die speziell für die Features "Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)" und "Belegexemplare versenden (SampleCopy)" zur Verfügung stehen, finden Sie unter folgendem Link:
Referenz: Split-Order: Tags

Haben Sie alle Schritte durchgeführt, ist die Funktion "Belegexemplare versenden" vollständig integriert.

Zum Inhaltsverzeichnis

5.4.4 Versandart pro Warenkorbposition und Lieferadresse einzeln auswählbar (MultiDelivererSelection)

Die Auswahl der Versandart erfolgt standardmäßig immer für einen kompletten Warenkorb. Durch die Funktion MultiDelivererSelection können Sie für jede Warenkorbposition und jede Versandadresse (MultiDelivery/Split-Order) eine eigene Versandart (unterschiedliche Versanddienstleister) auswählen.

 

Bedingungen

Für die Anzeige der Versandarten-Auswahl wird die Einzelpositionierung der Versandarten (siehe oben Einzelpositionierung der Versandarten) benötigt. Das einzelne Tag WS-DeliveryFields wird bei MultiDelivererSelection nicht unterstützt.

Ebenso muss die Funktion MultiDelivery/Split-Order bereits konfiguriert und implementiert sein (siehe oben Mehrere Lieferadressen auswählen (MultiDelivery/Split-Order)).

Wegweiser: Einzelpositionierung der Versandarten
Referenz: DELIV-Data-Tags


Hinweis:

Die MultiDelivererSelection muss den Warenkorb durchlaufen und daher innerhalb der {@BASKET-PR-Data}-Schleife platziert werden. Für eine rein informative Anzeige der Versandarten können die DELIV-Data-Tags der Einzelpositionierung immer in den BASKET-Schleifen verwendet werden.

Einschränkungen

Beachten Sie bitte bei der Migration auf MultiDelivererSelection die Auswirkungen auf andere Funktionen:

Bei MultiDelivererSelection wird stets versucht, die erste verfügbare Versandart oder bei angemeldeten Bestandskunden die zuletzt verwendete Versandart im Warenkorb zu verwenden. Dies betrifft auch die globalen Tags WS-Delivery, WS-DeliveryID und WS-DeliveryIndex, die konfigurierten Informationstexte zu den einzelnen Versandarten (Country-Txt, Suffix-Txt, usw.) und die Variable "ws_delivery_name" in der Trackingschnittstelle. Bei unterschiedlichen Versandarten innerhalb einer Bestellung wird dann nur die erste verwendete Versandart für zukünftige Bestellungen gespeichert.

Bei "easyCredit-Ratenkauf" wird die erste verwendete Versandart übermittelt.

Das Tag WS-FreeDeliveryRest (fehlender Restbetrag bis zur versandkostenfreien Lieferung) wird nicht unterstützt.

Das Feature EigenhändigPlus wird nicht unterstützt.

Der Frachtkostenkalkulator wird nicht unterstützt.

Die Abhängigkeit der Versandart vom Lagerbestand (Parameter AllowForInventoryStateAtLeast) wird nicht unterstützt.

Die Abhängigkeit der Versandart von entsprechend gekennzeichneten Produkten (Parameter DeliveryFilterID-List) wird nicht unterstützt

Der Parameter DeliveryCostCalculation-Mode wird nicht beachtet. Die Versandkosten werden immer pro Lieferadresse/Versandart berechnet.

AutoOrder/Bestellgenerator: Es wird versucht, die gewünschte Versandart für alle Positionen und Lieferadressen vorzubelegen. Ist dies nicht möglich, wird automatisch die erste verfügbare Versandart zugeordnet.

Der Parameter BookDeliveryType für die Festlegung, wann eine Bestellung als "Büchersendung" ausgezeichnet wird, ist hinfällig. MultiDelivererSelection entscheidet bei jeder Warenkorbposition einzeln, ob es sich um eine Büchersendung handelt oder nicht.

Schritt 1: Freischaltung/Aktivierung

Für diese Funktion ist keine Freischaltung/Aktivierung seitens WEBSALE notwendig.

Schritt 2: Einstellungen in der Shopkonfiguration shop.config

Stellen Sie im Abschnitt <Delivery> der Shopkonfiguration shop.config den Parameter DelivererSelectionPerBasketPosition-Allow auf yes um die Funktion zu aktivieren.

<Delivery>
   ...
   DelivererSelectionPerBasketPosition-Allow = yes     # [yes|no|test]
   ...
</Delivery>

Referenz: Abschnitt <Delivery>

Schritt 3: Integration auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm)

Der Shopkunde kann durch MultiDelivererSelection für jede Warenkorbposition und jede Lieferadresse (MultiDelivery/Split-Order) im Checkout-Prozess die Versandart einzeln auswählen.

Folgendes Code-Beispiel ersetzt die Auswahl der Versandart (Einzel-Tag ~WS-DeliveryFields~) auf der Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm). Für eine bessere Übersichtlichkeit wird der Code mit den Einzelpositionierungs-Tags durch ~WS-Fast_Include(Incl-DelivererSelection)~ ins Template incl_fast_includes.htm ausgelagert. Diesen Code für die Auswahl der Versandart finden Sie oben unter Code-Beispiel (komplett) für die Zahlungs- und Versandarten-Seite (ws_pay_deliv.htm).

 

<form action="~FORM-PayDeliv~" method="post" name="PaymentDelivery" id="PaymentDelivery">
...
<h1>Zahlungsarten</h1>
...
{!ST-MultiDelivererSelection}
   <h1>Versandarten (einzelpositioniert, One4All)</h1>
   <!-- Fügen Sie hier die einzelpositionierte Auswahl der Versandarten ein -->
   ~WS-Fast_Include(Incl-DelivererSelection)~
{/!ST-MultiDelivererSelection}

{ST-MultiDelivererSelection}
   <h1>Versandarten (einzelpositioniert, pro Position/Split-Order auswählbar)</h1>

   {@BASKET-PR-Data}
      <div>
         ~BASKET-PR-Name~<br>
         
         {!BASKET-PR-D_available}<!-- MultiDelivery nicht verfügbar -->
            Keine eigene Versandadresse pro Position auswählbar:<br>
            <!-- alles an eine Lieferadresse global -->
            {WS-DelivAddr}an Lieferadresse: ~D-FirstName~, ~D-LastName~, ~D-Country~{/WS-DelivAddr}
            {!WS-DelivAddr}an Rechnungsadresse: ~A-FirstName~, ~A-LastName~, ~A-Country~{/!WS-DelivAddr}
            ~BASKET-PR-Quantity~ liefern per: <br>
            <!-- Fügen Sie hier die einzelpositionierte Auswahl der Versandarten ein -->
            ~WS-Fast_Include(Incl-DelivererSelection)~
         {/!BASKET-PR-D_available}
         
         {BASKET-PR-D_available}<!-- MultiDelivery verfügbar -->  
            {!WS-DelivAddr_radioselected_inputmultidelivery}
               Eigene Versandadresse pro Position verfügbar, aber eine Adresse 4all ausgewählt: <br>
               {WS-DelivAddr}an Lieferadresse: ~D-FirstName~, ~D-LastName~, ~D-Country~<br>{/WS-DelivAddr}
               {!WS-DelivAddr}an Rechnungsadresse: ~A-FirstName~, ~A-LastName~, ~A-Country~<br>{/!WS-DelivAddr}
               <!-- alles an eine Lieferadresse global -->
               ~BASKET-PR-Quantity~ liefern per: <br>
               <!-- Fügen Sie hier die einzelpositionierte Auswahl der Versandarten ein -->
               ~WS-Fast_Include(Incl-DelivererSelection)~
            {/!WS-DelivAddr_radioselected_inputmultidelivery}
            {WS-DelivAddr_radioselected_inputmultidelivery}
               Individuelle Versandadresse pro Position bzw. Split-Order ausgewählt:<br>
               {BASKET-PR-D-SingleData} <!-- Genau eine Lieferadresse wurde gewählt -->
                  {D-MultiDeliveryBillAddressUsed}
                     Gesamtlieferung erfolgt an Rechnungsadresse<br>
                  {/D-MultiDeliveryBillAddressUsed}
                  {!D-MultiDeliveryBillAddressUsed}
                     Gesamtlieferung erfolgt an: ~D-FirstName~, ~D-LastName~
                     <!-- Infos über die ausgewählte Lieferadresse -->
                     ({D-MultiDeliveryUsed}mind. einmal verwendet{/D-MultiDeliveryUsed} -
                     {D-MultiDeliveryMultipleUsed}~D-MultiDeliveryMultipleUsed~x verwendet{/D-MultiDeliveryMultipleUsed} -
                     {D-OneTime}nicht gespeichert{/D-OneTime}{!D-OneTime}aus Kundenkonto{/!D-OneTime})<br>
                  {/!D-MultiDeliveryBillAddressUsed}
                  Versand per:<br>
                  <!-- Fügen Sie hier die einzelpositionierte Auswahl der Versandarten ein -->
                  ~WS-Fast_Include(Incl-DelivererSelection)~
               {/BASKET-PR-D-SingleData}
               {BASKET-PR-D-MultiData} <!-- Mehrere Lieferadresse wurde gewählt -->
                  Lieferung an ~BASKET-PR-D-MultiData~ Adressen:<br>
                  {@BASKET-PR-D-MultiData}
                     {BASKET-PR-D-MultiData_SampleCopy}Belegexemplar{/BASKET-PR-D-MultiData_SampleCopy}
                     {!BASKET-PR-D-MultiData_SampleCopy}~BASKET-PR-D-MultiData_quantity~x {/!BASKET-PR-D-MultiData_SampleCopy} gehen an:
                     {D-MultiDeliveryBillAddressUsed}
                        Rechnungsadresse<br>
                     {/D-MultiDeliveryBillAddressUsed}
                     {!D-MultiDeliveryBillAddressUsed}
                        ~D-FirstName~, ~D-LastName~
                        <!-- Infos über die ausgewählte Lieferadresse -->
                        ({D-MultiDeliveryUsed}mind einmal verwendet{/D-MultiDeliveryUsed} -
                        {D-MultiDeliveryMultipleUsed}~D-MultiDeliveryMultipleUsed~ verwendet{/D-MultiDeliveryMultipleUsed} -
                        {D-OneTime}nicht gespeichert{/D-OneTime}{!D-OneTime}aus Kundenkonto{/!D-OneTime})
                     {/!D-MultiDeliveryBillAddressUsed}
                     <!-- Fügen Sie hier die einzelpositionierte Auswahl der Versandarten ein -->
                     ~WS-Fast_Include(Incl-DelivererSelection)~
                  {/@BASKET-PR-D-MultiData}
               {/BASKET-PR-D-MultiData}
            {/WS-DelivAddr_radioselected_inputmultidelivery}
         {/BASKET-PR-D_available}

      </div>
   {/@BASKET-PR-Data}

{/ST-MultiDelivererSelection}
...
</form>

 

Referenz: ST-MultiDelivererSelection
Referenz: ST-MultiDelivererSelectionErrorsFixed
Referenz: Tags Split-Order: Mehrere Lieferadressen auswählen

Schritt 4: Ausgabe der gewählten Versandart

Für die Ausgabe der gewählten Versandart fügen Sie das Einzel-Tag ~DELIV-Data_Name~ an allen Stellen innerhalb der Basket-PR-Data-Schleife ein, die auch Lieferadressen anzeigen. Das sind die Warenkorbseite (ws_basket.htm) und/oder die Bestellübersichtsseite (ws_place_order.htm). Gegebenenfalls müssen auch noch andere Templates angepasst werden, auf denen Versandarten angezeigt werden.

{@BASKET-PR-Data}
   ...
   Versand erfolgt per: ~DELIV-Data_Name~ (~DELIV-Data_index~ ~DELIV-Data_id~)
   ...
{/@BASKET-PR-Data}

Referenz: DELIV-Data_name
Referenz: DELIV-Data_index
Referenz: DELIV-Data_id

Haben Sie alle Schritte durchgeführt, ist die Funktion "Versandart pro Warenkorbposition und Lieferadresse einzeln auswählbar (MultiDelivererSelection)" vollständig integriert.

Zum Inhaltsverzeichnis