ansgaransgar MemberComments: 16 Received thanks: 2 Member since: February 25

Hallo,

per Admin API kann ich bereits eine Paket-Sendungsnummer aus unserer Warenwirtschaft speichern:
PATCH auf /api/v1/order-delivery/xyz mit PostField trackingCodes=[123]

Ich möchte nun auch den Lieferstatus von "open" auf "shipped" patchen, was aber nicht gelingt wenn ich einfach ein PostField "stateId":xyz anhänge. Hierbei bekomme ich den Fehler "This field is write protected".

Wie kann ich per API den Lieferstatus einer Bestellung von "open" auf "shipped" ändern?

Danke für Vorschläge!
Ansgar

Answers

  • ansgaransgar MemberComments: 16 Received thanks: 2 edited March 20 Member since: February 25

    Mein bisheriger Code funktioniert nur für trackingCodes, nicht aber für den Lieferstatus:

    $statesShipped = $api->get('/api/v1/state-machine-state?filter[technicalName]=shipped');
    $shippedStateId = $statesShipped->data[0]->id ?? null;
    
    $deliv = $api->get('/api/v1/order-delivery?filter[orderId]=xyz');
    foreach($deliv->data as $d) {
        $api->patch('/api/v1/order-delivery/'.$d->id,
            [
                'trackingCodes' => ['helloFoo12345'],
                //'stateId' => $shippedStateId <= "This field is write protected"
                //'relationships.stateMachineState.id' => $shippedStateId <= funzt auch nicht
                'relationships'=>['stateMachineState'=>['id' => $shippedStateId]]
            ]);
    }
    

     

  • ansgaransgar MemberComments: 16 Received thanks: 2 Member since: February 25

    Konnte das durch die Untersuchung der XHR Aufrufe im Admin-Bereich herausfinden:

    $api->post('/api/v1/_action/order_delivery/'.$delivery->id.'/state/ship');

    Daraufhin wird auch die zugehörige Mail an den Kunden verschickt ("Bestellung bei xyz wurde ausgeliefert")

    Thanked by 1Moorleiche
Sign In or Register to comment.