ich habe mit dem Step „ShopwareUpdateProducts“ das Feld „CategoryIds“ mit einer SW-Kategorie-ID bestückt. Bevor ich den Step ausgeführt habe, ist das Produkt in 5 verschiedenen Kategorien in SW drin. In „CategoryIds“ steht aber nur eine Kategorie-ID drin - eine andere, als die 5 bisherigen Kategorien.
Nachdem ich den Step „ShopwareUpdateProducts“ ausgeführt habe, schaue ich im Shopware nach. Nun hat das Produkt 6 Kategorien. Ich möchte aber, dass das Produkt nur die eine Kategorie hat, die ich ihm mitgegeben habe, denn die 5 Kategorien sind falsch und veraltet und sollten daher gelöscht werden.
Was kann ich tun, damit es so passiert, wie ich das möchte?
die Kategorien (CategoryIds) werden von der Shopware API nur hinzugefügt. D.h. die IDs können mit dem ShopwareUpdateProducts Step nicht „ersetzt“ werden. Einen ähnlichen Fall hatten wir auch für die SalesChannels:
Die zugewiesenen Kategorien der Produkte müssen also erst manuell oder mit einem entsprechenden SW API Call (siehe Product Management | Admin API) entfernt werden
Ich klink mich mal hier rein, da wir die gleiche Herausforderung hatten. Verstehe bis heute nicht, wieso Shopware in der API nicht mit „ersetzen“ arbeitet.
Wir haben unsere eigenen API-Calls gebaut und beim Aktualisieren von Produkten bereinigen wir über eine separate Step-Gruppe die Property-Id’s der zu aktualisierenden Produkte.
Im ersten Step rufen wir die Produkte auf, im zweiten Step hab ich einen JSONReader eingebaut, um die Response aus dem ersten Call sauber auszulesen, im dritten Step noch einen Filter eingebaut, um auch nur die Produkte zu bereinigen, die eine Property ID haben und im im letzten Step spreche ich den API-Endpunkt /api/_action/sync um über ein Payload die Property Id’s zu löschen.
Kann man bestimmt Alles auch eleganter lösen, aber es läuft
@ramin-ww
Das verstehe ich und kann ich alles sehr gut nachvollziehen. An einem Punkt hänge ich, und zwar an deinem letzten Step. Ich vermute, der letzte Step hast du über „meine Verbindung“ links im Menü angelegt oder? Weil wenn ich das darüber versuche, kann ich nur die Verbindungsart mit Certifikats-Eingaben machen. Aber hierbei irgendetwas mitzugeben, habe ich nichts. Vermutlich übersehe ich gerade etwas?