$wsInventory
Mit dem $wsInventory Modul können Sie auf Lagerbestände und Verfügbarkeiten von Produkten zugreifen. Typische Anwendungsfälle sind Ampel-Anzeigen (grün/gelb/rot), Verfügbarkeitsprüfungen auf Produktseiten oder Reservierungszeiten im Warenkorb. In diesem Abschnitt erfahren Sie, wie Sie Lagerbestandsdaten laden und anzeigen können.
Inhaltsverzeichnis
Modulübersicht
Beispiel / Ausschnitt über $wsInventory
{{= $wsInventory | json }}
JSON-Ausgabe
{
"load": "ƒ()",
"loadReservation": "ƒ()"
}Anmerkung: "ƒ()" kennzeichnet eine Funktion.
Methoden in der Übersicht
Methode | Rückgabe-Typ | Beschreibung |
|---|---|---|
| map | Lädt die Lagerbestandsdaten eines Produkts. |
| map | Lädt die Reservierungsdaten eines Warenkorb-Eintrags. |
Templates
Lagerbestandsinformationen können im Zusammenhang mit einem Produkt auf jeder beliebigen Seite und somit Template verwendet werden.
Typischerweise werden Informationen zum Lagerbestand und zur Verfügbarkeit gemeinsam mit den Produkten geladen – wie zum Beispiel auf der Startseite, in der Kategorieliste, den Suchergebnissen oder im Warenkorb.
Variablen
Für $wsInventory stehen keine direkten Variablen zur Verfügung. Die Daten werden über Methoden geladen.
Methoden
$wsInventory.load()
Lädt die Lagerbestandsdaten eines Produkts.
Signatur$wsInventory.load(productId)
Rückgabemap - Map mit Lagerbestandsdaten.
Parameter
Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | ja | ID des Produkts |
Beispiel, das Lagerbestandsdaten lädt und ausgibt.
{{ var $myInventoryInfo = $wsInventory.load($product.id) }}
{{ if $myInventoryInfo.active }}
{{= $myInventoryInfo.deliveryText }}
Verfügbar: {{= $myInventoryInfo.amount }} Stück
{{ /if }}
Mit Verwendung der Funktion $wsInventory.load() stehen verschiedene Variablen zur Verfügung, um Daten zum Lagerbestand abzurufen und auszugeben. Nachfolgend eine Übersicht, welche Variablen verfügbar sind.
Lagerbestandsdaten (Rückgabe von $wsInventory.load() )
Zunächst ist es notwendig, die Map mit den Lagerbestandsdaten, wie im obigen Beispiel dargestellt, einer lokalen Variable zuzuweisen. Diese kann anschließend an verschiedenen Stellen im Template verwendet werden.
Lagerbestandsdaten in der Übersicht
Variable | Typ | Beschreibung |
|---|---|---|
| bool |
|
| int | Verfügbare Stückzahl. |
| string | Lieferstatus-Text (z.B. “Nur noch wenige Stück auf Lager”). |
| int | Stückzahl, ab der der Hinweistext ( |
| bool |
|
| bool |
|
| string | Ampelstatus der Verfügbarkeit: |
| string | Optionaler Parameter Wird im Zusammenhang mit dem Filialfinder und/oder Click & Collect eingesetzt, um den Lagerbestand eines konkreten Ladengeschäfts gezielt in die Verfügbarkeitsprüfung einzubeziehen. StorageID (Lagerbestands-ID) zur Berücksichtigung von Filialbeständen im Filialfinder bzw. für Click & Collect. Wird der Parameter angegeben, werden die Stückzahlen des angegebenen Ladengeschäfts zusätzlich zum regulären Lagerbestand in der Verfügbarkeits-/Bestandsprüfung berücksichtigt (z. B. „in Filiale verfügbar“). Wird der Parameter nicht angegeben, wird – wie bisher – ausschließlich der Lagerbestand des aktuellen Subshops geladen (gleiches Verhalten wie zuvor, keine Template-Anpassungen erforderlich). |
$wsInventory.loadReservation()
Lädt die Reservierungsdaten eines Warenkorb-Eintrags.
Signatur$wsInventory.loadReservation(basketItemId)
Rückgabemap - Reservierungsdaten mit folgenden Attributen:
Attribut | Typ | Beschreibung |
|---|---|---|
| int | Verbleibende Reservierungszeit in Sekunden. |
Parameter
Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| string | ja | ID des Warenkorb-Eintrags. |
Beispiel, das Reservierungsdaten lädt.
{{ var $reservation = $wsInventory.loadReservation($basketItem.id) }}
{{ if $reservation }}
{{ if $reservation.duration > 0 }}
<p>Reserviert für {{= $reservation.duration }} Sekunden</p>
{{ else }}
<p>Reservierung abgelaufen</p>
{{ /if }}
{{ /if }}
Aktionen
Für $wsInventory stehen keine Aktionen zur Verfügung.
Beispiele für die Anzeige vom Lagerbestand
Auf Lagerbestandsverwaltung prüfen
In diesem Beispiel wird geprüft, ob für dieses Produkt die Lagerbestandsverwaltung aktiv ist.
{{ var $inventoryInfo = $wsInventory.load($product.id) }}
{{ if $inventoryInfo.active }}
<p>Für dieses Produkt ist die Lagerverwaltung aktiv</p>
{{ /if }}
Lagerbestandsdaten
In diesem Beispiel werden die produktspezifischen Daten angezeigt.
<p>Lieferstatus-Text: {{= $inventoryInfo.deliveryText }}</p>
<p>Stückzahl: {{= $inventoryInfo.amount }}</p>
<p>Bestellbar: {{ if $inventoryInfo.soldOut }} Nein {{ else }} Ja {{ /if }}</p>
Ampelstatus Anzeigen
In diesem Beispiel wird die Verfügbarkeit des Produkts geprüft, sodass der Kunde direkt erkennen kann, ob es verfügbar, fast ausverkauft oder nicht lieferbar ist.
{{ var $inventoryInfo = $wsInventory.load($product.id) }}
{{ if $inventoryInfo.active }}
Ampel: {{= $inventoryInfo.state }}
{{ switch $inventoryInfo.state }}
{{ case "red"}}
<span style="background-color: red;">ROT</span>
{{ case "yellow"}}
<span style="background-color: yellow;">GELB</span>
{{ case "green"}}
<span style="background-color: green;">GRÜN</span>
{{ /switch }}
{{ /if }}
Anzeige für die Reservierungszeit
Nachdem einem Produkt in den Warenkorb gelegt wird, kann das Produkt für eine bestimmte Zeit reserviert sein. In diesem Beispiel wird im Warenkorb die Reservierungszeit angezeigt.
{{ if $reservation }}
{{ if $reservation.duration > 0 }}
{{ var $sec = $reservation.duration % 60 }}
{{ var $min= ( $reservation.duration - $sec ) / 60 }}
Das Produkt ist für Sie noch
{{ if $min > 0 }}
<strong>{{= $min }} Minuten</strong> und
{{ /if }}
<strong>{{= $sec }} Sekunden</strong> lang reserviert
{{ else }}
Leider ist Ihre Reservierung abgelaufen.
{{ /if}}
{{ /if }}
Reservierungszeit verlängern.
Damit der Kunde noch etwas mehr Zeit zum entscheiden hat, kann die Reservierungszeit im Warenkorb verlängert werden.
{{var $reservation = $wsInventory.loadReservation($basketItem.id)}}
{{ if $reservation }}
{{ var $inventoryReserveAction = $wsActions.create("InventoryReserve", tag=$basketItem.id) }}
{{ if $reservation.duration > 0 }}
Das Produkt ist für Sie reserviert
{{ else }}
Leider ist Ihre Reservierung abgelaufen.
<form method="post" action="{{ $wsViews.viewUrl('basket.htm') }}">
<input type="hidden" name="wscsrf" value="{{= $inventoryReserveAction.csrf }}">
<input type="hidden" name="wsact" value="{{= $inventoryReserveAction.id }}">
<input type="hidden" name="wstarget" value="{{= $wsViews.viewUrl('basket.htm') }}">
<input type="hidden" name="basketItemId" value="{{= $basketItem.id }}">
<button>Neu reservieren</button>
</form>
{{ /if}}
{{ if $inventoryReserveAction.success }}
<p>Menge wurde erfolgreich neu reserviert.</p>
{{ /if }}
{{ if $inventoryReserveAction.error }}
<p>Die Reservierung konnte nicht verlängert werden</p>
{{ /if }}
{{ /if }}
Weitere Praxisbeispiele finden Sie hier: https://websale.atlassian.net/wiki/spaces/WSDOKU/pages/2989031440