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

# Produktpreise

> Wie Sie in WEBSALE V8s Verkaufspreis, Streichpreis, Staffelpreise, Ab-Preise und Online-Preise pflegen und im Shop ausgeben.

Ein Produkt hat selten nur einen Preis. Neben dem aktuellen Verkaufspreis kommen je nach Geschäftsmodell ein Streichpreis, mengenabhängige Staffelpreise, ein Ab-Preis bei Varianten oder ein sich laufend ändernder Online-Preis hinzu.

| Preisart | Wofür | Gepflegt in |
| - | - | - |
| Verkaufspreis | der aktuelle Preis | Produktdatenfeld `Price` |
| Originalpreis | der Streichpreis eines rabattierten Produkts | Produktdatenfeld `OrgPrice` |
| Staffelpreise | günstigerer Preis ab einer Menge | Produktattribut "Staffelpreise" |
| Ab-Preis | der günstigste Preis über alle Varianten | wird berechnet |
| Online-Preise | laufend wechselnde Preise, beispielsweise Edelmetalle | Produktdatenfeld `OnlinePrice` und Import |

Wegweiser: Preise, Kosten, Mehrwertsteuer, Währung

## Verkaufspreis

Der Verkaufspreis steht im technischen Produktdatenfeld `Price`. Als Dezimaltrennzeichen dient der Punkt, beispielsweise `50.00`.

Ausgeben lässt er sich auf jedem Template, auf dem Produktdaten geladen sind.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-Data}
   {PR-Price}
      Unser Preis: ~PR-Price~ ~WS-CurrencySymbol~
   {/PR-Price}
{/PR-Data}
```

Auf der Warenkorbseite `ws_basket.htm` gibt [`BASKET-PR-Price`](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb) den Einzelpreis je Position aus.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{BASKET-PR-Data}
   {@BASKET-PR-Data}
      ~BASKET-PR-Price~ ~WS-CurrencySymbol~
   {/@BASKET-PR-Data}
{/BASKET-PR-Data}
```

## Originalpreis als Streichpreis

Der Originalpreis ist der vorherige Preis eines rabattierten Produkts, im Shop üblich als durchgestrichener Preis: "statt 50.00 € nur 29.99 €".

Gepflegt wird er im technischen Produktdatenfeld `OrgPrice`, ebenfalls mit Punkt als Dezimaltrennzeichen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-Data}
   {PR-OrgPrice}
      statt ~PR-OrgPrice~ ~WS-CurrencySymbol~
   {/PR-OrgPrice}
   {PR-Price}
      nur ~PR-Price~ ~WS-CurrencySymbol~
   {/PR-Price}
{/PR-Data}
```

### Ersparnis ausgeben

Aus Original- und Verkaufspreis berechnet der Shop die Ersparnis selbst, wahlweise als Prozentsatz oder als Betrag.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-Data}
   {PR-OrgPrice}
      Sie sparen ~PR-Discount~ (~PR-DiscountPrice~ ~WS-CurrencySymbol~)
   {/PR-OrgPrice}
{/PR-Data}
```

[`PR-Discount`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) hängt das Prozentzeichen selbst an. Ein zusätzliches `%` im Template führt zu einer doppelten Ausgabe. Über ein Argument steuern Sie die Nachkommastellen, `~PR-Discount(0)~` ergibt beispielsweise "20 %".

## Staffelpreise

Staffelpreise pflegen Sie im WSPManager über das Produktattribut "Staffelpreise" oder im angeschlossenen Warenwirtschaftssystem.

### Preis zur eingegebenen Menge anzeigen

Vier Tags berücksichtigen die eingegebene Menge samt Staffelpreis und einem etwaigen Kundenrabatt.

| Tag | Ausgabe |
| - | - |
| `PR-PriceConsiderQuantity` | Stückpreis zur eingegebenen Menge |
| `PR-TotalPriceConsiderQuantity` | Gesamtpreis zur eingegebenen Menge |
| `PR-SetPriceConsiderQuantity` | Stückpreis eines Set-Produkts zur eingegebenen Menge |
| `PR-SetTotalPriceConsiderQuantity` | Gesamtpreis eines Set-Produkts zur eingegebenen Menge |

> [!WARNING]
>
> Zwei Einschränkungen:
>
> Die Tags arbeiten nur auf der Produktdetailansicht `ws_product.htm` und nur für ein Einzel- oder Set-Produkt, nicht in Produktlisten.
>
> Nach einer Mengeneingabe muss die Seite neu geladen werden, sonst steht dort noch der alte Preis. Üblich ist ein Nachladen per AJAX.

Wegweiser: [Abhängige Varianten per AJAX nachladen](https://dokumentation.websale.de/v8s/abhaengige-varianten/abhaengige-varianten-per-ajax-nachladen.md)

### Staffelpreistabelle

Die hinterlegten Staffeln lassen sich als Tabelle ausgeben. Die Klammerung [`PR-BulkDiscount`](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise#bd-data) greift nur bei Produkten mit Staffelpreisen, die Schleife `{@[BD-Data](/v8s/referenz/tags/bd-staffelpreise#die-tags)}` durchläuft die Stufen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-BulkDiscount}
<table>
   <tr>
      <td>Menge</td>
      <td>Preis pro Stück</td>
      <td>Ersparnis</td>
      <td>Grundpreis</td>
   </tr>
   {@BD-Data}
   <tr>
      <td>~BD-Quantity~</td>
      <td>~BD-Price~ ~WS-CurrencySymbol~</td>
      <td>~BD-Discount~ ~WS-CurrencySymbol~ = ~BD-DiscountRate~ %</td>
      <td>~BD-BasePriceInfo~</td>
   </tr>
   {/@BD-Data}
</table>
{/PR-BulkDiscount}
```

Das ergibt eine Tabelle wie diese:

| Menge | Stückpreis | Ersparnis | Grundpreis |
| - | - | - | - |
| 1 | 20.00 EUR | | 2,00 EUR/100 Gramm |
| 5 | 18.00 EUR | 2.00 EUR = 10.00 % | 1,80 EUR/100 Gramm |
| 10 | 15.00 EUR | 5.00 EUR = 25.00 % | 1,50 EUR/100 Gramm |
| 50 | 12.00 EUR | 8.00 EUR = 40.00 % | 1,20 EUR/100 Gramm |
| 250 | 10.00 EUR | 10.00 EUR = 50.00 % | 1,00 EUR/100 Gramm |

| Tag | Inhalt |
| - | - |
| `BD-Data` | Schleife über die Staffelstufen |
| [`BD-Quantity`](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise#die-tags) | Menge der Stufe |
| [`BD-Price`](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise#die-tags) | Stückpreis der Stufe |
| [`BD-Discount`](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise#die-tags) | Ersparnis als Betrag |
| [`BD-DiscountRate`](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise#die-tags) | Ersparnis in Prozent |
| [`BD-BasePriceInfo`](https://dokumentation.websale.de/v8s/referenz/tags/bd-staffelpreise#die-tags) | Grundpreis, also der Preis je Einheit |

Eine Staffelstufe kann auf zwei Arten greifen: ab der angegebenen Menge oder nur bei genau dieser Menge. Welche der beiden gilt, legen Sie je Stufe bei der Pflege fest. Im Template ist der Unterschied nicht sichtbar, er wirkt sich aber auf den berechneten Preis aus.

### Automatische Staffelpreisberechnung bei freier Mengenangabe

Normalerweise wählt der Käufer die Menge aus festen Werten, die über abhängige Varianten gepflegt sind. Je Wert ein eigener Preis, je zusätzlichem Wert mehr Pflegeaufwand.

Mit der automatischen Staffelpreisberechnung pflegen Sie nur noch einige wenige Menge-Preis-Paare. Der Käufer darf zusätzlich eine eigene Wunschmenge eingeben, und der Shop berechnet den Preis dafür.

![Preisinterpolation](https://mintcdn.com/websaleag-44ee7ea6/98HtpcQDYdzjmpoC/images/preisinterpolation.jpg?fit=max\&auto=format\&n=98HtpcQDYdzjmpoC\&q=85\&s=b71d156067b41b342f4cd758b71601ae)

#### Wie gerechnet wird

Der Shop sucht zur Wunschmenge das nächstkleinere und das nächstgrößere hinterlegte Menge-Preis-Paar.

**Nur ein Paar vorhanden**: Aus diesem Paar wird der Stückpreis gebildet, mit der Wunschmenge multipliziert und auf zwei Stellen gerundet.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Wunschmenge 1250, gefundenes Paar 1000 Stück = 26,19 EUR
(26,19 / 1000) x 1250 = 32,7375  ->  32,74 EUR
```

**Beide Paare vorhanden**: Aus der Preisdifferenz der beiden Paare wird ein Stückpreis für den Bereich dazwischen gebildet. Dieser gilt für die Menge oberhalb des kleineren Paars und wird zu dessen Preis addiert.

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Wunschmenge 750, gefundene Paare 500 Stück = 14,04 EUR und 1000 Stück = 26,19 EUR

Stückpreis zwischen 500 und 1000:  (26,19 - 14,04) / (1000 - 500) = 0,0243 EUR
Anteil oberhalb von 500:           0,0243 x (750 - 500)            =  6,075 EUR
Gesamtpreis:                       14,04 + 6,075 = 20,115           -> 20,12 EUR
```

> [!WARNING]
>
> Diese Funktion lässt sich nicht kombinieren mit DirectPrice, alternativen beziehungsweise zeitabhängigen Preisen, kundenindividuellen Preisen und Flächenprodukten.

Die freie Mengeneingabe wird in den Deep-Link-Tags `PR-DepVarLink`, `PR-DepVarLinkPart`, `PR-SetLink` und `PR-SetLinkEnc` automatisch als URL-Parameter `depvar_qty` mitgegeben. Voraussetzung ist, dass das Neuladen per AJAX beim Verlassen des Mengenfelds korrekt eingebunden ist.

#### Voraussetzung

Die Menge der betreffenden Produkte muss über abhängige Varianten gepflegt und ausgewählt werden. Eine Freischaltung durch WEBSALE ist nicht nötig.

Wegweiser: [Abhängige Varianten anzeigen](https://dokumentation.websale.de/v8s/abhaengige-varianten/abhaengige-varianten-anzeigen.md)

#### Schritt 1: Produktdaten anpassen

Die Menge-Preis-Paare stehen in einem eigenen Produktdatenfeld.

#### Schritt 2: Auswahlliste beschriften (optional)

In der Mengen-Auswahlliste steht der Eintrag für die freie Eingabe standardmäßig als "Interpolation". Mit `PR-DepVariationOptionIsPriceInterpolation1` geben Sie ihm einen verständlichen Text.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{@PR-DepVariationOption1}
   <option value="~PR-DepVariationOption1~"
      {PR-DepVariationOptionSelected1}selected{/PR-DepVariationOptionSelected1}>~PR-DepVariationOption1~
      {PR-DepVariationOptionIsPriceInterpolation1}freie Mengeneingabe / Wunschmenge eingeben{/PR-DepVariationOptionIsPriceInterpolation1}
      {PR-LoadDepVariationOptionProduct} ~PR-Price~ ~PR-VarIndex~ {/PR-LoadDepVariationOptionProduct}</option>
{/@PR-DepVariationOption1}
...
```

#### Schritt 3: Eingabefeld ergänzen

Solange die Menge über eine abhängige Variante kommt, braucht es kein Mengenfeld. Bei freier Eingabe schon. Die Klammerung [`PR-DepVarQuantity`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) unterscheidet beide Fälle.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{!PR-DepVarQuantity}
   <input type="text" name="~PR-Quantity_Input~" value="~PR-Quantity~"
          {PR-PriceInterpolation}onBlur="SubmitSelection()"{/PR-PriceInterpolation}>
{/!PR-DepVarQuantity}

{PR-DepVarQuantity}
   <input type="hidden" name="~PR-Quantity_Input~" value="1">
{/PR-DepVarQuantity}
...
```

Das `onBlur` löst das Nachladen aus, sobald der Käufer das Feld verlässt. Ohne diesen Aufruf bleibt der angezeigte Preis auf dem alten Stand.

#### Schritt 4: Hinterlegte Menge-Preis-Paare anzeigen (optional)

Die gepflegten Paare lassen sich als Orientierung ausgeben. Der Inhalt von [`PR-PriceInterpolation`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) wird dafür mit den DesignControl-Tags zerlegt.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{PR-PriceInterpolation}

   ~DC-DynamicLoop1_setSeparatorTags(<g>,</g>)~
   ~DC-DynamicLoop1_settaggeddata($PR-PriceInterpolation$)~

   {@DC-DynamicLoop1}

      ~WS-DisableXSSProtectionOnce~
      ~DC-FP1_set($DC-DynamicLoop1_data$)~
      ~DC-FP1_extractTaggedData(<1>,</1>)~
      Menge ~DC-FP1~:

      ~WS-DisableXSSProtectionOnce~
      ~DC-FP1_set($DC-DynamicLoop1_data$)~
      ~DC-FP1_extractTaggedData(<2>,</2>)~
      ~DC-CommercialCalc1_set($DC-FP1$)~
      ~DC-CommercialCalc1~ ~WS-Currency~

   {/@DC-DynamicLoop1}

{/PR-PriceInterpolation}
...
```

Die Paare liegen als `<g><1>Menge</1><2>Preis</2></g>` vor. `DC-DynamicLoop1` zerlegt die Kette an den `<g>`-Marken, `DC-FP1_extractTaggedData` holt aus jedem Block Menge und Preis heraus, `DC-CommercialCalc1` formatiert den Preis kaufmännisch.

#### Schritt 5: Warenkorbseite erweitern

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{BASKET-PR-Data}
   {@BASKET-PR-Data}

      {BASKET-PR-PriceInterpolation}
         Automatisch ermittelter Staffelpreis: ~BASKET-PR-PriceInterpolation~ ~WS-Currency~
      {/BASKET-PR-PriceInterpolation}

      {!BASKET-PR-PriceInterpolation}
         ~BASKET-PR-Price~ ~WS-Currency~
      {/!BASKET-PR-PriceInterpolation}

   {/@BASKET-PR-Data}
{/BASKET-PR-Data}
...
```

## Ab-Preis und bester Preis

Bei Produkten mit abhängigen Varianten unterscheiden sich die Preise je Kombination. Für die Produktliste brauchen Sie dann einen Ab-Preis.

| Tag | Inhalt |
| - | - |
| [`PR-BestPrice`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) | günstigster Preis über alle abhängigen Varianten |
| [`PR-BestPiecePrice`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) | niedrigster Stückpreis des Produkts |
| [`PR-BestPiecePriceQuantity`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) | Menge, ab der dieser Stückpreis gilt |

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PR-BestPrice}
   ab ~PR-BestPrice~ ~WS-CurrencySymbol~
{/PR-BestPrice}
```

## Online-Preise

Für Produkte mit häufig wechselnden Preisen, klassisch Edelmetalle, liefert die Warenwirtschaft den Preis laufend nach. Die Produktdaten selbst bleiben unverändert, überschrieben wird nur der Preis.

Ruft ein Käufer ein solches Produkt auf, lädt der Shop den aktuellen Preis nach. Legt er es in den Warenkorb, gilt dieser Preis eine festgelegte Zeit. Danach werden alle Online-Preise im Warenkorb aktualisiert.

> [!WARNING]
>
> Online-Preise lassen sich nicht kombinieren mit Staffelpreisen, Rabatten, Gutscheinen auf Positionsebene, Varianten, Öko-Steuer, Set-Produkten, `OrgPrice` sowie alternativen beziehungsweise zeitabhängigen Preisen. Eine Sortierung nach Online-Preisen ist ebenfalls nicht möglich.

![Online Preis](https://mintcdn.com/websaleag-44ee7ea6/98HtpcQDYdzjmpoC/images/online-preis.png?fit=max\&auto=format\&n=98HtpcQDYdzjmpoC\&q=85\&s=28a3af33b5bf83ad9666448140b587f9)

### Verhalten beim Bestellabschluss

Befindet sich der Käufer im Online-Clearing, also bei der Eingabe und Prüfung von Zahlungsdaten, werden die Preise eingefroren und auch nach Ablauf der Gültigkeit nicht mehr aktualisiert.

Ist ein Preis beim Klick auf "Bestellung absenden" abgelaufen, entscheidet die Konfiguration über den weiteren Ablauf.

| Verhalten | Folge für den Käufer |
| - | - |
| Bestellung zurückhalten (Standard) | Die Preise werden aktualisiert, der Käufer bleibt auf der Bestellübersicht und schließt mit den neuen Preisen ab. |
| Bestellung abschließen | Die Preise werden aktualisiert und die Bestellung läuft direkt weiter, ohne Hinweis auf den geänderten Warenwert. |

Lässt sich für ein Online-Preis-Produkt kein Preis ermitteln, kann es nicht in den Warenkorb gelegt werden. Liegt es bereits im Warenkorb und schlägt nur die Aktualisierung fehl, bleibt es bestellbar.

### Schritt 1: Preise bereitstellen

Die Warenwirtschaft liefert die Online-Preise automatisiert.

### Schritt 2: Produkte kennzeichnen

| Technischer Feldname | Typ | Werte |
| - | - | - |
| `OnlinePrice` | Text einzeilig mit Auswahlliste | `y` für ja, leer oder anderer Wert für nein |

### Schritt 3: Shopkonfiguration ergänzen

Beide Parameter stehen im Abschnitt `<Basic>` der `shop.config`.

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

`OnlinePriceTimeoutInSec` ist die Gültigkeitsdauer in Sekunden. `OnlinePriceNotifyPriceUpdateAtPlaceOrder-Allow` steuert das Verhalten aus der Tabelle oben.

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

### Schritt 4: Produktdetailansicht anpassen

[`PR-OnlinePrice`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) trennt Online-Preis-Produkte von normalen. [`PR-ValidOnlinePriceFound`](https://dokumentation.websale.de/v8s/referenz/tags/pr/grundlagen-und-produktdaten) sagt, ob ein Preis ermittelt werden konnte. Ohne gültigen Preis sollten Sie auch den Warenkorb-Button wegklammern.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
...
{PR-OnlinePrice}
   {PR-ValidOnlinePriceFound}
      Aktueller Online-Preis: ~PR-Price~ ~WS-Currency~
   {/PR-ValidOnlinePriceFound}

   {!PR-ValidOnlinePriceFound}
      Aktuell kein Preis verfügbar
   {/!PR-ValidOnlinePriceFound}
{/PR-OnlinePrice}

{!PR-OnlinePrice}
   ~PR-Price~ ~WS-Currency~
{/!PR-OnlinePrice}
...
```

Derselbe Block funktioniert auch auf der Suchergebnisseite `ws_search.htm`, der Produktübersicht `ws_category.htm` und in `CAT-AdvData()`-Produktlisten.

### Schritt 5: Warenkorb und Bestellübersicht anpassen

Zeigen Sie die Restzeit und einen Button zum Aktualisieren an. `ST-BasketPage` allein genügt hier nicht, weil der Block auf zwei Seiten stehen soll. Stattdessen blendet `{![ST-PlacedOrder](/v8s/referenz/tags/st/seitenzustand-und-navigation#die-tags-im-uberblick)}` ihn auf der Bestätigungsseite aus.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<form action="~FORM-Basket~" method="post">
   ...
   {@BASKET-PR-Data}
      ...
      {BASKET-PR-OnlinePrice}
         Online-Preis: ~BASKET-PR-Price~ ~WS-Currency~

         {!ST-PlacedOrder}

            {BASKET-PR-OnlinePriceTimedOut}
               Der Online-Preis ist abgelaufen und nicht mehr gültig.
            {/BASKET-PR-OnlinePriceTimedOut}

            {!BASKET-PR-OnlinePriceTimedOut}
               Restzeit:
               ~DC-Int1_set($BASKET-PR-OnlinePriceTimeLeft$)~
               ~DC-Int2_set($BASKET-PR-OnlinePriceTimeLeft$)~
               ~DC-Int1_div(60)~
               ~DC-Int2_mod(60)~
               {!DC-Int1(0)}~DC-Int1~ Minute{!DC-Int1(1)}n{/!DC-Int1(1)}{/!DC-Int1(0)}
               ~DC-Int2~ Sekunden<br>
            {/!BASKET-PR-OnlinePriceTimedOut}

         {/!ST-PlacedOrder}
      {/BASKET-PR-OnlinePrice}

      {!BASKET-PR-OnlinePrice}
         ~BASKET-PR-Price~ ~WS-Currency~
      {/!BASKET-PR-OnlinePrice}
      ...
   {/@BASKET-PR-Data}

   {!ST-PlacedOrder}
      {BASKET-HasOnlinePriceProduct}
         <input type="submit" name="~BT-UpdateOnlinePrices~" value="Preise aktualisieren">
      {/BASKET-HasOnlinePriceProduct}
   {/!ST-PlacedOrder}
   ...
</form>
```

[`BASKET-PR-OnlinePriceTimeLeft`](https://dokumentation.websale.de/v8s/referenz/tags/basket/besondere-produktarten-im-warenkorb#online-preise) liefert Sekunden. Die `DC-Int`-Tags rechnen daraus Minuten und Sekunden, `_div(60)` für die Minuten und `_mod(60)` für den Rest.

> [!WARNING]
>
> Verwenden Sie denselben Block auf der Bestellübersicht `ws_place_order.htm`, aber mit der passenden Action: [`~FORM-Basket~`](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare#bestellablauf) auf der Warenkorbseite, [`~FORM-PlaceOrder~`](https://dokumentation.websale.de/v8s/referenz/tags/form-formulare#bestellablauf) auf der Bestellübersicht.

Materialien: Countdown für die Restzeit der Online-Preise

### Schritt 6: Hinweismeldung ausgeben

Die Meldung informiert den Käufer, dass Online-Preise aktualisiert wurden. Der Zusatz in Klammern benennt den Auslöser.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{MSG-BasketUpdatedOnlinePriceProducts}

   Online-Preis-Produkte im Warenkorb wurden aktualisiert.

   {MSG-BasketUpdatedOnlinePriceProducts(1)}
      (manuell)
   {/MSG-BasketUpdatedOnlinePriceProducts(1)}

   {MSG-BasketUpdatedOnlinePriceProducts(2)}
      (automatisch)
   {/MSG-BasketUpdatedOnlinePriceProducts(2)}

   {MSG-BasketUpdatedOnlinePriceProducts(3)}
      (automatisch, Bestellung absenden verzögert)
   {/MSG-BasketUpdatedOnlinePriceProducts(3)}

{/MSG-BasketUpdatedOnlinePriceProducts}
```

| Wert | Auslöser |
| - | - |
| 1 | der Käufer hat den Button "Preise aktualisieren" geklickt |
| 2 | automatische Aktualisierung |
| 3 | automatische Aktualisierung beim Klick auf "Bestellung absenden", die Bestellung wurde dadurch verzögert |


## Related topics

- [Preise und Kosten](https://dokumentation.websale.de/v8s/preise/preise-und-kosten.md)
- [AltCurrency- (Alternative Währung)](https://dokumentation.websale.de/v8s/referenz/tags/altcurrency.md)
- [Texteingabefelder zum Produkt](https://dokumentation.websale.de/v8s/produkte/texteingabefelder-zum-produkt.md)
- [BestPrice-Order-Modul](https://dokumentation.websale.de/v8s/interaktive-funktionen/bestprice-order-modul.md)
- [Alternative Produktdaten: Tags](https://dokumentation.websale.de/v8s/referenz/tags/alternative-produktdaten-tags.md)


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