Rabatt-Berechnung
Einleitung
In Salesware werden die Belegrabatte in „Zahlung & Versand“ von Angeboten, Bestellungen und Warenkörben automatisiert ermittelt. Es kann aber auch notwendig sein, Rabatte aufgrund individueller Vorgaben festzulegen, anzupassen oder zu entfernen – zum Beispiel um einen fest beim Kunden hinterlegten Rabatt automatisiert in die Belegrabatte zu übernehmen.
Mit der Rabatt-Berechnung erhält ein externer Dienst die aktuell ermittelten Belegrabatte der Entität und kann diese durch eine eigene Berechnung ersetzen.
Wählen Sie bitte den Aktionstyp „Rabatt-Berechnung“ aus.
Auslöser
In der Karte „Ausführung bei“ können Sie festlegen, wann die Aktion ausgelöst wird.
Wenn Sie „Ermittlung von Rabatten“ (TriggeredBy = „discountCalculation“) aktivieren, wird die Aktion immer ausgeführt, wenn in einem Angebot, einer Bestellung oder einem Warenkorb die Rabatte neu ermittelt werden.
Zudem können Sie es den Benutzern ermöglichen, die Aktion selbst auszulösen, indem Sie „Manuelle Ausführung“ (TriggeredBy = „manually“) aktivieren. Dann kann der Benutzer die Aktion im Kontext- oder Dreipunktemenü der übergeordneten Entität auswählen.
Sie können auch den Auslöser „Änderung Feldinhalt“ (TriggeredBy = „fieldChange“) aktivieren. Die Aktion wird dann ausgeführt, wenn Änderungen an den in der aufgeführten Tabelle hinterlegten Feldern festgestellt werden.
Die Aktion kann in diesen Entitäten ausgelöst werden:
- Angebot (offer)
- Bestellung (order)
- Warenkorb (shoppingCart)
Warning
Ein Warenkorb wird technisch in eine Bestellung oder Angebot weiterverarbeitet. Stelle sicher, dass neben der Entität Warenkorb auch die anderen beiden Entitäten ausgewählt sind, ansonsten werden die Daten bei der Übernahme eines Warenkorbs ggf. falsch ermittelt.
Eingabeparameter
Neben den allgemeinen werden zusätzlich diese Parameter übergeben. Die Kopfdaten des Belegs stehen über die BusinessRecord-Eigenschaften zur Verfügung.
| Key | Datentyp | Value |
|---|---|---|
| EntityType | string | Der Entitätstyp (offer, order, shoppingCart) |
| Discounts | Dictionary<string,object> | Die aktuell ermittelten Belegrabatte (Aufbau siehe unten) |
| Positions | Dictionary<string,object>[] | Positionen |
Rabatte (Discounts)
Das Discounts-Dictionary enthält je Belegrabatt einen Eintrag. Der Key ist die Rabattposition („1“ bis „3“) aus „Zahlung & Versand“, der Value ein Objekt mit diesem Aufbau:
| Key | Datentyp | Value |
|---|---|---|
| Label | string | Bezeichnung des Rabatts |
| DiscountBase | decimal | Rabattbasis, auf die sich der Rabatt bezieht |
| Value | decimal | Prozentwert des Rabatts |
| Amount | decimal | Betrag des Rabatts |
| IsAbsolute | bool | true = Betragsrabatt (Amount maßgeblich), false = prozentualer Rabatt (Value maßgeblich) |
Important
Es sind nicht immer 3 Einträge im Dictionary enthalten: Salesware reserviert Rabattpositionen gegebenenfalls bereits für Kundenkarten und Gutscheine. Diese Positionen werden nicht übergeben und dürfen auch nicht zurückgeliefert werden – zurückgelieferte Einträge zu reservierten oder unbekannten Positionen werden ignoriert.
Ausgabeparameter
Es werden die allgemeinen Rückmeldungen erwartet.
| Key | Datentyp | Value |
|---|---|---|
| Discounts | Dictionary<string,object> | Die zu übernehmenden Belegrabatte (Aufbau wie bei den Eingabeparametern) |
Für die Auswertung der zurückgegebenen Rabatte gelten folgende Regeln:
- Das
Discounts-Dictionary ist nicht in der Rückgabe enthalten → die von Salesware ermittelten Rabatte bleiben unverändert erhalten. - Ein übergebener Eintrag fehlt in der Rückgabe oder ist unvollständig (der maßgebliche Wert fehlt: bei
IsAbsolute = truederAmount, sonst derValue) → der Rabatt wird auf 0 gesetzt, die Bezeichnung bleibt erhalten. - Ein Eintrag ist vollständig enthalten →
IsAbsoluteund der maßgebliche Wert (Valuebzw.Amount) werden übernommen; dasLabelwird nur übernommen, wenn es geliefert wird. Den jeweils anderen Wert sowie dieDiscountBaseberechnet Salesware anschließend selbst neu – eine zurückgelieferteDiscountBasewird ignoriert.