Preis aktualisieren über die REST API?

Hallo,

ich probiere Shopware seit ein paar Tagen aus. Ich würde gerne die Preise aus einer CSV-Datei aktualisieren. In der Doku steht das man für größere Aktualisierungen die REST API benutzen soll.

Ich bin der Doku gefolgt und habe mir eine kleine PHP Seite gebaut. Artikel abrufen und anzeigen habe ich hinbekommen. Weiterhin habe ich mir nun einen Upload für meine CSV-Datei gebastelt und diese geöffnet. Ich bekomme dann eine Ausgabe in der Form:

Array
(
    [0] => SW10000
    [1] => 0,01
)
Array
(
    [0] => SW10001
    [1] => 0,95
)
Array
(
    [0] => SW10002
    [1] => 1,95
)
Array
(
    [0] => SW10003
    [1] => 2,95
)
Array
(
    [0] => SW10004
    [1] => 3,95
)
Array
(
    [0] => SW10005
    [1] => 4,95
)

Wie bringe ich nun die REST API dazu die Preise zu aktualisieren. Folgendes hat schon funktioniert:

$client->put('articles/2', array(
'name' => 'Ball'
));

Damit konnte ich problemlos den Namen ändern. In der CSV-Datei steht aber nun nur Ordernumber und price. Kann ich über die REST API auch nur diese beiden Sachen ansprechen?

Im Wiki steht ich brauche eine immer die ID. Ich würde das wie im Backend lieber über die Ordernumber machen. Die Artikel kommen sonst aus einem Warenwirtschaftssystem.

Daher denke ich mir, das man die Ordernumber für Shopware aus dem Warenwirtschaftssystem übernehmen kann. Undecided

Das Stichwort das du suchst ist: useNumberAsId

siehe: REST API - Article Resource

Juhu. Danke für den Hinweis. Der Befehl scheint zu klappen. Zumindest kann ich so den Namen ändern. Kann man so auch den Preis ändern?

$client->put('articles/SW0001?useNumberAsId=true', array(
      'price' => 9,95
      ));  

 

Steht alles auf der Seite wie es geht…

Hol dir nen Artikel, guck wie er aufgebaut ist, bau bei dir die Struktur nach, gib die Pflichtangaben an.

Wenn du eine API benutzen willst solltest du auch gucken wie das funktioniert.

Hallo,

danke für die Antworten. Als Frischling ist das nun mal nicht so leicht da durchzublicken.  Foot-in-Mouth
Der Vorschlag von steinsoftware mir erst die Artikel zu holen hat es dann doch gebracht. Ich habe die Struktur nicht kapiert bzw. nicht ordentlich angeschaut.
Für das Update des Preises muss nicht nur das „prices“ array angesprochen werden, sondern auch das „mainDetail“ array. So habe ich jetzt den Namen geändert
und den Preis aktualisiert:

$updateArticle = array(
              'name' => 'Restball22',
              'mainDetail' => array(
              'prices' => array(
                array(
                    'customerGroupKey' => 'EK',
                    'price' => 900,
                ),
              )
            )
            );
            

      $client->put('articles/SW10001?useNumberAsId=true', $updateArticle);

Dabei habe ich wie oben von t2oh4e beschrieben „Number as id“ benutzt.

Es wäre sehr hilfreich, wenn bei 

$client->put('articles/SW0001?useNumberAsId=true', array(
      'price' => 9,95
      ));  

kein success TRUE herauskommt, denn es ist in Wiklichkeit FALSE