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

# Versand und Lieferung

> Wie Versandarten angelegt werden, wann sie im Bestellprozess erscheinen, wie die Versandkosten entstehen, welche Zusatzeingaben und Abhängigkeiten möglich sind und wie Wunschtermin, Teillieferung, Geschenkverpackung und Sendungsverfolgung konfiguriert werden.

Eine Versandart im Shop entsteht aus zwei Bausteinen. Der Abschnitt `Delivery` legt die Regeln fest, die für alle Versandarten gelten. Jeder `+Deliverer`-Abschnitt beschreibt dann eine einzelne Versandart mit ihren Kosten und ihren Bedingungen.

Weil eine einzelne Versandart sehr viele Bedingungen haben kann, lagert die Konfiguration die komplexeren davon in eigene Definitions-Abschnitte aus. Dort legen Sie einmal eine Regel mit einer ID an und verweisen aus beliebig vielen `+Deliverer`-Abschnitten darauf. Diese Seite folgt genau dieser Reihenfolge. Erst die Grundeinstellungen, dann die einzelne Versandart, dann die vier Definitions-Abschnitte und zum Schluss die Zusatzfunktionen rund um Liefertermin, Teillieferung, Geschenkverpackung, Altersbeschränkung und Sendungsverfolgung.

Referenz: Shopkonfiguration shop.config, Übersicht aller Abschnitte

## `Delivery`

Grundeinstellungen für alle Versandarten.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Delivery>
   Cost-Txt                                  = Versandkosten
   DeliveryCostCalculation-Mode              = CalculateOnce
   SubTotalDependentDeliveryCosts-Base       = Standard
   AddressCountryDiffersDeliveryCountry-Allow = yes
   BookDeliveryType                          = all
</Delivery>
```

### Liefer- und Rechnungsland

| Parameter | Zweck | Werte |
| - | - | - |
| `AddressCountryDiffersDeliveryCountry-Allow` | darf das Lieferland vom Rechnungsland abweichen | `yes`, `no`. Standard: `yes` |
| `AddressCountryDiffersDeliveryCountryExcept4VAT-Allow` | Ausnahme für mehrwertsteuerpflichtige Bestellungen | `yes`, `no`. Standard: `yes` |
| `FreeDeliveryCountryList` | Lieferländer, für die keine Versandkosten berechnet werden | kommaseparierte ISO-Codes |

`AddressCountryDiffersDeliveryCountryExcept4VAT-Allow = yes` bedeutet: wird Mehrwertsteuer gezahlt, darf das Lieferland jedes Land aus der Konfiguration der Lieferländer sein. Wird keine Mehrwertsteuer gezahlt, muss Lieferland gleich Rechnungsland sein. Bei `no` muss das Rechnungsland immer auch das Lieferland sein.

Die Mehrwertsteuer wird anhand der Rechnungsadresse ermittelt, nicht anhand der Lieferadresse.

### Versandkostenberechnung

| Parameter | Zweck | Werte |
| - | - | - |
| `Cost-Txt` | Text für die Versandkosten | Text |
| `DeliveryCostCalculation-Mode` | Art der Versandkostenberechnung | siehe unten |
| `SubTotalDependentDeliveryCosts-Base` | Bemessungsgrundlage für warenwertabhängige Versandkosten | `Standard`, `OrderDiscount`, `WithoutVoucher`. Standard: `Standard` |

`DeliveryCostCalculation-Mode` kennt drei Werte. `CalculateOnce` berechnet die Versandkosten einmalig für die gesamte Bestellung und ist der Standard. `CalculateSeparateForEachPosition` berechnet sie je Warenkorbposition. `CalculateSeparateForEachPositionAndUsedDeliveryAddress` berechnet sie je Lieferadresse und gilt nur bei Lieferung an mehrere Adressen.

`SubTotalDependentDeliveryCosts-Base` entscheidet, welcher Betrag die Versandkostenstaffel auslöst. Das ist vor allem dann relevant, wenn Gutscheine im Spiel sind.

| Wert | Bemessungsgrundlage |
| - | - |
| `Standard` | die Zwischensumme, also der Warenwert nach allen Abzügen |
| `OrderDiscount` | dieselbe Grundlage wie beim Auftragswertrabatt, also der Warenwert aller rabattierfähigen Produkte ohne weitere Abzüge |
| `WithoutVoucher` | der Warenwert ohne Berücksichtigung von Gutscheinen |

Ein Beispiel macht den Unterschied deutlich. Ab 10 Euro ist der Versand kostenfrei. Im Warenkorb liegt ein Produkt für 11 Euro, dazu ein Gutschein über 10 Prozent.

| Einstellung | Bemessungsgrundlage | Ergebnis |
| - | - | - |
| `Standard` | 9,90 | Versandkosten fallen an |
| `WithoutVoucher` | 11,00 | versandkostenfrei |

Die Zwischensumme beträgt in beiden Fällen 9,90. Nur die Bemessungsgrundlage für die Staffel ändert sich.

Bei `OrderDiscount` wirken zusätzlich die Schalter `ConsiderProductGroupDiscountForOrderDiscount-Allow` und `ConsiderProductDiscountFactorForOrderDiscount-Allow` aus dem Abschnitt `OrderConditions`.

Referenz: [Abschnitt OrderConditions](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md#orderconditions)

### Büchersendung

| Parameter | Zweck | Werte |
| - | - | - |
| `BookDeliveryType` | wann eine Bestellung als Büchersendung gilt | `all`, `one`. Standard: `all` |
| `BookDeliveryMaxWeight` | Maximalgewicht für Büchersendungen | Zahl ohne Maßeinheit |
| `BookDeliveryMaxOrder` | Maximalbestellwert für Büchersendungen | Zahl |

Wird eines der beiden Maxima überschritten, stehen alle Versandarten mit `BookDelivery-Allow = yes` für diese Bestellung nicht mehr zur Verfügung. Beide Parameter wirken nur, wenn sie angegeben und größer als 0 sind. Die Maßeinheit des Gewichts stammt aus den Produktdaten.

Welche Versandart am Ende verfügbar ist, ergibt sich aus dem Zusammenspiel von Warenkorbinhalt, `BookDeliveryType` hier und `BookDelivery-Allow` im jeweiligen `+Deliverer`-Abschnitt.

| Warenkorb | `BookDelivery-Allow` | `BookDeliveryType` | verfügbar |
| - | - | - | - |
| nur Bücher | `yes` | `all` | ja |
| nur Bücher | `yes` | `one` | ja |
| nur Bücher | `no` | `all` | nein |
| nur Bücher | `no` | `one` | nein |
| gemischt | `yes` | `all` | nein |
| gemischt | `yes` | `one` | ja |
| gemischt | `no` | `all` | ja |
| gemischt | `no` | `one` | nein |
| keine Bücher | `yes` | `all` | nein |
| keine Bücher | `yes` | `one` | nein |
| keine Bücher | `no` | `all` | ja |
| keine Bücher | `no` | `one` | ja |

Die beiden auf den ersten Blick überraschenden Zeilen erklären sich so. Im gemischten Warenkorb mit `BookDeliveryType = all` sind nicht alle Positionen Bücher, die Bestellung ist also keine Büchersendung. Deshalb sind genau die Versandarten verfügbar, die bei Büchersendungen **nicht** erlaubt sind. Liegt gar kein Buch im Warenkorb, gilt dasselbe unabhängig vom Typ.

### Mehrere Lieferadressen

| Parameter | Zweck | Werte |
| - | - | - |
| `MultiDeliveryAddress-Allow` | je Warenkorbposition eine eigene Lieferadresse zulassen | `yes`, `no`. Standard: `no` |
| `DelivererSelectionPerBasketPosition-Allow` | je Warenkorbposition eine eigene Versandart zulassen | `yes`, `no`, `test` |
| `MultiDeliveryAddressPerBasketPositionCost-List` | Kostenstaffel nach Anzahl verwendeter Lieferadressen | siehe unten |
| `MultiDeliveryCheckDeliveryAtCombinedAddress-Allow` | Lieferprüfungen auslösen | `yes`, `no`. Standard: `no` |
| `MultipleBillAddressUsageForSingleBasketPosition-Allow` | Rechnungsadresse mehrfach als Lieferadresse verwendbar | `yes`, `no`. Standard: `no` |
| `OrderData-DeliveryAddressFormat` | Format der Lieferadresse in den Bestelldaten | `Standard`, `MultiDeliveryAlways`. Standard: `Standard` |

> [!WARNING]
>
> Bei `DelivererSelectionPerBasketPosition-Allow = test` wird beim Verlassen des Testmodus eine neue Sitzung erzeugt.

Die Kostenstaffel für mehrere Lieferadressen folgt dem Muster `(Anzahl:prozentual:absolut)`. Sind beide Kostenarten angegeben, wird der jeweils höhere Wert berechnet.

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

Ab 2 Lieferadressen kosten 5 Prozent des Positionswerts oder 2,00 Euro, je nachdem was höher ist. Ab 3 Lieferadressen fix 1,90 Euro. Ab 5 Lieferadressen 4,5 Prozent des Positionswerts.

> [!WARNING]
>
> Diese Kosten kommen zu den Kosten der Versandart hinzu. Die Kosten aus den `+Deliverer`-Abschnitten bleiben davon unberührt.

`MultiDeliveryCheckDeliveryAtCombinedAddress-Allow` entscheidet, ob die vollständigen Lieferprüfungen laufen. Das sind alle Prüfungen, die vor dem Absenden einer Bestellung durchlaufen werden müssen, beispielsweise Gültigkeit der Lieferadressen, zulässige Kombinationen aus Lieferland und Mehrwertsteuer sowie Mengenverteilungen.

### Produktabhängige Versandarten

| Parameter | Zweck | Werte |
| - | - | - |
| `DeliveryFilterID-Mode` | wann die DeliveryFilterIDs der Produkte berücksichtigt werden | `test`, `productive`. Standard: `productive` |

## `+Deliverer`

Legt eine einzelne Versandart fest. Es sind bis zu 150 `+Deliverer`-Abschnitte möglich. Die Reihenfolge in der Konfiguration bestimmt die Reihenfolge der Anzeige im Shop.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   Allow          = yes
   ID             = inland
   Name-Txt       = DHL
   Country-Txt    = Versand innerhalb Deutschlands
   Suffix-Txt     = zzgl. ~Cost~ ~WS-CurrencySymbol~ Versand
   NoCost-Txt     = versandkostenfrei
   BasicCost-List = (0:4.90)(50:0)
   DeliveryCountry-Rule = AllowCountries
   DeliveryCountry-List = DEU
</+Deliverer>
```

### Wann ein Abschnitt überhaupt gelesen wird

Wie bei den Zahlungsarten prüft der Kernel zuerst zwei Dinge und verwirft den gesamten Abschnitt, wenn eine Prüfung durchfällt. Eine Meldung erscheint nicht.

| Bedingung | Verhalten, wenn nicht erfüllt |
| - | - |
| `Name-Txt` **oder** `Country-Txt` ist gefüllt | Die Versandart wird nicht aktiviert |
| `Allow = yes` | Die Versandart wird nicht aktiviert |

Bei leerem `Name-Txt` wird der Parameter `Country-Txt` verwendet. Beide leer bedeutet: Versandart existiert nicht.

> [!WARNING]
>
> Zwei globale Einstellungen setzen sämtliche `+Deliverer`-Abschnitte außer Kraft. Ist das Frachtkostenmodul aktiv, werden alle Versandarten deaktiviert. Läuft die Bestellung über ein kundenspezifisches Angebot, werden alle Versandarten bis auf die erste deaktiviert, und diese erste wird mit Name und Kosten aus dem Angebot überschrieben. In beiden Fällen bleibt die Konfiguration der `+Deliverer`-Abschnitte wirkungslos.

### Grundangaben

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Versandart anbieten | `yes`, `no`. Standard: `no` |
| `ID` | eindeutige ID, für die Zuordnung über `DelivererID-List` einer Zahlungsart | beispielsweise `1`, `inland`, `weltweit` |
| `Name-Txt` | Name des Versanddienstleisters | beispielsweise `DHL`, `UPS`, `GLS` |
| `Country-Txt` | Name der Versandart oder Angabe zum Zielgebiet | beispielsweise `weltweit` |
| `Type` | Typ der Versandart | beispielsweise `standard`, `express`, `spedition` |
| `Suffix-Txt` | zusätzliche Beschreibung, nur bei Anzeige mit Radiobutton | Text mit lokalen Tags |
| `Descr-Txt` | veraltet. Wird nur verwendet, wenn `Suffix-Txt` leer ist | Text |
| `NoCost-Txt` | Text bei versandkostenfreier Lieferung | beispielsweise `versandkostenfrei` |
| `Dependencies` | Beschreibungstext, erscheint nur auf der Übersichtsseite der Versandarten | Text |
| `DisplayInList-Flag` | Versandart in der globalen Liste anzeigen | `yes`, `no`. Standard: `yes` |
| `AutoOrderReference` | nur für Bestellgenerator. Adressierung über eine Referenz statt über die ID | Referenztext |
| `GroupID` | Gruppierungskennung der Versandart | Text |
| `MerchantDefinitionsFile` | Datei mit händlerabhängigen Definitionen | Dateiname |

Bei `AutoOrderReference` wird die erste verfügbare und zutreffende Versandart mit der übergebenen Referenz ausgewählt.

#### Lokale Tags in `Suffix-Txt`

| Tag | Ausgabe |
| - | - |
| `WS-Currency` | Währung |
| `WS-CurrencySymbol` | Währungssymbol |
| `Cost` | Versandkosten |
| `NetCost` | Nettobetrag der Versandkosten |
| `GrossCost` | Bruttobetrag der Versandkosten |
| `UserDeliveryCostDiscountRate` | kundenindividueller Rabatt auf die Versandkosten, prozentual |
| `UserDeliveryCostDiscount` | derselbe Rabatt als absoluter Betrag |
| `UserDeliveryCostDiscountNet` | derselbe Rabatt als Nettobetrag |
| `UserDeliveryCostDiscountGross` | derselbe Rabatt als Bruttobetrag |
| `AltCurrencyCost` | Versandkosten in der alternativen Währung |
| `AltCurrencyNetCost` | Nettobetrag in der alternativen Währung |
| `AltCurrencyGrossCost` | Bruttobetrag in der alternativen Währung |
| `AltCurrencyIso` | ISO-Code der alternativen Währung |
| `AltCurrencySymbol` | Symbol der alternativen Währung |

### Darstellung

| Parameter | Zweck | Werte |
| - | - | - |
| `Img` | Pfad zum Symbol der Versandart | beispielsweise `../../navigation/grafiken/logo-delivererXYZ.png` |
| `ImgOnClick` | JavaScript beim Klick auf das Symbol | unterstützt die lokalen Tags `Link` und `ID` |
| `RadioOnClick` | JavaScript beim Klick auf den Radiobutton | unterstützt die lokalen Tags `RadiobuttonID` und `ID` |
| `Link` | lokales Tag für die Verwendung in diesen JavaScript-Funktionen | URL |
| `HideCostsInName` | Versandkosten nicht automatisch hinter dem Namen anzeigen | `yes`, `no`. Standard: `no` |
| `+AdditionalInfo-<ID>` | optionale Zusatzinformation, im Template über die DELIV-Tags abrufbar | beispielsweise `+AdditionalInfo-deliv-time_01 = 2 Werktage` |

Die ID eines `+AdditionalInfo`-Parameters darf alphanumerische Zeichen, Bindestrich und Unterstrich enthalten.

> [!WARNING]
>
> Setzen Sie `HideCostsInName` nur dann auf `yes`, wenn Sie die lokalen Tags `Cost`, `GrossCost` oder `NetCost` in `Suffix-Txt` verwenden. Andernfalls werden die Versandkosten bei der Auswahl der Versandart gar nicht angezeigt.

### Versandkosten

| Parameter | Zweck | Werte |
| - | - | - |
| `BasicCost-List` | Versandkosten abhängig vom Auftragswert | Staffel, siehe unten |
| `WeightCost-List` | Versandkosten abhängig vom Gewicht | Staffel |
| `VolumeCost-List` | Versandkosten abhängig vom Volumen | Staffel |
| `MinCost` | Mindestbetrag für Versandkosten | beispielsweise `4.50` |
| `ProductCost-Allow` | produktabhängige Versandkostenberechnung | `no`, `id`, `id_zip` |
| `UserDiscount-Allow` | kundenindividuellen Lieferkostenrabatt zulassen | `yes`, `no`. Standard: `yes` |
| `FaktorCost-Value` | Stückkosten der Versandart | Betrag |
| `UserDeliveryCostReduction-Value` | Versandkostenreduktion, nur bei Kunden mit entsprechendem Kontoschalter | Betrag |

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
# ab 0 EUR: 10,90, ab 200 EUR: 8,00, ab 500 EUR: 5 Prozent, ab 1000 EUR: kostenlos
BasicCost-List  = (0:10.90)(200:8)(500:5%)(1000:0)
# nach Gewicht
WeightCost-List = (0:4.50)(3.5:9.70)(5:14.00)(10.5:20.50)
# nach Volumen
VolumeCost-List = (0:0)(0.5:5%)(1:20)
```

Die Kosten lassen sich absolut oder als Prozentsatz vom Warenwert angeben. Es werden bis zu 500 Staffelungen unterstützt. Dezimalstellen werden mit einem Punkt getrennt.

`MinCost` greift, wenn in `BasicCost-List` keine Staffel hinterlegt ist oder die berechneten Kosten darunter liegen würden.

`ProductCost-Allow` steuert die produktabhängige Berechnung. `no` schaltet sie ab, `id` rechnet nach der Versandarten-ID und `id_zip` zusätzlich nach dem PLZ-Bereich.

> [!NOTE]
>
> Drei Angaben zu den Versandkosten kommen hinzu.
>
> `FaktorCost-Value` legt Stückkosten fest.
>
> `UserDeliveryCostReduction-Value` wird nur gelesen, wenn im Kundenkonto der Schalter für Versandkostenreduktion gesetzt ist.
>
> Der Unterabschnitt `DestinationDependentWeightCost` erlaubt eine ziellandabhängige gewichtsbasierte Staffel. Seine Parameter sind nicht dokumentiert. Bitte bei Bedarf bei der WEBSALE AG erfragen.
>
> Zusätzlich akzeptiert der Kernel die Schreibweise `BasicCostList` ohne Bindestrich und liest sie **vor** `BasicCost-List`. Steht beides in der Konfiguration, gewinnt die Schreibweise ohne Bindestrich. Verwenden Sie `BasicCost-List`.

### Verfügbarkeit nach Betrag, Gewicht und Volumen

| Parameter | Versandart wird angeboten, wenn |
| - | - |
| `MinOrder` | der Bestellwert diesen Wert überschreitet |
| `MaxOrder` | der Bestellwert diesen Wert nicht übersteigt |
| `MinWeight` | das Gesamtgewicht größer oder gleich diesem Wert ist |
| `MaxWeight` | das Gesamtgewicht kleiner oder gleich diesem Wert ist |
| `MinVolume` | das Gesamtvolumen größer oder gleich diesem Wert ist |
| `MaxVolume` | das Gesamtvolumen kleiner oder gleich diesem Wert ist |

### Verfügbarkeit nach Land

| Parameter | Zweck | Werte |
| - | - | - |
| `DeliveryCountry-Rule` | Regel für das Lieferland | `AllowCountries`, `DenyCountries`. Standard: `DenyCountries` |
| `DeliveryCountry-List` | Länder zur Regel | kommaseparierte 3-stellige ISO-Codes |

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
# nur innerhalb Deutschlands
DeliveryCountry-Rule = AllowCountries
DeliveryCountry-List = DEU

# alle Länder außer DACH
DeliveryCountry-Rule = DenyCountries
DeliveryCountry-List = DEU,AUT,CHE
```

### Verfügbarkeit nach Produkten im Warenkorb

| Parameter | Zweck | Werte |
| - | - | - |
| `DeliveryFilterID-List` | Versandart nur für entsprechend gekennzeichnete Produkte | IDs aus dem Produktdatenfeld `DeliveryFilterID` |
| `+DeliveryFilterID-List` | dasselbe, aber als mehrere alternative Kombinationen | IDs aus demselben Produktdatenfeld |
| `AllowForInventoryStateAtLeast` | nur bei mindestens einem Produkt je genanntem Lagerbestand | `green`, `yellow`, `red`, kommasepariert |
| `HideForFreeDelivery` | ausblenden, wenn nur versandkostenfreie Produkte gekauft werden | `yes`, `no` |
| `HideForNoFreeDelivery` | ausblenden, wenn nicht alle Produkte versandkostenfrei sind | `yes`, `no` |
| `BookDelivery-Allow` | Versandart für Büchersendungen oder für Nicht-Büchersendungen | `yes`, `no`. Standard: `no` |
| `EigenhaendigPlus` | Versandart bei aktivem Eigenhändig Plus anbieten | `allow`, `deny` |

> [!WARNING]
>
> Ist `DeliveryFilterID-List` ohne führendes Plus angegeben, werden alle `+DeliveryFilterID-List`-Parameter ignoriert. Bei mehreren `+DeliveryFilterID-List`-Parametern steht die Versandart zur Verfügung, sobald **eine** der angegebenen Kombinationen zu den Produkten im Warenkorb passt.
>
> Konfigurieren Sie immer zuerst den Parameter und ergänzen Sie danach die Einträge in den Produktdaten.

`AllowForInventoryStateAtLeast` verlangt zu **jedem** genannten Lagerbestand mindestens ein passendes Produkt im Warenkorb.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
AllowForInventoryStateAtLeast = green,yellow
```

Mit dieser Einstellung ist die Versandart verfügbar, wenn der Warenkorb mindestens ein grünes **und** mindestens ein gelbes Produkt enthält. Ein Warenkorb mit nur grünen Produkten erfüllt die Bedingung nicht.

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

### Verfügbarkeit nach Bestellart und Kunde

| Parameter | Zweck | Werte |
| - | - | - |
| `Warranty` | Versandart nur Käufern mit einer dieser Berechtigungs-IDs anbieten | kommaseparierte Liste |
| `AllowForCheckouts-List` | für welche Checkouts die Versandart gilt | `Standard`, `PayPalExpress`, `KlarnaExpress`. Standard: `Standard` |
| `AllowForPrimeShopping-Qualification` | Verfügbarkeit für Prime-Kunden | `use-for-all`, `only-for-prime`, `not-for-prime`. Standard: `use-for-all` |
| `AllowForSubscriptionOrder-Qualification` | Verfügbarkeit für Abo-Bestellungen | `use-for-all`, `only-for-subscriptionorder`, `not-for-subscriptionorder`. Standard: `use-for-all` |
| `AllowForSubsequentOrder-Qualification` | Verfügbarkeit für Folgebestellungen | `use-for-all`, `only-for-SubSequentorder`, `not-for-SubSequentOrder`. Standard: `use-for-all` |
| `AllowForReferer-List` | Referer, bei denen die Versandart erlaubt ist | kommaseparierte Liste |
| `DenyForReferer-List` | Referer, bei denen die Versandart nicht erlaubt ist | kommaseparierte Liste |
| `AllowForReferer-Qualification` | Verfügbarkeit in Abhängigkeit von einem gesetzten Referer | `use-for-all`, `only-for-referer`, `not-for-referer`. Standard: `use-for-all` |
| `AvailabilityCheck-ID` | shopinterner Abgleich der PLZ-Liefergebietsliste. Nur bei DHL Kurier | `dhlkurier` |

`AllowForReferer-Qualification` und die beiden Referer-Listen arbeiten zusammen. Die Qualification entscheidet, ob die Versandart überhaupt mit oder ohne gesetzten Referer erscheint. Die Listen entscheiden danach, welche konkreten Referer erlaubt oder ausgeschlossen sind.

Sollen mehrere Checkout-Arten unterstützt werden, geben Sie bei `AllowForCheckouts-List` mehrere Werte kommasepariert an.

### Verweise auf Definitions-Abschnitte

| Parameter | Verweist auf | Verknüpfung bei mehreren |
| - | - | - |
| `+UseAdditionalInput-ID` | `DelivererAdditionalInput-Definitions` | je ID ein eigener Parameter |
| `+UseAddressDependency-ID` | `DelivererAddressDependencies-Definitions` | **und**-verknüpft, alle müssen erfüllt sein |
| `+UseProductDependency-ID` | `DelivererProductDependencies-Definitions` | **und**-verknüpft, alle müssen erfüllt sein |
| `UseShowDisabled-GroupID` | `DelivererShowDisabled-Definitions` | eine GroupID je Versandart |

## `DelivererAdditionalInput-Definitions`

Hier definieren Sie Zusatzeingabefelder für Versandarten, beispielsweise eine Telefonnummer, die nur bei Speditionslieferung gebraucht wird. Die Zuordnung erfolgt über `+UseAdditionalInput-ID` im `+Deliverer`-Abschnitt. Der Abschnitt darf nur **einmal** in der `shop.config` stehen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DelivererAdditionalInput-Definitions>
  <+AdditionalInput>
    ID                       = phone_required
    FieldDescr               = Telefonnummer
    AdditionalInfoText       = Bei Speditionslieferung benötigen wir Ihre Telefonnummer.
    MaxLength                = 32
    Required                 = no
    RequiredErrorMessage-Txt = Bitte geben Sie Ihre Telefonnummer an.
    Type                     = input
    <+RequiredDependency>
      <+Dependency>
        Input = billaddress
        <+Condition>
          Field = Phone
          Type  = empty
        </+Condition>
      </+Dependency>
    </+RequiredDependency>
  </+AdditionalInput>
</DelivererAdditionalInput-Definitions>
```

### `+AdditionalInput`

| Parameter | Zweck | Werte |
| - | - | - |
| `ID` | eindeutige Kennung der Eingabe | beispielsweise `phone_required` |
| `FieldDescr` | Feldname, wird vor dem Eingabefeld angezeigt | Text |
| `AdditionalInfoText` | optionale Beschreibung unterhalb des Felds | Text |
| `MaxLength` | maximale Länge der Eingabe | bis 128. Standard: 128 |
| `Required` | Feld ist in jedem Fall Pflichtfeld | `yes`, `no`. Standard: `no` |
| `RequiredErrorMessage-Txt` | Meldung bei leerem Pflichtfeld | Text |
| `Type` | Art des Eingabefelds | `input`, `listbox`, `checkbox`. Standard: `input` |

> [!NOTE]
>
> Drei Eigenheiten der Auswertung sind dabei zu beachten.
>
> `MaxLength` wird bei 0 oder bei einem Wert über dem internen Maximum stillschweigend auf dieses Maximum gesetzt.
>
> `Type = checkbox` setzt `MaxLength` fest auf 10, weil als Wert nur `checked` oder nichts gespeichert wird.
>
> Jeder Wert von `Type`, der nicht `listbox` oder `checkbox` lautet, ergibt `input`.

### `+listentry`

Die Einträge einer Auswahlliste. Wird nur gebraucht, wenn `Type = listbox` gesetzt ist. Ein Unterabschnitt entspricht einem Eintrag der Dropdown-Liste.

| Parameter | Zweck |
| - | - |
| `Entry-Txt` | angezeigter Text |
| `ID` | technischer Wert, alphanumerisch |

### `+VisibilityDependency` und `+RequiredDependency`

Beide Unterabschnitte sind optional und gleich aufgebaut. `+VisibilityDependency` steuert, ob das Feld überhaupt erscheint. `+RequiredDependency` steuert, ob das sichtbare Feld ein Pflichtfeld ist. Mehrere `+VisibilityDependency`-Abschnitte sind **oder**-verknüpft, die `+Dependency`-Abschnitte darin **und**-verknüpft.

> [!WARNING]
>
> Wenn Sie einen der beiden Abschnitte verwenden, muss `Required` auf `no` stehen. Andernfalls ist das Feld unabhängig von den Bedingungen immer ein Pflichtfeld.

| Parameter | Zweck | Werte |
| - | - | - |
| `Input` | was geprüft wird | siehe unten |
| `Field` | technischer Feldname des geprüften Werts | beispielsweise `Phone` |
| `Type` | Art der Prüfung | siehe unten |
| `Value` | geprüfter Wert | Text |
| `SetBehavior` | Behandlung von Set-Produkten | `asUnit`, `Single`. Standard: `Single` |
| `BasketBehavior` | wie viele Produkte die Bedingung erfüllen müssen | `match-all`, `match-once`. Standard: `match-all` |

| `Input` | geprüft werden |
| - | - |
| `billaddress` | die Daten der Rechnungsadresse |
| `delivaddress` | die Daten der Lieferadresse, ersatzweise der Rechnungsadresse |
| `onlydelivaddress` | ausschließlich die Daten der Lieferadresse |
| `additionalinput` | der Eintrag in einem anderen Zusatzeingabefeld |
| `delivaddress-used` | ob eine abweichende Lieferadresse genutzt wird |
| `delivaddress-notused` | ob keine abweichende Lieferadresse genutzt wird |
| `delivaddress-oneforallused` | ob die Bestellung an genau eine Lieferadresse geht |
| `delivaddress-multideliveryused` | ob die Bestellung an mehrere Lieferadressen geht |

Der Unterabschnitt `+Condition` wird nur bei `billaddress`, `delivaddress`, `onlydelivaddress` und `additionalinput` ausgewertet. Die vier Werte, die mit `delivaddress-` beginnen, prüfen den Zustand selbst und brauchen keine Bedingung.

| `Type` | Bedingung ist erfüllt, wenn |
| - | - |
| `empty` | das Feld leer ist |
| `filled` | das Feld gefüllt ist |
| `value` | der Feldwert dem Wert in `Value` entspricht |
| `notvalue` | der Feldwert nicht dem Wert in `Value` entspricht |
| `inlist` | der Feldwert Teil der Liste in `Value` ist |
| `notinlist` | der Feldwert nicht Teil der Liste in `Value` ist |
| `prefix` | der Feldwert mit dem Wert in `Value` beginnt |
| `notprefix` | der Feldwert nicht mit dem Wert in `Value` beginnt |
| `includedinlist` | der Wert aus `Value` in der Werteliste des Felds steht |
| `notincludedinlist` | der Wert aus `Value` nicht in der Werteliste des Felds steht |
| `matchsimplewildcard` | der Feldwert auf das Muster in `Value` passt |
| `notmatchsimplewildcard` | der Feldwert nicht auf das Muster in `Value` passt |

Bei den beiden Wildcard-Prüfungen steht `?` für genau ein beliebiges Zeichen und `*` für beliebig viele Zeichen. Der Stern darf nur am Ende stehen.

## `DelivererAddressDependencies-Definitions`

Macht eine Versandart von den Eingaben in der Rechnungs- oder Lieferadresse abhängig. Die Zuordnung erfolgt über `+UseAddressDependency-ID`. Der Abschnitt darf nur **einmal** in der `shop.config` stehen und braucht mindestens einen Unterabschnitt `+AddressDependency`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DelivererAddressDependencies-Definitions>
   <+AddressDependency>
      AddressDependency-ID = nur_firmenkunden
      ShowDisabled-Txt     = Diese Versandart steht nur Geschäftskunden zur Verfügung.
      <+DependencyGroup>
         <+Dependency>
            Input = billaddress
            <+Condition>
               Field = Company
               Type  = filled
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+AddressDependency>
</DelivererAddressDependencies-Definitions>
```

> [!WARNING]
>
> Die Bedingungen machen eine Versandart **verfügbar**, wenn sie erfüllt sind. Ein Ausschluss lässt sich nicht formulieren. Wer eine Versandart für bestimmte Adressen ausschließen möchte, formuliert die Bedingung negativ, beispielsweise mit `empty` oder `notvalue`.

| Parameter | Zweck | Werte |
| - | - | - |
| `+AddressDependency` | eigenständiger Unterabschnitt, nicht mit anderen verknüpft | |
| `AddressDependency-ID` | eindeutige ID für die Zuordnung zur Versandart | beispielsweise `no_deliv_addr_allowed` |
| `ShowDisabled-Txt` | ersetzt den Hinweis aus `DelivererShowDisabled-Definitions` | Text |
| `+DependencyGroup` | mehrere dieser Abschnitte sind **oder**-verknüpft | |
| `+Dependency` | mehrere dieser Abschnitte innerhalb einer Gruppe sind **und**-verknüpft | |
| `Input` | was geprüft wird | wie oben, ohne `additionalinput` |
| `+Condition` | Bedingung zu den Daten aus `Input`. Mehrere sind **und**-verknüpft | |
| `Field` | technischer Feldname aus `AddressFields-Txt` | beispielsweise `Company` |
| `Type` | Art der Prüfung | wie oben, zusätzlich `greater` und `smaller` |
| `Value` | geprüfter Wert | Text |

Beachten Sie die Verschachtelung. `+AddressDependency` enthält `+DependencyGroup`, diese enthält `+Dependency`, diese enthält `+Condition`.

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

## `DelivererProductDependencies-Definitions`

Macht eine Versandart vom Produktindex, von der Produktnummer oder von einem freien Produktdatenfeld abhängig. Die Zuordnung erfolgt über `+UseProductDependency-ID`. Auch dieser Abschnitt darf nur **einmal** in der `shop.config` stehen und braucht mindestens einen Unterabschnitt `+ProductDependency`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DelivererProductDependencies-Definitions>
   <+ProductDependency>
      ProductDependency-ID = kein_sperrgut
      ShowDisabled-Txt     = Für Speditionsware steht diese Versandart nicht zur Verfügung.
      <+DependencyGroup>
         <+Dependency>
            <+Condition>
               Field          = AF-Versandart
               Type           = notvalue
               Value          = Spedition
               SetBehavior    = Single
               BasketBehavior = match-all
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+ProductDependency>
</DelivererProductDependencies-Definitions>
```

> [!WARNING]
>
> Auch hier machen die Bedingungen eine Versandart verfügbar, wenn sie erfüllt sind. Ein Ausschluss lässt sich nicht formulieren.

| Parameter | Zweck | Werte |
| - | - | - |
| `ProductDependency-ID` | eindeutige ID für die Zuordnung zur Versandart | beispielsweise `fsk18dependency` |
| `ShowDisabled-Txt` | ersetzt den Hinweis aus `DelivererShowDisabled-Definitions` | Text |
| `Field` | geprüftes Feld | `ProdIndex`, `ProdNumber` oder `AF-<freies Produktfeld>` |
| `Type` | Art der Prüfung | wie oben, zusätzlich `greater` und `smaller` |
| `Value` | geprüfter Wert | Text |
| `SetBehavior` | Behandlung von Set-Produkten | `asUnit`, `Single`. Standard: `Single` |
| `BasketBehavior` | wie viele Produkte die Bedingung erfüllen müssen | `match-all`, `match-once`. Standard: `match-all` |

Freie Produktfelder tragen das Präfix `AF-`, beispielsweise `AF-FSK18`. Sie müssen zusätzlich im Abschnitt `AdditionalProductFieldsInBasket` für den Warenkorb aktiviert sein.

Referenz: [Abschnitt AdditionalProductFieldsInBasket](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md#additionalproductfieldsinbasket)

## `DelivererShowDisabled-Definitions`

Steuert, ob eine nicht verfügbare Versandart ausgegraut statt gar nicht angezeigt wird. Sie legen eine Regel an und tragen deren `ShowDisabled-GroupID` in die betreffenden `+Deliverer`-Abschnitte ein. Der Abschnitt darf nur **einmal** in der `shop.config` stehen.

Die Gruppierung ist der eigentliche Zweck. Legen Sie je Lieferzone einen eigenen `+Deliverer`-Abschnitt für denselben Versender an, verhindert eine gemeinsame GroupID, dass derselbe Versender mehrfach ausgegraut erscheint. Eine Versandart wird erst dann ausgegraut dargestellt, wenn **alle** zusammengehörigen `+Deliverer`-Abschnitte nicht verfügbar sind.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DelivererShowDisabled-Definitions>
   <+ShowDisabled-Rule>
      ShowDisabled-GroupID                      = selbstabholung
      ShowDisabled-Allow                        = 1,6,28
      ShowDisabled-MultipleEntriesDisabled-Mode = show-first
      <ShowDisabled-Txt>
         6       = Für die Selbstabholung gilt ein Mindestbestellwert.
         28      = Bitte wählen Sie keine abweichende Lieferadresse, wenn Sie die Ware vor Ort abholen möchten.
         default = Diese Versandart steht leider nicht zur Verfügung.
      </ShowDisabled-Txt>
   </+ShowDisabled-Rule>
</DelivererShowDisabled-Definitions>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `ShowDisabled-GroupID` | Gruppierungskennung, wird im `+Deliverer`-Abschnitt über `UseShowDisabled-GroupID` zugewiesen | alphanumerisch, Bindestrich, Unterstrich |
| `ShowDisabled-Allow` | wann ausgegraut wird | `never`, `always` oder Liste von Ablehnungsgründen. Standard: `never` |
| `ShowDisabled-MultipleEntriesDisabled-Mode` | bei mehreren inaktiven Versandarten alle oder nur die erste zeigen | `show-all`, `show-first`. Standard: `show-all` |
| `ShowDisabled-Txt` | Unterabschnitt mit den Hinweistexten je Ablehnungsgrund | je Grund ein Parameter, dazu `default` |

Die Regeln sind nicht verpflichtend. Im Sinne der Nachvollziehbarkeit empfiehlt es sich aber, für jede Versandart eine anzulegen.

### Ablehnungsgründe

| Nummer | Grund |
| - | - |
| 1 | Versandart für das gewählte Lieferland nicht verfügbar |
| 2 | Mindestgewicht nicht erreicht, siehe `MinWeight` |
| 3 | Maximalgewicht überschritten, siehe `MaxWeight` |
| 4 | Mindestvolumen nicht erreicht, siehe `MinVolume` |
| 5 | Maximalvolumen überschritten, siehe `MaxVolume` |
| 6 | Mindestbestellwert nicht erreicht, siehe `MinOrder` |
| 7 | Maximalbestellwert überschritten, siehe `MaxOrder` |
| 8 | nicht für kostenfreien Versand verfügbar, siehe `HideForFreeDelivery` |
| 9 | nicht für Büchersendungen, siehe `BookDelivery-Allow` |
| 10 | Spezialanbieter wie DHL Kurier, siehe `AvailabilityCheck-ID` |
| 11 | nur für Prime-Bestellungen, Kunde ist kein Prime-Kunde |
| 12 | nur für Nicht-Prime-Bestellungen, Kunde ist Prime-Kunde |
| 13 | nur für Folgebestellungen, aktuelle Bestellung ist keine |
| 14 | nur für Nicht-Folgebestellungen, aktuelle Bestellung ist eine |
| 15 | nur für Eigenhändig-Plus-Bestellungen, Bestellung ist nicht qualifiziert |
| 16 | nicht für Eigenhändig-Plus-Bestellungen, Bestellung ist qualifiziert |
| 17 | nur für bestimmte Berechtigungsgruppen, siehe `Warranty` |
| 18 | nicht für Versandkostenprodukte, siehe `HideForNoFreeDelivery` |
| 19 | nicht in Kombination mit der gewählten Zahlungsart, siehe `DelivererID-List` der Zahlungsart |
| 20 | reserviert, derzeit nicht verwendet |
| 21 | reserviert, Zustellcode, nur für den Bestellgenerator relevant |
| 22 | reserviert, Zustell-ID, nur für den Bestellgenerator relevant |
| 23 | Lagerbestand grün nicht erreicht |
| 24 | Lagerbestand gelb nicht erreicht |
| 25 | Lagerbestand rot nicht erreicht |
| 26 | DeliveryFilterID passt nicht zu den Produkten im Warenkorb |
| 27 | nicht für diesen Checkout-Typ verfügbar, siehe `AllowForCheckouts-List` |
| 28 | Abhängigkeiten zur Rechnungs- oder Lieferadresse nicht erfüllt |
| 29 | nur für Abo-Bestellungen, aktuelle Bestellung ist keine |
| 30 | nur für Nicht-Abo-Bestellungen, aktuelle Bestellung ist eine |
| 31 | nicht für die Produkte im Warenkorb verfügbar, siehe Produktabhängigkeiten |
| 32 | URL-Referer vorhanden oder nicht vorhanden, Angabe ohne Liste |
| 33 | URL-Referer nicht in der Positiv-Liste, siehe `AllowForReferer-List` |
| 34 | URL-Referer in der Negativ-Liste, siehe `DenyForReferer-List` |

## Wunsch-Liefertermin

Für den Wunsch-Liefertermin gibt es zwei Abschnitte. `DeliveryDate` bietet die einfache Variante mit einer durchgehenden Liste von Tagen. `AdvDeliveryDate` bietet die erweiterte Variante mit Wochentagen, Feiertagen und Bestellzeitgrenze. Verwenden Sie einen von beiden, nicht beide.

### `DeliveryDate`

```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 | Zweck | Werte |
| - | - | - |
| `Allow` | Auswahl des Lieferdatums anbieten | `yes`, `no`. Standard: `no` |
| `Days-Value` | Anzahl der Tage, die zur Auswahl stehen | Ganzzahl |
| `DaysOffset-Value` | Anzahl der Tage ab Bestelleingang, nach denen frühestens geliefert wird | Ganzzahl |

Mit `Days-Value = 10` und `DaysOffset-Value = 5` enthält die Auswahlliste bei einer Bestellung am 20.11. die zehn Tage vom 25.11. bis zum 04.12.

### `AdvDeliveryDate`

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AdvDeliveryDate>
   Allow          = yes
   DeliveryRange  = 90
   DeliveryDays   = 1,2,3,4,5
   DeliveryTime   = 14
   TimeLimit      = 10
   FirstEntry-Txt = Bitte wählen Sie
   Name-Txt       = Wunschtermin
   Required       = no
   Holidays       = 2026/12/25,2026/12/26,2027/01/01
</AdvDeliveryDate>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Liefertermin-Funktion aktivieren | `yes`, `no`. Standard: `no` |
| `DeliveryRange` | Anzahl der Termine ab Bestelldatum | Ganzzahl |
| `DeliveryDays` | Wochentage, an denen geliefert wird. Montag ist 1 nach ISO 8601 | kommaseparierte Ganzzahlen |
| `DeliveryTime` | Lieferzeit in Stunden | Ganzzahl |
| `TimeLimit` | Bestellzeitgrenze als volle Stunde | 0 bis 24 |
| `Holidays` | Feiertage ohne Lieferung | bis zu 100 Einträge im Format `JJJJ/MM/TT` |
| `FirstEntry-Txt` | Text für den ersten Eintrag der Auswahlliste | Text |
| `Name-Txt` | in der Bestellung angezeigter Text des Liefertermins | Text |
| `Required` | Angabe eines Wunschtermins ist Pflicht | `yes`, `no`. Standard: `no` |

`TimeLimit` legt die Bestellzeitgrenze fest. Bei `TimeLimit = 10` ist für alle Bestellungen bis einschließlich 10:00 Uhr das aktuelle Datum die Basis für die Terminberechnung. Bei späteren Bestellungen ist es der Folgetag. Der Wert `0` bewirkt, dass die Lieferzeit unabhängig von der Uhrzeit immer ab der Bestellzeitgrenze des Bestelltags gerechnet wird.

Im Beispiel oben wird bei einer Bestellung vor 10 Uhr der nächste Werktag als frühestmöglicher Liefertermin angeboten, bei einer Bestellung nach 10 Uhr der übernächste. Die Auswahlliste reicht 90 Tage in die Zukunft.

Zwei Begrenzungen sind zu beachten. Ein `TimeLimit` über 24 wird auf 24 gesetzt. Eine `DeliveryRange` über 36500 wird auf 3650 gesetzt, Werte dazwischen bleiben unverändert.

Nur in der Zukunft liegende Feiertage werden berücksichtigt. Die angegebenen Tage erscheinen nicht in der Auswahlliste.

## `PartialDeliverySelection`

Legt fest, ob der Käufer zwischen Teillieferung und Komplettlieferung wählen kann.

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

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Teillieferung aktivieren oder in den Testmodus schalten | `yes`, `no`, `test`. Standard: `no` |
| `PreSelection` | Vorauswahl im Bestellprozess | `complete`, `partial`, `undefined`. Standard: `undefined` |
| `+BasketInventoryState-Group` | optionale Gruppierung der Lagerbestände | `green`, `yellow`, `red`, auch kommasepariert |

Der Parameter `+BasketInventoryState-Group` darf mehrfach stehen. Jede Zeile bildet eine Gruppe.

## `GiftPackage`

Konfiguriert optionale Geschenkverpackungen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<GiftPackage>
   Allow         = yes
   Cost-Value    = 2.50
   Text2-Txt     = Geschenkverpackung
   VATType       = static
   VATRate-Value = 1
</GiftPackage>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Geschenkverpackungssystem freischalten | `yes`, `no`. Standard: `no` |
| `Cost-Value` | Standardpreis je Stück, falls beim Produkt kein Preis hinterlegt ist | Preis, beispielsweise `2.50` |
| `Text2-Txt` | Text in den Bestelldaten, wenn eine Verpackung gewählt wurde | Text |
| `VATType` | Ermittlung des Mehrwertsteuersatzes | `static`, `dynamic`. Standard: `static` |
| `VATRate-Value` | Mehrwertsteuerindex, nur bei `VATType = static` | 1 bis 10. Standard: 1 |

Bei `VATType = dynamic` bestimmt der Mehrwertsteuersatz mit der höchsten Summe im Warenkorb den Satz für die Geschenkverpackung.

> [!WARNING]
>
> Bei `VATType = dynamic` darf `VATRate-Value` keinen Wert enthalten.

Referenz: [Abschnitt VATRates](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/preise-steuern-und-waehrung.md#vatrates)

## `EigenhaendigPlus`

Konfiguriert die Versandart Eigenhändig Plus für Produkte mit Altersbeschränkung. Welche Produkte betroffen sind, legen Sie im Abschnitt `AgeRestrictedProductList` fest.

```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 folgende Daten
   Notify1-Txt          = Ausweisnummer
   Notify2-Txt          = Ausweistyp
   Notify3-Txt          = Ausstellende Behörde
   Notify4-Txt          = Bestätigung des Mindestalters und der Namensgleichheit
   Notify5-Txt          = Geburtsdatum
   Notify6-Txt          = Das Mindestalter ist nicht erreicht
</EigenhaendigPlus>
```

| Parameter | Zweck |
| - | - |
| `AgeRestricted-Value` | Alter, ab dem Eigenhändig Plus aktiviert wird |
| `DeliveryCountry-List` | Lieferländer, für die Eigenhändig Plus aktiviert wird |
| `IDCardType1-Txt`, `IDCardType2-Txt` | Einträge der Auswahlliste für den Ausweistyp |
| `HeadNotify-Txt` | Überschrift, wenn notwendige Eingaben fehlen |
| `Notify1-Txt` bis `Notify6-Txt` | Fehlermeldungen zu den einzelnen Feldern auf der Bestellseite |

Ob eine Versandart bei aktivem Eigenhändig Plus angeboten wird, steuern Sie im jeweiligen `+Deliverer`-Abschnitt über den Parameter `EigenhaendigPlus` mit den Werten `allow` und `deny`.

Referenz: [Abschnitt AgeRestrictedProductList](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/warenkorb-und-bestellprozess.md#agerestrictedproductlist)

## `ShipTrack`

Hält die Zugangsdaten der Versanddienstleister für die Sendungsverfolgung. Je Dienstleister ein Unterabschnitt `+Entry`. Über die dort vergebene ID sprechen Sie den Eintrag im Template an.

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

| Parameter | Zweck | Werte |
| - | - | - |
| `ID` | frei vergebene Kennung zur Adressierung im Template | alphanumerisch, beispielsweise `DHL` |
| `Provider` | technische Anbieterkennung, von WEBSALE vorgegeben | `DHL`, `POST-AT`, `WSSwissPostCon` |
| `Username` | Benutzername vom Versanddienstleister | Text |
| `Password` | Passwort vom Versanddienstleister | Text |
| `LanguageCode` | Sprache der gelieferten Versandinformationen | `de`, `en`, `fr`, `nl`, `it`, `es`. Standard: `de` |

Weitere Sprachen sind möglich. Klären Sie das direkt mit dem Versanddienstleister.

Referenz: [ShipTrack-Tags](https://dokumentation.websale.de/v8s/referenz/tags/shiptrack-sendungsverfolgung.md) für die Ausgabe im Template


## Related topics

- [Texte und Meldungen](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md)
- [Versandart abhängig von Mindestbestellwert und Lieferadresse](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-versandart-ausgegraut.md)
- [Versandkosten abhängig von Adressdaten](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-versandkosten-nach-adressdaten.md)
- [DELIV- (Einzelpositionierung der Versandarten)](https://dokumentation.websale.de/v8s/referenz/tags/deliv.md)
- [Fragebogen Kaufmännische Einstellungen](https://dokumentation.websale.de/v8s/materialien/fragebogen-kaufmaennische-einstellungen.md)


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