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

# Zeitabhängige Aktionspreise

> Zeitabhängige Aktionspreise ersetzen den Standardpreis eines Produkts für einen festgelegten Zeitraum. Diese Anleitung zeigt, wie Sie sie im Template ausgeben.

Zeitabhängige Aktionspreise sind Preise, die nur innerhalb eines festgelegten Zeitraums gültig sind. Der Shop schaltet zum hinterlegten Zeitpunkt selbst auf den Aktionspreis um und nach dem Ende der Aktion wieder auf den Standardpreis zurück.

Im Admin Interface heißt die Funktion Geplante Preise, technisch `scheduledPrices`. Ein einzelner Eintrag wird auf dieser Seite als Aktionspreis bezeichnet.

Diese Anleitung beschreibt, wie Sie einen laufenden Aktionspreis im Shop anzeigen. Wo die Preise gepflegt werden, steht am Ende im Abschnitt [Wo Aktionspreise gepflegt werden](#wo-aktionspreise-gepflegt-werden).

## Was im Template zur Verfügung steht

| **Feld**        | **Inhalt**                                                                         |
| --------------- | ---------------------------------------------------------------------------------- |
| `price`         | Der aktuell gültige Preis. Läuft eine Aktion, steht hier der Aktionspreis.         |
| `rawPrice`      | Der Standardpreis, unabhängig von laufenden Aktionen. Als Streichpreis verwendbar. |
| `promotionInfo` | Der Aktionstext, sofern einer gepflegt wurde. Nur bei laufender Aktion vorhanden.  |

Diese Felder gehören zum Produktobjekt. Sie stehen daher überall dort zur Verfügung, wo ein Produkt angezeigt wird, also beispielsweise in Kategorielisten, Suchergebnissen, Merklisten und Warenkorbpositionen.

Auch jedes weitere Preisfeld des Shops kann eigene Aktionspreise enthalten. Für diese Felder liefert die Funktion `getFullPriceInfo()` dieselben drei Werte. Bei Set-Produkten kommen die Werte `setPrice`, `setRawPrice`, `setOrgPrice`, `setDiscount` und `setDiscountPrice` hinzu.

<Warning>
  Die Ausgabe von Beginn und Ende einer Aktion stehen im Template noch nicht zur Verfügung.
</Warning>

## Preis mit Streichpreis und Aktionstext ausgeben

`rawPrice` ist immer gesetzt, auch wenn keine Aktion läuft. Ohne die entsprechende Prüfung im Template würde an jedem Produkt derselbe Preis zweimal angezeigt, einmal durchgestrichen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if $cProduct.rawPrice > $cProduct.price }}
	<span class="wsPriceOld">{{= $cProduct.rawPrice | currency }}</span>
	<span class="wsPriceNow">{{= $cProduct.price | currency }}</span>
	{{ var $cSalePercentage = (($cProduct.rawPrice - $cProduct.price) / $cProduct.rawPrice * 100)|round()|preparedFormat("amount") }}
	<span class="wsPriceBadge">- {{= $cSalePercentage }} %</span>
{{ else }}
	<span class="wsPriceNow">{{= $cProduct.price | currency }}</span>
{{ /if }}

{{ if $cProduct.promotionInfo }}
	<span class="wsPriceBadge">{{= $cProduct.promotionInfo }}</span>
{{ /if }}
```

**Ergebnis** <br />Während einer laufenden Aktion werden der Standardpreis als Streichpreis, die Ersparnis in Prozent und der Aktionspreis angezeigt. Läuft keine Aktion, wird nur der standardmäßige Preis angezeigt. Der Aktionstext hat eine eigene Bedingung, weil nicht jede Aktion einen gepflegten Aktionstext enthält.

## Wo Aktionspreise gepflegt werden

Aktionspreise werden im Admin-Interface auf der Detailseite des Produkts im Reiter "Geplante Preise" mit einer eigenen Tabelle je Preisfeld gepflegt. Ein Eintrag besteht aus dem Preis, dem Zeitraum und optional einem Aktionstext. Mehrere Einträge lassen sich hintereinander stapeln, der Shop schaltet automatisch zwischen ihnen.

Die Pflege über die Schnittstelle beschreibt der Abschnitt [Zeitgesteuerte Preise (Aktionspreise)](/schnittstellen/admin-interface-api/api-referenz-produkte#zeitgesteuerte-preise-aktionspreise) der API-Referenz.

## Begriffe und technische Namen

| Konzept                     | Admin Interface                     | Template        | Schnittstelle                     |
| --------------------------- | ----------------------------------- | --------------- | --------------------------------- |
| Standardpreis               | Feld „Preis“ am Produkt             | `rawPrice`      | `price.price`                     |
| Aktuell gültiger Preis      | —                                   | `price`         | —                                 |
| Liste der Aktionspreise     | Reiter „Geplante Preise“            | —               | `price.scheduledPrices`           |
| Aktionspreis eines Eintrags | Spalte „Preis“                      | —               | `scheduledPrices[].price`         |
| Zeitraum                    | Spalten „Startdatum“ und „Enddatum“ | —               | `startDate` und `endDate`         |
| Aktionstext                 | Spalte für den Aktionstext          | `promotionInfo` | `scheduledPrices[].promotionInfo` |

## Weiterführende Links

* [\$wsProducts](/frontend/referenz/module/wsproducts#preis-eines-produkts) beschreibt die Preisfelder am Produktobjekt und `getFullPriceInfo()`.
* [\$wsBasket](/frontend/referenz/module/wsbasket) beschreibt den festgeschriebenen Preis einer Warenkorbposition.
* [API-Referenz Produkte](/schnittstellen/admin-interface-api/api-referenz-produkte#zeitgesteuerte-preise-aktionspreise) beschreibt das Format der Preisfelder und die Validierung.
* [content - Katalog](/konfiguration/content-katalog-kategorien-produkte) beschreibt den Datentyp `price` und das Anlegen weiterer Preisfelder.


## Related topics

- [API-Referenz Produkte](/schnittstellen/admin-interface-api/api-referenz-produkte.md)
- [content - Katalog (Kategorien & Produkte)](/konfiguration/content-katalog-kategorien-produkte.md)
- [search - Sortierung und Filterung](/konfiguration/search-sortierung-und-filterung.md)
- [$wsProducts - Produktdaten](/frontend/referenz/module/wsproducts.md)
- [API-Referenz Kategorien](/schnittstellen/admin-interface-api/api-referenz-kategorien.md)
