Skip to main content

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.

Bei der Direktbestellung kann der Käufer durch die Eingabe von Produktnummern ein oder mehrere Produkte direkt in den Warenkorb legen. Voraussetzung ist, dass dem Kunden die Produktnummern vorliegen, z. B. anhand eines Katalogs. Notiz: Wird noch getestet. Die Funktion braucht keine zusätzliche Scripte

Eingaben der Direktbestellung während einer Session halten

Bereits enthalten. Keine zusätzliche Scripte sind benötigt. Die bei einer Direktbestellung geprüften Produkte, die noch nicht in den Warenkorb gelegt wurden, werden in einem sessionbezogenen Cookie gespeichert. Wird das Direktbestellungs-Formular später erneut aufgerufen, werden die im Cookie gespeicherten Produktdaten automatisch in die entsprechenden Eingabefelder übernommen. So entfällt die erneute Eingabe von Produktnummer und Menge, wenn der Shopbesucher seine Auswahl noch nicht in den Warenkorb gelegt, sondern andere Seiten des Shops besucht hat.

Aktionen

Folgende Aktionen stehen zur Verfügung:

DirectOrderAdd

Diese Aktion erstellt eine neue Warenkorbposition aus dem Bestellschein
{{ foreach $cProduct in range(0, $wsDirectOrder.currentLines - 1) }}
  {{ var $cActionDirectOrderAdd = $wsActions.create("DirectOrderAdd", tag=string($cProduct)) }}
{{ /foreach }}

DirectOrderDelete

Diese Aktion löscht eine Warenkorbposition aus dem Bestellschein
{{ foreach $cProduct in range(0, $wsDirectOrder.currentLines - 1) }}
  {{ var $cActionDirectOrderDelete = $wsActions.create("DirectOrderDelete", tag=string($cProduct)) }}
{{ /foreach }}

Integration der Direktbestellung

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 }}
Sie können in jedem Template den Link zur Direktbestellung integrieren. Dieser lautet:
<a href="{{= $wsViews.viewUrl('module/directOrder.htm')}}">Direktbestellung</a>