# REST API - Update eines Preises (Nur eine Kundengruppe ohne die anderen zu überschreiben)

**URL:** <https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397>\
**Category:** Programmierung\
**Created:** [19. März 2016 um 09:51 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397 "2016-03-19T09:51:04Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dwza](https://avatars.discourse-cdn.com/v4/letter/d/c57346/32.png) [@Dwza](https://forum.shopware.com/u/Dwza)\
**Post date:** [19. März 2016 um 09:51 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/1 "2016-03-19T09:51:04Z")

</div>

Also ich habe nun schon einige Googleanfragen gestellt, viele Beiträge auch hier im Forum durch gelesen aber es war bis lang noch nicht die richtige Information dabei!  
Ich versuche mittels der REST-API einen Preis in meinem Shop zu aktualisieren.&nbsp;

```
$art = "SW10176-1";

$param = array(
            'mainDetail'=> array(
                'prices' => array(
                    array(
                        'customerGroupKey' => 'EK',
                        'price' => 100.00,
                    )
                )
            )
        );

$rest->put("articles/{$art}?useNumberAsId=true", $param);

```

das ganze funktioniert auch, bis auf einen kleinen Fehler.  
Bei jedem Update werden alle Preise der anderen Kundengruppen überschrieben… also Händlergruppe 1, Händlergruppe 2, Amazonkunden usw.

Meine Frage hier ist, **wie kann ich den Preis aktualisieren ohne die Preise für die anderen Gruppen mit zu geben?**

Probleme:  
Ich kenne die anderen Preise der unterschiedlichen Kundengruppen&nbsp;während des Updates nicht und diese sollen wie gehabt bleiben!  
&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![marcuskreusch](https://avatars.discourse-cdn.com/v4/letter/m/b5ac83/32.png) [@marcuskreusch](https://forum.shopware.com/u/marcuskreusch)\
**Post date:** [19. März 2016 um 10:50 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/2 "2016-03-19T10:50:16Z")

</div>

Auch wenn es nicht die schönste Lösung ist: Du könntest vorher die Preise per REST-API abholen, dann selbst die Preise überschreiben, die du ändern möchtest und das ganze dann senden.

Viele Grüße  
Marcus

---

<div class="post-metadata">

**Author:** ![Dwza](https://avatars.discourse-cdn.com/v4/letter/d/c57346/32.png) [@Dwza](https://forum.shopware.com/u/Dwza)\
**Post date:** [19. März 2016 um 11:10 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/3 "2016-03-19T11:10:09Z")

</div>

An das habe ich auch schon gedacht und das bin ich auch grade am programmieren. Jedoch kann ich mir beim besten willen nicht vorstellen das dieser Effekt so gewollt ist und hoffe dennoch auf ein möglichkeit das mit einem Befehl bzw. Paramter oder auch Korrektur im Source&nbsp;zu unterbinden.

---

<div class="post-metadata">

**Author:** ![Heiner\_Lohaus](https://avatars.discourse-cdn.com/v4/letter/h/b5a626/32.png) [@Heiner\_Lohaus](https://forum.shopware.com/u/Heiner_Lohaus)\
**Post date:** [19. März 2016 um 11:27 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/4 "2016-03-19T11:27:49Z")

</div>

Hi,

dafür gibt es den Merge-Modus:  
&nbsp;[http://community.shopware.com/Shopware-4-REST-API-verwenden\_detail\_989.html#API\_Merge\_Modus\_.28Zusammenf.FChren.29](http://community.shopware.com/Shopware-4-REST-API-verwenden_detail_989.html#API_Merge_Modus_.28Zusammenf.FChren.29)  
Dieser Parameter sollte also den gewnünschten Effekt bringen:

```
 '\_\_options\_prices' =\> array('replace' =\> true),

```

Gruß&nbsp; Heiner

---

<div class="post-metadata">

**Author:** ![Dwza](https://avatars.discourse-cdn.com/v4/letter/d/c57346/32.png) [@Dwza](https://forum.shopware.com/u/Dwza)\
**Post date:** [19. März 2016 um 12:24 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/5 "2016-03-19T12:24:24Z")

</div>

Erst mal Danke Hainer 🙂

Wie soll das dann in meinem Beispiel aussehen ? Laut Doku so:

```
$param = array( 
                'mainDetail'=> array(
                    '__options_prices' => array('replace' => true),
                    'prices' => array(
                        array(
                            'customerGroupKey' => 'EK',
                            'price' => 99.00,
                        )
                    )
                )
        );

```

weil so hat es keinen effekt…

Wenn ich es so machen und EK update dann werden beide Preise auf den angegebenen Preis gesetzt.

Wenn ich das spiel wiedehole aber diesmal mit H dann wird EK auf 0 und H auf den angegeben Preis gesetzt.

Den Optionswert auf FALSE zu setzen bewirkt zwar das der andere Preis erhalten bleibt aber der zu aktualisierende Preis wird nicht aktualisiert sondern nur dem Aktuellen hinzugefügt…

Muss man das irgendwie vorher löschen oder…??? Bin etwas verwirrt. Ich denke auch ein “ausführliche” Antwort kann sicherlich dem einen oder anderen weiter helfen da ich mir nicht vorstellen kann der erste bzw. einzigste mit diesem Problem zu sein 🙂

Ich danke schon mal im Voraus.&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Dwza](https://avatars.discourse-cdn.com/v4/letter/d/c57346/32.png) [@Dwza](https://forum.shopware.com/u/Dwza)\
**Post date:** [21. März 2016 um 12:40 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/6 "2016-03-21T12:40:11Z")

</div>

Um mir vorrübergehen zu helfen habe ich jetzt vorher ein get gesetzt welches mir alle Artikelpreise bzw. das Array **PRICES** holt. Dieses wird durchlaufen und an entsprechner Stelle wird der Preis geändert. Hier tritt aber ein neues Problem auf. Pseudopreise kommen immer Netto und hier muss man erst schauen wie die **MWST** des Artikels ist und diese dann manuell drauf rechnen damit der Preis nicht verfälscht wird. Leider gibt es offensichtlich keine Option sich die Pseudopreise auch Brutto anzeigen zu lassen. Falls doch wäre ich über einen Link zu einer Doku über verfügbare **\_\_options\_xxx** &nbsp;sehr dankbar 🙂

_Falls jemand ein Sample hierzu braucht kann er mich einfach anschreiben oder hier was im Forum schreiben dann poste ich was davon._

Aber die eigentliche Frage ist dennoch nicht gelöst. Jedoch habe ich grade [ein schwerwigenderes Problem](http://forum.shopware.com/discussion/35918/rest-api-auth-geht-nicht-mehr#latest).

---

<div class="post-metadata">

**Author:** ![Joscha\_Schultze](https://avatars.discourse-cdn.com/v4/letter/j/dbc845/32.png) [@Joscha\_Schultze](https://forum.shopware.com/u/Joscha_Schultze)\
**Post date:** [21. März 2016 um 13:07 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/7 "2016-03-21T13:07:42Z")

</div>

> [@Dwza schrieb:](https://forum.shopware.com/profile/19799/Dwza "Dwza")
> 
> `$param = array( 'mainDetail'=> array( '__options_prices' => array('replace' => true), 'prices' => array( array( 'customerGroupKey' => 'EK', 'price' => 99.00, ) ) ) );`

Ist ungetestet aber ich gehe davon aus, dass \_\_options\_prices im array eine Ebene hoch muss. Also eher so:

$param = array( ‚\_\_options\_prices‘ =\> array(‚replace‘ =\> true),&nbsp;‚mainDetail‘=\> array(‚prices‘ =\> array( array( ‚customerGroupKey‘ =\> ‚EK‘, ‚price‘ =\> 99.00, ) ) ) );&nbsp;

&nbsp;

Edit: Ich sehe gerade, dass dein Versuch ja eigentlich genau so auch dokumentiert ist. Also wird mein Tipp wohl nichts anderes machen.

---

<div class="post-metadata">

**Author:** ![Dwza](https://avatars.discourse-cdn.com/v4/letter/d/c57346/32.png) [@Dwza](https://forum.shopware.com/u/Dwza)\
**Post date:** [21. März 2016 um 14:01 UTC](https://forum.shopware.com/t/rest-api-update-eines-preises-nur-eine-kundengruppe-ohne-die-anderen-zu-uberschreiben/35397/8 "2016-03-21T14:01:08Z")

</div>

Hab ja geschrieben das es laut Doku so beschrieben ist… es funktionier an sich auch… nur nicht wie gewollt.  
Der effekt ist das er einen 2. Preis anlegt und nicht den eigentlichen Preis aktualisiert.  
Der 2. Preis wird aber an sich nicht berücksichtigt.&nbsp;Bzw. hat keinen Vorrang.

Und wenn ich überlege das ich mein Script 6 mal am Tag aufrufe dann können im Monat sehr viele Preise zusammen kommen ^^
