Seltsames Verhalten beim Update von Varianten via API

Gegenwärtig arbeite ich an einer Schnittstelle um Produkte inkl. Varianten von einem externen Anbieter in Shopware 6 zu importieren. Der Anbieter selber hat bisher noch nie mit Shopware etwas zu tun gehabt.

Ich will nun also Produkte und Varianten in Shopware einlesen. Beim erstmaligen Test und imporieren wurde Angaben wie Breite, Höhe, Höhe etc.. nur dem Stammprodukt zugeweisen. Bei den Varianten nicht. Bedeutet also, sie werden vererbt.

Beim Update allerdings sollen die Angaben wie Breite, Höhe etc.. dennoch bei den Varianten aktualisiert bzw. nachträglich angepasst werden. Jetzt kommt der Knaller - es geht überhaupt nicht.

Die Shopware API streikt an dieser Stelle und wirft Fehler aus:

[status] => 400
[code] => FRAMEWORK__WRITE_TYPE_INTEND_ERROR
[title] => Bad Request
[detail] => Expected command for "product" to be "Shopware\Core\Framework\DataAbstractionLayer\Write\Command\UpdateCommand". (Got: Shopware\Core\Framework\DataAbstractionLayer\Write\Command\InsertCommand)Hint: Use POST method to create new entities.

Ich hätte also von Anfang an die Angaben wie Breite, Höhe etc.. bei den Varianten setzen müssen. Für mich ist dieses Verhalten jetzt nicht nachvollziehbar, denn beim Feld ‚description‘ geht es auch. Heißt, ich kann beim erstmaligen Import bei den Varianten das Feld ‚description‘ leer lassen, dann wird ‚description‘ vererbt. Bei einem Update kann ich das Feld aber dennoch setzen, ohne Fehler, ohne Abbruch. Ich kann mir auch nicht vorstellen das dies Absicht sein soll.

Stellt sich die Frage wie bekommt man das nun in den Griff? Die Produkte löschen und komplett neu einlesen kann ja nicht wirklich die Lösung sein.

Dieses Verhalten wurde übrigens in der aktuellen SW Version 6.7.7.1 festgestellt.

Der Fehler sagt aus, dass du ein Produkt neu anlegen möchtest, anstatt ein bestehendes zu aktualisieren. Mehr sagt der Fehler nicht aus.

Nein, der Fehler ist Unsinn bzw. wird von der API falsch ausgegeben. Mein Update-Prozess läuft mit ‚PATCH‘ - NICHT ‚POST‘. Sobald ich Breite, Höhe etc.. weglasse funktioniert das Update. Also kann diese Fehlermeldung einfach nicht stimmen.

Teste es über die Administration. Wenn es da geht, dann sind in deinen API-Requests Fehler drin. Wenn nicht, dann hast du ggf. einen Bug entdeckt, was ich in den Fall bezweifle.

In der Administration muss man zuvor den Hacken/Umschalter bei Vererbung rausnehmen. Das habe ich nicht bei der API. Das brauch ich gar nicht erst testen.

Bei mir funktioniert es. Musst wohl an deinem Fehler suchen…

PATCH api/product/{{uuid}}

{
  "weight": 1,
  "width": 1,
  "height": 1,
  "length": 1
}

Moment! Hast du exakt die selben Bedienungen wie oben beschrieben?

Also Artikel mit Varianten per API angelegt - nicht per Backend. Nur dem Stammprodukt Breite, Höhe zugewiesen - nicht den Varianten. Und dann erst versuchen bei einer Variante Breite oder Höhe zuzuweisen.

Ich teste das jetzt seit mehreren Stunden und komme zu einem anderen Ergebnis.

Ja, das habe ich so gemacht.

Und zwischen der Administration und der API gibt es keinen Unterschied. Die Administration nutzt ausschließlich die API.

Ja ich weis, dennoch kann ich das nicht nachvollziehen. Ich bekomme eine Fehlermeldung sobald ich das Feld für Breite oder Höhe benutze. Ein Beispiel folgt …

Ich brauch Urlaub - ich Blödmann habe den Fehler gefunden. Die falschen Variablen benutzt :face_with_peeking_eye: