$wsDirectOrder
Mit dem $wsDirectOrder Modul können Sie auf die Daten einer Direktbestellung zugreifen. Bei der Direktbestellung kann der Käufer durch die Eingabe von Produktnummern ein oder mehrere Produkte direkt in den Warenkorb legen.
Inhaltsverzeichnis
Modulübersicht
Beispiel / Ausschnitt über $wsDirectOrder
{{= $wsDirectOrder | json }}
JSON-Ausgabe
{
"currentLines": 5,
"items": [
{
"valid": true/false,
"quantity": 1,
"id": "123-45678"
},
{
"valid": true/false,
"quantity": 1,
"id": "910-111213"
}
]
}
Variablen in der Übersicht
Variable | Typ | Beschreibung |
|---|---|---|
| int | Aktuelle Anzahl der angezeigten Eingabezeilen. |
| array | Liste der eingegebenen Bestellpositionen. |
| string | Artikelnummer der Bestellposition. |
| int | Menge der Bestellposition. |
| bool |
|
Templates
Der Bestellschein kann über ein beliebiges Template und somit eine beliebige Seite im Shop zur Verfügung gestellt werden, z.B. directOrder.htm.
Variablen
$wsDirectOrder.currentLines
Gibt die aktuelle Anzahl der angezeigten Eingabezeilen aus. Die Anzahl kann über die Konfiguration festgelegt werden.
Aktuelle Zeilen: {{= $wsDirectOrder.currentLines }}
$wsDirectOrder.items
Gibt eine Liste der eingegebenen Bestellpositionen aus.
{{ foreach $myDirectOrderItem in $wsDirectOrder.items }}
{{= $myDirectOrderItem.id }} – Menge: {{= $myDirectOrderItem.quantity }}
{{ /foreach }}
$wsDirectOrder.items[$i].id
Gibt die Artikelnummer der Bestellposition aus.
Artikelnummer: {{= $wsDirectOrder.items[0].id }}
$wsDirectOrder.items[$i].quantity
Gibt die Menge der Bestellposition aus.
Menge: {{= $wsDirectOrder.items[0].quantity }}
$wsDirectOrder.items[$i].valid
Gibt true aus, wenn die eigegebene Artikelnummer im Shop existiert und bestellt werden kann.
{{ if $wsDirectOrder.items[0].valid }}
// Artikelnummer gültig
{{ else }}
// Artikelnummer ungültig
{{ /if }}
Methoden
Für $wsDirectOrder stehen keine Methoden zur Verfügung.
Aktionen
Für $wsDirectOrder stehen keine Aktionen zur Verfügung.
Beispiele
Template erstellen
Erstellen Sie im Verzeichnis views eine neue Datei directOrder.htm
In dieser Datei werden mehrere Reihen für die jeweiligen Bestellpositionen erzeugt.
{{ extends "layouts/layout.htm" }}
{{ block content_main }}
<div id="wsBasketWrapper">
<h1>Direktbestellung</h1>
<table class="table">
<tbody id="wsDirectOrderTableBody">
{{ foreach $cProduct in range(0, $wsDirectOrder.currentLines - 1) }}
{{ var $cActionDirectOrderAdd = $wsActions.create("DirectOrderAdd", tag=string($cProduct)) }}
{{ var $cActionDirectOrderDelete = $wsActions.create("DirectOrderDelete", tag=string($cProduct)) }}
<tr class="wsDirectOrderRow">
<td class="wsTableCellMin">
<svg role="img" xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 512 512"><g><path d="M379.453,123.562c0,0,7.232,270.164,17.48,336.787c-164.692,52.798-282.127,0-282.127,0c10.247-66.623,19.001-339.639,19.001-339.639" fill="none" stroke="#474747" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="15"/><path d="M131.033,193.628l-30.599,64.168c-46.962-7.004-88.077-48.676-88.077-48.676l99.61-164.692l81.112-19.349l10.59,29.084c25.215,35.473,78.085,34.885,102.505-1.141l8.858-27.944l82.999,19.349l99.61,164.692c0,0-41.115,41.672-88.077,48.676l-27.741-61.85" fill="none" stroke="#474747" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="15"/></g></svg>
</td>
<td>
<div class="row">
<div class="col-12 col-md">
<form method="POST" action="{{= $wsViews.current.url() }}">
<input type="hidden" name="wscsrf" value="{{= $cActionDirectOrderAdd.csrf }}">
<input type="hidden" name="wstarget" value="{{= $wsViews.current.url() }}">
<p>Bitte Artikelnummer eingeben</p>
<div class="row">
<div class="col col-sm-auto">
<div class="form-floating">
<input type="text" name="id" value="{{= $wsDirectOrder.items[$cProduct].id | ifNull('') }}" class="wsDirectOrderInputNumber form-control" placeholder="Art.-Nr.">
<label>Art.-Nr.</label>
</div>
</div>
<div class="col-auto">
<button type="submit" name="wsact" value="{{= $cActionDirectOrderAdd.id }}" class="btn btn-primary"><svg role="img" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16" class="align-text-bottom"><path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z"></path></svg></button>
<button type="submit" name="wsact" value="{{= $cActionDirectOrderDelete.id }}" class="btn btn-secondary">Löschen</button>
</div>
</div>
<label>Menge</label>
<input type="text" name="quantity" value="{{= $wsDirectOrder.items[$cProduct].quantity | ifNull('') }}">
{{ foreach $item in $wsConfig.directOrder.itemNumberFields }}
<div class="itemNumberFields">
{{ if $item.type == "field" }}
<input type="text" name="{{= $item.name }}">
{{ elseif $item.type == "separator" }}
{{= $item.sign }}
{{ /if }}
</div>
{{ /foreach }}
</form>
</div>
</div>
</td>
</tr>
{{ /foreach }}
</tbody>
</table>
</div>
{{ /block }}Fehlermeldungen
Die Fehlermeldung können entweder vor, oder innerhalb des Form Elements platziert werden.
In diesem Beispiel werden Fehlermeldung zur Eingabe der Menge eines Artikels angezeigt
{{ foreach $cProduct in range(0, $wsDirectOrder.currentLines - 1) }}
{{ var $cActionDirectOrderAdd = $wsActions.create("DirectOrderAdd", tag=string($cProduct)) }}
{{ var $cActionDirectOrderDelete = $wsActions.create("DirectOrderDelete", tag=string($cProduct)) }}
...
{{ if $cActionDirectOrderAdd.errorsByField.quantity }}
<div class="alert alert-danger">
Es sind Fehler aufgetreten:
<ul>
{{ foreach $err in $cActionDirectOrderAdd.errorsByField.quantity }}
{{ if $err.text }}
<li>{{= $err.text }}</li>
{{ else }}
<li>{{= $err.code }}</li>
{{ /if }}
{{ /foreach }}
</ul>
</div>
{{ /if }}
{{ /foreach }}
In diesem Beispiel werden Fehlermeldung zum hinzufügen eines Artikels angezeigt
{{ foreach $cProduct in range(0, $wsDirectOrder.currentLines - 1) }}
{{ var $cActionDirectOrderAdd = $wsActions.create("DirectOrderAdd", tag=string($cProduct)) }}
{{ var $cActionDirectOrderDelete = $wsActions.create("DirectOrderDelete", tag=string($cProduct)) }}
...
{{ if $cActionDirectOrderAdd.errorsByField.id }}
<div class="alert alert-danger">
Es sind Fehler aufgetreten:
<ul>
{{ foreach $err in $cActionDirectOrderAdd.errorsByField.id }}
{{ if $err.text }}
<li>{{= $err.text }}</li>
{{ else }}
<li>{{= $err.code }}</li>
{{ /if }}
{{ /foreach }}
</ul>
</div>
{{ /if }}
{{ /foreach }}Seite im Footer Verlinken
Sie können in jedem Template den Link zur Direktbestellung integrieren. Dieser lautet:
<a href="{{= $wsViews.viewUrl('module/directOrder.htm')}}">Direktbestellung</a>