Einleitung
Diese Aktion ermöglicht es, bei der Berechnung einer Position im Angebot, in der Bestellung oder im Warenkorb individuelle Konditionen in die Preisermittlung einfließen zu lassen.

Du möchtest, dass alle Artikel derselben Artikelgruppe einen Rabatt von 5 % erhalten, sobald drei Artikel dieser Artikelgruppe in einer Bestellung enthalten sind. Sobald einer dieser Artikel wieder entfernt wird, wird der Rabatt ebenfalls entfernt.
Wähle bitte den Aktionstyp „Position-Neuberechnung“ aus.
Auslöser
In der Karte „Ausführung bei“ kannst du festlegen, wann die Aktion ausgelöst wird.
Wenn Du „Ermittlung von Preisen“ (TriggeredBy = „priceCalculation“) aktivierst, wird die Aktion immer ausgeführt, wenn eine Änderung innerhalb der Entität zur Neuberechnung von Preisen führt. Welche Änderungen diese Neuberechnung veranlassen können, kannst du in der Hilfe unter <Bestellungen/Angebote > Bestellung/Angebot bearbeiten> einsehen.
Zudem kannst du es den Benutzern ermöglichen, die Aktion selbst auszulösen, indem du „Manuelle Ausführung“ (TriggeredBy = „manually“) aktivierst. Dann kann der Benutzer die Aktion im Kontext- oder Dreipunktemenü der übergeordneten Entität auswählen.
Du kannst 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)
Eingabeparameter
Neben den allgemeinen werden zusätzlich diese Daten übergeben:
Key | Datentyp | Value |
---|---|---|
PriceListId | int | die ID der Preisliste, die aktuell zugewiesen ist |
DiscountListId | int | die ID der Rabattliste, die aktuell zugewiesen ist |
CurrencyCode | string | die Währung, die aktuell zugewiesen ist |
CurrencyCodeExchangeRate | decimal | der aktuell verwendete Umrechnungsfaktor |
HasGrossPrices | bool | das Preiskennzeichen (brutto/netto) |
AccountId | string | die Kundennummer (KHKKontokorrent.Kto) |
DocumentDate | datetime | das Belegdatum |
TaxClassId | short | die Besteuerungsart |
Positions | Dictionary<string,object>[] | Position / Artikel |
Neben den allgemeinen Positionsdaten werden zusätzlich diese Daten übergeben:
Key | Datentyp | Value |
---|---|---|
ExternalEntityReference | string | die Elements-Referenz für die Position |
Custom | Dictionary<string, object> | die Custom-Felder, die für die Position definiert sind (s. Entity-Spezifische Eingabeparameter) |

Das Kennzeichen, ob der Einzelpreis manuell verändert worden ist, kann genutzt werden, um Positionen mit einem individuellen Preis/Rabatt von der Neuberechnung auszuschließen.
Ausgabeparameter
Es werden die allgemeinen Rückmeldungen erwartet, allerdings pro Position:
Key | Datentyp | Value |
---|---|---|
Positions | Dictionary<string,object>[] | die Positionsdaten |
Das sind die Ausgabeparameter der Position:
Key | Datentyp | Value |
---|---|---|
EntityKey | string | der Elements-Key für diesen Datensatz |
UnitPrice | decimal | der Einzelpreis |
DiscountValue | decimal | der Rabattsatz (in Prozent) |
IsManualPrice | bool | das Kennzeichen, ob der Einzelpreis manuell verändert worden ist (EinzelpreisManuell) |
Sobald die Aktion also eine Änderung an den Positionskonditionen feststellt, kannst du diese an Elements übermitteln.

Das Kennzeichen, ob der Einzelpreis manuell verändert worden ist, kann genutzt werden, um Positionen von einer späteren Neuberechnung aufgrund einer Änderung an der Entität auszuschließen.

Der Benutzer ändert den Preis eines Artikels. Diese Änderung wird durch die Aktion überprüft und stellt keine Bedingung für eine Änderung der Preise dar.

Der Benutzer ändert einen Preis und dieser ist zu gering. Der Benutzer bekommt eine Fehlermeldung angezeigt und muss den Preis wieder korrigieren. Alternativ kann die Aktion auch den korrekten Preis übergeben.