# REST-API: Status ID einer Bestellung ändern

**URL:** https://forum.shopware.com/t/rest-api-status-id-einer-bestellung-andern/9147
**Category:** Shopware 3.5
**Tags:** programming
**Created:** [10. Oktober 2012 um 15:04 UTC](https://forum.shopware.com/t/rest-api-status-id-einer-bestellung-andern/9147 "2012-10-10T15:04:28Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![oli](https://avatars.discourse-cdn.com/v4/letter/o/2bfe46/32.png) [@oli](https://forum.shopware.com/u/oli)
#### Post date: [10. Oktober 2012 um 15:04 UTC](https://forum.shopware.com/t/rest-api-status-id-einer-bestellung-andern/9147/1 "2012-10-10T15:04:28Z")

</div>

Ich versuche, den Bestellstatus einer Bestellung über die REST-Api zu ändern. Mit folgendem Snippet müsste es gehen, stattdessen fliegt ne Exception: ` $orderResource = \Shopware\Components\Api\Manager::getResource('Order'); $orderResource-\>update(65, array( 'orderStatusId' =\> 1, )); ` Das Resultat: `The identifier id is missing for a query of Shopware\Models\User\User in Doctrine/ORM/ORMException.php on line 150 Stack trace: #0 Doctrine/ORM/EntityRepository.php(116): Doctrine\ORM\ORMException::missingIdentifierField('Shopware\Models...', 'id') #1 Shopware/Components/Model/ModelRepository.php(164): Doctrine\ORM\EntityRepository-\>find(NULL, 0, NULL) #2 Doctrine/ORM/EntityManager.php(371): Shopware\Components\Model\ModelRepository-\>find(NULL, 0, NULL) #3 Shopware/Models/Order/Order.php(1074): Doctrine\ORM\EntityManager-\>find('Shopware\Models...', NULL) #4 Doctrine/ORM/Mapping/ClassMetadataInfo.php(1880): Shopware\Models\Order\Order-\>beforeUpdate() #5 Doctrine/ORM/UnitOfWork.php(940): Doctrine\ORM\Mapping\ClassMetadataInfo-\>invokeLifecycleCallbacks('postUpdate', Object(Shopware\Models\Order\Order)) #6 Doctrine/ORM/UnitOfWork.php(310): Doctrine\ORM\UnitOfWork-\>executeUpdates(Object(Doctrine\ORM\Mapping\ClassMetadata)) #7 Doctrine/ORM/EntityManager.php(355): Doctrine\ORM\UnitOfWork-\>commit(NULL) #8 Shopware/Components/Api/Resource/Resource.php(196): Doctrine\ORM\EntityManager-\>flush(NULL) #9 Shopware/Components/Api/Resource/Order.php(185): Shopware\Components\Api\Resource\Resource-\>flush() #10 Shopware\Components\Api\Resource\Order-\>update(65, Array)` Wenn man stattdessen das Status-Objekt direkt reinschreibt: ` $orderResource = \Shopware\Components\Api\Manager::getResource('Order'); $state = Shopware()-\>Models()-\>getRepository('Shopware\Models\Order\Status')-\>findOneBy(array( 'id' =\> 1, 'group' =\> 'state', )); $orderResource-\>update(65, array( 'orderStatus' =\> $state, )); ` … dann scheint zwar alles zu funktionieren (keine Exception, das order-object wird returned), allerdings wurde der Status nicht aktualisiert: ` ... ["orderStatus"] =\> &array(5) { ["id"] =\> int(0) ["description"] =\> string(5) "Offen" ["position"] =\> int(1) ["group"] =\> string(5) "state" ["sendMail"] =\> int(1) } ... ` getestet mit Shopware 4.0.3

---

<div class="post-metadata">

### Author: ![Benjamin\_Cremer](https://avatars.discourse-cdn.com/v4/letter/b/a8b319/32.png) [@Benjamin\_Cremer](https://forum.shopware.com/u/Benjamin_Cremer)
#### Post date: [10. Oktober 2012 um 15:59 UTC](https://forum.shopware.com/t/rest-api-status-id-einer-bestellung-andern/9147/2 "2012-10-10T15:59:13Z")

</div>

Hallo Oli, schuld an diesem Verhalten ist ein PostUpdate-Event im Order-Model. Dort wird eine Backend-Session/Backend Benutzer erwartet. Dies wird mit dem nächsten Minor Release gelöst werden. Bis dahin kann ich dir folgenden Fix anbieten: Datei: /engine/Shopware/Models/Order/Order.php Zeile 1074 folgende Codezeilen: ` $user = Shopware()-\>Models()-\>find('Shopware\Models\User\User', Shopware()-\>Auth()-\>getIdentity()-\>id); $history-\>setUser($user); ` durch diese ersetzen: ` if (Shopware()-\>Auth()-\>getIdentity()) { $user = Shopware()-\>Models()-\>find('Shopware\Models\User\User', Shopware()-\>Auth()-\>getIdentity()-\>id); $history-\>setUser($user); } ` Viele Grüße Benjamin Cremer :shopware:

---

<div class="post-metadata">

### Author: ![MAHK](https://avatars.discourse-cdn.com/v4/letter/m/8baadc/32.png) [@MAHK](https://forum.shopware.com/u/MAHK)
#### Post date: [22. März 2016 um 19:18 UTC](https://forum.shopware.com/t/rest-api-status-id-einer-bestellung-andern/9147/3 "2016-03-22T19:18:22Z")

</div>

Ich knuepfe hier einmal an, da wir uns im selben Kontext bewegen.&nbsp;Wir koennen Order und aehnliches&nbsp;muehelos aufrufen und fuer unsere Logistikschnittstelle verwenden. Die Formulierung fuer PUT Bestellstatus,&nbsp;analog den devleoper’s infos gibt uns folgendes zurueck:

```
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "PUT /api/orders/20003?useNumberAsId=true HTTP/1.1[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "Accept-Encoding: gzip,deflate[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "Content-Type: application/json[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "Content-Length: 36[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "Host: shopware.p289761.webspaceconfig.de[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "Connection: Keep-Alive[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "User-Agent: Apache-HttpClient/4.1.1 (java 1.5)[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "Authorization: Digest username="

Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "{[\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> ""data":[{[\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> ""orderStatusId":"8"}[\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:>> "]}[\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "HTTP/1.1 200 OK[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Date: Tue, 22 Mar 2016 15:59:32 GMT[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Server: Apache[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "X-Powered-By: PHP/5.6.10-pl0[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Cache-Control: nocache, private[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Keep-Alive: timeout=5, max=99[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Connection: Keep-Alive[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Transfer-Encoding: chunked[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "Content-Type: application/json[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "69[\r][\n]"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "{"success":true,"data":{"id":3,"location":"http:\/\/shopware.p289761.webspaceconfig.de\/api\/orders\/3"}}"
Tue Mar 22 16:59:36 CET 2016:DEBUG:<< "[\r][\n]"

```

Der Status wird dabei jedoch nicht geaendert. Woher kommt der „success:true“ (welche Info wurde geputted) und wie koennen wir die orderstatusid aendern?

Danke

&nbsp;

Shopware 5.1.2

&nbsp;

---

<div class="post-metadata">

### Author: ![tiefseh](https://avatars.discourse-cdn.com/v4/letter/t/50afbb/32.png) [@tiefseh](https://forum.shopware.com/u/tiefseh)
#### Post date: [15. Mai 2016 um 12:18 UTC](https://forum.shopware.com/t/rest-api-status-id-einer-bestellung-andern/9147/4 "2016-05-15T12:18:46Z")

</div>

wäre auch an einer Lösung interessiert,.&nbsp; Viele WaWi-Plugins, bzw. die Hersteller, bieten keine interne Möglichkeit den Bestellstatus zurück zuschreiben. Dabei ist das ein wirklich wichtiges Feature im Prozess…
