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

# MDM- (Mehrere Lieferadressen)

> Die Verwaltungsseite aufbauen, auf der der Käufer eine Warenkorbposition auf mehrere Lieferadressen verteilt: Zielauswahl, Bearbeitungsmodus, Schaltflächen und Meldungen.

Beim Verteilen einer Bestellung auf mehrere Lieferadressen wählt der Käufer je Warenkorbposition aus, wohin welche Menge gehen soll. Dafür gibt es eine eigene Seite, hinterlegt in der Shopkonfiguration `shop.config` im Abschnitt `<Templates>` unter `MultiDeliveryManage`, üblicherweise `ws_multidelivery_manage.htm`.

Die `MDM-`Tags bauen diese Seite. Sie liefern die Auswahl des Lieferziels, den Wechsel in den Bearbeitungsmodus einer Adresse, die Schaltflächen und die Meldungen. Die Adressen selbst und die Warenkorbpositionen kommen von anderen Präfixen, die am Ende dieser Seite verlinkt sind.

Wegweiser: [Mehrere Lieferadressen auswählen](https://dokumentation.websale.de/v8s/referenz/tags/mdm-mehrere-lieferadressen.md) · Referenz: [Abschnitt Templates](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md#templates)

## Das Lieferziel auswählen

Der Käufer hat vier Möglichkeiten, wohin eine Teilmenge gehen soll. Alle vier liegen in einer Gruppe von Radiobuttons mit gemeinsamem Feldnamen.

| Tag | Liefert |
| - | - |
| `MDM-Destination_radioname` | den gemeinsamen Feldnamen der Gruppe |
| `MDM-Destination_radiovalue_billingaddress` | den Wert für die Rechnungsadresse |
| `MDM-Destination_radiovalue_saveddelivaddress` | den Wert für eine gespeicherte Lieferadresse |
| `MDM-Destination_radiovalue_onetimedelivaddress` | den Wert für eine einmalig verwendete Lieferadresse |
| `MDM-Destination_radiovalue_newdelivaddress` | den Wert für eine neue Lieferadresse |

Zu jedem der vier Werte gibt es ein `radioselected`-Tag mit demselben Namensbestandteil. Als Einzel-Tag gibt es ` checked` aus, als Klammerung greift es bei der gewählten Option.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<label>
   <input type="radio" name="~MDM-Destination_radioname~"
          value="~MDM-Destination_radiovalue_billingaddress~"
          ~MDM-Destination_radioselected_billingaddress~>
   An die Rechnungsadresse
</label>

<label>
   <input type="radio" name="~MDM-Destination_radioname~"
          value="~MDM-Destination_radiovalue_saveddelivaddress~"
          ~MDM-Destination_radioselected_saveddelivaddress~>
   An eine gespeicherte Lieferadresse
</label>

{MDM-Destination_radioselected_saveddelivaddress}
   {@D-Data}
      <!-- Liste der gespeicherten Lieferadressen -->
   {/@D-Data}
{/MDM-Destination_radioselected_saveddelivaddress}
```

Das `radioselected`-Tag hat damit zwei Aufgaben an einer Stelle. Im `input`-Element markiert es den gewählten Eintrag, als Klammerung darunter blendet es die passende Auswahlliste ein. So erscheint die Liste der gespeicherten Adressen nur dann, wenn diese Option auch gewählt ist.

Die Ausgabe von ` checked` beginnt mit einem Leerzeichen. Sie können das Tag deshalb direkt hinter das vorangehende Attribut setzen, ohne selbst eines zu ergänzen.

## Der Bearbeitungsmodus

Dieselbe Seite zeigt zwei verschiedene Dinge: entweder die Auswahl des Lieferziels oder die Adressfelder einer Adresse, die gerade geändert wird. `MDM-EditMode` unterscheidet beides.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MDM-EditMode}
   <h2>Lieferadresse ändern</h2>
   <!-- Adressfelder -->
   <button name="~MDM-EditMode_buttonname~" type="submit"
           value="~MDM-EditMode_buttonvalue_save~">übernehmen</button>
   <button name="~MDM-EditMode_buttonname~" type="submit"
           value="~MDM-EditMode_buttonvalue_cancel~">abbrechen</button>
{/MDM-EditMode}

{!MDM-EditMode}
   <h2>Wohin sollen wir liefern?</h2>
   <!-- Auswahl des Lieferziels -->
{/!MDM-EditMode}
```

Beide Schaltflächen tragen denselben Namen und unterscheiden sich nur im Wert. Das Shopsystem erkennt am Wert, ob gespeichert oder abgebrochen werden soll. Verwenden Sie deshalb `button` mit `value` und nicht zwei verschiedene Feldnamen.

Das Shopsystem merkt sich, dass die positive Klammerung im Template ausgewertet wurde. Lassen Sie sie deshalb auch dann stehen, wenn Ihre Seite den Bearbeitungsmodus anders löst.

## Die Schaltflächen der Seite

| Tag | Liefert den Feldnamen für |
| - | - |
| `MDM-Button_OK` | die Schaltfläche, die die Auswahl übernimmt |
| `MDM-Button_Back` | die Schaltfläche zurück zum Warenkorb |
| `MDM-Button_Reload` | die Schaltfläche, die die Seite neu berechnet |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="submit" name="~MDM-Button_Reload~" value="aktualisieren">
<input type="submit" name="~MDM-Button_Back~" value="zurück">
<input type="submit" name="~MDM-Button_OK~" value="übernehmen">
```

Alle drei liefern nur den Feldnamen, nicht die Beschriftung. Den sichtbaren Text bestimmen Sie selbst im `value`-Attribut.

## Meldungen und Fehler

| Tag | Bedeutung |
| - | - |
| `MDM-Notify_error` | gibt den Fehlercode aus, greift als Klammerung bei einem Fehler |
| `MDM-Notify_cancel` | greift, wenn der Käufer die Eingabe einer weiteren Lieferadresse abgebrochen hat |
| `MDM-Notify_EditOK` | greift, wenn beim Ändern kein Fehler aufgetreten ist |
| `MDM-Notify_Editerror` | gibt den Fehlercode des Änderungsvorgangs aus |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!MDM-Notify_EditOK}
   <p class="fehler">Die Änderung ist fehlgeschlagen (Code ~MDM-Notify_Editerror~).</p>
{/!MDM-Notify_EditOK}

{MDM-Notify_cancel}
   <p class="hinweis">Es wurde keine weitere Lieferadresse angegeben.</p>
{/MDM-Notify_cancel}
```

### Auf einen bestimmten Fehler prüfen

`MDM-Notify_error` nimmt als Klammerung einen Fehlercode im Argument entgegen und greift nur bei genau diesem Code.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MDM-Notify_error(3)}
   <p class="fehler">Für diese Adresse ist die Mindestmenge nicht erreicht.</p>
{/MDM-Notify_error(3)}

{MDM-Notify_error}
   {!MDM-Notify_error(3)}
      <p class="fehler">Es ist ein Fehler aufgetreten (Code ~MDM-Notify_error~).</p>
   {/!MDM-Notify_error(3)}
{/MDM-Notify_error}
```

Ohne Argument greift die Klammerung bei jedem Fehler, mit Argument nur bei dem genannten. Damit formulieren Sie verständliche Meldungen statt eine nackte Zahl auszugeben.

> [!WARNING]
>
> Welcher Code welche Ursache hat, ist nicht dokumentiert. Solange das nicht geklärt ist, geben Sie den Code zusätzlich aus, damit der Support damit arbeiten kann.

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `MDM-Button_OK` | ja | – | – | – |
| `MDM-Button_Back` | ja | – | – | – |
| `MDM-Button_Reload` | ja | – | – | – |
| `MDM-Destination_radioname` | ja | – | – | – |
| `MDM-Destination_radiovalue_billingaddress` | ja | – | – | – |
| `MDM-Destination_radiovalue_saveddelivaddress` | ja | – | – | – |
| `MDM-Destination_radiovalue_onetimedelivaddress` | ja | – | – | – |
| `MDM-Destination_radiovalue_newdelivaddress` | ja | – | – | – |
| `MDM-Destination_radioselected_billingaddress` | ja | ja | ja | – |
| `MDM-Destination_radioselected_saveddelivaddress` | ja | ja | ja | – |
| `MDM-Destination_radioselected_onetimedelivaddress` | ja | ja | ja | – |
| `MDM-Destination_radioselected_newdelivaddress` | ja | ja | ja | – |
| `MDM-EditMode` | – | ja | ja | – |
| `MDM-EditMode_buttonname` | ja | – | – | – |
| `MDM-EditMode_buttonvalue_save` | ja | – | – | – |
| `MDM-EditMode_buttonvalue_cancel` | ja | – | – | – |
| `MDM-Notify_error` | ja | ja | ja | – |
| `MDM-Notify_cancel` | – | ja | ja | – |
| `MDM-Notify_EditOK` | – | ja | ja | – |
| `MDM-Notify_Editerror` | ja | – | – | – |

Alle Tags gelten auf dem Template zur Verwaltung mehrerer Lieferadressen.

`MDM-Notify_cancel` und `MDM-Notify_EditOK` weist das Shopsystem als Einzel-Tag nicht ab, gibt dann aber nichts aus. Verwenden Sie beide als Klammerung.

## Tags anderer Präfixe zu diesem Thema

Die Funktion erstreckt sich über mehrere Seiten des Shops. Die übrigen Tags sind bei ihrem jeweiligen Präfix beschrieben.

* **Warenkorbseite**: die Verteilung je Position, die Belegexemplare und die Zusatzkosten stehen bei [BASKET- (Mehrfach-Lieferadressen und Belegexemplare)](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb.md)
* **Adressauswahl**: die `mdm`-Varianten von `D-DeliverySelection`, die Einmaladressen und die Nutzungsprüfungen stehen bei D- (Lieferadresse)
* **Formular**: `FORM-MDM` steht bei [FORM- (Formulare)](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare.md)
* **Seitenzustände**: `ST-MultiDeliveryManagePage`, `ST-MultiDelivery_OK` und die übrigen `ST-`Tags dieser Funktion stehen bei [ST- (Seitenzustände)](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md)
* **Verfügbarkeit**: `WS-MultiDelivery_available` und die beiden `WS-DelivAddr`-Tags stehen bei [WS- (Allgemeine Tags)](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md)

## Verwandte Themen

* Wegweiser: Mehrere Lieferadressen auswählen
* Wegweiser: [Versandarten anlegen](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen.md)
* Referenz: [D- (Lieferadresse)](https://dokumentation.websale.de/v8s/referenz/tags/d-lieferadresse.md)


## Related topics

- [Mehrere Adressen: Tags je Template](https://dokumentation.websale.de/v8s/referenz/tags/multiple-adressen.md)
- [D- (Lieferadresse)](https://dokumentation.websale.de/v8s/referenz/tags/d-lieferadresse.md)
- [Versandoptionen und Services für Käufer](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandoptionen-und-services.md)
- [Versand und Lieferung](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md)
- [Sektionen: Kopfdaten und Adressen](https://dokumentation.websale.de/v8s/schnittstellen/bestellungen/ws-bestelldaten/sektionen-kopf-und-adressen.md)


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