ReimersReimers MemberComments: 9 Received thanks: 0 Member since: September 2020

Hallo!

Wie man den Lieferstatus ändert, hat ansgar schon beschrieben.

Aber wie ändere ich den Bestellstatus?

Laut der "ausführlichen" Doku soll es mit einer Action Route folgendermaßen gehen: POST /api/v{version}/_action/order/{orderId}/state/{transition}

Den "transition" Wert habe ich mir bei GitHub raus gesucht.

Meine URI sieht dann so aus: 
PostAsync: https://{MeinShop}/api/v3/_action/order/{MeineOrderId}/state/in_progress

Wenn ich hiermit versuche, den Status von "open" auf "in_progress" zu ändern, erhalte ich den Fehler: 500 Internal Server Error

Kann jemand helfen?

Danke!

 

Answers

  • ReimersReimers MemberComments: 9 Received thanks: 0 Member since: September 2020

    Aha, "hanshuckebein" hat es erklärt: Per API Lieferstatus einer Bestellung ändern - Shopware Community Forum Danke noch einmal!

    Der Grund ist, "in_progress" existiert in der Tabelle "state-machine-transition" nicht. Mit "process" z.B. funktioniert es bei mir.

    Schade, dass dies in der Doku nicht beschrieben wird. Man verbrät viel Zeit...

  • LiversonLiverson MemberComments: 89 Received thanks: 14 Member since: March 2013

    irgendwie funzt das nicht, wenn ich z.B. der Orderstatus via API ändern will, bspw:

    {meineURL}/api/v3/_action/order/8793ab3829a04b72b2a02c88904209b4/state/in_progress

    komt folgende Fehlermeldung

     

    {

    "errors": [

    {

    "status": "400",

    "code": "SYSTEM__ILLEGAL_STATE_TRANSITION",

    "title": "Bad Request",

    "detail": "Illegal transition \"in_progress\" from state \"7e87ade3b8a5449ba81d7d22675d4f34\". Possible transitions are: ",

    "meta": {

    "parameters": {

    "transition": "in_progress",

    "currentState": "7e87ade3b8a5449ba81d7d22675d4f34",

    "possibleTransitionsString": "",

    "possibleTransitions": []

    }

    }

    }

    ]

    }

    Die orderStates für die URL müssten doch die sein? https://github.com/shopware/platform/blob/master/src/Core/Checkout/Order/OrderStates.php

  • ReimersReimers MemberComments: 9 Received thanks: 0 edited December 2020 Member since: September 2020

    Hallo Liverson,

    ja, müsste man meinen. Für die ActionRoutes sind die es aber wohl nicht.
    Die gültigen Werte (action_name) findet man in der Tabelle /api/v3/state-machine-transition
    und die dazugehörige stateMachineId über den TechnicalName in der Tabelle /api/v3/state-machine.

    (So etwas findet man leider nicht in der Doku. Warum auch. So kann man wenigstens Wochen verbraten, um das heraus zu finden...)

  • LiversonLiverson MemberComments: 89 Received thanks: 14 Member since: March 2013

    Hi, ich habs grade rausgefunden, was das Problem war:
    Man muss die Reihenfolge der Stati beachten, man darf nur immer den nächsten Status machen, also von open => process od. cancel => complete od. cancel => b. Bed. reopen

    Thanked by 1Reimers
  • CallMeAlexCallMeAlex MemberComments: 80 Received thanks: 14 Member since: January 2020

    Hallo, habe nun das gleiche Probleme bzw. ein anderes. Der Status wird zwar geändert, bekomme aber dennoch ein 500 Fehler zurück.

     

    {
        "errors": [
            {
                "code": "0",
                "status": "500",
                "title": "Internal Server Error",
                "detail": "Call to a member function search() on null"
            }
        ]
    }

     

  • ReimersReimers MemberComments: 9 Received thanks: 0 Member since: September 2020

    Hallo, wie sieht denn der Aufruf aus?

  • CallMeAlexCallMeAlex MemberComments: 80 Received thanks: 14 Member since: January 2020

    Hallo, wie sieht denn der Aufruf aus?

    Mein Aufruf sieht so aus:

    api/v3/_action/order/46b71ca9dafb45ad9717d82d97b2777c/state/process

     Je nach Bestellung wenn process ist, wird complete genutzt.

  • LiversonLiverson MemberComments: 89 Received thanks: 14 Member since: March 2013

    auch gecheckt ob die OrderId 100% korrekt ist?

  • CallMeAlexCallMeAlex MemberComments: 80 Received thanks: 14 Member since: January 2020

    auch gecheckt ob die OrderId 100% korrekt ist?

    Ja OrderId war richtig. Fehler aber gefunden, ein Plugin hat die OrderConverter class extended wo die Variable orderAddressRepository als Privat deklariert wurde. Und im Extend wird nicht der Konstruktor der Klass OrderConverter aufgerufen, weshalb die Variable nie gesetzt wurde.

Sign In or Register to comment.