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

# Spezielle Versandarten

> Büchersendung, DHL Kurier mit Gebietsprüfung und der Versand mit Altersbeschränkung über Eigenhändig Plus.

Drei Versandarten brauchen mehr als einen `<+Deliverer>`-Abschnitt, weil sie Daten aus den Produkten, aus einer externen Prüfung oder vom Käufer selbst verlangen.

| Versandart | Was zusätzlich nötig ist |
| - | - |
| Büchersendung | Kennzeichnung der Produkte und eine Regel, wann eine Bestellung als Büchersendung gilt |
| DHL Kurier | Vertrag, Freischaltung und eine tägliche Gebietsprüfung |
| Eigenhändig Plus | Altersangabe am Produkt und Ausweisdaten vom Käufer |

## Büchersendung

Gedruckte Bücher, Broschüren, Notenblätter und Landkarten lassen sich zu günstigeren Konditionen versenden. Dafür muss der Shop wissen, welche Produkte dafür in Frage kommen und wann eine ganze Bestellung als Büchersendung gilt.

Jede Versandart ist entweder für Büchersendungen da oder für normale Sendungen, nie für beides. Sie legen also für den Buchversand eigene `<+Deliverer>`-Abschnitte an, auch wenn dahinter derselbe Dienstleister steht.

### Schritt 1: Produkte kennzeichnen

In den Produktdaten trägt das Feld `BookDelivery` ein `y` oder ein `n` ein.

| Wert | Bedeutung |
| - | - |
| `y` | für Büchersendung geeignet |
| `n` | nicht für Büchersendung geeignet |

### Schritt 2: Hinweis am Produkt anzeigen

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-BookDelivery}
   Dieses Produkt können wir als Büchersendung versenden.
{/PR-BookDelivery}
```

Referenz: [PR-BookDelivery](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten.md)

### Schritt 3: Versandarten für Büchersendungen freigeben

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   Name-Txt           = Büchersendung
   BookDelivery-Allow = yes
</+Deliverer>
```

Alle Versandarten ohne diesen Parameter oder mit dem Wert `no` gelten für normale Sendungen. Eine Voreinstellung ist `no`.

### Schritt 4: Festlegen, wann eine Bestellung als Büchersendung gilt

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Delivery>
   BookDeliveryType      = all
   BookDeliveryMaxWeight =
   BookDeliveryMaxOrder  =
</Delivery>
```

| Parameter | Bedeutung |
| - | - |
| `BookDeliveryType` | `all` verlangt, dass **alle** Produkte im Warenkorb buchversandfähig sind. `one` genügt sich mit einem einzigen |
| `BookDeliveryMaxWeight` | Höchstgewicht, oberhalb dessen die Bestellung nicht mehr als Büchersendung gilt |
| `BookDeliveryMaxOrder` | Höchstbestellwert mit derselben Wirkung |

Die beiden Grenzwerte greifen nur, wenn sie gesetzt und größer als null sind. Lassen Sie sie leer, gilt keine Grenze.

> [!WARNING]
>
> Mit `BookDeliveryType = one` reicht ein einziges Buch im Warenkorb, damit die ganze Bestellung als Büchersendung gilt, auch wenn zehn andere Artikel dabei sind. Das ist selten gewollt. Prüfen Sie, welche Variante zu Ihrem Sortiment passt, bevor Sie produktiv schalten.

Referenz: [Abschnitt Delivery](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md#delivery) · [Abschnitt +Deliverer](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md#deliverer)

## DHL Kurier

DHL Kurier liefert gegen Aufpreis am Abend, allerdings nur in einigen Großstädten und Ballungsräumen in Deutschland. Der Käufer wählt zwischen zwei Zeitfenstern.

Der Shop prüft die eingegebene Postleitzahl der Lieferadresse gegen das Liefergebiet und bietet die Versandart nur an, wenn sie dort liegt. Die Gebietsdaten lädt der Shop einmal täglich automatisch von DHL.

### Schritt 1: Vertrag und Freischaltung

Nötig sind ein Vertrag mit DHL und die Freischaltung durch WEBSALE.

### Schritt 2: Zwei Versandarten anlegen

Die beiden Zeitfenster sind zwei Versandarten, nicht eine mit zwei Optionen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   Allow                = yes
   ID                   = 10
   Name-Txt             = DHL Kurier, Lieferung 18 bis 20 Uhr
   AvailabilityCheck-ID = dhlkurier
   DeliveryCountry-Rule = AllowCountries
   DeliveryCountry-List = DEU
</+Deliverer>

<+Deliverer>
   Allow                = yes
   ID                   = 11
   Name-Txt             = DHL Kurier, Lieferung 20 bis 22 Uhr
   AvailabilityCheck-ID = dhlkurier
   DeliveryCountry-Rule = AllowCountries
   DeliveryCountry-List = DEU
</+Deliverer>
```

`AvailabilityCheck-ID` schaltet die Postleitzahlprüfung ein. Beide Abschnitte verweisen auf dieselbe Prüfung.

Weil die Prüfung an der Lieferadresse hängt, erscheint die Versandart erst, nachdem der Käufer seine Adresse eingegeben hat. Vorher kann der Shop nicht wissen, ob geliefert werden kann.

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

Für Waren ohne Jugendfreigabe bietet DHL den Service „Eigenhändig Plus" an. Der Zusteller übergibt die Sendung nur gegen Vorlage eines Ausweises und gleicht vier Angaben ab:

* Vorname und Name
* Volljährigkeit
* Ausweisnummer
* ausstellende Behörde

Daraus folgt der Aufwand im Shop: Diese Angaben muss der Käufer bei der Bestellung machen, und der Shop muss das Alter selbst prüfen, bevor er die Bestellung annimmt.

### Wie der Ablauf aussieht

1. Der Käufer legt ein Produkt mit Altersbeschränkung in den Warenkorb.
2. Liegt die Lieferadresse im konfigurierten Land, bietet der Shop nur noch die Versandart mit Eigenhändig Plus an.
3. Auf der Bestellübersicht erscheinen die zusätzlichen Pflichtfelder.
4. Der Shop rechnet aus dem Geburtsdatum das Alter aus und prüft es gegen das Mindestalter.
5. Erst wenn alle Felder ausgefüllt sind und das Alter stimmt, lässt sich die Bestellung absenden.

In die Bestelldaten gehen neben den Adressdaten die Ausweisnummer, der Ausweistyp und die ausstellende Behörde.

### Schritt 1: Altersbeschränkung an den Produkten

In den Produktdaten trägt das Feld `AgeRestricted` das Mindestalter als Zahl ein.

### Schritt 2: Den Abschnitt anlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<EigenhaendigPlus>
   AgeRestricted-Value    = 18
   DeliveryCountry-List   = DEU
   IDCardType1-Txt        = Personalausweis
   IDCardType2-Txt        = Reisepass
   HeadNotify-Txt         = Bitte vervollständigen Sie die folgenden Angaben.
   Notify1-Txt            = Bitte füllen Sie das Feld „Ausweisnummer" aus oder prüfen Sie Ihre Eingabe.
   Notify2-Txt            = Bitte geben Sie den Ausweistyp an.
   Notify3-Txt            = Bitte geben Sie die ausstellende Behörde an.
   Notify4-Txt            = Bitte bestätigen Sie, dass Sie mindestens 18 Jahre alt sind und dass der Name des Empfängers mit dem Namen im Ausweis übereinstimmt.
   Notify5-Txt            = Bitte füllen Sie die Felder für das Geburtsdatum aus.
   Notify6-Txt            = Das Mindestalter ist nicht erreicht.
   UseInputFieldErrorTags = yes
</EigenhaendigPlus>
```

| Parameter | Bedeutung |
| - | - |
| `AgeRestricted-Value` | das Mindestalter, gegen das geprüft wird |
| `DeliveryCountry-List` | Länder, in denen der Service angeboten wird |
| `IDCardType1-Txt` | Bezeichnung des ersten Ausweistyps |
| `IDCardType2-Txt` | Bezeichnung des zweiten Ausweistyps |
| `HeadNotify-Txt` | Überschrift über den Eingabefeldern |
| `Notify1-Txt` bis `Notify6-Txt` | die sechs Fehlertexte |
| `UseInputFieldErrorTags` | `yes` schaltet die Fehlertags je Feld frei |

In den Bestelldaten steht der Ausweistyp als Zahl: `1` für den ersten, `2` für den zweiten. Die Texte aus `IDCardType1-Txt` und `IDCardType2-Txt` sind nur für die Anzeige.

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

### Schritt 3: Versandarten kennzeichnen

Auch hier muss **jede** Versandart zugeordnet werden.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   Allow                = yes
   Name-Txt             = Lieferung mit Altersprüfung
   Country-Txt          = innerhalb Deutschlands, ab 18 Jahren
   DeliveryCountry-Rule = AllowCountries
   DeliveryCountry-List = DEU
   EigenhaendigPlus     = allow
</+Deliverer>

<+Deliverer>
   Name-Txt         = Standardversand
   EigenhaendigPlus = deny
</+Deliverer>
```

> [!WARNING]
>
> Vergessen Sie `EigenhaendigPlus = deny` bei einer der übrigen Versandarten, kann der Käufer altersbeschränkte Ware über eine Versandart ohne Altersprüfung bestellen. Gehen Sie nach dem Einrichten alle `<+Deliverer>`-Abschnitte einmal durch.

### Schritt 4: Geburtsdatum abfragen

Das Alter berechnet der Shop aus dem Geburtsdatum. Das Feld muss deshalb in den Adressabschnitten vorhanden sein, für die Rechnungsadresse und für die abweichende Lieferadresse.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressFields-Txt>
   DateOfBirth = Geburtsdatum
</AddressFields-Txt>

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

Referenz: [Abschnitt AddressFields-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#addressfields-txt) · [Abschnitt DeliveryAddressFields-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#deliveryaddressfields-txt)

### Schritt 5: Die Felder auf der Bestellübersicht einbauen

Alle Eingaben gehören auf die Bestellübersicht `ws_place_order.htm`, innerhalb des Formulars.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-PlaceOrder~">

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

   {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>
```

> [!WARNING]
>
> Die beiden Eingabefelder brauchen genau diese Feldnamen, sonst kommen die Werte nicht an:
>
> * Ausweisnummer: `input_idcard_number`, höchstens 20 Zeichen
> * Ausstellende Behörde: `input_idcard_authority`, höchstens 30 Zeichen

Das Geburtsdatum wird aus der Lieferadresse genommen, wenn eine abweichende Lieferadresse eingegeben wurde, sonst aus der Rechnungsadresse. Der Zusteller prüft schließlich die Person an der Tür, nicht den Besteller. Deshalb die Unterscheidung über `{WS-DelivAddr}`.

Referenz: [ST-EigenhaendigPlus](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md) · [WS-ConfirmEigenhaendigPlus](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md#die-tags-im-uberblick) · [WS-IDCardNumber](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md#die-tags-im-uberblick) · [WS-IDCardTypeList](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md#die-tags-im-uberblick) · [WS-IDCardAuthority](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md#altersnachweis-und-eigenhandig-plus)

## Verwandte Themen

* Wegweiser: [Versandarten anlegen, für die Grundeinstellungen](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen.md)
* Wegweiser: [Erweiterte Einstellungen beim Anlegen von Versandarten](https://dokumentation.websale.de/v8s/versandarten-anlegen/erweiterte-einstellungen.md)
* Wegweiser: [Versandoptionen und Services für Käufer](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandoptionen-und-services.md)
* Wegweiser: [Prüfung der Ausweisnummer und Altersnachweis](https://dokumentation.websale.de/v8s/adressdaten/pruefung-der-ausweisnummer-und-altersnachweis.md)


## Related topics

- [Erweiterte Einstellungen beim Anlegen von Versandarten](https://dokumentation.websale.de/v8s/versandarten-anlegen/erweiterte-einstellungen.md)
- [Click and Collect](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-click-and-collect.md)
- [Spezielle Themen](https://dokumentation.websale.de/v8s/schnittstellen/produkte-und-kategorien/ws-sftp-produkte-pro/spezielle-themen.md)
- [Für spezielle Branchen](https://dokumentation.websale.de/v8s/schnittstellen/spezielle-branchen.md)
- [Spezielle Online-Dienste](https://dokumentation.websale.de/v8s/online-servicebereich/spezielle-online-dienste.md)


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