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“ :
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-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | order management |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.4 (2014-03-19) |
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! | integer | 3.5.0 | |
IsTreeNodeID | 1 | „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“) | bit | 3.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. | integer | 3.5.0 | |
InputNestLevelForContInfo | NULL | 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 !) | tinyint | 5.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 |
BonusItemForItemSetID | NULL | 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. | integer | 7.0.4 |
Spaltenname | Beschreibung | SQL-Datentyp4) | ab Version |
---|---|---|---|
HTreeNodeID | ID eines Elementes im historischen Artikelbaum, die in den Warenkorb gelegt wurde | integer | 5.5.2 |
NodeID | ID des zur „HTreeNodeID“ zugehörigen Artikel-Elementes - im Fall „IsTreeNodeID = 0“ also eine der übergebenen IDs, die „in den Warenkorb gelegt“ werden sollten | integer | 5.5.2 |
TreeNodeID | ID des zur „HTreeNodeID“ zugehörigen Elementes im Artikelbaum - im Fall „IsTreeNodeID = 1“ also eine der übergebenen IDs, die „in den Warenkorb gelegt“ werden sollten | integer | 5.5.2 |
InformationTypeID | ID der Informations-Art bei der es einen Fehler gab (→ „ErrorCode“) | smallint | 5.5.2 |
ErrorCode | Dieser 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 | tinyint | 5.5.2 |
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 5) |
---|---|---|
-621 | Fehlender oder falscher Eintrag in PersonTypeSettings | nur indirekt |
-602 | Zur defaultUniqueID („VisitorID = -2“) können keinerlei Daten gespeichert oder verändert werden | direkt und indirekt |
-600 | Es konnte keine gültige VisitorID ermittelt werden | nur direkt |
-550 | Fehlender oder falscher Eintrag in Settings | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | nur indirekt |
-500 | Falsche Parameter | direkt und indirekt |
-397 | Einige TrolleyContentInformation sind ungültig | nur indirekt |
-361 | Zu dem Artikel kann kein Preis in der Standardwährung ermittelt werden | nur direkt |
-360 | Der Artikel ist nicht verfügbar/bestellbar | nur direkt |
-315 | Artikel kann nicht hinzugef. werden, da mehrere „HTreeNodeID“s mit gleicher „NodeID“ vorhand. wären | nur direkt |
-314 | Die maximale Anzahl Elemente im Warenkorb ist überschritten | nur direkt |
-313 | Der maximale „Quantity“-Wert pro Element im Warenkorb ist überschritten | nur direkt |
-283 | Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu ermitteln | nur indirekt |
-221 | Es konnte kein rekursives Merkmal mit der Standardwährung als Einheit ermittelt werden | nur direkt |
-120 | Der Benutzer hat keine Berechtigung für das (die) Element(e) | nur indirekt |
-110 | Das (die) Element(e) ist (sind) nicht vorhanden | nur indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.4 | 2014-03-19 | Neuer Parameter „BonusItemForItemSetID“ |
6.0.7 | 2012-05-08 | Bug 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-01 | Beachtung des neuen, speziellen Besuchers „defaultUniqueID“ - für den keine Daten-Speicherung/-Änderung erlaubt ist |
5.5.2 | 2008-10-21 | Neue Parameter „InputNestLevelForContInfo“ und „Country“ |
5.5.1 | 2008-07-29 | 1. 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-05 | 1. 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-21 | Neukodierung der Prozedur aufgrund zahlreicher Fehler bzw. „Inkonsequenzen“. Die Dokumentation wurde ebenfalls überarbeitet. |
4.0.6 | 2003-11-14 | Fehler : 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-23 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
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 -
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();
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>