Plenty7: Wechsel zu REST jetzt schon sinnvoll?

Hallo Forum,
nach der Migration auf Plenty7 stelle ich mir grade die Frage, wie ich künftig mit Artikeln und Varianten umgehen soll: Eine der Hauptaufgaben meiner Flows sind Preisanpassungen (an Artikeln), bisher hab ich hier den Großteil per DynamischemImport erledigt.

Grundsätzlich habe ich zum Wechsel zwei Dinge festgestellt:

  1. Ich muss künftig mit den Varianten arbeiten, nicht mit den Artikeln.
  2. Die neuen Datenformate zum Import bei Plenty machen vieles komplizierter (z.B. Preisanpassungen)


Deshalb bin ich zu dem Schluss gekommen, alle relevanten Informationen pro Variante in einen zentralen Datastore zu schreiben, und Flows rufen Informationen von dort per Querverweis ab. (Oder gibts hier elegantere best-practices?)

Um den Datastore zu füllen brauche ich in jedem Fall mehrere "Anläufe", da hier Infos wie Artikelname, verschiedene Preise, zugeordnete Kategorien, Freitextfelder, u.a. gefragt sind. Manche dieser Spalten gelten (plenty-intern) für Varianten, andere pauschal für eine ganze ItemID, und die neuen Verkaufspreise sind nochmal ein Sonderfall. Zu welchem Vorgehen würdet ihr mir raten?


Die Möglichkeiten sind:

a) weiterhin mit DynExporten arbeiten.
Nachteile: Ich müsste mit den neuen, komplexeren Datenformaten aus Plenty7 arbeiten, was ich egtl grade vermeiden wollte. Das Ganze läuft über SOAP, und ist damit ein Auslaufmodell. Ob die Funktionalität per REST zur Verfügung gestellt wird scheint noch unklar?
Vorteile: Sowohl Import als auch Export laufen recht schnell.

b) meine Infos per SOAP (115) beziehen.
Nachteile: SOAP scheint um einiges langsamer als REST. Und die Schnittstelle ist deprecated, bald muss ich mir was neues überlegen.
Vorteile: ihr habt viele Steps zur Plenty-SOAP, das ganze Handling ist recht ausgereift, gleichzeitig angepasst auf die neue Artikelstruktur. In einem ersten Test habe ich Calls für alle benötigten Spalten gefunden, alles per GetItemBase. Simpel.

c) das ganze zukunftssicher per REST abwickeln.
Nachteile: eure Steps sind noch in Beta. Auch bei Plenty selbst scheint mir die Entwicklung noch nicht abgeschlossen zu sein(?) Generell habe ich auf Anhieb nicht alle Spalten gefunden. Einziger relevanter unterstützter Call scheint mir PlentyGetVariations zu sein. Was der an Infos bietet erscheint mir allerdings sehr mager, wenn ich mir die REST-Doku anschaue, brauche ich wohl eher einen gesammelten Output zu Items, Variations sowie deren Preisen, um an alle gewünschten Informationen zu kommen.

Nur mit PlentyGetVariations komme ich hier nicht weiter, oder täusche ich mich da? Ich bräuchte z.B. Zugriff auf Freitextfelder, und auf Preise direkt als Spalten, einzeln. Die Angabe aus VariationSalesPrices bekomme ich spontan so nicht verarbeitet.

Ist absehbar in welchem Zeitrahmen all diese Funktionalität per REST bereitsteht? Ist Plenty selber überhaupt schon soweit?


Kurzum: Zu was würdet ihr mir zum jetzigen Zeitpunkt raten?


Danke, Daniel


Hallo Daniel,


da wir in den seltensten Fällen alle benötigten Informationen in einer Datei/Export erhalten, sammeln wir meistens auch erstmal die Daten im Datastore und greifen dann per Querverweis darauf zu. Wir haben recht gute Erfahrungen mit dieser Vorgehensweise gemacht. In einigen Fällen muss man darauf achten die Felder im Datastore zu leeren, falls Zeilen im Input nicht mehr vorhanden sind. Über den "untouchedRecords" Output des DatastoreWriters ist das aber relativ leicht möglich.


Überall wo es möglich ist würden wir ihnen empfehlen die REST Steps zu verwenden. Alles rund um Stocks funktioniert schon recht zuverlässig und schnell. Der GetVariations Step wird sicher noch einige weitere Spalten erhalten. Bei den Preisen überlegen wir aktuell noch, ob wir eine begrenzte Anzahl einzelner Preisspalten anbieten und eine Art konfigurierbares Mapping am Step hinterlegen (ähnlich wie bei Plenty: Einstellungen » Grundeinstellungen » API » SOAP-Migration - Preise). Alternativ könnten sie auch jetzt schon über die parseField Funktion die Preise in einzelne Spalte schreiben (Siehe Screenshot).

image



Ob wir die Freitextfelder / Texte in den GetVariations Step integrieren können, schauen wir uns diese Woche an.





Heyho Synesty,
zuerst mal danke für den Hinweis auf untouchedRecords, den hatte ich noch garnicht auf dem Schirm!

Bisher hab ich händisch den kompletten Datastore gelesen, und auf UNPROCESSED gesetzt, um dann die neu gelesenen auf PROCESSED_SUCCESS zu setzen... Wenn ich das direkt über untouchedRecords mach, spar ich mir mal mindestens einen Step =)

So wie ich das sehe, werd ich trotzdem zuerst mal auf SOAP setzen müssen im Moment, meine wirklich komplexen Flows brauchen Preise, Freitextfelder, Kostenfelder u.a. alles gleichzeitig, eine Teilsumme hilft mir hier erstmal nicht weiter.

Ein Mapping von Preisen auf feste Spalten vergleichbar zum SOAP-Mapping würde ich auf jeden Fall begrüßen!


parseField hilft mir aber dann erstmal einzelne Preise zu lesen, merci! Kann ich die dann problemlos über PlentySetVariationsPrices (REST) zurückschreiben? Wie komme ich umgekehrt zur SalesPriceID dann? (Also lesen "links vom Gleichheitszeichen")

Hier mal eine Liste aller Felder die ich auf Variantenbasis bräuchte:
(alle fett die ich bereits gefunden hab, Rest fehlt noch)

ItemID, VariantID, SKU, MainVariantID, IsMainVariant, ItemNo, Texts_Name, Texts_Name2, Texts_Name3, WebShopSpecial, Stock_Limitation, AllCategoryPaths, Marking1ID, Marking2ID, ProducerID, ProducerName, PriceSet_ID, PriceSet_PurchasePriceNet, PriceSet_VAT, PriceSet_RecommendedRetailPrice, PriceSet_Price1, PriceSet_Price3, PriceSet_Price4, PriceSet_Price6, PriceSet_Price7, PriceSet_Price8, PriceSet_Price9, PriceSet_Price10, PriceSet_Price11, PriceSet_Price12, PriceSet_CarryingCosts, PriceSet_InventoryCosts, PriceSet_OperatingCostsPercental, FreeText2, FreeText4, FreeText5, FreeText17

Außerdem sind Texts_Name1-3 bei mir immer leer. Ist das bekannt?

Danke, Daniel

PS: Ich komm grad nicht mehr per REST aufs System:

ERROR:GET https://de/rest/items/variations?with=variationSalesPrices&isActive=true&itemsPerPage=25&page=1 HTTP/1.1
{"error":{"code":401,"message":"Unauthenticated.","exception":"Illuminate\\Auth\\AuthenticationException"},"validation_errors":[]}

Soll ich ein Ticket aufmachen?

Eine kurze Frage: wie bekomme ich Zugriff auf die verknüpften Kategorien eines Artikels?
Geht das noch nicht per REST?

Kategorien sind gerade in der Entwicklung. Sollte bis Ende der Woche über den GetVariations Step funktionieren.