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



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 Mark,
schau dir mal den Step "StopFlowIf" an. ich denke, das ist genau was du suchst.
Du kannst hier die Bedingung setzen und den Flow an der Stelle dann einfach ohne Fehler stoppen.

Viele Grüße und einen schönen Tag
Enrico

 


1 Person mag dies

Hallo zusammen,


bis heute lief unser Datenaustausch reibungslos, jetzt kommt es zu Problemen bei Aufträgen mit Bundles.


Wir bekommen folgende Fehlermeldungen:



WARNING
WARNING:Error processing order with identifier 15428
Error during creation of order in plentymarkets Shop: POST https://www.plenty-es24.de/rest/orders HTTP/1.1
{"error":{"message":"validation error found"},"validation_errors":{"itemVariationId":["item variation id muss ausgef\u00fcllt sein wenn type id 1 ist."]}}


Das Mapping machen wir über die Externe Varianten-ID. Diese ist im Quellsystem eingetragen und sucht im Zielsystem die VariantenID.


Bei Bundles haben wir es so konfiguriert, dass die Bundle-Köpfe keine externe VariantenID haben, damit die Artikel nicht ggf. doppelt hinzugefügt werden (falls das Zielsystem die gleichen Bundles verwendet).


Bis vor Kurzem hat das auch super funktioniert - seit heute leider nicht mehr. 


Hat jemand eine Ahnung wo der Haken sein kann?


Vielen Dank und Gruß,

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 Mark, 


wenn die Versandkosten nicht relevant sind, kannst diese auch rausfiltern.


Der OrderType wird beim Import automatisch auf 1 (entspricht "SalesOrder") gesetzt, wenn am Datensatz kein valider Wert gesetzt ist. Falls du die Warnung beheben möchtest, kannst du den Wert beim Import in den Datastore fest auf 1 setzen.


VG Torsten  

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

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

Hallo Mark, 


kannst du dir bitte mal die Bestell-Positionen des Datensatzes mit identifiers 15428 ansehen ? Laut Fehlermeldung sieht es so aus, als wäre die Varianten ID (variantId) leer oder nicht korrekt gefüllt. Möglicherweise ist es ein Bundle ? Evtl. musst du den "Bundle Kopf" noch raus filtern, damit nur die Bundle Items übertragen werden.


Viele Grüße

Torsten 

Hi Torsten,


genau, es gibt ein Bundle Artikel. Dieser hat keine VariantenID Zuordnung, damit nur die Bundle Childs übertragen werden. Das hat ja bis vor Kurzem auch genau so funktioniert.


Sorry für die Anfängerfrage, aber wie kriege ich den Bundle Kopf rausgefiltert?


Tausend Dank im Voraus.


Mark

Moin Torsten,


vielen Dank für die Hilfe - funktioniert super.


Das Problem tritt allerdings bei Aufträgen die ins Ausland (aktuell Österreich) gehen, immernoch auf.


Fehlermeldung: item variation id muss ausgef\u00fcllt sein wenn type id 1 ist."]}}


Verhält es sich hier nochmal anders? Wir können die Fehlerursache nicht finden.


Viele Grüße

Mark

Anmelden um einen Kommentar zu veröffentlichen