Benutzer-Werkzeuge

Webseiten-Werkzeuge

Action disabled: source

engine:procedures:om_gettrolleysurcharges_pu

om_GetTrolleySurcharges_Pu

Berechnet die Aufschläge bzw. Rabatte auf den (Gesamt-)Wert des Warenkorbs eines Besuchers.

Hinweis :

In der Ergebnismege ist IMMER eine „Kopf“- und eine „Summen“-Zeile enthalten, die an „PositionNo = 0“ bzw. „PositionNo = 255“ zu erkennen ist. „SurchargeTypeID“ enthält den Wert „-1“, in der „SurchargeTypeDescription“ steht „INPUT DATA“ bzw. „SUM“ und die beiden „Absolute…Surcharge“-Spalten enthalten …

  • für die Kopfzeile den uns übergebenen Warenwert (Netto und Brutto) und
  • für die Summenzeile eine Summe (Netto und Brutto), die aus dem übergebenen Warenwert plus sämtlichen errechneten „Surcharges“ besteht.

Im Fall „SplitByTaxes = 0“ gibt es ja noch weitere Rückgabespalten, die „0“ für die Kopf und „NULL“ für die Summen-Zeile enthalten.

Anmerkung zur Rückgabespalte „TaxesMultiplier“ im Fall „SplitByTaxes = 1“ :

Der „TaxesMultiplier“ KANN „NULL“ enthalten, falls für eine „Surcharge“-Position nicht explizit ein Steuersatz konfiguriert ist UND der Warenwert über die „…Sum“-Parameter übergeben wurde. Denn anhand des Warenwertes über die „…Sum“-Parameter ließe sich allenfalls nur ein „künstlicher“ Steuersatz errechnen (Verhältnis Brutto zu Netto), der aber noch dazu von Rundungsfehlern behaftet wäre.
Für den „TaxesMultiplier“ in der Kopf- und Summenzeile gilt im Falle der Übergabe des Warenwertes über die „…Sum“-Parameter, daß er GARANTIERT „NULL“ ist.

Wie die „Surcharge“-Berechnung abläuft :

1.) Es werden alle definierten „SurchargeTypeCategories“ (s. om_GetSurchargeTypeCategories) mit einer „PriorityNo > 0“ durchlaufen, und zwar aufsteigend nach der „PriorityNo“.
Diese besagt nämlich, daß die Berechnungs-Grundlage von „Surcharges“ einer Kategorie nicht nur der Warenwert ist, sondern die Summe aus Warenwert und bereits errechneten „Surcharges“ von Kategorien mit (echt) KLEINERER „PriorityNo“.

Anmerkungen :
(i) Besitzen zwei Kategorien dieselbe „PriorityNo“, wird zuerst die mit kleinerer ID abgearbeitet, beide bekommen aber dieselbe „Berechnungs-Grundlage“ (Warenwert + Surcharges aus Kategorien mit echt kleinerer „PriorityNo“) !
(ii) Man kann die Ausführung der Berechnung von „Surcharges“ einer Kategorie also KOMPLETT DEAKTIVIEREN, indem man die „PriorityNo“ auf „0“ setzt (da ja nur Kategorien mit „PriorityNo > 0“ durchlaufen werden) !

2.) Die Abarbeitung einer konkreten „SurchargeTypeCategory“ erfolgt dann nach folgendem Muster :

a) Falls durch entsprechende Konfiguration in „Settings“ zum Schlüssel „Fire_ac_om_GetTrolleyOrOrderSurch_SurCatIDs_before“ die („customize“bare) Prozedur „_ac_om_GetTrolleyOrOrderSurch“ aufgerufen werden soll, erfolgt ein entsprechender Aufruf.

b) Sofern…

  • KEIN Aufruf von „_ac_om_GetTrolleyOrOrderSurch“ erfolgte

UND

  • es für die aktuelle Kategorie eine Standard-Prozedur zur Berechnung gibt (s. 3. Punkt)

UND

  • für die Standard-Berechnung auch evtl. benötigte zusätzliche Angaben via Parameter übergeben wurden (s. 3. Punkt)

… erfolgt die Standard-Berechnung der „Surcharges“ für die aktuelle Kategorie

c) Wenn nun (nach der erfolgten Standard-Berechnung) durch entsprechende Konfiguration in „Settings“ zum Schlüssel „Fire_ac_om_GetTrolleyOrOrderSurch_SurCatIDs_after“ die („customize“bare) Prozedur „_ac_om_GetTrolleyOrOrderSurch“ aufgerufen werden soll, erfolgt ein entsprechender Aufruf.

Hinweis: Ist für die aktuelle „SurchargeTypeCategory“ weder eine Standard-Prozedur bekannt noch der Aufruf von „_ac_om_GetTrolleyOrOrderSurch“ konfiguriert, passiert auch nichts (es gibt also nicht etwa einen Fehler).

3.) Hier eine Übersicht, bei welcher „SurchargeTypeCategory“ (in Klammern dahinter die ID) eine Standard-Behandlung grundsätzlich erfolgen kann, welche zusätzlichen Informationen bekannt sein müssen (damit dies auch geschehen kann) und evtl. Anmerkungen zum besseren Verständnis :

  • Relative Rabatte (ID „1“)

Es müssen keine weiteren Informationen vorliegen. Behandelt werden Rabatte, die entweder durch einen Gutschein zustande kommen (Voraussetzung dafür ist ein vorheriger om_ValidateVoucherCode_Pu-Aufruf) oder (wenn in „Settings“ zum Schlüssel „CampaignSurchargesEnabled“ der Wert „1“ konfiguriert ist) die durch Verkaufs-Aktionen gewährt werden.

  • Absolute Rabatte (ID „2“)

s. Anmerkung „Relative Rabatte“

  • Versandkosten (ID „3“)

Behandlung kann nur erfolgen, wenn „ShippingTypeID“ bekannt ist.

  • Zahlungskosten (ID „4“)

Behandlung kann nur erfolgen, wenn „PaymentTypeID“ bekannt ist

  • Guthaben-Verrechnung (ID „5“)

Eine solche Verrechnung kann nur stattfinden, wenn…
(i) „PersonID“ angegeben wurde
(ii) „UseCashAccount_MaxValue“ entweder „> 0“ oder „= -1“ enthält

HTTP-MethodGET
HTTP-AuthOptional
Tags
Engine-Kategorieorder management
Engine-TypDaten-Ermittlung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
UniqueID Eindeutige ID eines Besuchers (aus „Visitors“), zu dessen „Warenkorb“ sämtliche Rabatte und Aufschläge („Surcharges“) ermittelt werden sollen
varchar(50)6.0.2
GrossSumNULL Brutto-Warenwert des Warenkorbes des durch „UniqeID“ angegebenen Besuchers. Falls „NULL“ für diesen Parameter UND „NetSum“ angegeben ist, erwarten wir die Daten in der Input-Schnittstelle (s. „OutputIntoTrolleySurchInterf“ von om_GetTrolley_Pu).
decimal(16,6)6.0.2
NetSumNULL Netto-Warenwert des Warenkorbes des durch „UniqeID“ angegebenen Besuchers. Falls „NULL“ für diesen Parameter UND „GrossSum“ angegeben ist, erwarten wir die Daten in der Input-Schnittstelle (s. „OutputIntoTrolleySurchInterf“ von om_GetTrolley_Pu).
decimal(16,6)6.0.2
CurrencyID ID einer Währung („UnitID“ aus der Kategorie „Währung“), in der der Warenwert (Parameter „…Sum“ bzw. Input-Schnittstelle) angegeben ist und in der auch die „Surcharges“ zu berechnen sind
tinyint6.0.2
PersonIDNULL ID einer Person, die voraussichtlich Auftraggeber sein wird (kann „NULL“ sein). Benötigt wird diese Information, um Guthaben verrechnen zu können (s. Parameter „UseCashAccount_MaxValue“). Falls angegeben, muß die Person „UniqueID“ zugeordnet sein !
integer6.0.2
DeliveryPersonIDNULL ID einer Person, die voraussichtlich Lieferanschrift sein wird (kann „NULL“ sein)
integer6.0.2
ShippingTypeIDNULL ID einer Versandart, mit der die Ware ausgeliefert werden soll (kann „NULL“ sein). Diese Information wird benötigt, um „Surcharges“ der Kategorie „Versandkosten“ bestimmen zu können.
tinyint6.0.2
PaymentTypeIDNULL ID einer Zahlungsart, mit der die Ware bezahlt werden soll (kann „NULL“ sein). Diese Information wird benötigt, um „Surcharges“ der Kategorie „Zahlungskosten“ bestimmen zu können.
tinyint6.0.2
UseCashAccount_MaxValueNULL Maximaler Betrag, der vom Guthaben-Konto von „PersonID“ (muß natürlich angegeben sein) eingelöst werden soll. Muß „NULL“ oder „0“ (für keine Verrechnung) oder aber entweder „> 0“ oder „= -1“ („-1“ bedeutet „soviel Guthaben wie möglich einlösen“) sein.
money6.0.2
SplitByTaxes0 Soll das Ergebnis nach Steuersätzen aufgeschlüsselt werden ?
- „0“ : Nein, nur eine Summe pro „Surcharge“-Position
- „1“ : Ja
Anmerkung : Sinn macht „1“ nur, wenn der Warenwert nach Steuersätzen aufgeschlüsselt ist.
bit6.0.2

Rückgabe

wenn SplitByTaxes = 0

Spaltenname Beschreibung SQL-Datentyp4) ab Version
PositionNo(Eindeutige) Positions-Nummer eines „TrolleySurcharges“. Gibt die Reihenfolge an, in der die „Surcharges“ errechnet wurden. Hinweis : Es gibt einen Datensatz mit „0“ für eine „Kopf“- und „255“ für eine „Summen“-Zeile.
tinyint6.0.2
SurchargeTypeIDDie ID einer Aufschlags- bzw. Rabattart wie z.B. „Versandkosten“, „Rabatt“, „Nachnahmegebühr“ o.ä.
smallint6.0.2
SurchargeTypeDescriptionBezeichnung der „SurchargeTypeID“
varchar(100)6.0.2
AbsoluteGrossSurchargeBRUTTO-Abschlag oder -Aufschlag in der durch „CurrencyID“ angegebenen Währung
money6.0.2
AbsoluteNetSurchargeNETTO-Abschlag oder -Aufschlag in der durch „CurrencyID“ angegebenen Währung
money6.0.2
AppliedSurchargeValueDer zur Berechnung herangezogene Wert (wie dieser zu verstehen ist, also z.B. in welcher Einheit - Währung oder Prozent - ist ja zur „SurchargeTypeID“ hinterlegt und wird nicht nochmal explizit angegeben)
decimal(16,6)6.0.2
SurchargeAppliedOnGrossSumAuf welchen Brutto-Wert der „Surcharge“ angewandt wurde. Grund für diese Information ist, daß ein „Surcharge“ auf den Warenwert plus „Surcharges“ mit höherer Priorität (s. z.B. „PriorityNo“ von om_GetSurchargeTypeCategories) angewendet wird.
money6.0.2
SurchargeAppliedOnNetSumAuf welchen Netto-Wert der „Surcharge“ angewandt wurde. Grund für diese Information ist, daß ein „Surcharge“ auf den Warenwert plus „Surcharges“ mit höherer Priorität (s. z.B. „PriorityNo“ von om_GetSurchargeTypeCategories) angewendet wird.
money6.0.2
SurchargeGeneratedByCampIDsListe von „CampaignID“s, die den „Surcharge“-Wert mitbestimmt, d.h. die einen Rabatt bewirkt haben (z.B. ein Rabatt auf Versandkosten oder ein Gesamt-Auftrags-Rabatt)
varchar(255)7.0.0
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • PositionNo (aufsteigend)

wenn SplitByTaxes = 1

Spaltenname Beschreibung SQL-Datentyp5) ab Version
PositionNo(Eindeutige) Positions-Nummer eines „TrolleySurcharges“. Gibt die Reihenfolge an, in der die „Surcharges“ errechnet wurden. Hinweis : Es gibt einen Datensatz mit „0“ für eine „Kopf“- und „255“ für eine „Summen“-Zeile.
tinyint6.0.2
SurchargeTypeIDDie ID einer Aufschlags- bzw. Rabattart wie z.B. „Versandkosten“, „Rabatt“, „Nachnahmegebühr“ o.ä.
smallint6.0.2
SurchargeTypeDescriptionBezeichnung der „SurchargeTypeID“
varchar(100)6.0.2
TaxesMultiplierMehrwertsteuer als „Multiplikator“, die auf die Netto-Kosten „AbsoluteNetSurcharge“ angewendet wurden, um die Brutto-Kosten „AbsoluteGrossSurcharge“ zu erhalten. D.h. beträgt die Mehrwertsteuer z.B. „19%“, steht hier der Wert „1.19“.
decimal(16,6)6.0.2
AbsoluteGrossSurchargeBRUTTO-Abschlag oder -Aufschlag in der durch „CurrencyID“ angegebenen Währung
money6.0.2
AbsoluteNetSurchargeNETTO-Abschlag oder -Aufschlag in der durch „CurrencyID“ angegebenen Währung
money6.0.2
SurchargeGeneratedByCampIDsListe von „CampaignID“s, die den „Surcharge“-Wert mitbestimmt, d.h. die einen Rabatt bewirkt haben (z.B. ein Rabatt auf Versandkosten oder ein Gesamt-Auftrags-Rabatt)
varchar(255)7.0.0
Sortierung der Rückgabe

(parameterunabängige Sortierung)

  • PositionNo (aufsteigend)
  • TaxesMultiplier (aufsteigend)

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 6)
-1323Die Person besitzt kein Konto zum angegebenen Typnur indirekt
-1204Fehlender oder falscher Eintrag in CampaignSettingsnur indirekt
-655Die VisitorID steht nicht mit der PersonID in Verbindungnur direkt
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-550Fehlender oder falscher Eintrag in Settingsnur indirekt
-540Falsches Formatnur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-507Fehlerhafte Implementierung einer Prozedur - Daten in einem Ausgabeparameter sind ungültignur indirekt
-506Fehlerhafte Implementierung einer Prozedur - Daten in der Output-Schnittstelle sind ungültignur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-503Fehlerhafte Daten in einer Tabelle - genauere Fehlermeldung auf der Standardausgabenur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und indirekt
-385Die Brutto-Summe aus Warenwert plus Surcharges unterschreitet den vorgegebenen Mindestwertnur indirekt
-333Ein benötigter Steuersatz ist nicht bekannt oder konnte nicht ermittelt werdennur indirekt
-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 indirekt

XML-Schema

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

Historie

7.0.7 2015-01-29„Start-/Finish-Procedure“-Logik eingebaut, s. Ticket #3670
7.0.0 2013-06-041. Ab jetzt wird eine Liste von „CampaignID“s [in der neuen Tabelle „UsedCampaignsPerTrolley“] gepflegt, die die
ermittelten „Surcharges“ bestimmt/beeinflußt haben [s. Ticket #3343]
2. Neue Rückgabespalte „SurchargeGeneratedByCampIDs“
6.5.0 2012-09-17Änderung der Doku, welche Prozeduren bei welcher „SurchargeTypeCategoryID“ aufgerufen werden [wg. der Tatsache, daß
nun auch „Surcharges“ durch Verkaufs-Aktionen möglich sind]
6.0.2 2011-06-08Erstmalig 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 GET  'http://<partner>-<project>.dstore.de/default/engine/om_GetTrolleySurcharges_Pu?UniqueID=<value>&CurrencyID=<value>'

Mit xmllint 7) formatierte Ausgabe:

curl -X GET  'http://<partner>-<project>.dstore.de/default/engine/om_GetTrolleySurcharges_Pu?UniqueID=<value>&CurrencyID=<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_GetTrolleySurcharges_Pu',
		array(
			'UniqueID' => '<value>',
			'CurrencyID' => <value>,
			// 'GrossSum' => NULL,
			// 'NetSum' => NULL,
			// 'PersonID' => NULL,
			// 'DeliveryPersonID' => NULL,
			// 'ShippingTypeID' => NULL,
			// 'PaymentTypeID' => NULL,
			// 'UseCashAccount_MaxValue' => NULL,
			// 'SplitByTaxes' => 0
		)
);
 
$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_GetTrolleySurcharges_Pu">
			<Parameters>
				<Parameter Name="UniqueID"><!-- varchar value --></Parameter>
				<Parameter Name="CurrencyID"><!-- tinyint value --></Parameter>
				<!-- <Parameter Name="GrossSum">NULL</Parameter> -->
				<!-- <Parameter Name="NetSum">NULL</Parameter> -->
				<!-- <Parameter Name="PersonID">NULL</Parameter> -->
				<!-- <Parameter Name="DeliveryPersonID">NULL</Parameter> -->
				<!-- <Parameter Name="ShippingTypeID">NULL</Parameter> -->
				<!-- <Parameter Name="PaymentTypeID">NULL</Parameter> -->
				<!-- <Parameter Name="UseCashAccount_MaxValue">NULL</Parameter> -->
				<!-- <Parameter Name="SplitByTaxes">0</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
6)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
7)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/om_gettrolleysurcharges_pu.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)