Jump to content
xt:Commerce Community Forum

xt Commerce API - setArticle löscht einige Felder bei Aktualisierung


Crafter
 Share

Recommended Posts

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?

Link to comment
Share on other sites

  • 2 weeks later...

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 3 years later...

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.

Link to comment
Share on other sites

  • 1 month later...

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).

Link to comment
Share on other sites

  • 9 months later...

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. 

 

 

 

 

 

 

 

 

 

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
  • Create New...