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

# E-BP- (BestPrice-Order)

> Die Tags des BestPrice-Order-Moduls: Sammelreservierungen anzeigen, die erreichte Preisstufe ausgeben und den Käufer durch die drei Schritte einer Reservierung führen.

Beim BestPrice-Order-Modul kaufen viele Käufer gemeinsam ein. Der Shop schreibt eine Kampagne für ein Produkt aus, die Käufer reservieren Mengen, und je mehr insgesamt zusammenkommt, desto günstiger wird der Stückpreis für alle. Erst am Ende der Kampagne wird daraus eine Bestellung.

Die Tags mit dem Präfix `E-BP_` zeigen das im Template: den Stand der Kampagne, die erreichte Preisstufe, die eigene Reservierung und die Ersparnis.

Wegweiser: [BestPrice-Order-Modul](https://dokumentation.websale.de/v8s/interaktive-funktionen/bestprice-order-modul.md)

Die Oberfläche für den Reservierungsvorgang liegt im Include-Template `incl_bestprice.htm`. Ein Teil der Tags funktioniert nur dort, weil er sich auf den laufenden Vorgang bezieht. Die reinen Anzeige-Tags lassen sich auf allen Templates verwenden.

## Die drei Schritte einer Reservierung

Der Käufer durchläuft drei Schritte. Für jeden gibt es ein Bereichs-Tag, sodass alle drei Schritte in derselben Datei stehen können.

| Tag | Schritt |
| - | - |
| `E-BP_Campaign` | Produktinformationen anzeigen und Menge wählen |
| `E-BP_Summary` | Lieferadresse wählen, gewählte Menge bestätigen, Reservieren-Schaltfläche |
| `E-BP_Confirm` | Reservierung bestätigen |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_Campaign}
   <!-- Schritt 1: Produkt und Mengenauswahl -->
{/E-BP_Campaign}

{E-BP_Summary}
   <!-- Schritt 2: Adresse und Zusammenfassung -->
{/E-BP_Summary}

{E-BP_Confirm}
   <!-- Schritt 3: Bestätigung -->
{/E-BP_Confirm}
```

## Was der Käufer mitbringen muss

Ohne Anmeldung und ohne hinterlegte Adressen ist keine Reservierung möglich. Drei Bereichs-Tags prüfen das.

| Tag | Prüft |
| - | - |
| `E-BP_Logged-In` | ob der Käufer angemeldet ist |
| `E-BP_Has-Address` | ob mindestens eine Rechnungsadresse im Kundenkonto liegt |
| `E-BP_Has-Delivery-Address` | ob mindestens eine Lieferadresse im Kundenkonto liegt |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{!E-BP_Logged-In}
   <p>Bitte melden Sie sich an, um an dieser Aktion teilzunehmen.</p>
{/!E-BP_Logged-In}

{E-BP_Logged-In}
   {!E-BP_Has-Address}
      <p>Bitte hinterlegen Sie zuerst eine Rechnungsadresse in Ihrem Kundenkonto.</p>
   {/!E-BP_Has-Address}
{/E-BP_Logged-In}
```

> [!WARNING]
>
> Prüfen Sie erst die Anmeldung und danach die Adressen. Ohne Anmeldung gibt es kein Kundenkonto, in dem Adressen liegen könnten, und die beiden Adressprüfungen sind dann ohne Aussage.

## Der Zustand der Kampagne

Eine Kampagne hat einen Anfang und ein Ende. Drei Bereichs-Tags sagen, wo sie gerade steht.

| Tag | Greift, wenn die Kampagne |
| - | - |
| `E-BP_Before-Begin` | noch nicht begonnen hat |
| `E-BP_Active` | gerade läuft |
| `E-BP_Finished` | abgeschlossen ist |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_Before-Begin}
   <p>Diese Aktion startet am ~E-BP_Begin~.</p>
{/E-BP_Before-Begin}

{E-BP_Active}
   <p>Noch bis ~E-BP_End~ können Sie mitbestellen.</p>
{/E-BP_Active}

{E-BP_Finished}
   <p>Diese Aktion ist beendet.</p>
{/E-BP_Finished}
```

`E-BP_Begin` und `E-BP_End` geben die beiden Zeitpunkte aus. Beide nehmen ein optionales Format in den Klammern entgegen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
~E-BP_Begin~                      <!-- Standardformat -->
~E-BP_Begin(%d.%m.%Y)~            <!-- nur das Datum -->
~E-BP_End(%d.%m.%Y um %H:%M)~
```

Das Format folgt der üblichen Schreibweise mit Prozentzeichen: `%d` für den Tag, `%m` für den Monat, `%Y` für das vierstellige Jahr, `%H` und `%M` für Stunde und Minute.

## Die Kampagne und ihr Produkt

| Tag | Liefert |
| - | - |
| `E-BP_CampaignId` | die Kennung der Kampagne |
| `E-BP_Name` | den Namen des Produkts |
| `E-BP_ProdIndex` | den Produktindex |
| `E-BP_ProdNumber` | die Produktnummer |
| `E-BP_Amount` | die vom Käufer gewählte Menge |
| `E-BP_TotalAmount` | die Gesamtmenge aller Reservierungen dieser Kampagne |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<h2>~E-BP_Name~</h2>
<p>Bisher reserviert: ~E-BP_TotalAmount~ Stück</p>

{E-BP_Amount}
   <p>Ihre Reservierung: ~E-BP_Amount~ Stück</p>
{/E-BP_Amount}
```

`E-BP_TotalAmount` ist die entscheidende Zahl der ganzen Aktion: Sie zählt alle Käufer zusammen und bestimmt damit die erreichte Preisstufe. Zeigen Sie sie prominent an, denn sie ist der Grund, weshalb jemand Freunde auf die Aktion aufmerksam macht.

## Die Preisstaffel

Zu jeder Kampagne gehört eine Staffel aus Mindestmengen und den zugehörigen Stückpreisen. `E-BP_PriceList` ist die Schleife darüber.

| Tag | Liefert |
| - | - |
| `E-BP_PriceList` | die Schleife über alle Preisstufen |
| `E-BP_PriceList-Amount` | die Mindestmenge dieser Stufe |
| `E-BP_PriceList-Price` | den Stückpreis dieser Stufe, technisches Format |
| `E-BP_PriceList-Price_Format` | denselben Preis im Shopformat |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<table>
   <tr><th>ab Menge</th><th>Stückpreis</th></tr>
   {@E-BP_PriceList}
      <tr>
         <td>~E-BP_PriceList-Amount~</td>
         <td>~E-BP_PriceList-Price_Format~</td>
      </tr>
   {/@E-BP_PriceList}
</table>
```

> [!WARNING]
>
> `E-BP_PriceList` ist ein reines Schleifen-Tag. Eine einfache Klammerung `{E-BP_PriceList}` bleibt wirkungslos. Ob es überhaupt eine Staffel gibt, erkennen Sie daran, dass die Schleife nicht durchläuft.

Die drei Tags mit `PriceList` im Namen geben nur innerhalb der Schleife etwas aus.

## Preise und Ersparnis

Jeder Preis gibt es zweimal: ohne Zusatz im technischen Format und mit dem Zusatz `_Format` im Shopformat.

| ohne Zusatz | mit `_Format` |
| - | - |
| Punkt als Dezimaltrenner, kein Tausendertrennzeichen, kein Währungszeichen | die Preisformatierung des Shops |
| für Rechnungen, Formularwerte und Schnittstellen | für die Anzeige beim Käufer |

| Tag | Liefert |
| - | - |
| `E-BP_BasicPrice` | den Ausgangspreis der Kampagne, ohne jede Staffel |
| `E-BP_CurrentPrice` | den aktuell erreichten Stückpreis |
| `E-BP_CurrentSaving` | die Ersparnis je Stück gegenüber dem Ausgangspreis |
| `E-BP_TotalPrice` | den Preis der eigenen Reservierung, Stückpreis mal Menge |
| `E-BP_TotalSaving` | die Ersparnis der eigenen Reservierung |
| `E-BP_CompletePrice` | die Summe aller bisherigen Reservierungen des Käufers |
| `E-BP_CompleteSaving` | die Summe aller Ersparnisse des Käufers |
| `E-BP_NewCompletePrice` | dieselbe Summe einschließlich des laufenden Vorgangs |
| `E-BP_NewCompleteSaving` | dieselbe Gesamtersparnis einschließlich des laufenden Vorgangs |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_CurrentPrice}
   <p>Aktueller Stückpreis: ~E-BP_CurrentPrice_Format~</p>
{/E-BP_CurrentPrice}

{E-BP_CurrentSaving}
   <p>Sie sparen ~E-BP_CurrentSaving_Format~ je Stück gegenüber ~E-BP_BasicPrice_Format~.</p>
{/E-BP_CurrentSaving}

{E-BP_TotalSaving}
   <p>Ihre Ersparnis bei dieser Reservierung: ~E-BP_TotalSaving_Format~</p>
{/E-BP_TotalSaving}
```

Der aktuelle Stückpreis entsteht so: Der Shop geht die Staffel durch und nimmt die höchste Stufe, deren Mindestmenge die Gesamtmenge aller Käufer bereits erreicht. Wird keine Stufe erreicht, gilt der Ausgangspreis aus `E-BP_BasicPrice`. Die Ersparnis ist die Differenz zwischen beiden.

Die Klammerung dieser Tags greift nur bei einem Wert größer null. Solange keine Stufe erreicht ist, ergibt sich keine Ersparnis, und der negative Bereich ist die richtige Stelle für den Hinweis, dass es sich noch lohnt weiterzuempfehlen.

> [!WARNING]
>
> Für `E-BP_CompletePrice` funktioniert die Klammerung im Modul derzeit nicht. Verwenden Sie das Tag als Einzel-Tag und prüfen Sie, falls nötig, über `E-BP_Orders`, ob der Käufer überhaupt Reservierungen hat.

`E-BP_NewCompletePrice` und `E-BP_NewCompleteSaving` sind reine Einzel-Tags. Sie gehören in den zweiten und dritten Schritt der Reservierung, wo der Käufer sehen soll, worauf seine Gesamtsumme mit dieser Reservierung anwächst.

## Die Reservierungen des Käufers

`E-BP_Orders` listet alle laufenden Reservierungen des angemeldeten Käufers auf, über Kampagnen hinweg.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_Orders}
   <table>
      {@E-BP_Orders}
         <tr>
            <td>~E-BP_Name~</td>
            <td>~E-BP_Amount~ Stück</td>
            <td>~E-BP_CurrentPrice_Format~</td>
            <td>~E-BP_TotalPrice_Format~</td>
            <td>~E-BP_OrderDate(%d.%m.%Y)~</td>
         </tr>
      {/@E-BP_Orders}
   </table>

   <p>Gesamt: ~E-BP_CompletePrice_Format~, davon gespart: ~E-BP_CompleteSaving_Format~</p>
{/E-BP_Orders}

{!E-BP_Orders}
   <p>Sie haben derzeit keine Reservierungen.</p>
{/!E-BP_Orders}
```

Innerhalb der Schleife beziehen sich alle Kampagnen- und Preis-Tags auf die jeweilige Reservierung. Außerhalb beziehen sie sich auf die Kampagne, die gerade angezeigt wird. Dieselben Tags stehen also für beides, je nachdem wo sie stehen.

`E-BP_OrderDate` gibt den Zeitpunkt der Reservierung aus und nimmt wie `E-BP_Begin` ein optionales Format entgegen.

## Die Adressen der Reservierung

Zwei Bereiche schalten auf die Rechnungs- beziehungsweise Lieferadresse der Reservierung um. Darin gibt `E-BP_Address-…` die einzelnen Felder aus.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_BillingAddress}
   ~E-BP_Address-Company~<br>
   ~E-BP_Address-FirstName~ ~E-BP_Address-LastName~<br>
   ~E-BP_Address-Street1~<br>
   ~E-BP_Address-Zip~ ~E-BP_Address-City~
{/E-BP_BillingAddress}

{E-BP_DeliveryAddress}
   ~E-BP_Address-FirstName~ ~E-BP_Address-LastName~<br>
   ~E-BP_Address-Street1~<br>
   ~E-BP_Address-Zip~ ~E-BP_Address-City~
{/E-BP_DeliveryAddress}
```

Unterstützte Feldnamen:

`Company`, `Salutation`, `SalutationCode`, `Title`, `TitleCode`, `FirstName`, `LastName`, `Street1`, `Street2`, `Zip`, `City`, `State`, `Country`, `CountryISO`, `PostOfficeBox`, `PostCenter`, `Department`, `Phone`, `BusinessPhone`, `MobilePhone`, `Fax`, `BusinessFax`, `E-Mail`, `DateOfBirth`, `TaxId` sowie `Suffix1` bis `Suffix10`.

> [!WARNING]
>
> `E-BP_Address-…` gibt nur innerhalb eines der beiden Adressbereiche etwas aus. Außerhalb steht keine Adresse fest, auf die es sich beziehen könnte.

Die beiden Adressbereiche lassen sich nicht negativ klammern. Ob eine Adresse vorliegt, prüfen Sie vorher mit `E-BP_Has-Address` beziehungsweise `E-BP_Has-Delivery-Address`.

## Meldungen

| Tag | Liefert |
| - | - |
| `E-BP_Error` | eine Fehlermeldung |
| `E-BP_Info` | eine Erfolgsmeldung |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_Error}
   <p class="fehler">~E-BP_Error~</p>
{/E-BP_Error}

{E-BP_Info}
   <p class="hinweis">~E-BP_Info~</p>
{/E-BP_Info}
```

## Berechtigungen prüfen

`E-BP_Warranty()` klammert auf die Berechtigungen des Käufers. In den Klammern steht eine kommagetrennte Liste von Kennungen, der Bereich erscheint, sobald eine davon zutrifft.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{E-BP_Warranty(haendler,grosskunde)}
   <p>Für Sie gelten die Händlerkonditionen dieser Aktion.</p>
{/E-BP_Warranty(haendler,grosskunde)}
```

> [!WARNING]
>
> Welche Kennungen in Ihrem Shop vergeben sind, hängt von der Konfiguration der Berechtigungen ab. Prüfen Sie das Ergebnis, bevor Sie darauf aufbauen.

## Das Reservierungsformular

Das Formular, mit dem der Käufer reserviert, muss die Vorgangskennung mitschicken. Sie steht in `E-BP_OrderId`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Template(ws_product.htm)~" method="post">
   <input type="hidden" name="orderid" value="~E-BP_OrderId~">
   <!-- Mengenauswahl und Reservieren-Schaltfläche -->
</form>
```

> [!WARNING]
>
> Ohne diesen versteckten Parameter kann der Shop zwei Absendungen desselben Formulars nicht auseinanderhalten. Ein versehentlicher Doppelklick führt dann zu zwei Reservierungen. Umgekehrt erlaubt die Kennung es, dasselbe Produkt mehrfach in derselben Menge bewusst zu reservieren.

## Die Tags im Überblick

| Tag | Einzel-Tag | Bereichs-Tag | negatives Bereichs-Tag | Schleifen-Tag |
| - | - | - | - | - |
| `E-BP_Error` | ja | ja | ja | – |
| `E-BP_Info` | ja | ja | ja | – |
| `E-BP_Campaign` | – | ja | ja | – |
| `E-BP_Summary` | – | ja | ja | – |
| `E-BP_Confirm` | – | ja | ja | – |
| `E-BP_Logged-In` | – | ja | ja | – |
| `E-BP_Has-Address` | – | ja | ja | – |
| `E-BP_Has-Delivery-Address` | – | ja | ja | – |
| `E-BP_Before-Begin` | – | ja | ja | – |
| `E-BP_Active` | – | ja | ja | – |
| `E-BP_Finished` | – | ja | ja | – |
| `E-BP_Begin()` | ja | – | – | – |
| `E-BP_End()` | ja | – | – | – |
| `E-BP_CampaignId` | ja | – | – | – |
| `E-BP_Name` | ja | – | – | – |
| `E-BP_ProdIndex` | ja | – | – | – |
| `E-BP_ProdNumber` | ja | – | – | – |
| `E-BP_Amount` | ja | ja | ja | – |
| `E-BP_TotalAmount` | ja | – | – | – |
| `E-BP_PriceList` | – | – | – | ja |
| `E-BP_PriceList-Amount` | ja | – | – | – |
| `E-BP_PriceList-Price` | ja | – | – | – |
| `E-BP_PriceList-Price_Format` | ja | – | – | – |
| `E-BP_BasicPrice` | ja | ja | ja | – |
| `E-BP_BasicPrice_Format` | ja | – | – | – |
| `E-BP_CurrentPrice` | ja | ja | ja | – |
| `E-BP_CurrentPrice_Format` | ja | – | – | – |
| `E-BP_CurrentSaving` | ja | ja | ja | – |
| `E-BP_CurrentSaving_Format` | ja | – | – | – |
| `E-BP_TotalPrice` | ja | ja | ja | – |
| `E-BP_TotalPrice_Format` | ja | – | – | – |
| `E-BP_TotalSaving` | ja | ja | ja | – |
| `E-BP_TotalSaving_Format` | ja | – | – | – |
| `E-BP_CompletePrice` | ja | – | – | – |
| `E-BP_CompletePrice_Format` | ja | – | – | – |
| `E-BP_CompleteSaving` | ja | ja | ja | – |
| `E-BP_CompleteSaving_Format` | ja | – | – | – |
| `E-BP_NewCompletePrice` | ja | – | – | – |
| `E-BP_NewCompletePrice_Format` | ja | – | – | – |
| `E-BP_NewCompleteSaving` | ja | – | – | – |
| `E-BP_NewCompleteSaving_Format` | ja | – | – | – |
| `E-BP_Orders` | – | ja | ja | ja |
| `E-BP_OrderDate()` | ja | – | – | – |
| `E-BP_OrderId` | ja | – | – | – |
| `E-BP_BillingAddress` | – | ja | – | – |
| `E-BP_DeliveryAddress` | – | ja | – | – |
| `E-BP_Address-…` | ja | – | – | – |
| `E-BP_Warranty()` | – | ja | ja | – |

| Tag | Zulässig in Templates |
| - | - |
| `E-BP_Campaign`, `E-BP_Summary`, `E-BP_Confirm`, `E-BP_Logged-In`, `E-BP_Has-Address`, `E-BP_Has-Delivery-Address`, `E-BP_Active`, `E-BP_Before-Begin`, `E-BP_Finished`, `E-BP_NewCompletePrice`, `E-BP_NewCompleteSaving` | `incl_bestprice.htm` |
| alle übrigen | alle |

## Verwandte Themen

* Wegweiser: [BestPrice-Order-Modul](https://dokumentation.websale.de/v8s/interaktive-funktionen/bestprice-order-modul.md)
* Wegweiser: [Anmeldung und Registrierung](https://dokumentation.websale.de/v8s/kundenkonto/anmeldung-registrierung.md)
* Wegweiser: [Adressdaten](https://dokumentation.websale.de/v8s/referenz/tags/bt/adressen.md)


## Related topics

- [Materialien BestPrice-Order-Modul](https://dokumentation.websale.de/v8s/materialien/materialien-bestprice-order-modul.md)
- [BestPrice-Order-Modul](https://dokumentation.websale.de/v8s/interaktive-funktionen/bestprice-order-modul.md)
- [Preise, Steuern und Währung](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/preise-steuern-und-waehrung.md)
- [E-Mails](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/e-mails.md)
- [Spezielle Themen](https://dokumentation.websale.de/v8s/schnittstellen/produkte-und-kategorien/ws-sftp-produkte-pro/spezielle-themen.md)


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