Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:om_modifycampaigns_ad

om_ModifyCampaigns_Ad

Prozedur zum Anlegen, Ändern und Löschen von Verkaufs-Aktionen (den sogenannten „Campaigns“).

Es gelten beim Löschen von Aktionen folgende Einschränkungen (können aber durch „ForceDelete“ umgangen werden) :

1. Die zu löschende Aktion darf NICHT aktiv sein, insbesondere darf sie NICHT JETZT GERADE (aufgrund der Gültigkeitszeiträume) aktiv sein.
2. Eine Aktion, die gelöscht werden soll, darf NICHT Ursache eines „Surcharges“ für einen Warenkorb (egal ob für den gesamten Warenkorb oder für eine Position) sein, d.h. „CampaignID“ darf z.B. nicht in der Rückabespalte „SurchargeGeneratedByCampIDs“ eines om_GetTrolley_Pu-Aufrufs vorkommen.
3. Eine Aktion kann nur gelöscht werden, wenn sie NICHT Ursache eines „Surcharges“ für einen Auftrag (egal ob für den gesamten Auftrag oder für eine Position) ist, d.h. „CampaignID“ darf z.B. nicht in der Rückgabespalte „Information“ zur „InformationTypeID = -5“ („SurchargeGeneratedByCampaignIDs“) eines om_GetOrderSurchargeInfo_Ad-Aufrufs vorkommen.

Anmerkungen zum Parameter „Active“ :

Besonderheit ist der „Active“-Status einer Aktion. Der Wert „1“ kann erst gesetzt werden, wenn bestimmte Voraussetzungen erfüllt sind, die hier auch geprüft werden :

  • Es muß ein aktuell oder in der Zukunft liegender Gültigkeitszeitraum existieren.
  • Es muß mindestens ein „Benefit“ hinterlegt worden sein.
  • Es muß mindestens eine Bedingung („CampaignCondition“) konfiguriert sein, es sei denn als Benefit ist ausschließlich ein „Bundle-Preis“ hinterlegt.
  • Es darf nicht gleichzeitig eine Warenkorbwert-Bedingung und ein Positions-Rabatt als Benefit („SurchargeBenefit“ mit „ApplyToOption <> 3“) definiert sein, weil der Rabatt nicht greifen würde. Grundhierfür ist die Tatsache, daß bei der Preis-Ermittlung aus Performance-Gründen der Gesamt-Wert der zu berechnenden Artikel nicht zur Verfügung steht (es müßte sonst ja quasi zweimal die Preis-Berechnung durchlaufen werden) und somit Aktionen mit einer „trolley value condition“ nicht beachtet werden.

Daher wird insbesondere bei Neu-Anlage einer Aktion der Parameter „Active“ NIE beachtet, sondern immer so behandelt, als ob der („default“-)Wert „0“ angegeben worden wäre.
Zu Testzwecken gibt es auch den „Active“-Status von „2“, der besagt, daß die Verkaufs-Aktion zwar aktiv ist, aber nur von einem bestimmten Nutzer-Kreis verwendet werden kann - dies ist aber aktuell auch noch nicht implementiert.

Anmerkungen zum Parameter „ForceDelete“ :

1. Um einen Fehler beim Versuch des Löschens einer Verkaufs-Aktion zu vermeiden (also wenn „CampaignID“ NICHT „NULL“ und „DeleteCampaign = 1“ ist) , kann „ForceDelete“ entsprechend belegt werden. Hierbei handelt es sich um die SUMME folgender Werte, die jeweils sozusagen eine der Beschränkungen (hinsichtlich Löschen) aufheben bzw. ignorieren :

  • „1“ : Löschen der Aktion erlauben auch wenn sie aktiv ist
  • „2“ : Löschen der Aktion erlauben auch wenn sie AKTUELL (aufgrund eines Gültigkeitszeitraums) verwendbar ist
  • „4“ : Löschen der Aktion erlauben auch auch wenn sie Ursache eines „Warenkorb-Surcharges“ ist
  • „8“ : Löschen der Aktion erlauben auch auch wenn sie Ursache eines „Auftrag-Surcharges“ war

2. Option „2“ macht nur Sinn, wenn auch Option „1“ gewählt ist, sprich „ForceDelete & 2 = 2“ aber „ForceDelete & 1 = 0“ führt zu einem Fehler („-500“). Die Unterscheidung dieser Optionen wird angeboten, damit man NUR Option „1“ („ForceDelete = 1“) wählen kann (um eine Aktion nur zu löschen, wenn sie inaktiv ist oder aber - falls aktiv - wenigstens NICHT AKTUELL gültig).

3. Beispiele :
a) „ForceDelete = 8“
Dann können nur inaktive Verkaufs-Aktionen, die nicht Ursache eines „Warenkorb-Surcharges“ sind, gelöscht werden (selbst wenn sie Ursache eines „Auftrag-Surcharges“ waren).
b) „ForceDelete = 7“
Eine Aktion kann gelöscht werden unabhängig davon, ob sie (aktuell) aktiv ist oder nicht und vielleicht für einen „Warenkorb-Surcharge“ verantwortlich ist. Sobald sie aber Ursache eines „Auftrag-Surcharges“ war, schlägt das Löschen fehl.
c) „ForceDelete = 15“
Jede Aktion kann so gelöscht werden, egal ob aktiv und/oder verwendet.

HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieorder management
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

CampaignName Bezeichnung der Verkaufs-Aktion (Pflicht-Angabe, „NULL“ ist nicht erlaubt)
varchar(100)6.0.0
CampaignDescription Beschreibung (kann Kommentar, Zeitraum etc. enthalten) der Verkaufs-Aktion
varchar(255)6.0.0
CampaignTypeID ID eines „Typs“ von „Campaigns“ (s. om_GetCampaignTypes_Ad). Anmerkung : Typen sind dazu da, den Benutzer-Kreis der Aktion zu definieren - wie z.B. „nur Webshop“. Wert kann nicht mehr geändert werden, wenn die Aktion bereits aktiv („Active = 1“) ist !
tinyint6.0.0
Active0 Status der Aktion. Wird bei Neu-Anlage einer Aktion NIE beachtet ! Um den Status auf „1“/„2“ zu setzen (entspricht einer „Aktivierung“, der Wert „2“ wird aber aktuell noch nicht unterstützt) müssen bestimmte Bedingungen erfüllt sein (s. Beschreibung).
tinyint6.0.0
DeleteCampaign0 Wird nur beachtet, wenn „CampaignID“ NICHT „NULL“ ist ! Entscheidet, ob die Aktion geändert („0“) oder gelöscht („1“) wird. Löschen ist nur möglich, wenn die Aktion
nicht aktiv und nicht Ursache eines Surcharges für einen Warenkorb/Auftrag ist.
bit6.0.0
ForceDelete0 Nur relev. wenn „DeleteCampaign = 1“ ! Summe folgender Optionen : Löschen erzwingen selbst wenn die Aktion
- „1“ : aktiv
- „2“ : AKTUELL verwendbar
- „4“ : verantwortlich für „Warenkorb-Surcharge“
- „8“ : verantwortlich für „Auftrag-Surcharge“
ist.
tinyint6.5.4

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

CampaignIDID einer Verkaufs-Aktion. „NULL“ angeben, um eine neue Aktion anzulegen (die neue ID wird dann über diesen Parameter zurückgegeben). Sonst wird ein bestehender Teil je nach „DeleteCampaign“ geändert oder gelöscht.

Mögliche Return-Codes

Code Beschreibung Quelle 1)
-1213Der Benefit kann nicht gelöscht werden, da er einer inaktiven Campaign zugeordnet istnur indirekt
-1211Der Benefit kann nicht geändert/gelöscht werden, da er in einer aktiven Campaign verwendet wirdnur indirekt
-1206Die Campaign kann nicht gelöscht werden, da sie aktiv ist oder verwendet wird/wurdenur direkt
-1205Die Campaign kann nicht aktiviert werden, da nicht alle Voraussetzungen erfüllt sindnur direkt
-1203Die Bedingung kann nicht gelöscht werden, da sie einer inaktiven Campaign zugeordnet istnur indirekt
-1201Die Bedingung kann nicht geändert/gelöscht werden, da sie in einer aktiven Campaign verwendet wirdnur 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
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochendirekt und indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und 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-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.6 2014-06-23Interne Anpassung aufgrund von Änderungen an einer hier aufgerufenen Prozedur
7.0.5 2014-05-261. „-504“-Fehler aufgrund hinzugekommener Benefit- bzw. Bedingungs-Typen behoben
2. Änderung an Prüfungen bzgl. Aktivierung einer Campaign
7.0.0 2013-06-04Aufgrund der neuen Tabelle „UsedCampaignsPerTrolley“ kann nun im Löschen-Fall auch auf Verwendung der Aktion in
einem Warenkorb geprüft werden [s. Ticket #3343]
6.5.4 2013-04-291. Ab jetzt ist es möglich, eine Verkaufs-Aktion zu löschen
2. Neuer Parameter „ForceDelete“
3. Interne Anpassungen wg. UTF8-Unterstützung
6.5.2 2013-02-26Nur eine kleine Rechtschreib-Korrektur in der Doku der Returncodes
6.0.8 2012-06-29Nun kann der „Active“-Status auf „1“ gesetzt werden [wenn alle Voraussetzungen erfüllt sind natürlich]
6.0.0 2010-03-26Erstmalig 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_ModifyCampaigns_Ad?CampaignName=<value>&CampaignDescription=<value>&CampaignTypeID=<value>'

Mit xmllint 2) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/om_ModifyCampaigns_Ad?CampaignName=<value>&CampaignDescription=<value>&CampaignTypeID=<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_ModifyCampaigns_Ad',
		array(
			'CampaignName' => '<value>',
			'CampaignDescription' => '<value>',
			'CampaignTypeID' => <value>,
			// 'Active' => 0,
			// 'DeleteCampaign' => 0,
			// 'ForceDelete' => 0
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
 
$OutputParams = $xml_result->getOutputParametersAsArray();
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_ModifyCampaigns_Ad">
			<Parameters>
				<Parameter Name="CampaignName"><!-- varchar value --></Parameter>
				<Parameter Name="CampaignDescription"><!-- varchar value --></Parameter>
				<Parameter Name="CampaignTypeID"><!-- tinyint value --></Parameter>
				<!-- <Parameter Name="Active">0</Parameter> -->
				<!-- <Parameter Name="DeleteCampaign">0</Parameter> -->
				<!-- <Parameter Name="ForceDelete">0</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
2)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/om_modifycampaigns_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)