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

# Regionalen Lieferdienst anbieten

> Eine Versandart nur für bestimmte Postleitzahlen anbieten, mit passender Zahlungsart, Absicherung gegen Bestellungen ohne Versandart und einem Hinweis für Käufer außerhalb des Liefergebiets.

Ein regionaler Lieferdienst fährt nur ein begrenztes Gebiet an. Im Shop soll er deshalb nur dann als Versandart erscheinen, wenn die Lieferadresse in diesem Gebiet liegt. Bezahlt wird bar bei der Übergabe, also braucht der Lieferdienst eine eigene Zahlungsart, die genau an diese eine Versandart gekoppelt ist.

Das Gebiet wird über eine Liste von Postleitzahlen beschrieben. Das Beispiel verwendet die Postleitzahlen von Nürnberg.

![Regionallieferdienst](https://mintcdn.com/websaleag-44ee7ea6/F0j7j4nmuETNasFh/images/regionallieferdienst.jpg?fit=max\&auto=format\&n=F0j7j4nmuETNasFh\&q=85\&s=c586c1251bddf319743d1e1a82537718)

## Wo die Postleitzahl geprüft wird

Die Prüfung gehört an die **Versandart**, nicht an die Zahlungsart. Die Zahlungsart bleibt ohne Einschränkung und steht jedem Käufer zur Auswahl. Wählt er sie und liegt seine Lieferadresse außerhalb des Gebiets, bleibt wegen der Kopplung über `DelivererID-List` keine Versandart übrig, und die Bestellung lässt sich nicht abschließen.

Der Grund für diese Aufteilung liegt in den beiden Prüfmechanismen:

| Prüfung an der | Mechanismus | Geprüft wird |
| - | - | - |
| Versandart | `<DelivererAddressDependencies-Definitions>` | die Adresse, die Sie über `Input` auswählen, also auch die Lieferadresse |
| Zahlungsart | Unterabschnitt `<AddressFilter>` | ausschließlich die Rechnungsadresse |

> [!WARNING]
>
> Prüfen Sie die Postleitzahl zusätzlich an der Zahlungsart, schließen Sie Käufer aus, deren Rechnungsadresse außerhalb des Gebiets liegt, deren Lieferadresse aber darin. Das trifft genau die Fälle, für die ein regionaler Lieferdienst besonders attraktiv ist, beispielsweise ein Geschenk an jemanden vor Ort.
>
> Wie Sie es trotzdem einrichten, steht unten im Abschnitt zur zusätzlichen Prüfung der Rechnungsadresse.

## Schritt 1: Die Zahlungsart anlegen

Verwenden Sie einen der fünf freien Zahlungsart-Abschnitte in der `shop.config`. Die Zahlungsart bekommt keine Einschränkung, nur die Kopplung an die Versandart.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentUserDef1-Txt>
   ...
   Allow            = yes
   Name             = Bezahlung direkt bei regineo Lieferservice aus Nürnberg
   DelivererID-List = regineo
   ...
</PaymentUserDef1-Txt>
```

`DelivererID-List` ist der Angelpunkt des Beispiels. Ohne diesen Parameter bliebe dem Käufer außerhalb des Gebiets eine andere Versandart, und er könnte die Barzahlung an einen Lieferdienst wählen, der gar nicht zu ihm fährt.

Referenz: [Abschnitt PaymentUserDef1…5-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md)

## Schritt 2: Die Regel für das Liefergebiet definieren

Die Postleitzahlen stehen im Abschnitt `<DelivererAddressDependencies-Definitions>`, der in der `shop.config` nur einmal vorkommen darf.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DelivererAddressDependencies-Definitions>
   <+AddressDependency>
      AddressDependency-ID = onlyRegionalDeliveryService
      # Versandart "regineo Lieferservice" nur in diesem PLZ-Gebiet anzeigen
      <+DependencyGroup>
         <+Dependency>
            Input          = delivaddress
            <+Condition>
               Field       = Zip
               Type        = inlist
               Value       = 90402,90403,90408,90409,90411,90419,90425,90427,90429,90431,90439,90441,90443,90449,90451,90453,90455,90459,90461,90469,90471,90473,90475,90478,90480,90482,90489,90491,90763
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+AddressDependency>
</DelivererAddressDependencies-Definitions>
```

> [!WARNING]
>
> Der Wert hinter `Value` muss in **einer** Zeile stehen. Eine umbrochene Liste wird nur bis zum Zeilenende gelesen, der Rest fällt stillschweigend weg. Das Liefergebiet wäre dann kleiner als gedacht, ohne dass eine Meldung darauf hinweist.

> [!NOTE]
>
> `Input = delivaddress` prüft die Lieferadresse. Verwendet der Käufer keine abweichende Lieferadresse, prüft WEBSALE V8s stattdessen die Rechnungsadresse. Sie brauchen dafür keinen zweiten Abschnitt.
>
> `onlydelivaddress` verhält sich anders und trifft ohne eigene Lieferadresse nie zu. Für diesen Anwendungsfall ist es die falsche Wahl.

`Type = inlist` prüft auf exakte Übereinstimmung mit einem Eintrag der Liste. Für ganze Postleitzahlenbereiche gibt es keine Platzhalter, die betroffenen Postleitzahlen werden einzeln aufgeführt. Die Länge der Liste ist an dieser Stelle nicht begrenzt.

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

## Schritt 3: Die Versandart anlegen und die Regel zuweisen

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   Allow                    = yes
   ID                       = regineo
   Name-Txt                 = regineo Lieferservice aus Nürnberg
   Country-Txt              = Lieferservice für Sie vor Ort
   +UseAddressDependency-ID = onlyRegionalDeliveryService
   ...
</+Deliverer>
```

Die `ID` muss mit dem Wert in der `DelivererID-List` der Zahlungsart übereinstimmen. Mehrere `+UseAddressDependency-ID`-Zeilen sind **und**-verknüpft, es müssen also alle zugewiesenen Regeln zutreffen.

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

## Schritt 4: Bestellungen ohne Versandart verhindern

Ohne diese Absicherung könnte ein Käufer außerhalb des Liefergebiets die Bestellung abschließen, ohne dass je eine Versandart gewählt wurde.

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

Referenz: [Abschnitt Basic](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#basic)

## Schritt 5: Den Käufer auf die Sackgasse hinweisen

Schritt 4 verhindert die fehlerhafte Bestellung, erklärt dem Käufer aber nicht, woran es liegt. Dafür braucht es einen Hinweis. Er gehört auf die Zahlungs- und Versandartenseite `ws_pay_deliv.htm` und auf die Bestellübersicht `ws_place_order.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!WS-Delivery}
   {ST-Payment(16)}
      Leider steht Ihnen der regionale Lieferdienst nur im Großraum Nürnberg zur Verfügung.
      Bitte wählen Sie eine andere Zahlungsart und anschließend eine Versandart aus,
      um mit der Bestellung fortzufahren.
   {/ST-Payment(16)}
   {!ST-Payment(16)}
      Leider steht Ihnen aufgrund Ihrer angegebenen Adresse keine Versandart zur Verfügung.
      Bitte korrigieren Sie Ihre Adresse oder wählen Sie eine andere Zahlungsart aus.
      Nach Auswahl einer neuen Zahlungsart sollten Ihnen andere Versandoptionen angeboten
      werden. Sollte dies nicht der Fall sein, kontaktieren Sie uns.
   {/!ST-Payment(16)}
{/!WS-Delivery}
```

| Klammerung | Wofür sie steht |
| - | - |
| `{!WS-Delivery}` | es ist keine Versandart gesetzt. Steht keine zur Auswahl, greift diese Klammerung |
| `{ST-Payment(16)}` | die aktuelle Zahlungsart ist die benutzerdefinierte Zahlungsart 1, hier also der Lieferdienst |
| `{!ST-Payment(16)}` | jede andere Zahlungsart. Dann liegt es nicht am Liefergebiet, sondern an einer anderen Einschränkung |

Die Zahl in der Klammer ist der Code der Zahlungsart. `16` bis `20` stehen für die benutzerdefinierten Zahlungsarten 1 bis 5. Haben Sie in Schritt 1 einen anderen der fünf Abschnitte verwendet, passen Sie die Zahl an allen vier Stellen an.

> [!WARNING]
>
> `WS-Delivery` greift, wenn eine Versandart **gesetzt** ist. Für den hier beschriebenen Fall deckt sich das mit "es steht eine zur Auswahl", weil WEBSALE V8s ersatzweise auf die erste im Warenkorb verwendete Versandart zurückfällt. Prüfen Sie den Hinweis trotzdem einmal mit einer Adresse innerhalb des Gebiets, damit er dort nicht fälschlich erscheint.

Referenz: [WS-Delivery](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick) · [ST-Payment()](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md)

## Zusätzlich die Rechnungsadresse prüfen

Soll die Zahlungsart schon gar nicht erscheinen, wenn die **Rechnungs**adresse außerhalb des Gebiets liegt, ergänzen Sie den Unterabschnitt `<AddressFilter>` in der Zahlungsart. Die Schritte 2 bis 5 bleiben unverändert.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentUserDef1-Txt>
   ...
   Allow            = yes
   Name             = Bezahlung direkt bei regineo Lieferservice aus Nürnberg
   DelivererID-List = regineo
   ...
   <AddressFilter>
      Allow              = yes
      TechnicalFieldName = Zip
      Rule               = Allow
      Values-List        = 90402,90403,90408,90409,90411,90419,90425,90427,90429,90431,90439,90441,90443,90449,90451,90453,90455,90459,90461,90469,90471,90473,90475,90478,90480,90482,90489,90491,90763
      Country-List       = DEU
   </AddressFilter>
   ...
</PaymentUserDef1-Txt>
```

Diese Variante kostet Sie die Fälle mit abweichender Lieferadresse. Dafür sieht ein Käufer außerhalb des Gebiets die Zahlungsart erst gar nicht und läuft nicht in die Sackgasse aus Schritt 5.

> [!WARNING]
>
> `Values-List` fasst höchstens **256 Zeichen**, also ungefähr 42 fünfstellige Postleitzahlen. Längere Listen werden abgeschnitten.
>
> Je Zahlungsart sind bis zu **fünf** `<AddressFilter>`-Abschnitte erlaubt, und sie sind untereinander **oder**-verknüpft. Ein größeres Gebiet verteilen Sie deshalb auf mehrere Abschnitte. Auf der Seite der Versandart besteht diese Begrenzung nicht.
>
> Der Filter greift nur, wenn das in `TechnicalFieldName` genannte Adressfeld in Ihrem Shop überhaupt aktiv ist. Ist es das nicht, gilt die Zahlungsart als erlaubt, und zwar ohne Fehlermeldung. Dasselbe gilt, wenn der Käufer das Feld leer gelassen hat.
>
> Prüfen Sie nach dem Einrichten einmal mit einer Adresse außerhalb des Gebiets, ob die Zahlungsart tatsächlich verschwindet.

`Country-List` prüft ebenfalls das Land der **Rechnungs**adresse. Ohne diesen Parameter würde eine ausländische Postleitzahl, die zufällig in der Liste steht, den Filter passieren.

Mit `Rule = Deny` kehren Sie die Logik um: Die Zahlungsart erscheint dann für alle Werte **außer** denen in `Values-List`. Jeder andere Wert als `Deny` wird als `Allow` gelesen. Ein einzelner Eintrag `*` in `Values-List` trifft auf jeden Wert zu.

Greift der Filter, meldet WEBSALE V8s intern den Ablehnungsgrund `19`. Über den Abschnitt `ShowDisabled-Txt` können Sie die Zahlungsart in diesem Fall ausgegraut mit einer eigenen Erklärung anzeigen, statt sie ganz auszublenden.

Referenz: [Abschnitt AddressFilter](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md#addressfilter) · [Abschnitt ShowDisabled-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md#showdisabled-txt)

## Verwandte Themen

* Wegweiser: [Zahlungsarten anlegen](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/zahlungsarten-anlegen.md)
* Wegweiser: [Versandarten anlegen](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen.md)
* Anwendungsbeispiel: [Click and Collect, Abholung statt Zustellung](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-click-and-collect.md)
* Referenz: [Versand und Lieferung in der shop.config](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md)


## Related topics

- [Anwendungsbeispiele](https://dokumentation.websale.de/v8s/anwendungsbeispiele/anwendungsbeispiele.md)
- [Mehrfachkontenübersicht anbieten](https://dokumentation.websale.de/v8s/kundenkonto/mehrfachkontenuebersicht-anbieten.md)
- [Gutscheine anbieten: Übersicht](https://dokumentation.websale.de/v8s/gutscheine-anbieten/gutscheine-anbieten-uebersicht.md)
- [Verteilungsprodukte anbieten (Prospektservice)](https://dokumentation.websale.de/v8s/produkte/verteilungsprodukte-anbieten-prospektservice.md)
- [Upload-Produkte anbieten](https://dokumentation.websale.de/v8s/produkte/upload-produkte-anbieten.md)


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