Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:om_updatetrolley_pu

om_UpdateTrolley_Pu

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-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“), 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
integer3.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.
integer3.5.0
IsRelative „0“ : Die Anzahl von „HTreeNodeID“ wird auf diesen Wert gesetzt („⇐ 0“ : Element entfernen)
„1“ : Die Anzahl wird UM „Quantity“ geändert
bit3.5.0
InputNestLevelForContInfoNULL 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 !)
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 „HTreeNodeID“ 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 im Warenkorb liegt und geändert wurde - z.Zt. also „HTreeNodeID“
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
-599Lizenz ist ungültig oder abgelaufennur indirekt
-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.0.0 2004-12-21Neukodierung 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-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_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 -
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_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();
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_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>
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_updatetrolley_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)