Neues Thema starten
Beantwortet

Aufträge aus Plentymarkets System 1 in Plentymarkets System 2 übermitteln

Hallo zusammen,


wir würden gern folgendes abbilden:


1. Aufträge werden aus Plenty Quellsystem geholt

2. Aufträge werden in Plenty Zielsystem eingelesen

3. Paketnummern werden aus Plenty Zielsystem exportiert und im Quellsystem eingelesen


Hat jemand schon einmal soetwas abgebildet? Da wir gerade erst mit Synesty anfangen, sind wir da noch nicht 100% fit. Problematisch wird's bei uns mit den Datastores.


Vielen Dank und Gruß,

Mark



Beste Antwort

Hallo Mark,


Ja, das ist möglich.


Die Doku der Steps bietet hier bereits einiges an Dokumentation für das Abholen der Order:

https://apps.synesty.com/registration/PlentySearchOrders/de-de?action=showStep&id=bcc0240c-0cd7-11e7-aa69-448a5bd88a72


Anlegen von Auftragsdaten wird hier beschrieben:

http://docs.synesty.com/display/SSUD/Step%3A+PlentyAddOrders+-+REST+API


und hier gibt es eine Vorlage für das Anlegen der Trackingdaten:

https://apps.synesty.com/studio/tasks?action=showTaskDefinition&id=RESTSetTrackingID&projectId=



Viele Grüße,

der Synesty Support



Antwort

Hallo Mark,


Ja, das ist möglich.


Die Doku der Steps bietet hier bereits einiges an Dokumentation für das Abholen der Order:

https://apps.synesty.com/registration/PlentySearchOrders/de-de?action=showStep&id=bcc0240c-0cd7-11e7-aa69-448a5bd88a72


Anlegen von Auftragsdaten wird hier beschrieben:

http://docs.synesty.com/display/SSUD/Step%3A+PlentyAddOrders+-+REST+API


und hier gibt es eine Vorlage für das Anlegen der Trackingdaten:

https://apps.synesty.com/studio/tasks?action=showTaskDefinition&id=RESTSetTrackingID&projectId=



Viele Grüße,

der Synesty Support


Hallo,


vielen Dank für die schnelle Antwort.


Sehe ich es richtig, dass ich mit folgender Stepfolge zumindest mein Vorhaben Aufträge exportieren und in anderes Plenty System importieren abbilden kann?


image


Viele Grüße und ein frohes Osterfest,

Mark

Zusatz: Ich bin bisher wie folgt vorgegangen:


  1. Zwei Datastores erstellt (Master-Child). Der Master hat das Schema PlentyRESTOrderPayloadProvider und das Child PlentyRESTOrderItemPayloadProvider
  2. Steps wie oben abgebildet erstellt
  3. Step 2: Greift auf Master Datastore. Als IdentifierColumn HeadOrderID gewählt
  4. Step 3: Greift auf Child Datastore. Als IdentifierColumn OrderItemsVariantID gewählt.

Anschließend habe ich beim Testen schon festgestellt, dass bspw. OrderItemQuantity, OrderItemTextName etc. nicht mit in der Vorschau von Step 3 auftauchen.

Müssen hier noch weitere Steps zwischengeschaltet oder einzelne Spalten gemappt werden?

Wie stelle ich das Mapping von Externe VariantenID Quellsystem -> VariantenID Zielsystem her?

Viele Grüße,
Mark


Hallo Mark, 


das sieht schon ganz gut aus. Zwischen PlentySearchOrders und den DatastoreWriter fehlt noch ein SpreadsheetFilter Step, der den Auftragskopf von den Positionen trennt. Als Filterbedingung kannst du hier z.B:


OrderHeadOrderTypeID! != ''


verwenden. Der Flow sollte dann folgendermaßen aussehen:




Der SpreadsheetFilter Step verfügt über zwei Ergebniss-Spreadsheets. Der 1. DatastoreWriter Step wird mit dem output Spreadsheet und der 2. DatastoreWriter mit dem negativeOutput des Filter Steps verknüpft.  


Über den "Configure" Button des jeweiligen DatastoreWriters gelangst du in eine Mapping Ansicht, in der du die Spalten aus dem PlentySearchOrders Step den Spalte im jeweiligen Datastore Schema zuordnen kannst, z.B: externe Varianten ID als Varianten ID.


Als Identifier im Child-Datastore solltest du am besten die OrderItemsRowID und nicht die Varianten ID verwenden. 


Viele Grüße

Torsten



Hallo Torsten,


vielen Dank für deine Hilfe!


Ich bin jetzt soweit gekommen, dass vom Mapping und der Flowlogik eigentlich alles passen sollte.


Wenn wir den Flow jetzt ausführen, kriegen wir aber folgende Fehlermeldung:

Letzte Meldung: Error processing order with identifier 10433
POST https://www.plenty-es24.de/rest/accounts/contacts/231819/addresses HTTP/1.1
{"error":{"code":422,"message":"Validation error","exception":"Plenty\\Exceptions\\ValidationException"},"validation_err


Kannst du sagen, was hier falsch ist? Der Benutzer im Zielsystem hat alle REST API Rechte und die Zuordnung der PlentyID haben wir auch im Mapping hinterlegt.


Dann ist mir aufgefallen, dass in den Datensätzen des Child Datastores auf der linken seite überall "hat keinen MASTER" steht. Woran kann das denn liegen?


image



Viele Grüße,

Mark

Hallo Mark, 


die Datensätze im Child Datastore (Bestellpositionen) müssen noch über den Master Identifier mit dem entsprechenden Master Datensatz (Bestellkopf) verknüpft werden. Du kannst im 2. DatastoreWriter als masterIdentifierColumn die Spalte "OrderHeadOrderID" auswählen.


Viele Grüße

Torsten

Moin Torsten,


gerade in diesem Moment auch gefunden.


Tausend Dank für die schnelle und gute Hilfe!


Viele Grüße,

Mark

Hallo nochmal,


bezüglich des Paketnummernimports haben wir uns jetzt folgendes vorgestellt:


Steps, die verwendet werden sollen:


1. PlentySearchOrders

2. PlentyAddOrdersPackage


Wir haben auf beide Plenty Systeme Zugriff.


Macht es Sinn, diese Steps einfach an den Flow für die Bestellübermittlung dranzuhängen oder sollte man dafür lieber einen separaten Flow erstellen?


Hinsichtlich API Call Limits etc.


Danke und Gruß,

Mark

Hallo Mark,

wenn die Sendungsnummer bereits im einen System vorhanden ist, kannst du es direkt anhängen, wenn du Sie erst mit Anlage des Artikels im zweiten System generierst solltest du einen zweiten Flow bauen, eine Pause einbauen und dann den zweiten Flow triggern.

Oder du lässte den zweiten Flow einfach einmal täglich automatierst laufen mit der Paketnummer. Die Beiden Steps kannst du verwenden.
Wir arbeiten auch mit zwei Plenty Systemen und übertragen Bestellungen vom einen in das andere.

Viele Grüße
Enrico

 


1 Person mag dies

Hi Enrico,


danke.


Über welchen Filter stellst du denn sicher, dass nur "neue" Sendungsnummern übertragen werden?


Wenn ich bspw. nach Status "Warenausgang gebucht" filtere, nimmt er ja immer wieder alte Aufträge mit rein, oder?


Gehst du da über den LastUpdated Timestamp?


Viele Grüße,

Mark

Hi Mark,

so kannst du es einfach lösen. Wenn du es z.B. einmal täglich ausführst, dann kannst du den Timestamp des Warenausgangs im Plenty auch verwenden und einfach immer den aktuellen Tag nehmen.

Viele Grüße
Enrico

 

Hi Enrico,


wie bekomme ich den Timestamp des Warenausgangs denn da am elegantesten rein?


Mir fällt jetzt erstmal nur der Weg über einen weiteren Step (bspw. SpreadsheetFilter) ein..


Vielen Dank für deine Hilfe.


Gruß,

Mark

Hi Mark,

Den Timestamp erhälst du ja aus Plenty, diesen kannst du dann ja reduzieren auf "Tag/Monat/Jahr" - Mit dem SpreasSheetFilter lässt du dann nur Aufträge durch, die diesem entsprechen. Um im Filter auch immer aktuell zu sein setzt du am besten eine Datum/Zeit-Variable mit dem aktuellen Datum ein.

Dann sollte es funktionieren.

Viele Grüße
Enrico

 

Hi Enrico,


danke nochmal für deine Hilfe.


Hat alles wunderbar geklappt.


Ich habe jetzt allerdings noch eine Kleinigkeit.. Wenn mein Flow im Auftragsaustausch keine Aufträge mit den vorgegebenen Bedingungen findet, läuft der Flow auf Fehler.


Macht es Sinn, hier noch einen Filter vor den Spreadsheedfilter zu setzen, um nur Spreadsheets mit bspw. vorhandener OrderID durchzulassen?


Oder gibt es vielleicht eine andere Funktion hierfür?


Danke und Gruß,

Mark

Anmelden um einen Kommentar zu veröffentlichen