Auftragspositonen nach Negativbeträgen durchsuchen (Rabatte/Gutscheine) und auf restliche Artikel umlegen

Hallo,

ich hole mit plentymarkets Aufträge und Retouren ab und speichere diese in einer Parent-Child Relation in einem Datastore ab.


In einem 2. Flow werden die UNPROCESSED Parents aus dem Datastore genommen und per TextHTMLWriterMultiOutput in einzelne xml Dateien geschrieben und auf den FTP hochgeladen.


Nun kommt es jedoch vor, dass in den Aufträgen Rabattpositionen / Gutscheine (also negative Beträge) enthalten sind. Diese möchte ich gern filtern und prozentual auf die anderen Positionen verteilen.


Aus

Artikel A: 100 €

Artikel B: 200 €

Rabatt: -30 €

(Gesamt 270 €)


soll werden

Artikel A: 90 €

Artikel B: 180 €

(Gesamt 270 €)


Am liebsten würde ich das in einem Mapper umsetzen, aber wie kann ich geschickt durch alle Children eines Parents iterieren, um zuerst die Negativpositionen zu summieren (falls es mehrere Gutscheine gibt) und diese dann auf die anderen Positionen umlegen?


Habt ihr dazu eine Idee oder ist der Mapper der falsche Ansatz?


Vielen Dank für euren Input

LG
Diana

Hallo Diana,


vor ein paar Monaten hatte ich tatsächlich ein ähnliches Problem. Hier grob die Schritte:


1. Nachdem du die Aufträge geholt hast, filterst du nach den Kopfzeilen und den Gutscheinen

2. Im Mapper darauf gruppierst du nach der OrderID und addierst die absoluten Beträge der Gutscheine auf den Header Brutto Preis

3. In einer extra Spalte kannst du dann den prozentualen Wert des Rabatts berechnen: absoluter Betrag Gutscheine /(Header Brutto Preis + absoluter Betrag Gutscheine)

4. Danach erstellst du dir ein MappingSet(zum "merken" der Prozentsätze) mit Key:OrderID=Value:Prozensatz

5. Das MappingSet kannst du dann nutzen um dir die Prozentsätze zur Aufteilung auf die anderen Artikel zu nutzen


Ich hoffe ich konnte es einigermaßen erklären.


Viele Grüße,

Lukas

Hallo Lukas,


vielen Dank, das war sehr hilfreich! Ähnlich hatte ich es mir auch gedacht, aber auf die Idee ein Mappingset erstellen zu lassen, wäre ich nicht gekommen.


Auf jeden Fall hat alles geklappt. Vielen lieben Dank!


Diana