# Recalculate via API

**URL:** <https://forum.shopware.com/t/recalculate-via-api/86184>\
**Category:** Programmierung\
**Created:** [17. März 2021 um 09:13 UTC](https://forum.shopware.com/t/recalculate-via-api/86184 "2021-03-17T09:13:46Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![M\_M](https://avatars.discourse-cdn.com/v4/letter/m/9fc29f/32.png) [@M\_M](https://forum.shopware.com/u/M_M)\
**Post date:** [17. März 2021 um 09:13 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/1 "2021-03-17T09:13:46Z")

</div>

Hallo,

ich würde gerne über die API per POST an /api/v3/\_action/order/e12f4565aa2b40c0873b565e7f2f7b38/recalculate die Bestellung neu berechnen lassen, nachdem ich retournierte Ware von der Bestellung runter genommen habe. Die Modifikation der Bestellung klappt, jedoch aktualisiert sich der Betrag nicht. Wenn ich daher den oben gannenten POST ausführe, bekomme ich folgende Meldung:

{

```
"errors": [

    {

        "status": "400",

        "code": "CHECKOUT__ORDER_RECALCULATION_FAILED",

        "title": "Bad Request",

        "detail": "Order with id \"e12f4565aa2b40c0873b565e7f2f7b38\" could not be recalculated. Live versions can't be recalculated. Please create a new version.",

        "meta": {

            "parameters": {

                "orderId": "e12f4565aa2b40c0873b565e7f2f7b38",

                "details": "Live versions can't be recalculated. Please create a new version."

            }

        }

    }

]

```

}

Hat jemand eine Idee wie ich die erneute Berechnung anstoßen kann? Das Backend selbst kanns ja scheinbar mit dem API Request.

Vielen Dank

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [17. März 2021 um 10:07 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/2 "2021-03-17T10:07:08Z")

</div>

Wenn du eine Bestellung im Admin editierst, kannst du dir ja die API-Requests im Browser ansehen. Der Admin spricht ja auch nur mit der API. Am besten da einfach abschauen, wie das gemacht wird.  
Grundsätzlich erzeugt ein „Edit“ eine neue Version der Bestellung, soweit ich das weiß.

---

<div class="post-metadata">

**Author:** ![M\_M](https://avatars.discourse-cdn.com/v4/letter/m/9fc29f/32.png) [@M\_M](https://forum.shopware.com/u/M_M)\
**Post date:** [17. März 2021 um 10:13 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/3 "2021-03-17T10:13:52Z")

</div>

Danke @Moritz_Naczenski

Wieso krieg ich dann die geschriebene Fehlermeldung? An der ID der Bestellung ändert sich ja scheinbar nichts. Die API Requests im Browser habe ich zu Testzwecken auch einfach mal in Postman Copy/Pasted. Bekomme ich den selben Fehler.

Änderung an der Bestellung funktioniert, Neukalkulation direkt im Anschluss nicht.

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [17. März 2021 um 10:21 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/4 "2021-03-17T10:21:06Z")

</div>

Legst du denn eine neue Version der Order an und arbeitest mit dieser Version?  
Das sagt die Fehlermeldung dir ja auch.

Kann dir keine Lösung aufzeigen, aber wenn du es in der gleichen Reihenfolge machst und die entsprechende neue Version UUID mit übergibst, sollte es so funktionieren. Wie du sagst macht der Admin ja das gleiche.

Soweit ich sehe, startet alles mit dem Version Call: `/api/v3/_action/version/order/76a466770f8b4189b6ab2085fba25bfd`

---

<div class="post-metadata">

**Author:** ![j.hofmann](https://avatars.discourse-cdn.com/v4/letter/j/ecccb3/32.png) [@j.hofmann](https://forum.shopware.com/u/j.hofmann)\
**Post date:** [26. Januar 2022 um 09:09 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/5 "2022-01-26T09:09:40Z")

</div>

Beim Editieren im Adminbereich ist mir nach längerem Debugging aufgefallen dass beim /recalculate Request die UUID der neuen Order-Version im Header „sw-version-id“ übergeben wird.

---

<div class="post-metadata">

**Author:** ![till](https://avatars.discourse-cdn.com/v4/letter/t/22d042/32.png) [@till](https://forum.shopware.com/u/till)\
**Post date:** [3. Juni 2022 um 09:12 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/6 "2022-06-03T09:12:47Z")

</div>

Danke, der Tipp hat mir geholfen 😃

---

<div class="post-metadata">

**Author:** ![AFSStein](https://avatars.discourse-cdn.com/v4/letter/a/bc8723/32.png) [@AFSStein](https://forum.shopware.com/u/AFSStein)\
**Post date:** [28. September 2022 um 15:44 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/7 "2022-09-28T15:44:32Z")

</div>

Vielen Dank, ich hab echt lange rum probiert 😅

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [28. September 2022 um 17:18 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/8 "2022-09-28T17:18:55Z")

</div>

Ja genau so. Ich hab damit auch Tage verbracht, nochmal als Recap:

- Erzeugen einer neuen Version für eine Order
- Order To Cart
- Cart editieren
- Cart To Order
- Recalc aufrufen
- Merge Version auf die Live Version

---

<div class="post-metadata">

**Author:** ![pcs](https://avatars.discourse-cdn.com/v4/letter/p/9d8465/32.png) [@pcs](https://forum.shopware.com/u/pcs)\
**Post date:** [29. Oktober 2023 um 15:19 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/9 "2023-10-29T15:19:46Z")

</div>

Der Workflow scheint nicht mehr zu gehen…

```auto
api/_action/version/order/018b70eb080b71fd84f2a206566d0373

```

für die Neue version

```auto
'api/order/018b70eb080b71fd84f2a206566d0373', [
              'body' => '{
                "id" : "018b70eb080b71fd84f2a206566d0373",
                "lineItems": [{
                    "id" : "018b70eb080b71fd84f2a20650f7dbae",
                    "versionId" : "'. $data['versionId'] .'",
                    "quantity" : 85
                    
                }],

```

dann änderung der item line

```auto
/api/_action/order/018b70eb080b71fd84f2a206566d0373/recalculate?versionId='.$data['versionId'].'

```

fehlermeldung  
[detail] =\> Order with id 018b70eb080b71fd84f2a206566d0373 can not be recalculated because it is in the live version. Please create a new version

Ich mache es genau so wie es in Admin auch gemacht wird. es wird einfach nicht neu Kalkuliert.

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [30. Oktober 2023 um 21:24 UTC](https://forum.shopware.com/t/recalculate-via-api/86184/10 "2023-10-30T21:24:48Z")

</div>

wenn ich mich recht erinnere wird die Version NICHT mit einem CGI Parameter sondern durch einen Header ausgewählt. Schau auch mal im Admin auf die Request Header …
