Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:om_insertintotrolley_pu

om_InsertIntoTrolley_Pu

Bietet die Möglichkeit, daß ein Besucher ein Artikel-Element bzw. ein Element des Artikelbaums in den Warenkorb legen bzw. die Anzahl erhöhen kann. Es wird geprüft, ob
a) das Element auch nicht für den Benutzer, der diese Prozedur aufruft, gesperrt ist und ob
b) ein Preis in der Standardwährung vorhanden ist und ob
c) das Element auch lieferbar ist [bzw. NICHT die Eigenschaft „Nicht lieferbar“ besitzt] !

Hinweise :
1.) Falls ein „Settings“-Eintrag zum Schlüssel „MaxNumberOfElementsInTrolley“ existiert und der Wert größer als „0“ ist, kann dieser Vorgang fehlschlagen, wenn die konfigurierte Anzahl bereits im Warenkorb erreicht ist !
2.) Ebenfalls fehlschlagen kann die Aktion aufgrund einer weiteren Beschränkung, nämlich durch einen Eintrag in „Settings“ zum Schlüssel „MaxQuantityPerElementInTrolley“, der angibt, wieviel von einem Element maximal in den Warenkorb gelegt werden darf.

Anmerkung zum Parameter „NodeID“ :

Es besteht die Möglichkeit, mehrere Elemente gleichzeitig in den Warenkorb zu legen. Belegt man „NodeID“ mit „NULL“, so erwartet die Prozedur eine Menge von „ID-Quantity“-Paaren in „tempdb.dbo.TwoIDs“ :

  • ID1 : Je nach „IsTreeNodeID“ eine „NodeID“ oder „TreeNodeID“
  • ID2 : „Quantity“-Wert

Anmerkungen zum Parameter „InputNestLevelForContInfo“ :

Zu der/den neue(n) Positionen können auch zusätzliche Informationen („TrolleyContentInformation“) hinterlegt werden. Dazu sind zuvor mit Hilfe von „if_om_ModifyTrolleyContentInfo“ die Daten in die enstprechende „Input-Schnittstelle“ einzutragen - zu welchem „NestingLevel“ diese gespeichert wurden (s .Ausgabeparameter „InputNestingLevel“ von „if_om_ModifyTrolleyContentInfo“), ist dann hier im Parameter „InputNestLevelForContInfo“ mitzuteilen.

Achtung : Eigentlich müssen Informationen zu Warenkorbs-Positionen immer zu einer „HTreeNodeID“ (s. Parameter „HTreeNodeIDList“ von „if_om_ModifyTrolleyContentInfo“) übergeben werden. Bei dieser Prozedur hier müssen aber (je nach „IsTreeNodeID“) „NodeID“s bzw. „TreeNodeID“s übergeben werden - eben genau die, die man über „NodeID“ bzw. „tempdb.dbo.TwoIDs“ übergibt !

Sollte bei der Speicherung zusätzlicher Informationen ein Fehler auftreten, bricht die Prozedur mit einem Fehler ab und auch die Änderung am Warenkorb - das Hinzufügen des/der Artikel(s) - schlägt dann fehl !

Um evtl. aufgetretene Fehler analysieren zu können, erhält man im Falle der Speicherung zusätzlicher Informationen (wenn also „InputNestLevelForContInfo“ NICHT „NULL“ ist) eine Rückgabemenge.

Anmerkung zum Parameter „BonusItemForItemSetID“ :

Gibt man für „BonusItemForItemSetID“ die ID eines Sets von Bonus-Artikeln an, die als Benefit einer existierenden, aktiven und laufenden Verkaufsaktion konfiguriert ist, wird „NodeID“ als Bonus-Artikel in den Warenkorb eingefügt. Wir prüfen natürlich, ob das gegeben Set auch tatsächlich aktuell gültig ist. Weiterhin gilt grundsätzlich für Bonus-Artikel, daß sie genau mit der Menge (→ „Quantity“) „1“ im Warenkorb angegeben sein müssen.

Hintergrund-Information :

Im Gegensatz zu dieser Prozedur erwartet om_UpdateTrolley_Pu die Angabe einer „HTreeNodeID“, da im Warenkorb immer „HTreeNodeID“s gespeichert werden. Eine „HTreeNodeID“ ist ein Element im „Artikelbaum“ mit Gültigkeitszeitraum. Jedes Element im „Artikelbaum“ besitzt einen/mehrere Gültigkeitszeitraum/-zeiträume. Für gelöschte Elemente ist dieser Zeitraum abgeschlossen, für momentan gültige (unabhängig davon ob aktiviert oder nicht !!!) Elemente ist dieser Zeitraum OFFEN. Bekommt ein Element eine andere Position im Artikelbaum (d.h. wird es „verschoben“), so existieren mindestens ZWEI Gültigkeitszeiträume : die alte(n) Position(en) im Baum haben natürlich abgeschlossene Zeiträume, die neue (nach dem Verschieben) hat entsprechend einen offenen Zeitraum.

Besonderheit : DERZEIT hat jedes Artikel-Element („NodeID“) eine EINDEUTIGE Position im Artikelbaum („TreeNodeID“). Es ist jedoch vorgesehen, ein Element MEHRFACH im Baum einordnen zu können. Dies hat zur Folge, daß man ein Artikel-Element nicht unbedingt EINDEUTIG in der Hierarchie einordnen kann. DESWEGEN gibt es zu jeder „NodeID“ GENAU EINE
„HTreeNodeID“ mit einem offenen Gültigkeitszeitraum, wobei die „TreeNodeID“ unbekannt ist (Weil dieses Element aber in jedem Fall unterhalb des „Wurzel-Elementes“ liegt, ist als „TreeNodeID“ die „0“ angegeben !)

Führt ein Besucher also z.B. eine Produktsuche durch, wählt aus dem Suchergebnis einen Artikel aus und möchte diesen in den Warenkorb legen, sollte man diese Prozedur mit der entsprechenden „NodeID“ aufrufen, um in den Statistiken sehen zu können, wieviele Produkte über eine Suche und wieviele Artikel über die Navigation durch den „Artikelbaum“ erreicht wurden.

HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieorder management
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.4 (2014-03-19)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
UniqueID Eindeutige ID eines Besuchers (aus „Visitors“), der ein Produkt in seinen „Warenkorb“ (Tabelle „Trolley“) legen möchte
varchar(50)3.5.0
NodeID ID des Artikel-Elementes bzw. Elementes im Artikelbaum (je nach „IsTreeNodeID“), das im Warenkorb zum Besucher „UniqueID“ gespeichert werden soll. Falls es bereits im Warenkorb liegt, wird die Anzahl um „Quantity“ erhöht. Falls „NULL“, s. Beschreibung!
integer3.5.0
IsTreeNodeID1 „0“ : Bei der angegebenen ID „NodeID“ handelt es sich um ein Artikel-Element („NodeID“ aus der Tabelle „dStore“)
„1“ : Die ID ist ein Element des Artikelbaums („TreeNodeID“ aus „TreeView“)
bit3.5.0
Quantity Anzahl des Artikels, das der Besucher in den Warenkorb legen möchte. Ist der Artikel bereits im Warenkorb gespeichert, erhöht die Prozedur die Anzahl um diesen Wert.
integer3.5.0
InputNestLevelForContInfoNULL Falls zusätzliche Informationen zum hinzugefügten Artikel gespeichert werden sollen, sind diese zuvor mit „if_om_ModifyTrolleyContentInfo“ in der entspr. Input-Schnittstelle zu speichern, und zwar zu dem hier angegeben „nesting level“ (s. Beschreibung !)
tinyint5.5.2
Country'german' Wird nur beachtet, wenn „InputNestLevelForContInfo“ angegeben ist. Gibt das Format einer Information an, falls es sich um eine Datums-Angabe handelt :
* 'Germany' oder 'German' : Tag-Monat-Jahr
* 'England' oder 'English' : Monat-Tag-Jahr
varchar(10)5.5.2
BonusItemForItemSetIDNULL ID eines Sets von Bonus-Artikeln. Falls angegeben, soll „NodeID“ ein „Bonus-Artikel“ dieses Sets sein, das aufgrund einer entsprechenden Aktion kostenlos erhältlich ist.
integer7.0.4

Rückgabe

wenn InputNestLevelForContInfo is NOT NULL

Spaltenname Beschreibung SQL-Datentyp4) ab Version
HTreeNodeIDID eines Elementes im historischen Artikelbaum, die in den Warenkorb gelegt wurde
integer5.5.2
NodeIDID des zur „HTreeNodeID“ zugehörigen Artikel-Elementes - im Fall „IsTreeNodeID = 0“ also eine der übergebenen IDs, die „in den Warenkorb gelegt“ werden sollten
integer5.5.2
TreeNodeIDID des zur „HTreeNodeID“ zugehörigen Elementes im Artikelbaum - im Fall „IsTreeNodeID = 1“ also eine der übergebenen IDs, die „in den Warenkorb gelegt“ werden sollten
integer5.5.2
InformationTypeIDID der Informations-Art bei der es einen Fehler gab (→ „ErrorCode“)
smallint5.5.2
ErrorCodeDieser Code gibt Auskunft über die Ursache des Fehlers. Folgende Werte sind möglich :
„1“ : Die „Information“ entspricht nicht der zur „InformationTypeID“ konfigurierten „FieldTypeID“, d.h. das Format des Wertes ist ungültig
tinyint5.5.2

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 5)
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-602Zur defaultUniqueID („VisitorID = -2“) können keinerlei Daten gespeichert oder verändert werdendirekt und indirekt
-600Es konnte keine gültige VisitorID ermittelt werdennur direkt
-550Fehlender oder falscher Eintrag in Settingsnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-500Falsche Parameterdirekt und indirekt
-397Einige TrolleyContentInformation sind ungültignur indirekt
-361Zu dem Artikel kann kein Preis in der Standardwährung ermittelt werdennur direkt
-360Der Artikel ist nicht verfügbar/bestellbarnur direkt
-315Artikel kann nicht hinzugef. werden, da mehrere „HTreeNodeID“s mit gleicher „NodeID“ vorhand. wärennur direkt
-314Die maximale Anzahl Elemente im Warenkorb ist überschrittennur direkt
-313Der maximale „Quantity“-Wert pro Element im Warenkorb ist überschrittennur direkt
-283Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu ermittelnnur indirekt
-221Es konnte kein rekursives Merkmal mit der Standardwährung als Einheit ermittelt werdennur direkt
-120Der Benutzer hat keine Berechtigung für das (die) Element(e)nur indirekt
-110Das (die) Element(e) ist (sind) nicht vorhandennur indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.4 2014-03-19Neuer Parameter „BonusItemForItemSetID“
6.0.7 2012-05-08Bug behoben : Durch zweimalige Ausführung dieser Prozedur mit denselben Parametern ganz kurz hintereinander konnte
ein Artikel MEHRFACH im Warenkorb landen [da der „unique“-Index auf dem „Trolley“ das
„InputDateAndTime“ beinhaltet]
6.0.6 2012-03-01Beachtung des neuen, speziellen Besuchers „defaultUniqueID“ - für den keine Daten-Speicherung/-Änderung erlaubt ist
5.5.2 2008-10-21Neue Parameter „InputNestLevelForContInfo“ und „Country“
5.5.1 2008-07-291. Implementierung der neuen „Settings“-Einträge „MaxNumberOfElementsInTrolley“ und „MaxQuantityPerElementInTrolley“
2. Ausgabe an die Standard-Ausgabe [via „print“] im Fehler-Fall „-500“ bzw. „-600“, die nähere Informationen über die Ursache enthält
5.1.1 2006-04-051. Neue Möglichkeit, MEHRERE Elemente mit zugehörigen „Quantity“-Werten in „tempdbp.dbo.TwoIDs“ zu übergeben
2. Interne Umstellung bei der Ermittlung von Eigenschaften auf die neue Prozedur „_im_GetPropertiesForTreeNodes“
⇒ Neukodierung der Prozedur
5.0.0 2004-12-21Neukodierung der Prozedur aufgrund zahlreicher Fehler bzw. „Inkonsequenzen“. Die Dokumentation wurde ebenfalls überarbeitet.
4.0.6 2003-11-14Fehler : Falls der Artikel schon im Warenkorb lag, wurde nicht nur die „Quantity“ geändert, sondern auch „InputDateAndTime“ !
3.5.15 2002-03-12
3.5.6 2001-04-17
3.5.0 2000-11-23Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

Unformatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/om_InsertIntoTrolley_Pu?UniqueID=<value>&NodeID=<value>&Quantity=<value>'

Mit xmllint 6) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/om_InsertIntoTrolley_Pu?UniqueID=<value>&NodeID=<value>&Quantity=<value>' | xmllint --format -
dStore_php
use dStore_php\WebService;
 
$service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80);
 
$request = new WebService\Requests\Engine\Procedure\Request(
			new WebService\Requests\AccessData('default'),
	'om_InsertIntoTrolley_Pu',
		array(
			'UniqueID' => '<value>',
			'NodeID' => <value>,
			'Quantity' => <value>,
			// 'IsTreeNodeID' => 1,
			// 'InputNestLevelForContInfo' => NULL,
			// 'Country' => 'german',
			// 'BonusItemForItemSetID' => NULL
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?>
<ListOfBatches>
	<Batch No="0">
		<Procedure Name="om_InsertIntoTrolley_Pu">
			<Parameters>
				<Parameter Name="UniqueID"><!-- varchar value --></Parameter>
				<Parameter Name="NodeID"><!-- integer value --></Parameter>
				<Parameter Name="Quantity"><!-- integer value --></Parameter>
				<!-- <Parameter Name="IsTreeNodeID">1</Parameter> -->
				<!-- <Parameter Name="InputNestLevelForContInfo">NULL</Parameter> -->
				<!-- <Parameter Name="Country">'german'</Parameter> -->
				<!-- <Parameter Name="BonusItemForItemSetID">NULL</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
5)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
6)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/om_insertintotrolley_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)