Obwohl zweimal dieselben Daten im PUT mitgegeben werden, ergeben sich unterschiedliche Preise in s_articles_prices.
Das Ganze kann so nachgestellt werden:
-
Voraussetzung: Artikel ist vorhanden, aber keine Preise in s_articles_prices
-
Testschritt 1: Ausführen PUT /api/articles mit neuen Preisen in mainDetail/prices:
array (
‘id’ => 214635,
‘mainDetailId’ => 214635,
…,
‘mainDetail’ =>
array (
‘prices’ =>
array (
0 =>
array (
‘customerGroupKey’ => ‘EK’,
‘price’ => ‘69.33’,
‘from’ => ‘1’,
‘to’ => ‘beliebig’,
‘customerGroup’ =>
array (
‘id’ => 1,
‘key’ => ‘EK’,
…,
),
),
1 =>
array (
‘customerGroupKey’ => 88,
‘price’ => ‘26.99’,
‘from’ => ‘1’,
‘to’ => ‘beliebig’,
‘customerGroup’ =>
array (
‘id’ => 57,
‘key’ => ‘88’,
…,
),
),
2 =>
array (
‘customerGroupKey’ => 20,
‘price’ => ‘26.99’,
‘from’ => ‘1’,
‘to’ => ‘beliebig’,
‘customerGroup’ =>
array (
‘id’ => 88,
‘key’ => ‘20’,
…,
),
),
),
…,
),
…,
) -
Ergebnis: Artikel mit richtigen Preisen/Preisgruppen in s_articles_prices vorhanden (Preisgruppen EK, 88, 20)
-
Testschritt 2: Erneutes Ausführen PUT(Batch) /api/articles mit exakt gleichen Preisen in mainDetail/prices (array siehe 2.)
-
Resultat: Fehlende und doppelte Preise in s_articles_prices:
Preisgruppen EK, 88, 88 vorhanden - Preisgruppe 20 fehlt
Mir ist aufgefallen, dass dies nur passiert, wenn die ID einer Customer Group mit dem Key einer anderen Customer Group übereinstimmt.
In diesem Fall hat die erste Preisgruppe einen customerGroupKey von 88 und die zweite Preisgruppe (mit Key 20) die ID 88. Nach dem Ausführen von Testschritt 2 ist die erste Preisgruppe (also die mit Key 88) doppelt vorhanden und die zweite Preisgruppe (ID ist 88) gar nicht vorhanden.
Stimmt was an den mitgegebenen Daten nicht (siehe 2.)? Oder ist das eher ein Bug von Shopware?