Aktualisert die Mengenangabe zu einem Element („HTreeNodeID“) im Warenkorb eines Besuchers. Ist das Element noch gar nicht im Warenkorb vorhanden, wird es neu eingefügt - mit der durch „Quantity“ angegebenen Menge (ein positiver Wert natürlich vorausgesetzt). Es wird aber - analog zu om_InsertIntoTrolley_Pu - 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 „HTreeNodeID“ :
Im Warenkorb werden immer „HTreeNodeID“s gespeichert. 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 !)
Anmerkungen zum Parameter „InputNestLevelForContInfo“ :
Zu der Warenkorbs-Position „HTreeNodeID“ 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.
Sollte bei der Speicherung zusätzlicher Informationen ein Fehler auftreten, bricht die Prozedur mit einem Fehler ab und auch die Änderung am Warenkorb 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 „HTreeNodeID“ als Bonus-Artikel behandelt (hinzugefügt/gelöscht). 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 (es kann also im Falle der Aktualisierung der „Quantity“ zu einem Fehler kommen). Im Falle der Aktualisierung eines Elementes (wenn es sich bei „HTreeNodeID“ also um eine Element handelt, daß bereits im Warenkorb vorliegt) muß zum Artikel bereits die „BonusItemForItemSetID“ hinterlegt sein (man kann also nicht nachträglich einen Artikel als „Bonus-Artikel“ deklarieren).
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“), dessen Warenkorb aktualisiert werden soll | varchar(50) | 3.5.0 | |
HTreeNodeID | ID des Elementes im Artikelbaum mit Gültigkeitszeitraum, das sich im Warenkorb des Besuchers „UniqueID“ befindet (wenn nicht, wird es eingefügt) und dessen zugehörige Anzahl aktualisiert werden soll | integer | 3.5.0 | |
Quantity | Neue Anzahl von „HTreeNodeID“ im Warenkorb bzw. Veränderung der Stückzahl (je nach „IsRelative“). Würde dadurch das Element eine Mengenangabe von „0“ oder sogar darunter erhalten, wird es aus dem Warenkorb entfernt. | integer | 3.5.0 | |
IsRelative | „0“ : Die Anzahl von „HTreeNodeID“ wird auf diesen Wert gesetzt („⇐ 0“ : Element entfernen) „1“ : Die Anzahl wird UM „Quantity“ geändert | bit | 3.5.0 | |
InputNestLevelForContInfo | NULL | Falls zusätzliche Informationen zur „HTreeNodeID“ 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 „HTreeNodeID“ 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 im Warenkorb liegt und geändert wurde - z.Zt. also „HTreeNodeID“ | 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 |
-599 | Lizenz ist ungültig oder abgelaufen | nur indirekt |
-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.0.0 | 2004-12-21 | Neukodierung der Prozedur aufgrund zahlreicher Fehler bzw. „Inkonsequenzen“ und kleiner Performance-Optimierungen. Die Dokumentation wurde ebenfalls überarbeitet. |
3.5.20 | 2002-07-22 | |
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_UpdateTrolley_Pu?UniqueID=<value>&HTreeNodeID=<value>&Quantity=<value>&IsRelative=<value>'
Mit xmllint 6) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/om_UpdateTrolley_Pu?UniqueID=<value>&HTreeNodeID=<value>&Quantity=<value>&IsRelative=<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_UpdateTrolley_Pu', array( 'UniqueID' => '<value>', 'HTreeNodeID' => <value>, 'Quantity' => <value>, 'IsRelative' => <value>, // '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_UpdateTrolley_Pu"> <Parameters> <Parameter Name="UniqueID"><!-- varchar value --></Parameter> <Parameter Name="HTreeNodeID"><!-- integer value --></Parameter> <Parameter Name="Quantity"><!-- integer value --></Parameter> <Parameter Name="IsRelative"><!-- bit value --></Parameter> <!-- <Parameter Name="InputNestLevelForContInfo">NULL</Parameter> --> <!-- <Parameter Name="Country">'german'</Parameter> --> <!-- <Parameter Name="BonusItemForItemSetID">NULL</Parameter> --> </Parameters> </Procedure> </Batch> </ListOfBatches>