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

# Schnellbestellung

> Die F@stOrder-Funktion einrichten, mit der ein angemeldeter Käufer mit einem Klick auf der Bestellübersicht landet, wahlweise mit oder ohne vorherige Konfiguration durch den Käufer.

Ein Stammkunde, der zum zwanzigsten Mal dasselbe Verbrauchsmaterial nachbestellt, kennt Ihren Warenkorb, Ihre Adressmaske und Ihre Zahlungsarten. Jeder dieser Schritte ist für ihn nur noch ein Klick zwischen ihm und der Bestellung.

Die Schnellbestellung, im Shop auch F\@stOrder genannt, überspringt sie alle. Ein angemeldeter Käufer klickt auf eine Schaltfläche und landet direkt auf der Bestellübersicht, wo er absenden kann.

| Übersprungen wird | |
| - | - |
| Warenkorb | Anzeige entfällt |
| Rechnungsadresse | aus dem Kundenkonto übernommen |
| abweichende Lieferadresse | aus der letzten Bestellung übernommen |
| Zahlungsart | zuletzt verwendete wird übernommen |
| Versandart | zuletzt verwendete wird übernommen |
| AGB | je nach Konfiguration als akzeptiert markiert |

Die Bestellübersicht selbst wird **nicht** übersprungen. Der Käufer sieht dort alle Daten seiner Bestellung und kann sie vor dem Absenden noch ändern. Die Schnellbestellung nimmt ihm die Wege ab, nicht die Kontrolle.

## Die beiden Varianten

Es gibt die Funktion in zwei Ausprägungen. Sie unterscheiden sich darin, ob der Käufer einmalig etwas einstellen muss, bevor er sie nutzen kann.

| | ohne Aktivierung durch den Käufer | mit Aktivierung durch den Käufer |
| - | - | - |
| Empfehlung | empfohlen | |
| Der Käufer muss vorher | nichts tun | Zahlungs- und Versandart einmalig wählen |
| Zusätzlich nötig | nichts | eigenes Konfigurations-Template, Link dorthin, eigene Meldung |
| Schaltfläche sichtbar | immer | erst nach der Konfiguration |
| Schalter in `<Basic>` | `IgnoreFastOrderConfiguration-Allow = yes` | `IgnoreFastOrderConfiguration-Allow = no` |

Die empfohlene Variante ist die ohne Aktivierung, und zwar aus einem einfachen Grund: Jede Hürde vor einer Abkürzung hebt die Abkürzung auf. Ein Käufer, der erst ein Formular im Kundenkonto ausfüllen muss, um künftig Zeit zu sparen, tut das meistens nicht.

## Was beim Klick passiert

Unabhängig von der Variante läuft immer dieselbe Kette ab.

1. Ist der Käufer nicht angemeldet, erscheint die Loginseite. Dort kann er auch ein Kundenkonto anlegen.
2. Bei einem neuen Kundenkonto folgt die Eingabe der Rechnungsadresse und wahlweise der Lieferadresse.
3. In der Variante mit Aktivierung folgt gegebenenfalls die Konfigurationsseite der Schnellbestellung.
4. Kam der Klick von einem Produkt, werden die Produkte in den Warenkorb gelegt.
5. Die zuletzt gewählte Zahlungsart und Versandart werden übernommen.
6. Die AGB werden je nach Konfiguration als akzeptiert markiert.
7. Die Bestellübersicht wird angezeigt.

Vor Schritt 7 prüft der Shop unter anderem:

* Sind alle Pflichtfelder der Rechnungsadresse gefüllt?
* Sind alle Pflichtfelder der abweichenden Lieferadresse gefüllt?
* Laufen die eingestellten Adressprüfungen durch, beispielsweise Postleitzahlenprüfung und E-Mail-Prüfung?
* Werden die Bestellkonditionen eingehalten, beispielsweise Mindestbestellwert und maximale Bestellmengen?
* Sind die Produkte bestellbar und ausreichend auf Lager?

Bei einem Fehler leitet der Shop den Käufer auf die passende Seite, wo er die fehlende Angabe ergänzen kann. Die Schnellbestellung endet dann also nicht in einer Fehlermeldung, sondern in dem Schritt, den sie diesmal nicht überspringen konnte.

Weich eingestellte Adressprüfungen bleiben auch hier weich. Steht die Vornamensprüfung oder die Postleitzahlenprüfung auf `soft`, hält sie die Schnellbestellung nicht auf.

## Wo die Schaltfläche hingehört

Die Schnellbestellung lässt sich in jedes Template einbauen. Sinnvoll ist sie überall dort, wo der Käufer ohnehin gerade ein Produkt nimmt.

* auf Produktlisten, bei denen direkt in den Warenkorb gelegt werden kann
* auf der Produktdetailseite, neben "In den Warenkorb"
* auf der Warenkorbseite, neben "Bestellung aufgeben"

Die Beschriftung wählen Sie frei, üblich sind "Schnellbestellung" oder "F\@stOrder".

## Gemeinsame Einrichtung

Diese Schritte gelten für beide Varianten. Eine Freischaltung durch die WEBSALE AG ist nicht nötig.

### Eindeutige IDs für die Versandarten

Damit der Shop sich die zuletzt gewählte Versandart merken kann, braucht jeder Abschnitt `<+Deliverer>` eine eindeutige ID.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Deliverer>
   Allow       = yes
   ID          = 1
   Name-Txt    = UPS
   Country-Txt = innerhalb Deutschland
   ...
</+Deliverer>

<+Deliverer>
   Allow       = yes
   ID          = 2
   Name-Txt    = Post
   Country-Txt = innerhalb Deutschland
   ...
</+Deliverer>

<+Deliverer>
   Allow       = yes
   ID          = 3
   Name-Txt    = Post
   Country-Txt = weltweit
   ...
</+Deliverer>
```

Die IDs sind alphanumerisch. Wenn Sie noch keine vergeben haben, nehmen Sie eine laufende Nummer. Dieselben IDs werden auch an anderer Stelle gebraucht, beispielsweise für produktabhängige Versandkosten und für Abhängigkeiten zwischen Zahlungsart und Versandart.

> [!WARNING]
>
> Ohne IDs kann der Shop die Versandart nicht eindeutig wiedererkennen. Zwei Einträge mit demselben Namen, im Beispiel oben zweimal "Post", sind ohne ID nicht unterscheidbar.

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

### Die AGB-Checkbox vorbelegen

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

In der Voreinstellung markiert der Shop die AGB bei einer Schnellbestellung als akzeptiert. Mit `no` unterbleibt das, und der Käufer setzt den Haken auf der Bestellübersicht selbst.

> [!WARNING]
>
> Ob eine vorausgewählte AGB-Checkbox zulässig ist, ist eine rechtliche Frage, keine technische. Klären Sie sie, bevor Sie die Voreinstellung übernehmen.

Wegweiser: [AGB akzeptieren](https://dokumentation.websale.de/v8s/bestelluebersicht-bestelleingangsbestaetigung/agb-akzeptieren.md)

### Die letzte Lieferadresse vorauswählen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<UserData>
   ...
   PreSelectLastUsedDelivAddr-Allow = always
   ...
</UserData>
```

| Wert | Wirkung |
| - | - |
| `no` | keine Vorauswahl |
| `always` | die zuletzt verwendete Lieferadresse wird immer vorausgewählt |
| `alwaysFirst` | Vorauswahl mit abweichender Behandlung der ersten Adresse |

Referenz: [Abschnitt UserData](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/kunde-anmeldung-und-kundenkonto.md#userdata)

## Variante ohne Aktivierung durch den Käufer

### Schritt 1: Die Konfigurationspflicht aussetzen

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

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

### Schritt 2: Die Schaltflächen einbauen

Auf der Produktdetailseite `ws_product.htm`, innerhalb des Formulars:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Product~" method="post" name="product" id="productform">
   ...
   <input type="submit" name="~BT-FastOrder~" value="Schnellbestellung">
   ...
</form>
```

Auf der Warenkorbseite `ws_basket.htm`, innerhalb des Formulars:

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Basket~" method="post">
   ...
   <input type="submit" name="~BT-FastOrder~" value="Schnellbestellung">
   ...
</form>
```

> [!WARNING]
>
> In dieser Variante stehen die Schaltflächen **ohne** umgebende Klammerung da. Die beiden Tags `ST-FastOrder` und `ST-FastOrderConfigured` setzen beide voraus, dass der Käufer die Schnellbestellung konfiguriert hat. In einer Konfiguration, die genau das nicht verlangt, würden sie die Schaltfläche dauerhaft verstecken.

Referenz: [BT-FastOrder](https://dokumentation.websale.de/v8s/referenz/tags/bt/schnell-und-direktbestellung.md#bt-fastorder)

## Variante mit Aktivierung durch den Käufer

Hier wählt der Käufer einmalig seine bevorzugte Zahlungs- und Versandart. Dafür brauchen Sie ein eigenes Template, einen Link dorthin und eine Rückmeldung.

### Schritt 1: Die Konfigurationspflicht einschalten

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

### Schritt 2: Die Rückmeldung hinterlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   ...
   FastOrderConfigured = Ihre Einstellungen für die Schnellbestellung wurden übernommen.
   ...
</NotifyMessages-Txt>
```

Referenz: [Abschnitt NotifyMessages-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md#notifymessages-txt)

### Schritt 3: Das Konfigurations-Template zuweisen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Templates>
   ...
   FastOrderConfiguration = ws_fastorder_configuration.htm
   ...
</Templates>
```

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

### Schritt 4: Das Konfigurations-Template anlegen

Legen Sie die Datei unter dem Namen an, den Sie bei `FastOrderConfiguration` eingetragen haben.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<h1>Anmeldung zur Schnellbestellung</h1>

{MSG-FastOrder_Notify}~MSG-FastOrder_Notify~{/MSG-FastOrder_Notify}

<p>
   Als registrierter Kunde können Sie für jeden Bestellvorgang unsere
   Komfortfunktion F@stOrder nutzen. Wenn Sie sich für eine Bestellung mit
   F@stOrder entscheiden, gelangen Sie direkt zur Bestellübersicht und können
   Ihre Bestellung mit einem Klick abschließen.
</p>

<form action="~FORM-FastOrderConfiguration~" method="post">

   <p>Zahlungsart für den nächsten Bestellvorgang</p>
   ~WS-PaymentFields~

   <p>Zustellung für den nächsten Bestellvorgang</p>
   ~WS-DeliveryFields~

   <p>
      Mit der Nutzung von F@stOrder erklären Sie sich mit unseren
      <a href="~WS-LoadTpl(tpl_agb.htm,AGB)~">AGB</a> einverstanden.
   </p>

   <a href="~WS-UserAccountLink~">Zurück zum Kundenkonto</a>
   <input type="submit" name="~BT-FastOrderConfigure~" value="Einstellungen ändern">

</form>
```

`MSG-FastOrder_Notify` gehört an den Anfang der Seite. Dort erscheint die Meldung aus `FastOrderConfigured` nach dem Speichern, und dort erscheinen auch Hinweise, wenn eine Auswahl fehlt.

Referenz: [FORM-FastOrderConfiguration](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare.md#bestellablauf) · [BT-FastOrderConfigure](https://dokumentation.websale.de/v8s/referenz/tags/bt/schnell-und-direktbestellung.md#bt-fastorderconfigure) · [MSG-FastOrder\_Notify](https://dokumentation.websale.de/v8s/referenz/tags/msg-meldungen.md#bestellprozess) · [WS-PaymentFields](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick) · [WS-DeliveryFields](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick) · [WS-UserAccountLink](https://dokumentation.websale.de/v8s/referenz/tags/ws/kunde-anmeldung-und-konto.md#links-ins-kundenkonto)

### Schritt 5: Den Link zur Konfiguration setzen

Sinnvollerweise auf der Kundenkontoübersicht `ws_user_account.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<p>Sie wollen an der Schnellbestellung teilnehmen?</p>
<p>Hier können Sie Ihre Zahlungsart und Zustellung vorbelegen.</p>
<a href="~WS-FastOrderConfigurationLink~">Einstellungen bearbeiten</a>
```

Referenz: [WS-FastOrderConfigurationLink](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md#die-tags-im-uberblick)

### Schritt 6: Die Schaltflächen einbauen

In dieser Variante bekommt jede Schaltfläche eine Klammerung, damit sie nur erscheint, wenn sie auch funktioniert. Die beiden Tags prüfen Unterschiedliches.

| Tag | Prüft |
| - | - |
| `ST-FastOrderConfigured` | Der Käufer ist angemeldet und hat die Schnellbestellung konfiguriert |
| `ST-FastOrder` | zusätzlich: Der Warenkorb ist in seinem jetzigen Zustand bestellbar |

Auf der Produktdetailseite passt `ST-FastOrderConfigured`, denn dort ist der Warenkorb oft noch leer.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Product~" method="post" name="product" id="productform">
   ...
   {ST-FastOrderConfigured}
      <input type="submit" name="~BT-FastOrder~" value="Schnellbestellung">
   {/ST-FastOrderConfigured}
   ...
</form>
```

Auf der Warenkorbseite passt `ST-FastOrder`, denn dort gibt es einen Warenkorb, dessen Bestellbarkeit sich prüfen lässt.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Basket~" method="post">
   ...
   {ST-FastOrder}
      <input type="submit" name="~BT-FastOrder~" value="Schnellbestellung">
   {/ST-FastOrder}
   ...
</form>
```

> [!WARNING]
>
> Verwenden Sie `ST-FastOrder` nicht auf der Produktdetailseite. Das Tag prüft die Bestellbarkeit des Warenkorbs mit. Bei leerem Warenkorb oder unterschrittenem Mindestbestellwert verschwindet die Schaltfläche dort ohne erkennbaren Grund.

Referenz: [ST-FastOrderConfigured](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md) · [ST-FastOrder](https://dokumentation.websale.de/v8s/referenz/tags/bt/schnell-und-direktbestellung.md#bt-fastorder) · [BT-FastOrder](https://dokumentation.websale.de/v8s/referenz/tags/bt/schnell-und-direktbestellung.md#bt-fastorder)

## Weitere Tags zur Schnellbestellung

Über die beiden oben genannten hinaus stehen Tags bereit, mit denen Sie den Zustand der Schnellbestellung feiner abfragen können, beispielsweise für einen Hinweis im Kundenkonto oder auf der Bestellübersicht.

| Tag | Trifft zu, wenn |
| - | - |
| `ST-FastOrderDefaultPaymentSet` | der Kunde eine Standard-Zahlungsart gesetzt hat |
| `ST-FastOrderDefaultDeliverySet` | der Kunde eine Standard-Zustellung gesetzt hat |
| `ST-FastOrderDefaultDeliveryAddressSet` | der Kunde eine Standard-Lieferadresse gesetzt hat |
| `ST-FastOrderDefaultPaymentMatch` | die aktuelle Zahlungsart der Standard-Zahlungsart entspricht |
| `ST-FastOrderDefaultDeliveryMatch` | die aktuelle Zustellung der Standard-Zustellung entspricht |
| `ST-FastOrderDefaultDeliveryAddressMatch` | die aktuelle Lieferadresse der Standard-Lieferadresse entspricht |
| `ST-FastOrderAnyDefaultSet` | irgendeine dieser Vorgaben gesetzt ist |
| `ST-FastOrderDefaultsApplied` | die Vorgaben in dieser Sitzung angewandt wurden |
| `ST-FastOrderConditional` | eine frühere Bestellung vorliegt oder Standardwerte aktiv gewählt wurden |

Die `Match`-Tags sind nützlich, um auf der Bestellübersicht kenntlich zu machen, welche Angaben aus den Vorgaben stammen und welche der Käufer für diese Bestellung abweichend gewählt hat.

## Verwandte Themen

* Wegweiser: [Kundenkonto](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/kundenkonto.md)
* Wegweiser: [AGB akzeptieren](https://dokumentation.websale.de/v8s/bestelluebersicht-bestelleingangsbestaetigung/agb-akzeptieren.md)
* Wegweiser: [Versandarten anlegen, für die IDs der Versandarten](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen.md)
* Wegweiser: [Bestellübersicht](https://dokumentation.websale.de/v8s/bestelluebersicht-bestelleingangsbestaetigung/bestaetigungs-e-mail-an-den-kaeufer.md)


## Related topics

- [Grundlagen und Technik](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/grundlagen-und-technik.md)
- [AGB akzeptieren](https://dokumentation.websale.de/v8s/bestelluebersicht-bestelleingangsbestaetigung/agb-akzeptieren.md)
- [Zahlung, Versand und Bestellabschluss](https://dokumentation.websale.de/v8s/referenz/tags/ws/zahlung-versand-und-bestellabschluss.md)
- [Schaltflächen für Schnell- und Direktbestellung](https://dokumentation.websale.de/v8s/referenz/tags/bt/schnell-und-direktbestellung.md)
- [Materialien Direktbestellung](https://dokumentation.websale.de/v8s/materialien/materialien-direktbestellung.md)


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