Wechselkurs ändern in Aufträgen PlentyOne

Hallo zusammen,

wir suchen nach einer Lösung in bereits existierenden Aufträgen bei Plenty den WEchselkurs nachträglich zu ändern.
Wenn ich Aufträge via PlentySearchOrder abrufe bekomme ich sowohl den globalen Wechselkurs des Auftrags, als auch der Positionen.
In „PlentySetOrderHeads“ finde ich ganz viel, aber nicht die Währung und den Wechselkurs.
Auch in „PlentySetOrderItems“ kann ich da nichts anpassen.
Übersehe ich etwas oder war das einfach nur noch nie gefordert ?

Hintergrund ist, dass wir einen Kunden haben, bei dem durch einen Fehler bei plenty mehrere 100 Bestellungen mit Wechselkurs 1 reinkamen. Die müssen jetzt korrigiert werden.

Gruß

Heinke

1 „Gefällt mir“

Hallo Heinke,

der Wechselkurs ist aktuell noch nicht in den beiden Steps vorhanden. Wir schauen mal ob wir den noch im PlentySetOrderHeads bzw. PlentySetOrderItems hinzufügen können.

VG Torsten

Hallo @synesty-Torsten ,

Danke für die schnelle Rückmeldung. Dann habe ich ja richtig gesehen.
Falls ihr es einbauen könnt, würde ich den OrderHead präferieren, denn ich fürchte auch bei Änderungen über die API wird es nicht möglich sein den Kurs für eine Position zu ändern, wenn die ander noch einen anderen Kurs hat, was ja immer der Fall ist, wenn man zeilenweise arbeitet.

Gruß

Heinke

Hallo Heinke,

ich habe ein paar Sachen ausprobiert und nur eine Möglichkeit gefunden, um den Wechselkurs zu setzen. Es muss mit einem request für alle Positionen gleichzeitig der gleiche Wechselkurs unter orderItems>amounts gesetzt werden.
Das können wir leider nicht über den PlentySetOrderHead Step abbilden, da wir die Bestellposition (bzw. OrderItemIDs) hier nicht zur Verfügung haben.
Im PlentySetOrderItems funktioniert es leider auch nicht, da wie du schon richtig geschrieben hast, bei der zeilenweisen Abarbeitung ein Fehler auftritt.

Screenshot vom Test:

Eine Möglichkeit den Umrechnungskurs zu setzen, wäre über den SpreadsheetUrlDownload Step. Dafür könntest du wie folgt vorgehen:

Die Daten aus dem PlentySearchOrders Step in einem Mapper Step gruppieren (OrderHeadOrderID) und die Werte aus OrderItemsRowID in einer Spalte auflisten. Den Umrechnungskurs als festen Wert ins Wert-Feld schreiben oder berechnen / per Querverweis holen,…

Dann kannst du im SpreadsheetUrlDownload Step ein PUT request pro Order mit allen OrderItems machen. Das sollte ungefähr so aussehen:

requestBody Skript
{
  "orderItems": [
    <#list row['OrderItemIds']!?split(";") as orderItemId>
    {
      "id": ${orderItemId},
      "orderId": ${row['OrderHeadOrderID']!},
      "amounts": [
        {
          "currency": "${row['Currency']!}",
          "exchangeRate": ${row['ExchangeRate']!}
        }
      ]
    }
   <#sep>,</#list>
  ]
}

In den erweiterten Einstellung noch bodyContentType = application/json; charset=UTF-8 auswählen und den access token im Feld requestHeaders angeben:

Den Token kannst du dir über den PlentyRESTAuthenticate Step erstellen lassen.

Ich hoffe das hilft dir etwas weiter.

VG Torsten