Crafter Posted May 16, 2019 Report Share Posted May 16, 2019 Hallo zusammen, laut Dokumentation kann die setArticle Funktion der API dazu verwendet werden neue Artikel zu erstellen und bestehende zu aktualiseren. Wenn ich nun die products_id angebe und den neuen preis, wird der Artikelname gelöscht, products_model entfernt und der status geändert. Dinge wie Produktbeschreibung, Bestand und Kategorie bleiben aber unverändert erhalten. Ist das so gewollt und gibt es eine Liste welche Felder erneut mit angegeben werden müssen? Quote Link to comment Share on other sites More sharing options...
xt:Commerce Posted May 17, 2019 Report Share Posted May 17, 2019 kannst du einen beispiel call posten ? Quote Link to comment Share on other sites More sharing options...
Alex@4tfm Posted May 17, 2019 Report Share Posted May 17, 2019 Ich meine mich erinnern zu können, dass du einzelne Werte nicht so aktualisieren kannst. Dann müsstest du nochmal alle anderen Werte übergeben. (Das Projekt womit wir da Probleme hatten ist wohlgemerkt 2 Jahre her, daher bin ich nicht sicher.) Quote Link to comment Share on other sites More sharing options...
Crafter Posted May 29, 2019 Author Report Share Posted May 29, 2019 Ein Beispiel wäre folgender Call: { "function":"setArticle", "paras":{ "user":"api", "pass":"********", "productItem":{ "products_id":6363, "products_price":89, } }} Dieser würde zwar den neuen Artikelpreis setzten, dabei aber die oben die oben genannten Attribute löschen. Quote Link to comment Share on other sites More sharing options...
Crafter Posted June 5, 2019 Author Report Share Posted June 5, 2019 Das Aktualiseren der Produkt Beschreibung mit setArticle (Name, Beschreibung, Kurzbeschreibung) funktioniert auch nicht. Die Felder werden einfach ignoriert und die alte Artikelbeschreibungen bleibt erhalten. Existiert der Artikel allerdings noch nicht werden die Daten ohne Probleme hinzugefügt. Quote Link to comment Share on other sites More sharing options...
mjuergens Posted August 22, 2022 Report Share Posted August 22, 2022 Gibt es hierzu schon etwas neues? Der Post ja inzwischen schon über 2 Jahre alt aber das Verhalten ist immer noch so. Speziell geht es bei mir gerade darum, dass ich für einen Artikel nur einen neuen Sonderpreis über die API setzen möchte, aber es werden dann auch immer die o.g. Felder gelöscht wenn man nicht alles überträgt und auch die bereits vorhandenen Sonderpreise werden gelöscht. Das betrifft grundsätzlich aber auch andere Felder. Ich würde eigentlich von so einer Schnittstelle erwarten, dass, wenn ich im JSON-Call nur einzelne Felder für einen vorhandenen Artikel übertrage, dann auch nur diese Felder aktualisiert werden und der Rest unverändert bleibt. Bzw. wenn ich einen Sonderpreis übertrage auch nur dieser als neuer Sonderpreis hinzugefügt wird ohne alle anderen zu löschen. Quote Link to comment Share on other sites More sharing options...
netzzitrone Posted October 6, 2022 Report Share Posted October 6, 2022 Das Verhalten ist noch immer so. Die Daten, die nicht übergeben werden, werden auf die default-Werte zurückgesetzt. Mit würden da drei Lösungswege einfallen. Entweder es müssen halt alle Daten übertragen werden, oder man müsste über den Hookpoint "setArticle.php:setArticle_top" entsprechend die fehlenden Daten aus dem Shop ermitteln und dann im Call verarbeiten oder einen eigenen API-Endpoint für den Preis erstellen (was es z.B. für den Bestand mit setStocks ja auch gibt). Quote Link to comment Share on other sites More sharing options...
nevelop Posted August 3, 2023 Report Share Posted August 3, 2023 Hallo, uns geht es leider genau so. Wir müssen relativ oft die Preise von Artikel aktualisieren. Wie hier schon erwähnt, werden dabei Daten überschrieben, welche nicht im Request vorhanden sind. Außer dem Namen geht unter anderem auch die Kategorie-Zuordnung ", die Hersteller-Zuordnung und anderes verloren". Wir haben uns mal die Mühe gemacht und unsere Entwicklungsumgebung erweitert um den PHP Code der API zu debuggen. Dabei haben wir die Stellen gefunden, welche die Probleme (das Löschen von Daten) verantwortlich sind. In Bezug auf die Kategorien: in der serArticle.php in der Zeile 421 bzw. 422 die Kategorie-Zuordnungen gelöscht: /// // Alle vorhandenen Produktkategorien aus Tabelle TABLE_PRODUCTS_TO_CATEGORIES für Produkt entfernen $sql = "DELETE FROM " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id='" . $productID . "'"; $db->Execute($sql); //// Wir haben den Code der API nun für uns angepasst und führen diese Query nur aus, wenn sich in dem Request auch Kategorie-Zuordnungen befinden. Ähnliches gilt für andere Bereiche in der setArticle php. Wir leeren nur Felder, wenn diese auch im Request angegeben sind. Ein weiteres Beispiel ist die Hersteller-Zuordnung:. Diese wird immer auf "NULL" gesetzt. Auch hier haben wir den Code angepasst. Die Hersteller-Zuordnung wird nur dann angepasst, wenn diese auch im Request vorhanden ist. Vermutlich wird es aber mehr Sinn machen, immer das komplette Produkt zu laden, manipulieren und wieder zurückzusenden. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.