ShopifySetInventoryLevel funktioniert nicht?

Hallo zusammen,

ich kriege bei den ShopifySetInventoryLevel-Steps nur 404 Fehler. Hat da noch jemand Probleme oder mache ich etwas falsch?

inventory_item_id hole ich mir aus ShopifyGetProducts und die location_id aus dem ShopifyGetLocations-Step.

Benutze die 2022-01 Version der Steps.

EDIT: inventory_management ist auf shopify gesetzt. Daran liegt es also auch nicht.

Gruß
Gustav

Ich hab grade nochmal die Debug-Ausgabe studiert und den vermeintlichen Fehler entdeckt. Ihr habt da einen Datumsdreher im Endpoint.
In dem Step gehen die Request an folgenden Endpoint:

POST /admin/api/2022-10/inventory_levels/set.json HTTP/1.1

Das Datum sollte aber 2022-01 sein, wenn mich nicht alles täuscht.

Gruß
Gustav

Hallo @gustavfriedeheim,

du hast vollkommen Recht gehabt. Es lag an dem Dreher. Step sollte nun funktionieren.

Viele Grüße
Lukas

Hallo @synesty-Lukas,

jetzt passt es. Der Flow stoppt aber immer noch nach 10 Fehlern, ist das so geplant?

Ich weiß zwar, woher der Fehler kommt und könnte die entsprechenden Zeilen auch vorab rausfiltern. Aber der Step liefert ja noch zwei weitere Spreadsheets invalidItems und failedItems. Das lohnt sich aber überhaupt nicht, für diese Spreadsheets ein gesondertes Handling zu entwickeln. Der Flow bricht ja ab, sobald in den beiden Listen mehr als 10 Zeilen landen.
Bei shopifyGetProductMetafields und shopifyAddProductMetafields ist mir das auch schon aufgefallen. Denke mal, bei den anderen Shopify-Steps ist’s dieselbe Situation.

Gruß
Gustav

Nein, ich hatte damit nichts zu tun :joy:

2 Likes

Hallo @synesty-Lukas,

leider habe ich mit den Shopify-Steps noch nicht abgeschlossen. Ich werde mich jetzt auf diesen Thread hier beschränken, damit die ganzen Shopify-Themen an einer Stelle sind.

1.shopifyAddVariantToProduct schickt invalide Queries.

Ich kriege folgende Fehler für ein komplett gefülltes Datenmapping.

Step: SpreadsheetUrlDownload - POST products: WARNING:Error during request 3: HTTP status: 400 (Bad Request), Response Content: {"error":"Write requests to inventory_quantity and inventory_quantity_adjustment are no longer supported. Please use the Inventory Levels API."} 

Wenn ich die Spalten für die inventory_quantity leer lasse, kriege ich einen generischen 400er Fehlern.

Step: SpreadsheetUrlDownload - POST products: WARNING:Error during request 3: HTTP status: 404 (Not Found), Response Content: {"errors":"Invalid Product"} 

Könnte ihr den Step nochmal überprüfen?

2.Published-Status bei ShopifyGetProducts

Ich hatte ja schon mal die beiden Spalten für Status bzw. published_scope angefragt.

Leider hat sich rausgestellt, dass der published_scope-Attribut garnicht der richtige Attribut zur Unterscheidung von veröffentlichten und unveröffentlichten Produkten ist. Dafür ist wohl der folgende Attribut aus der API notwendig:

grafik

Das ist kein Showstopper, also Prio Z. Ich kann mir hier ja auch helfen, indem ich die Daten in zwei GetProducts-Steps abfragen, einen für veröffentlichte und einen für unveröffentlichte Produkte. Wenn ich das Datum in der Ausgabe kriege, wäre das natürlich noch besser.

3.Error-Handling bzw. invalidItems/failedItems

Ich habs oben schonmal angesprochen, könnte ihr dazu schon irgendwas sagen?

Gruß
Gustav

Hallo @gustavfriedeheim,

zu deinen Anliegen:

1.shopifyAddVariantToProduct schickt invalide Queries

Die Spalte habe ich jetzt entfernt und wird nicht mehr für die Anlage von Varianten gebraucht, da es auch nicht mehr von shopify unterstützt wird. Der Bestand muss separat dann mit SetInventoryLevel hinterlegt werden.

2.Published-Status bei ShopifyGetProducts

Es gibt in der Ausgabe jetzt die Spalte „published_at“. Wenn Sie leer ist, wurde der Artikel noch nicht geplubished.

3.Error-Handling bzw. invalidItems/failedItems

Das ist schon so gewollt, um zu verhindern, dass zu shopify nicht nur fehlerhafte Request geschickt werden. Und die beiden Outputs dienen unter anderem zu nachfolgendem Troubleshooting.

Viele Grüße
Lukas

Hallo @synesty-Lukas,

die AddVariant-Steps laufen mittlerweile. Ich hatte auch noch einen eigenen Fehler eingebaut, der vermutlich den generischen „Invalid Product“-Fehler verursacht hat. Hoffe, die Suche nach der Ursache vom „Invalid Product“ hat euch nicht zu viele schlaflose Nächte bereitet.

Funktional läuft jetzt soweit alles, was ich (vorerst :slight_smile: ) mit Shopify vorhabe. Es bleibt bei drei Themen, diese Mal aber alles „nur“ QOL-Sachen.

1.Angabe von den verarbeiteten Reihen

Am Ende von den Stepergebnissen stehen immer die Angabe zu den einzelnen Tabellen. Bei mir kommt dort aber immer 0 raus. Ich dachte, dass liegt daran, dass ich das Output-Spreadsheet nicht benutzt. Aber selbst wenn ich einen Konsumenten für eines der Output-Spreadsheets anhänge, wird dort weiterhin 0 ausgegeben.
Der Screenshot ist jetzt ein shopifyUpdateProductInformation-Step, aber bei den anderen Shopify-Steps ist das auch so.

grafik

Könnt ihr euch erklären, woran das liegt?

2.Warnung für leere Spreadsheets unterdrücken

Bei mir kommt es mit unter vor, dass ein Shopify-Step mit leerem Input abgefragt wird, zum Beispiel beim Löschen von Metadaten. Das wirft dann aber immer eine Warnung im Step, dass der Input leer ist.

grafik

Ich würde gerne in den zutreffende Steps konfigurieren, dass leere Inputs ohne Warnung übersprungen werden sollen. Wäre super, wenn ihr die Konfiguration für den StopFlowIf-Step an den Nutzer durchreichen könntet.

3.Duplikate aus Metadatenabruf entfernen

Der übliche Flow zum Abrufen von Metadaten ist GetProducts → GetProductMetafields. Bei uns werden die Metadaten aber nur an den Produkten gepflegt und nicht an den einzelnen Varianten. Ich lasse also die Spalte zur variant_id leer.
Wenn ich das so aufrufe, wird für jede Produktvariante dieselben Metafelder abgerufen. Das heißt, mit 30 Varianten an einem Produkt werden 30mal dieselben Metadaten aus Shopify abgefragt und ich habe die gleichen Metadaten in der Ausgabe auch 30mal drin.
Im Moment helfe ich mir, indem ich zwischen den beiden Steps immer einen DistinctValue-Step schalte und auf dem Wege die duplizierten Abfragen verhindere. Schön und intuitiv ist aber anders.

Könnt ihr das vielleicht direkt in den GetProductMetafields-Step integrieren, dass als Erstes alle duplizierten Queries entfernt werden? Ich komme auf kein Szenario, wo das für Probleme sorgen könnte (außer man ist auf der Suche nach einem schnelle Dauerbelastungstest für die Shopify-API :smirk: ).


Gruß und noch eine schönen Abend!
Gustav

Hallo Synesty-Team,

nachdem es heute nochmal eine Situation gab, wo das mehrfache Abfragen derselben Metafelder (siehe Punkt 3 meines letzten Posts) zum Problem wurde, wollte ich nochmal fragen, ob ihr da Abhilfe schaffen könnt/werdet?

Das Thema aus Punkt 2 hatte ich vor einigen Wochen auch schonmal in der Sprechstunde angebracht. Gibt’s dazu schon Neuigkeiten?

Gruß
Gustav

Hallo @gustavfriedeheim,

zu Thema 2: Haben wir jetzt erst einmal probeweise eine neue Option in dem Step shopifyDeleteMetafields eingebaut, in der du das Verhalten bestimmen kannst, wenn keine validen Zeilen vorhanden sind.

zu Thema 3: Können wir verstehen, dass das nicht intuitiv ist, aber können es im aktuellen Step nicht anpassen, da es dennoch laufende Prozesse von Kunden stören kann. Wir werden das aber bei der nächsten Versionsumstellung der Shopify Steps mit beachten.

Viele Grüße
Lukas

Hallo @synesty-Lukas,

ich habe mir die Option in shopifyDeleteMetafields grade mal angesehen. So habe ich mir das vorgestellt, sehr cool! Im Moment fehlt dort aber noch eine Feldbeschreibung und an dieser Stelle machen eigentlich auch nur die drei Stop-Optionen Sinn. Dass der Flow abbricht bei keinen Inputspalten ist ja durchaus korrekt.
Wie würde der Rollout auf weitere Schritte ablaufen? Der Fehler für leere Spreadsheet stört mich bei einigen Schritten aus dem Shopify- und Tradebyte-Addons.

Bei den doppelte Metafelder weiß ich dann Bescheid. Entferne ich die Duplikate erstmal weiterhin selbst, ist ok. Ich frag mich zwar, ob wirklich jemand einen Flow gebaut hat, der auf die duplizierten Zeilen angewiesen ist, aber man weiß ja nie.

Gruß
Gustav