> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Versandoptionen und Services für Käufer

> Sendungsverfolgung, Teil- und Komplettlieferung, Wunsch-Liefertermin und der Versand an mehrere Lieferadressen mit MultiDelivery, Split-Order und Belegexemplaren.

Über die Versandart hinaus lassen sich dem Käufer im Bestellablauf weitere Entscheidungen anbieten: wohin geliefert wird, wann geliefert wird, in wie vielen Paketen, und wie er den Versandstatus verfolgen kann.

Diese Funktionen sind unterschiedlich aufwendig. Die Sendungsverfolgung und der Wunsch-Liefertermin stehen für sich. Die Lieferung an mehrere Adressen ist ein Baukasten aus vier aufeinander aufbauenden Teilen, bei dem Sie unten anfangen müssen.

## Sendungsverfolgung

Der Käufer sieht den Versandstatus im Shop, ohne die Seite des Dienstleisters aufzurufen. Unterstützt werden DHL, die Österreichische Post und die Schweizerische Post.

Der Ablauf ist bei allen dreien derselbe:

1. Sie schließen einen Vertrag mit dem Dienstleister und beantragen die Zugangsdaten zur Schnittstelle.
2. WEBSALE richtet die Schnittstelle ein und schaltet die Funktion frei.
3. Sie hinterlegen die Zugangsdaten im Abschnitt `<ShipTrack>`.
4. Sie bauen die Anzeige im Template, in der Regel auf der Bestellhistorie.

Damit der Shop den Status abrufen kann, braucht er die Sendungsnummer. Sie kommt aus der Warenwirtschaft, über die Infodaten- oder die REST-Schnittstelle. Ohne diesen Rückweg aus der Warenwirtschaft gibt es keine Sendungsverfolgung, egal wie die Schnittstelle konfiguriert ist.

> [!WARNING]
>
> Was der Käufer zu sehen bekommt, hängt vollständig davon ab, welche Daten der Dienstleister liefert. Das richtet sich nach dem gebuchten Leistungsumfang und nach Ihren Einstellungen im System des Dienstleisters, nicht nach dem Shop.

### Zugangsdaten hinterlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ShipTrack>
   <+Entry>
      ID           = DHL
      Provider     = DHL
      Username     = ihr-benutzername
      Password     = ihr-passwort
      LanguageCode = de
   </+Entry>
</ShipTrack>
```

Für die Österreichische Post lautet der Anbieter `POST-AT`, die Anmeldedaten sind dieselben Felder.

Die Schweizerische Post läuft anders: Sie meldet sich dort für den Bericht 11 an, WEBSALE nimmt die XML-Dateien entgegen, wandelt sie in JSON um und stellt sie über einen eigenen Endpunkt bereit.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ShipTrack>
   <+Entry>
      ID       = WSSwissPostCon
      Provider = WSSwissPostCon
      Endpoint = https://connector.websale.net/api/swiss_post/reports
   </+Entry>
</ShipTrack>
```

Bei der Schweizerischen Post ist das keine Abfrage in Echtzeit. Die Daten werden mehrmals täglich geliefert, der angezeigte Status kann also einige Stunden alt sein.

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

### Den Status im Template ausgeben

Der Shop holt die Antwort des Dienstleisters als JSON und stellt sie über die JSON-Schnittstelle bereit. Sie lesen daraus die Werte, die Sie anzeigen wollen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~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)~
      ...
   {/EJD-DataOK(shiptrack)}
{/SHIPTRACK-OK}
```

| Tag | Wofür |
| - | - |
| `~SHIPTRACK-Get(Anbieter,Sendungsnummer)~` | ruft den Status ab |
| `{SHIPTRACK-OK}` | Klammerung, greift bei erfolgreicher Antwort |
| `~SHIPTRACK-JSONResult~` | die vollständige Antwort als JSON |

Die Struktur der Antwort unterscheidet sich je Dienstleister. Ein Beispiel der JSON-Datei steht in der Referenz zu `SHIPTRACK-JSONResult`.

Wegweiser: [JSON-Schnittstelle](https://dokumentation.websale.de/v8s/externe-dienste/json-schnittstelle.md) · Referenz: [SHIPTRACK-Get](https://dokumentation.websale.de/v8s/referenz/tags/shiptrack-sendungsverfolgung.md#die-tags-im-uberblick)() · Referenz: [SHIPTRACK-JSONResult](https://dokumentation.websale.de/v8s/referenz/tags/shiptrack-sendungsverfolgung.md#die-tags-im-uberblick)

### Einen Zeitstrahl bauen

Für eine grafische Darstellung brauchen Sie nicht den Text, sondern den Ereigniscode. Jeder Dienstleister hat eigene Codes.

| Dienstleister | Feld mit dem Ereigniscode |
| - | - |
| DHL | `-standard-event-code` |
| Österreichische Post | `ParcelEventTypeCode` |
| Schweizerische Post | `event_number` |

Die Codes fassen Sie zu Gruppen zusammen und ordnen jeder Gruppe einen Abschnitt Ihres Zeitstrahls zu.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~DC-FPeventCode_set($EJD-LastValueAccessed$)~

{DC-CompareStringInList($DC-FPeventCode$,"PO,BV,ZO")}
   <!-- in Zustellung -->
{/DC-CompareStringInList($DC-FPeventCode$,"PO,BV,ZO")}

{DC-CompareStringInList($DC-FPeventCode$,"ZF,ZN,LA,ZU")}
   <!-- zugestellt -->
{/DC-CompareStringInList($DC-FPeventCode$,"ZF,ZN,LA,ZU")}
```

> [!WARNING]
>
> Die Ereigniscodes gehören dem jeweiligen Dienstleister und ändern sich ohne Zutun des Shops. Fragen Sie die aktuelle Liste direkt beim Dienstleister an und prüfen Sie Ihre Zuordnung von Zeit zu Zeit nach. Ein unbekannter Code fällt sonst stillschweigend aus dem Zeitstrahl heraus.

Fangen Sie unbekannte Codes ab. Eine Gruppe „Status unbekannt" mit einem neutralen Text ist besser als ein Zeitstrahl, der bei einem neuen Code leer bleibt.

Referenz: [DC-CompareStringInList](https://dokumentation.websale.de/v8s/referenz/tags/dc/vergleiche.md)

## Teillieferung und Komplettlieferung

Liegen Produkte mit unterschiedlicher Verfügbarkeit im Warenkorb, kann der Käufer wählen: entweder bekommt er die vorrätigen Produkte sofort und den Rest später, oder er wartet, bis alles zusammen versandfertig ist.

Der Aufpreis für das zweite Paket geht zu Ihren Lasten, dem Käufer werden keine zusätzlichen Versandkosten berechnet. Wählt er die Komplettlieferung, sparen Sie diese Kosten.

Die Funktion setzt derzeit das Warenwirtschaftssystem VS/4 von D\&G voraus. Außerdem muss die Lagerbestandsverwaltung im Shop aktiv sein.

### Wann die Auswahl erscheint

Die Auswahl wird nur angeboten, wenn im Warenkorb mindestens zwei Produkte liegen, die

* unterschiedlichen Verfügbarkeitsgruppen angehören und
* von denen mindestens eines nicht sofort lieferbar ist.

Nicht berücksichtigt werden dabei:

* Produkte ohne Lieferbarkeitsstatus oder ohne Lagerbestandsführung
* Unterprodukte von Set-Produkten, maßgeblich ist der Status des Set-Oberprodukts
* Produkte, die Sie ausdrücklich ausgenommen haben

Nehmen Sie alles aus, was nicht über Ihr eigenes Lager läuft, also Streckengeschäfte und Direktversand vom Hersteller. Diese Produkte kommen ohnehin in einem eigenen Paket, sie sagen über die Frage Teil- oder Komplettlieferung nichts aus. Die Kennzeichnung erfolgt in den Produktdaten.

### Verfügbarkeitsgruppen bilden

Ein Split lohnt sich nur, wenn die Wartezeit spürbar ist. Deshalb fassen Sie die Lieferstatus zu Gruppen zusammen. Innerhalb einer Gruppe wird nicht gesplittet.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PartialDeliverySelection>
   Allow                       = test
   PreSelection                = complete
   +BasketInventoryState-Group = green,yellow
   +BasketInventoryState-Group = red
</PartialDeliverySelection>
```

In diesem Beispiel liegen grün und gelb in einer Gruppe. Ein Warenkorb aus grünen und gelben Produkten wird also komplett geliefert. Kommt ein rotes dazu, bekommt der Käufer die Wahl.

| Parameter | Bedeutung |
| - | - |
| `Allow` | `test`, `yes` oder `no`. Beginnen Sie mit `test` |
| `PreSelection` | welche Option vorausgewählt ist |
| `+BasketInventoryState-Group` | eine Gruppe je Zeile, Status kommagetrennt |

### Die Auswahl anbieten

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PD-Available}
   <p>Wie sollen wir Ihre Bestellung liefern?</p>

   <input type="radio"
          name="~PD-Selection_radioname~"
          value="~PD-Selection_radiovalue_partial~"
          ~PD-Selection_radioselected_partial~>
   In mehreren Paketen, damit Sie das Verfügbare sofort bekommen

   <input type="radio"
          name="~PD-Selection_radioname~"
          value="~PD-Selection_radiovalue_complete~"
          ~PD-Selection_radioselected_complete~>
   In einem Paket, sobald alles verfügbar ist
{/PD-Available}
```

Der Block gehört auf die Zahlungs- und Versandartenseite oder auf die Bestellübersicht.

### Die Wahl bestätigen

Auf der Bestelleingangsbestätigung und in der Bestätigungsmail sollte stehen, wofür der Käufer sich entschieden hat.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PD-Available}
   {PD-Selected_complete}
      Wir versenden Ihre Bestellung in einem Paket, sobald alle Produkte verfügbar sind.
   {/PD-Selected_complete}

   {PD-Selected_partial}
      Die verfügbaren Produkte gehen sofort an Sie heraus, den Rest senden wir nach.
   {/PD-Selected_partial}
{/PD-Available}
```

Nach dem Test setzen Sie `Allow` auf `yes`.

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

## Wunsch-Liefertermin

Es gibt zwei Ausführungen, die einfache und die erweiterte.

| | Einfach | Erweitert |
| - | - | - |
| Auswahl eines Datums | ja | ja |
| Bestellzeitgrenze | nein | ja |
| Vorlaufzeit in Stunden | nein | ja |
| Lieferbare Wochentage | nein | ja |
| Feiertage ausschließen | nein | ja |
| Pflichtangabe möglich | nein | ja |
| Termine je Kunde | nein | ja |

> [!WARNING]
>
> Entscheiden Sie sich für eine der beiden. Stehen beide Abschnitte in der `shop.config`, arbeitet der Shop nicht zuverlässig.

### Die einfache Ausführung

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DeliveryDate>
   Allow            = yes
   Days-Value       = 10
   DaysOffset-Value = 5
</DeliveryDate>
```

| Parameter | Bedeutung |
| - | - |
| `Days-Value` | wie viele Termine zur Auswahl stehen |
| `DaysOffset-Value` | wie viele Tage nach der Bestellung der erste Termin liegt |

Die Auswahlliste setzen Sie auf die Zahlungs- und Versandartenseite:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<p>Wunschtermin: ~WS-DelivDateFields~</p>
```

Den gewählten Termin geben Sie auf der Bestellübersicht und der Bestätigung aus:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{WS-DelivDate}
   Ihr Wunschtermin: ~WS-DelivDate~
{/WS-DelivDate}
```

> [!WARNING]
>
> Die einfache Ausführung kennt weder Sonn- und Feiertage noch Ihre Liefertage. Der Käufer kann sich also einen Sonntag aussuchen. Wenn das ein Problem ist, nehmen Sie die erweiterte Ausführung.

Referenz: [Abschnitt DeliveryDate](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md#deliverydate) · [WS-DelivDateFields](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick) · [WS-DelivDate](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick)

### Die erweiterte Ausführung

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AdvDeliveryDate>
   Allow          = yes
   Required       = yes
   TimeLimit      = 10
   DeliveryTime   = 48
   DeliveryDays   = 1,2,3,4,5,6
   Holidays       = 2026/01/01,2026/01/06,2026/04/03,2026/04/06
   DeliveryRange  = 20
   Name-Txt       = Lieferdatum
   FirstEntry-Txt = Bitte wählen Sie
</AdvDeliveryDate>
```

| Parameter | Bedeutung |
| - | - |
| `Required` | ob die Angabe Pflicht ist. Voreinstellung ist `no` |
| `TimeLimit` | Bestellzeitgrenze als volle Stunde |
| `DeliveryTime` | Vorlaufzeit in Stunden |
| `DeliveryDays` | Wochentage, an denen geliefert wird, als Zahlen |
| `Holidays` | Feiertage, an denen nicht geliefert wird |
| `DeliveryRange` | Anzahl der angebotenen Termine |
| `Name-Txt` | Bezeichnung in den Bestelldaten |
| `FirstEntry-Txt` | Text des ersten Eintrags in der Liste |

Bei `Required = yes` gehört eine Hinweismeldung dazu:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   DeliveryDate = Bitte geben Sie Ihren gewünschten Liefertermin an.
</NotifyMessages-Txt>
```

Die Auswahlliste heißt hier anders und gehört auf die Bestellübersicht:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<p>Wunschtermin: ~WS-AdvDelivDateFields~</p>
```

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{WS-AdvDelivDate}
   Ihr Wunschtermin: ~WS-AdvDelivDate~
{/WS-AdvDelivDate}
```

> [!WARNING]
>
> Die Feiertagsliste ist eine feste Aufzählung mit Jahreszahlen. Sie läuft ab. Setzen Sie sich eine jährliche Erinnerung, sonst bietet der Shop irgendwann Liefertermine an Weihnachten an.

Schreiben Sie die Bestellzeitgrenze und die Vorlaufzeit als festen Text neben die Auswahlliste. Der Käufer sieht sonst nur, welche Termine fehlen, aber nicht warum.

Für einzelne Kunden lassen sich abweichende Liefertage im Kundendatenimport hinterlegen. Fehlt die Angabe, gilt `DeliveryDays`.

### Gestaltung

| Klasse | Gilt für |
| - | - |
| `select_delivery_date` | die Auswahlliste der einfachen Ausführung |
| `select_advdelivery_date` | die Auswahllisten der erweiterten Ausführung |

Referenz: [Abschnitt AdvDeliveryDate](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md#advdeliverydate) · [WS-AdvDelivDateFields](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick) · [WS-AdvDelivDate](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick)

## Versand an mehrere Lieferadressen

Standardmäßig geht eine Bestellung an eine Adresse. Vier aufeinander aufbauende Funktionen erweitern das.

| Funktion | Was sie kann |
| - | - |
| MultiDelivery | jede Warenkorbposition an eine eigene Adresse |
| Split-Order | eine Position in Teilmengen an mehrere Adressen |
| SampleCopy | Belegexemplare an eine eigene Adresse |
| MultiDelivererSelection | je Position und Adresse eine eigene Versandart |

> [!WARNING]
>
> Die vier bauen technisch aufeinander auf. Sie müssen mit MultiDelivery anfangen, die übrigen drei funktionieren nicht ohne.
>
> Mit der Umstellung von einer Lieferung auf mehrere greifen manche Filter und Abhängigkeiten der Versandarten nicht mehr. Prüfen Sie Ihre bestehenden Regeln, bevor Sie umstellen.

### Vorauswahl der Lieferadresse

Unabhängig von den vier Funktionen steuern Sie, welche Adresse bei Bestandskunden vorausgewählt ist.

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

| Wert | Vorausgewählt ist |
| - | - |
| `always` | die zuletzt verwendete Lieferadresse |
| `yes` | die zuletzt bearbeitete Lieferadresse |
| `no` | die Rechnungsadresse |

Referenz: [Abschnitt UserData](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/kunde-anmeldung-und-kundenkonto.md#userdata) · Wegweiser: [Standard-Lieferadresse festlegen](https://dokumentation.websale.de/v8s/kundenkonto/standard-lieferadresse-festlegen.md)

### MultiDelivery einrichten

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Delivery>
   MultiDeliveryAddress-Allow                        = yes
   OrderData-DeliveryAddressFormat                   = MultiDeliveryAlways
   DeliveryCostCalculation-Mode                      = CalculateOnce
   MultiDeliveryCheckDeliveryAtCombinedAddress-Allow = yes
</Delivery>
```

| Parameter | Bedeutung |
| - | - |
| `MultiDeliveryAddress-Allow` | schaltet die Funktion ein |
| `OrderData-DeliveryAddressFormat` | Format der Lieferadressen in den Bestelldaten |
| `DeliveryCostCalculation-Mode` | `CalculateOnce` berechnet die Versandkosten einmal für die Bestellung, unabhängig von der Anzahl der Adressen |
| `MultiDeliveryCheckDeliveryAtCombinedAddress-Allow` | löst die Lieferprüfungen auch bei mehreren Adressen aus |

> [!WARNING]
>
> `DeliveryCostCalculation-Mode` entscheidet darüber, ob Sie die zusätzlichen Pakete selbst tragen. Stimmen Sie den Wert kaufmännisch ab, bevor Sie produktiv schalten.

Der Käufer wählt die Adressen auf einem eigenen Template aus:

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

Auf diesem Template kann er zwischen seiner Rechnungsadresse, seinen gespeicherten Lieferadressen, einer einmalig verwendeten und einer neuen Adresse wählen. Die Tags dafür beginnen mit `MDM-`.

Auf der Rechnungs- und Lieferadressseite kommt die Option „An mehrere Adressen liefern" dazu, und zwar zweimal: einmal für Gastbesteller innerhalb `{ST-SingleData}` und einmal für Bestandskunden innerhalb `{ST-MultipleData}`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{WS-MultiDelivery_available}
   <input type="radio"
          name="~WS-DelivAddr_radioname~"
          value="~WS-DelivAddr_radiovalue_inputmultidelivery~"
          ~WS-DelivAddr_radioselected_inputmultidelivery~>
   An mehrere Adressen liefern

   {@BASKET-PR-Data}
      <p>~BASKET-PR-Name~</p>
      {BASKET-PR-D_available}
         {BASKET-PR-D-SingleData}
            ...
         {/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
            </button>
         {/BASKET-PR-D-MultiDataAvailable}
      {/BASKET-PR-D_available}
   {/@BASKET-PR-Data}
{/WS-MultiDelivery_available}
```

Dieselbe Übersicht gehört auf die Warenkorbseite, dort ohne die Bedienelemente und mit den Fehlermeldungen.

Die Fehlermeldungen kommen als Nummern. Die Klammerung `{BASKET-PR-MultiDeliveryAddress_ErrorCode(n)}` gibt Ihnen zu jeder Nummer einen eigenen Text. Die vollständige Liste der Gründe steht in der Referenz. Fangen Sie die Fälle ab, die bei Ihnen vorkommen können, und legen Sie für den Rest einen allgemeinen Text an.

Auf der Bestellübersicht weisen Sie darauf hin, wenn der Shop Einstellungen korrigieren musste:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-MultiDeliveryErrorsFixed}
   Ihre Angaben zu den Lieferadressen wurden angepasst.
   Bitte prüfen Sie sie, bevor Sie die Bestellung abschließen.
{/ST-MultiDeliveryErrorsFixed}
```

Referenz: Split-Order, alle Tags · [ST-MultiDeliveryErrorsFixed](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md)

### Split-Order: eine Position aufteilen

Baut auf MultiDelivery auf. Jede Warenkorbposition lässt sich in frei wählbaren Mengen auf mehrere Adressen verteilen.

Welche Produkte das können, legen Sie in den Produktdaten fest, im Feld `MultiDeliveryAddressOptions`:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<mda><1>5</1><2>6</2><3>2</3></mda>
```

| Position | Bedeutung |
| - | - |
| 1 | wie viele Aufteilungen zulässig sind |
| 2 | ab welcher Bestellmenge die Aufteilung angeboten wird (optional) |
| 3 | in welcher Staffelung aufgeteilt werden darf (optional) |

Für die Aufteilung können Sie einen Aufpreis verlangen, gestaffelt nach der Anzahl der Adressen:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Delivery>
   MultiDeliveryAddressPerBasketPositionCost-List = (2:5.00%:2.00)(3::1.90)(5:4.50%:)
</Delivery>
```

Jede Klammer besteht aus drei Teilen: Anzahl der Adressen, prozentualer Anteil, fester Betrag. Einer der beiden Kostenteile darf leer bleiben.

Der Steuersatz dafür steht im Abschnitt `<VAT>`:

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<VAT>
   MultiDeliveryAddressUsageVATType = static
   MultiDeliveryAddressUsageVATRate = 1
</VAT>
```

Den Gesamtaufpreis geben Sie im Warenkorb und auf der Bestellübersicht aus:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BASKET-TotalMultiDeliveryAddressUsageCost}
   Aufpreis für die Aufteilung: ~BASKET-TotalMultiDeliveryAddressUsageCost~ ~WS-CurrencySymbol~
{/BASKET-TotalMultiDeliveryAddressUsageCost}
```

Soll der Käufer seine Rechnungsadresse mehrfach auswählen dürfen:

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

> [!WARNING]
>
> Weisen Sie auf eine verbleibende Restmenge deutlich hin. Solange nicht die gesamte Menge einer Position auf Adressen verteilt ist, lässt sich die Bestellung nicht abschließen. Das Tag dafür ist `{BASKET-PR-D-MultiDataquantityleft}`.

### Belegexemplare (SampleCopy)

Baut auf Split-Order auf. Gedacht für Druckaufträge, bei denen der Besteller einige Exemplare an eine eigene Adresse geschickt bekommt.

Die Konfiguration steht ebenfalls in den Produktdaten, hinter dem `mda`-Block:

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<mda><1>5</1><2>6</2><3>2</3></mda><sc><1>3.00</1><2>6</2><3>1</3></sc>
```

| Position im `sc`-Block | Bedeutung |
| - | - |
| 1 | Aufpreis, zugleich der Schalter für die Verfügbarkeit |
| 2 | ab welcher Bestellmenge Belegexemplare angeboten werden (optional) |
| 3 | wie viele Belegexemplare geliefert werden |

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<VAT>
   SampleCopyVATType = static
   SampleCopyVATRate = 1
</VAT>
```

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BASKET-TotalSampleCopyCost}
   Aufpreis für Belegexemplare: ~BASKET-TotalSampleCopyCost~ ~WS-CurrencySymbol~
{/BASKET-TotalSampleCopyCost}
```

Belegexemplare bleiben bei der Kostenstaffel für Split-Order außen vor. Ist als Berechnungsart `CalculateSeparateForEachPositionAndUsedDeliveryAddress` eingestellt, fallen für das Belegexemplar die normalen Versandkosten der Versandart an.

### MultiDelivererSelection: eine Versandart je Position

Baut auf MultiDelivery auf. Der Käufer wählt die Versandart nicht mehr für den ganzen Warenkorb, sondern je Position und je Adresse.

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

> [!WARNING]
>
> Diese Funktion arbeitet **nicht** mit dem Einzel-Tag `~WS-DeliveryFields~`. Sie brauchen die Ausgabe über die `DELIV-Data`-Tags, und die Auswahl muss innerhalb der Warenkorbschleife `{@BASKET-PR-Data}` stehen.

Der Aufbau folgt drei Fällen, die Sie im Template unterscheiden:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!ST-MultiDelivererSelection}
   <!-- eine Versandart für alles -->
   ~WS-Fast_Include(Incl-DelivererSelection)~
{/!ST-MultiDelivererSelection}

{ST-MultiDelivererSelection}
   {@BASKET-PR-Data}
      ~BASKET-PR-Name~

      {!BASKET-PR-D_available}
         <!-- keine eigene Adresse je Position möglich -->
         ~WS-Fast_Include(Incl-DelivererSelection)~
      {/!BASKET-PR-D_available}

      {BASKET-PR-D_available}
         {BASKET-PR-D-SingleData}
            <!-- eine Adresse für diese Position -->
            ~WS-Fast_Include(Incl-DelivererSelection)~
         {/BASKET-PR-D-SingleData}

         {BASKET-PR-D-MultiData}
            {@BASKET-PR-D-MultiData}
               <!-- je Teilmenge eine Adresse und eine Versandart -->
               ~WS-Fast_Include(Incl-DelivererSelection)~
            {/@BASKET-PR-D-MultiData}
         {/BASKET-PR-D-MultiData}
      {/BASKET-PR-D_available}
   {/@BASKET-PR-Data}
{/ST-MultiDelivererSelection}
```

Lagern Sie die Versandartenauswahl in einen Include aus. Sie kommt in diesem Aufbau viermal vor, und Sie wollen sie nicht viermal pflegen.

Die gewählte Versandart geben Sie überall dort aus, wo auch die Lieferadresse steht:

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

#### Was mit dieser Funktion nicht mehr geht

Die Umstellung hat spürbare Folgen. Die folgenden Funktionen werden nicht unterstützt:

* der Wunschtermin über den Frachtkostenkalkulator
* Eigenhändig Plus
* die Abhängigkeit vom Lagerbestand über `AllowForInventoryStateAtLeast`
* die Abhängigkeit von Produkten über `DeliveryFilterID-List`
* das Tag `~WS-FreeDeliveryRest~` für den Restbetrag bis zur versandkostenfreien Lieferung

Weitere Einschränkungen:

* `DeliveryCostCalculation-Mode` wird nicht beachtet, die Versandkosten fallen immer je Adresse und Versandart an
* die globalen Tags `~WS-Delivery~`, `~WS-DeliveryID~` und `~WS-DeliveryIndex~` liefern nur die erste verwendete Versandart, ebenso die Texte aus `Country-Txt` und `Suffix-Txt` und die Variable in der Trackingschnittstelle
* bei easyCredit wird die erste verwendete Versandart übermittelt
* `BookDeliveryType` entfällt, die Entscheidung Büchersendung fällt je Position
* beim Bestellgenerator wird die gewünschte Versandart vorbelegt, falls das nicht möglich ist die erste verfügbare

> [!WARNING]
>
> Gehen Sie diese Liste vor der Umstellung durch. Mehrere der genannten Punkte betreffen Funktionen, die in bestehenden Shops verbreitet sind, und sie fallen ohne Fehlermeldung weg.

Referenz: [ST-MultiDelivererSelection](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md) · Alle [DELIV-Data-Tags](https://dokumentation.websale.de/v8s/referenz/tags/deliv.md)

## Verwandte Themen

* Wegweiser: [Versandarten anlegen](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen.md)
* Wegweiser: [Ausgabe der Versandarten im Bestellprozess, für die DELIV-Data-Tags](https://dokumentation.websale.de/v8s/versandarten-anlegen/ausgabe-im-bestellprozess.md)
* Wegweiser: [Abweichende Lieferadresse abfragen](https://dokumentation.websale.de/v8s/adressdaten/abweichende-lieferadresse-abfragen.md)
* Wegweiser: [Lagerbestand anzeigen, für die Voraussetzung der Teillieferung](https://dokumentation.websale.de/v8s/lagerbestand/lagerbestand-anzeigen.md)


## Related topics

- [Spezielle Versandarten](https://dokumentation.websale.de/v8s/versandarten-anlegen/spezielle-versandarten.md)
- [BackInStockMail (OrderNow-Service)](https://dokumentation.websale.de/v8s/produkte/backinstockmail-ordernow-service.md)
- [Service und App](https://dokumentation.websale.de/v8s/schnittstellen/service-und-app.md)
- [BestPractice Shop](https://dokumentation.websale.de/frontend/die-basics/bestpractice-shop.md)
- [Verteilungsprodukte anbieten (Prospektservice)](https://dokumentation.websale.de/v8s/produkte/verteilungsprodukte-anbieten-prospektservice.md)


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