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

# D- (Lieferadresse)

> Die Tags für die abweichende Lieferadresse: Eingabefelder und Auswahllisten aufbauen, gespeicherte Lieferadressen verwalten, durchsuchen und auswählen, auch für mehrere Lieferadressen je Bestellung.

Die Tags mit dem Präfix `D-` bilden die abweichende Lieferadresse ab. Sie sind das Spiegelbild der `A-`Tags für die Rechnungsadresse und folgen demselben Bauplan: ein technischer Feldname, an den ein Zusatz angehängt wird.

Darüber hinaus kann eine Lieferadresse etwas, was eine Rechnungsadresse nicht kann. Ein Kunde darf mehrere davon speichern, eine davon als Standard festlegen und bei einer Bestellung sogar mehrere gleichzeitig verwenden. Dafür gibt es die zusätzlichen Gruppen auf dieser Seite.

Wegweiser: [Abweichende Lieferadresse abfragen](https://dokumentation.websale.de/v8s/adressdaten/abweichende-lieferadresse-abfragen.md) · Referenz: A- (Rechnungsadresse)

## Woher die Feldnamen kommen

Die Basisfelder der Lieferadresse sind in der Shopkonfiguration `shop.config` im Abschnitt `<DeliveryAddressFields-Txt>` definiert. Der Parametername ist der technische Feldname, der Wert dahinter die Beschriftung.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<DeliveryAddressFields-Txt>
   FirstName = Vorname
   LastName  = Nachname
   ...
</DeliveryAddressFields-Txt>
```

Aus `FirstName` werden damit `D-FirstName`, `D-FirstName_input`, `D-FirstName_text` und alle weiteren Zusätze.

Referenz: Abschnitt `<[DeliveryAddressFields-Txt](/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung#deliveryaddressfields-txt)>`

## Ein Eingabefeld vollständig

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{D-FirstName_visible}
   <label for="~D-FirstName_input~" class="label~D-FirstName_error~">
      ~D-FirstName_text~{D-FirstName_required} *{/D-FirstName_required}
   </label>

   <input type="text"
          id="~D-FirstName_input~"
          name="~D-FirstName_input~"
          maxlength="~D-FirstName_max~"
          value="~D-FirstName~"
          class="input~D-FirstName_error~">

   {D-FirstName_errormessage}
      <span class="fehler">~D-FirstName_errormessage~</span>
   {/D-FirstName_errormessage}
{/D-FirstName_visible}
```

> [!WARNING]
>
> Das Beispiel der Quelle schreibt im `class`-Attribut des Eingabefeldes `~D-FirstName_error` ohne abschließende Tilde. So abgetippt bleibt der Tagname als Text im Markup stehen. Achten Sie darauf, dass jedes Tag von zwei Tilden eingeschlossen ist.

### Die Zusätze am Eingabefeld

| Zusatz | Liefert |
| - | - |
| ohne | den eingegebenen Wert |
| `_input` | den technischen Namen des Eingabefeldes |
| `_text` | die Beschriftung aus der Shopkonfiguration |
| `_max` | die maximale Eingabelänge |
| `_required` | greift, wenn das Feld ein Pflichtfeld ist |
| `_visible` | greift, wenn das Feld angezeigt werden soll |
| `_readonly` | greift, wenn das Feld nicht änderbar ist |
| `_error` | greift bei fehlerhafter Eingabe, als Einzel-Tag ergibt es die Klasse `_error` |
| `_errormessage` | die zum Feld und zur Prüfungsart hinterlegte Fehlermeldung |
| `_action` | greift, wenn für dieses Feld eine Abhängigkeit hinterlegt ist |
| `_hiddeninputflagdeleted` | den Namen eines versteckten Feldes, das eine Löschung ausdrücklich meldet |

`_visible` und `_required` hängen von der Shopkonfiguration ab. Klammern Sie jedes Feld in `_visible` ein, dann verschwindet es automatisch, wenn es für das gewählte Land oder den gewählten Adresstyp nicht gebraucht wird.

`_error` als Einzel-Tag ergibt die Zeichenfolge `_error`. Im Beispiel wird daraus die Klasse `input_error`, solange ein Fehler vorliegt, und sonst `input`. So braucht es keine zweite Klammerung nur für die Gestaltung.

### Die eingabeabhängige Steuerung

`_action` greift, wenn für dieses Feld im Abschnitt `<AddressFields-Actions>` eine Abhängigkeit hinterlegt ist. Dann muss das Template die Adresseingabe nachladen lassen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="text" name="~D-Company_input~" value="~D-Company~"
       {D-Company_action}onblur="ws_AJAXRefreshAddressInput('addressform','~BT-Addr_Refresh~','~WS-Charset~')"{/D-Company_action}>
```

Die Klammerung verhindert, dass auf jedem Feld eine Aktion hängt. Nur die Felder, für die tatsächlich eine Abhängigkeit besteht, lösen das Nachladen aus.

### Ein Feld ausdrücklich als gelöscht melden

Leert der Käufer ein Feld, wird das an ein angeschlossenes System oft nur als "nicht geändert" übermittelt, und der alte Wert bleibt dort stehen. Mit `_hiddeninputflagdeleted` melden Sie die Löschung ausdrücklich.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="hidden" name="~D-Suffix1_hiddeninputflagdeleted~" value="true">
```

Soll ein leeres Feld übergeben, aber nicht als gelöscht markiert werden, bleibt `value` leer.

## Auswahllisten

Für Felder mit fester Wertemenge, beispielsweise das Land, baut das Template die Auswahlliste aus vier Zusätzen selbst auf.

| Zusatz | Rolle |
| - | - |
| `_data` | Schleife über die Einträge |
| `_code` | der technische Wert des Eintrags |
| `_value` | die Bezeichnung des Eintrags |
| `_selected` | ergibt `selected` beim gewählten Eintrag |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<select name="~D-Country_input~">
   {@D-Country_data}
      <option value="~D-Country_code~" ~D-Country_selected~>~D-Country_value~</option>
   {/@D-Country_data}
</select>
```

> [!WARNING]
>
> Der Zusatz `_list` erzeugt eine fertige Auswahlliste, wird aber in der nächsten Version von WEBSALE V8s nicht mehr unterstützt. Bauen Sie neue Templates mit den vier Zusätzen oben, dann können Sie die Liste auch gestalten.

Wegweiser: [Auswahllisten der Adressdaten](https://dokumentation.websale.de/v8s/adressdaten/auswahllisten-der-adressdaten.md)

## Besondere Felder

| Tag | Liefert |
| - | - |
| `D-CountryISO` | den dreistelligen ISO-Code des gewählten Lieferlandes |
| `D-SalutationCode` | den technischen Code der Anrede aus `salutation.dat` |
| `D-TitleCode` | den technischen Wert des Titels |
| `D-DateOfBirth_list` | drei fertige Auswahllisten für Tag, Monat und Jahr |

`D-CountryISO`, `D-SalutationCode` und `D-TitleCode` sind für die Weitergabe an angeschlossene Systeme gedacht. Dem Käufer zeigen Sie `D-Country`, `D-Salutation` und `D-Title`, also die Klartextfassungen.

Die drei Auswahllisten aus `D-DateOfBirth_list` erzeugt der Shop selbst. Gestalten lassen sie sich über die Klasse `select_date_of_birth`, die allen dreien zugewiesen ist, und über die IDs `ws_input_delivery_date_of_birth_day`, `ws_input_delivery_date_of_birth_month` und `ws_input_delivery_date_of_birth`.

> [!WARNING]
>
> Die ID der Jahresliste trägt keinen Zusatz und heißt schlicht `ws_input_delivery_date_of_birth`. Wer sie nach dem Muster der beiden anderen mit `_year` anspricht, trifft nichts.

## Die gespeicherten Lieferadressen

### D-LoadData

Lädt alle gespeicherten Lieferadressen des angemeldeten Kunden. Erst danach liefern die übrigen D-Tags außerhalb des Bestellablaufs etwas.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~D-LoadData~
<p>Hinterlegte Lieferadressen: {D-Data}~D-Data~{/D-Data}{!D-Data}keine{/!D-Data}</p>
```

> [!WARNING]
>
> Das Tag wirkt nur bei angemeldetem Kunden und nur über eine verschlüsselte Verbindung. Auf einer Seite ohne HTTPS oder bei einem Gast bleibt es wirkungslos, und die nachfolgenden Tags liefern nichts.
>
> Jeder Aufruf holt die Adressen aus der Datenbank. Setzen Sie das Tag deshalb nicht global in den Seitenkopf, sondern nur dort, wo Sie die Daten wirklich brauchen.

### D-Data

Das zentrale Tag der Adressverwaltung, in drei Rollen.

| Verwendung | Ergebnis |
| - | - |
| Einzel-Tag | die Anzahl der gespeicherten Lieferadressen |
| Bereichs-Tag | greift, wenn mindestens eine gespeichert ist |
| Schleifen-Tag | läuft über die gespeicherten Adressen |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{D-Data}
   Sie haben ~D-Data~ Lieferadressen gespeichert.

   {@D-Data}
      ~D-FirstName~ ~D-LastName~<br>
      ~D-Street1~<br>
      ~D-Zip~ ~D-City~<br>
      ~D-Country~
      {D-IsDefault}<span class="marke">Standard</span>{/D-IsDefault}
   {/@D-Data}
{/D-Data}

{!D-Data}
   Sie haben noch keine Lieferadresse gespeichert.
{/!D-Data}
```

### Die Standard-Lieferadresse

| Tag | Zweck |
| - | - |
| `D-IsDefault` | greift bei der Adresse, die als Standard festgelegt ist |
| `D-SetAsDefaultLink` | Link zum Festlegen, greift nur bei Adressen, die es noch nicht sind |
| `D-RemoveDefaultLink` | Link zum Entfernen, greift nur, wenn überhaupt eine festgelegt ist |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{@D-Data}
   ...
   {D-IsDefault}
      Standard-Lieferadresse
   {/D-IsDefault}

   {D-SetAsDefaultLink}
      <a href="~D-SetAsDefaultLink~">Als Standard festlegen</a>
   {/D-SetAsDefaultLink}
{/@D-Data}

{D-RemoveDefaultLink}
   <a href="~D-RemoveDefaultLink~">Standard entfernen</a>
{/D-RemoveDefaultLink}
```

`D-IsDefault` und `D-SetAsDefaultLink` gehören in die Schleife, weil sie sich auf die einzelne Adresse beziehen. `D-RemoveDefaultLink` gehört außerhalb, denn es gibt nur eine Standardadresse und damit nur einen Link zum Entfernen.

Wird der Standard entfernt, wählt der Shop je nach Einstellung die zuletzt verwendete Lieferadresse oder die Rechnungsadresse vor.

Wegweiser: [Standard-Lieferadresse festlegen](https://dokumentation.websale.de/v8s/kundenkonto/standard-lieferadresse-festlegen.md)

### D-OneTime

Greift, wenn die gewählte Lieferadresse einmalig verwendet und nicht im Kundenkonto gespeichert wird.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{D-OneTime}
   Einmalig verwendete Lieferadresse
{/D-OneTime}

{!D-OneTime}
   Im Kundenkonto gespeicherte Lieferadresse
{/!D-OneTime}
```

## Die Suche in den Lieferadressen

Wer zwanzig oder mehr Lieferadressen gespeichert hat, braucht eine Suche.

| Tag | Liefert |
| - | - |
| `D-SearchInput` | den Namen des Suchfeldes |
| `D-SearchTerm` | den eingegebenen Suchbegriff, als Bereich greift es, sobald gesucht wurde |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-DelivAddrSearch~" method="post">
   <input type="text" name="~D-SearchInput~" value="~D-SearchTerm~">
   <input type="submit" name="~BT-DelivAddrSearch~" value="finden">

   {D-SearchTerm}
      <a href="~WS-DelivAddrManageLink~">Suche zurücksetzen</a>
   {/D-SearchTerm}
</form>
```

> [!WARNING]
>
> Beide Tags und die Schaltfläche müssen innerhalb des Formulars `FORM-DelivAddrSearch` stehen. In einem anderen Formular derselben Seite bleibt die Suche wirkungslos.

Der Link zum Zurücksetzen erscheint nur, wenn tatsächlich gesucht wurde. Ohne ihn kommt der Käufer nur über einen erneuten Aufruf der Seite zur vollständigen Liste zurück.

Wegweiser: [Volltextsuche für multiple Kundendaten anbieten](https://dokumentation.websale.de/v8s/kundenkonto/volltextsuche-fuer-kundendaten-anbieten.md)

## Eine gespeicherte Adresse auswählen

Im Bestellablauf wählt der Käufer aus seinen gespeicherten Lieferadressen. Dafür gibt es `D-DeliverySelection` mit vier Zusätzen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{D-DeliverySelection}
   <select name="~D-DeliverySelection_input~">
      {@D-Data}
         <option value="~D-DeliverySelection_value~"
                 {D-DeliverySelection_selected}selected{/D-DeliverySelection_selected}>
            {D-UserDescr}~D-UserDescr~, {/D-UserDescr}~D-FirstName~ ~D-LastName~, ~D-Country~
         </option>
      {/@D-Data}
   </select>
{/D-DeliverySelection}

{D-DeliverySelection_error}
   Bei der Auswahl ist ein Fehler aufgetreten.
{/D-DeliverySelection_error}
```

> [!WARNING]
>
> Die vier Zusätze `_input`, `_error`, `_selected` und `_value` funktionieren ausschließlich innerhalb des positiven Bereichs `{D-DeliverySelection}`. Außerhalb sind sie ungültig. Das ist dasselbe Muster wie bei der Auswahl der Bankverbindung und der Kreditkarte.

Der äußere Bereich greift, wenn überhaupt gespeicherte Lieferadressen vorliegen. Die Auswahlliste verschwindet damit von selbst, wenn es nichts auszuwählen gibt.

## Mehrere Lieferadressen je Bestellung

Bei MultiDelivery geht jede Warenkorbposition an eine eigene Lieferadresse. Das Verwaltungstemplate dafür braucht eine zweite Garnitur von Zusätzen, erkennbar am `mdm` im Namen.

| Tag | Für |
| - | - |
| `D-DeliverySelection_mdm_input` | den Namen der Auswahlgruppe für gespeicherte Adressen |
| `D-DeliverySelection_mdm_value` | den Wert dieser gespeicherten Adresse |
| `D-DeliverySelection_mdm_selected` | greift, wenn diese gespeicherte Adresse gewählt ist |
| `D-DeliverySelection_mdm_editmode_buttonvalue` | den Wert der Ändern-Schaltfläche für eine gespeicherte Adresse |
| `D-DeliverySelection_mdm_onetime_input` | den Namen der Auswahlgruppe für einmalige Adressen |
| `D-DeliverySelection_mdm_onetime_value` | den Wert dieser einmaligen Adresse |
| `D-DeliverySelection_mdm_onetime_selected` | greift, wenn diese einmalige Adresse gewählt ist |
| `D-DeliverySelection_mdm_onetime_editmode_buttonvalue` | den Wert der Ändern-Schaltfläche für eine einmalige Adresse |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MDM-Destination_radioselected_saveddelivaddress}
   {@D-Data}
      <input type="radio"
             name="~D-DeliverySelection_mdm_input~"
             value="~D-DeliverySelection_mdm_value~"
             {D-DeliverySelection_mdm_selected}checked{/D-DeliverySelection_mdm_selected}>

      <label>~D-FirstName~ ~D-LastName~<br>~D-Street1~<br>~D-Zip~ ~D-City~</label>

      <button type="submit"
              name="~MDM-EditMode_buttonname~"
              value="~D-DeliverySelection_mdm_editmode_buttonvalue~">ändern</button>
   {/@D-Data}
{/MDM-Destination_radioselected_saveddelivaddress}
```

> [!WARNING]
>
> Die beiden Garnituren dürfen nicht vermischt werden. Die Tags ohne `onetime` gelten für gespeicherte Adressen, die mit `onetime` für einmalig verwendete. Bei einer gespeicherten Adresse liefert `mdm_onetime_editmode_buttonvalue` nichts und umgekehrt.

Anders als die vier Zusätze im vorigen Abschnitt brauchen die `mdm`-Tags keine Klammerung mit `{D-DeliverySelection}`. Sie arbeiten unabhängig davon, gehören aber in die Schleife `{@D-Data}`.

### Wie oft eine Adresse verwendet wird

| Tag | Greift |
| - | - |
| `D-MultiDeliveryUsed` | wenn die geladene Adresse mindestens einmal verwendet wird |
| `D-MultiDeliveryMultipleUsed` | wenn sie mehrfach verwendet wird, als Einzel-Tag gibt es die Anzahl aus |
| `D-MultiDeliveryBillAddressUsed` | wenn die Rechnungsadresse als Lieferadresse verwendet wird |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{D-MultiDeliveryMultipleUsed}
   Diese Adresse wird ~D-MultiDeliveryMultipleUsed~ mal beliefert.
{/D-MultiDeliveryMultipleUsed}
```

Wegweiser: [Mehrere Lieferadressen auswählen](https://dokumentation.websale.de/v8s/referenz/tags/mdm-mehrere-lieferadressen.md) · Referenz: [Tags für multiple Adressen](https://dokumentation.websale.de/v8s/referenz/tags/multiple-adressen.md)

## Die Tags im Überblick

### Die Zusätze am Feld

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `D-<Feld>` | ja | ja | ja | – |
| `D-<Feld>_input` | ja | ja | ja | – |
| `D-<Feld>_text` | ja | ja | ja | – |
| `D-<Feld>_max` | ja | ja | ja | – |
| `D-<Feld>_error` | ja | ja | ja | – |
| `D-<Feld>_errormessage` | ja | ja | ja | – |
| `D-<Feld>_visible` | ja | ja | ja | – |
| `D-<Feld>_required` | – | ja | ja | – |
| `D-<Feld>_readonly` | – | ja | ja | – |
| `D-<Feld>_action` | – | ja | ja | – |
| `D-<Feld>_hiddeninputflagdeleted` | ja | – | – | – |
| `D-<Feld>_data` | – | – | – | ja |
| `D-<Feld>_code` | ja | – | – | – |
| `D-<Feld>_value` | ja | – | – | – |
| `D-<Feld>_selected` | ja | – | – | – |

### Die übrigen Tags

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `D-CountryISO` | ja | – | – | – |
| `D-SalutationCode` | ja | ja | ja | – |
| `D-TitleCode` | ja | ja | ja | – |
| `D-DateOfBirth_list` | ja | – | – | – |
| `D-LoadData` | ja | – | – | – |
| `D-Data` | ja | ja | ja | ja |
| `D-IsDefault` | – | ja | ja | – |
| `D-SetAsDefaultLink` | ja | ja | ja | – |
| `D-RemoveDefaultLink` | ja | ja | ja | – |
| `D-OneTime` | – | ja | ja | – |
| `D-SearchInput` | ja | – | – | – |
| `D-SearchTerm` | ja | ja | ja | – |
| `D-DeliverySelection` | ja | ja | ja | – |
| `D-DeliverySelection_input` | ja | – | – | – |
| `D-DeliverySelection_value` | ja | – | – | – |
| `D-DeliverySelection_selected` | – | ja | ja | – |
| `D-DeliverySelection_error` | ja | ja | ja | – |
| `D-DeliverySelection_mdm_input` | ja | – | – | – |
| `D-DeliverySelection_mdm_value` | ja | – | – | – |
| `D-DeliverySelection_mdm_selected` | – | ja | ja | – |
| `D-DeliverySelection_mdm_editmode_buttonvalue` | ja | – | – | – |
| `D-DeliverySelection_mdm_onetime_input` | ja | – | – | – |
| `D-DeliverySelection_mdm_onetime_value` | ja | – | – | – |
| `D-DeliverySelection_mdm_onetime_selected` | – | ja | ja | – |
| `D-DeliverySelection_mdm_onetime_editmode_buttonvalue` | ja | – | – | – |
| `D-MultiDeliveryUsed` | – | ja | ja | – |
| `D-MultiDeliveryMultipleUsed` | ja | ja | ja | – |
| `D-MultiDeliveryBillAddressUsed` | – | ja | ja | – |

## Verwandte Themen

* Wegweiser: [Abweichende Lieferadresse abfragen](https://dokumentation.websale.de/v8s/adressdaten/abweichende-lieferadresse-abfragen.md)
* Wegweiser: [Auswahllisten der Adressdaten](https://dokumentation.websale.de/v8s/adressdaten/auswahllisten-der-adressdaten.md)
* Wegweiser: [Standard-Lieferadresse festlegen](https://dokumentation.websale.de/v8s/kundenkonto/standard-lieferadresse-festlegen.md)
* Wegweiser: Mehrere Lieferadressen auswählen
* Referenz: [A- (Rechnungsadresse)](https://dokumentation.websale.de/v8s/referenz/tags/a-rechnungsadresse.md)
* Referenz: Tags für multiple Adressen


## Related topics

- [Abweichende Lieferadresse abfragen](https://dokumentation.websale.de/v8s/adressdaten/abweichende-lieferadresse-abfragen.md)
- [Standard-Lieferadresse festlegen](https://dokumentation.websale.de/v8s/kundenkonto/standard-lieferadresse-festlegen.md)
- [Auswahl zwischen postalischer Lieferadresse und Packstation](https://dokumentation.websale.de/v8s/adressdaten/auswahl-zwischen-postalischer-lieferadresse-und-packstation.md)
- [Versandart abhängig von Mindestbestellwert und Lieferadresse](https://dokumentation.websale.de/v8s/anwendungsbeispiele/appex-versandart-ausgegraut.md)
- [Einstellungen für Rechnungs- und Lieferadressen festlegen](https://dokumentation.websale.de/v8s/adressdaten/einstellungen-fuer-rechnungs-und-lieferadressen-festlegen.md)


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