$wsInventory

$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

Methode

Rückgabe-Typ

Beschreibung

load()

map

Lädt die Lagerbestandsdaten eines Produkts.

loadReservation()

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ückgabe
map - Map mit Lagerbestandsdaten.

Parameter

Name

Typ

Pflicht

Beschreibung

Name

Typ

Pflicht

Beschreibung

productId

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

Variable

Typ

Beschreibung

active

bool

true wenn Lagerverwaltung für dieses Produkt aktiv ist.

amount

int

Verfügbare Stückzahl.

deliveryText

string

Lieferstatus-Text (z.B. “Nur noch wenige Stück auf Lager”).

messageLimit

int

Stückzahl, ab der der Hinweistext (deliveryText) angezeigt wird.

soldOut

bool

true wenn das Produkt ausverkauft ist.

splitDelivery

bool

true wenn das Produkt auch bei Teillieferungen bestellt werden kann (z.B. bei nicht vollständig verfügbarer Menge).

state

string

Ampelstatus der Verfügbarkeit: green (ausreichend vorrätig), yellow (wenige Stück), red (ausverkauft oder sehr knapp).

storage

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ückgabe
map - Reservierungsdaten mit folgenden Attributen:

Attribut

Typ

Beschreibung

Attribut

Typ

Beschreibung

duration

int

Verbleibende Reservierungszeit in Sekunden.

Parameter

Name

Typ

Pflicht

Beschreibung

Name

Typ

Pflicht

Beschreibung

basketItemId

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


Weiterführende Links