Table of Contents

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 = true der Amount, sonst der Value) → der Rabatt wird auf 0 gesetzt, die Bezeichnung bleibt erhalten.
  • Ein Eintrag ist vollständig enthalten → IsAbsolute und der maßgebliche Wert (Value bzw. Amount) werden übernommen; das Label wird nur übernommen, wenn es geliefert wird. Den jeweils anderen Wert sowie die DiscountBase berechnet Salesware anschließend selbst neu – eine zurückgelieferte DiscountBase wird ignoriert.