Varianten Vorauswahl setzen

shopware 4.3.0; über die API Schnittstelle importieren und gleichen wir die Artikel in Shopware mit den Varianten ab. Jetzt haben wir das Problem das immer die erste Variante als Vorauswahl auf True gesetzt ist, ob diese manchmal gar nicht aktiv (nicht verfügbar) ist. Das führt dann beim Aufruf des Artikel zur Anzeige „Auswahl steht nicht zu verfügung“, was von Kunden wohl häufiger als „Artikel nicht lieferbar“ interpretiert wird und deshalb der Kauf nicht getätigt wird. Über welche Parameter läßt sich die Vorauswahl verändern bzw. gibt es eine Einstellung der Art „erste verfügbare/aktive Variante als Vorausauswahl setzen“?

hi, de Vorauswahl triffst du mir dem Parameter isMain welche Variante die Vorauswahl ist könntest du vielleicht in einer Schleife ermitteln und dann zum Beispiel die erste mit bestand als Vorauswahl setzen. Mein Varianten-Array sieht so aus: $articleParams['variants'][] = array( 'isMain' =\> (int)$defaultAppearance == (int)$appearanceId[0] ? 1 : 0, 'number' =\> $k \> 0 ? $articleId . '.' . $k : $articleId, 'inStock' =\> $itemStockState['quantity'], 'active' =\> $itemStockState['available'], 'additionaltext' =\> $v[0] . ' / ' . $v[1], 'configuratorOptions' =\> array( array('option' =\> $v[0], 'group' =\> 'Größe'), array('option' =\> $v[1], 'group' =\> 'Farbe') ), 'prices' =\> $this-\>getPriceArray( array( 'price' =\> (string)$article-\>price-\>vatIncluded, 'pseudoprice' =\> 0, 'baseprice' =\> 0 ) ), 'taxId' =\> 1, 'attribute' =\> array ( 'maxoutAppearanceId' =\> (int)$appearanceId[0], 'maxoutSizeId' =\> (int)$sizeId[0], 'maxoutProductId' =\> (int)$productId, 'maxoutProductTypeId' =\> (int)$productTypeId, ) );

Ah, okay, vielen Dank für den Tip, ich werde mal in diese Richtung schauen und sehen, ob wir das mit der API gelöst kriegen.

Hi! Mit ‚isMain‘ funktioniert das bei mir nicht (SW5). Alle anderen Felder im Varianten/Artikel-Array funktionieren normal und wie gehabt, isMain bleibt ohne Funktion … array(26) { ["active"]=\> bool(true) ["lastStock"]=\> int(0) ["images"]=\> array(1) { [0]=\> array(3) { ["mediaId"]=\> int(672) ["position"]=\> int(1) ["main"]=\> int(1) } } ["changed"]=\> string(24) "2015-05-07T16:01:10+0200" ["number"]=\> string(14) "Y-VATER-ROT-XL" ["inStock"]=\> int(55) ["weight"]=\> NULL ["width"]=\> NULL ["len"]=\> NULL ["height"]=\> NULL ["ean"]=\> string(13) "5645777733338" ["supplierNumber"]=\> string(0) "" ["releaseDate"]=\> NULL ["shippingFree"]=\> int(0) ["shippingTime"]=\> NULL ["purchaseSteps"]=\> NULL ["minPurchase"]=\> NULL ["maxPurchase"]=\> NULL ["purchaseUnit"]=\> float(0.85) ["referenceUnit"]=\> float(1) ["unitId"]=\> int(10) ["packUnit"]=\> string(6) "Stück" ["isMain"]=\> bool(true) ["prices"]=\> array(1) { [0]=\> array(7) { ["customerGroupKey"]=\> string(2) "EK" ["price"]=\> float(13) ["pseudoPrice"]=\> NULL ["from"]=\> int(1) ["to"]=\> string(8) "beliebig" ["basePrice"]=\> int(0) ["percent"]=\> int(0) } } ["configuratorOptions"]=\> array(2) { [0]=\> array(3) { ["option"]=\> string(3) "Rot" ["group"]=\> string(5) "Farbe" ["optionId"]=\> int(114) } [1]=\> array(3) { ["option"]=\> string(2) "XL" ["group"]=\> string(7) "Größe" ["optionId"]=\> int(71) } } ["articleId"]=\> int(186) } Macht auch keinen Unterschied ob 1 oder true. In der Liste der Varianten bleiben immer alle deaktiviert. Gibt es noch etwas zu beachten? UPDATE: Ich habe mal geguckt, isMain taucht gar nicht irgendwo auf. In der Varianten-Resource z.B. nicht: http://wiki.shopware.com/REST-API-Varianten-Endpunkt_detail_1694.html Ich wäre sehr daran interessiert, wie man ein Kind als Vorauswahl setzen kann! :slight_smile: Freue mich über Ideen oder Hilfe :slight_smile: Schöne Grüße, Niklas

Falls du die Varianten-Resource nutzt, versuch mal bei der Variante die vorausgewählt werden soll ‘kind’ auf 1 und bei allen anderen Varianten ‘kind’ auf 2 zu setzen. ‘isMain’ funktioniert nur wenn du die Artikel-Resource nutzt.

Bei mir hatte das eben den Effekt, dass das Kind als Vorauswahl eingestellt wurde, es aber zusätzlich als Einzelartikel im Artikelstamm vorlag. ‚kind‘ ist ja glaube ich auch eig. das Kennzeichen, ob es sich grundsätzlich um eine Variante handelt. Die Vaterartikel (Hauptartikel) haben eine 1, die Kinder eine 2. Also irgendwie nur zu Hälfte korrekt … Aber Danke! Wenigstens hat das schon einmal eine Auswirkung gezeigt. Niklas

kind definiert die Vorauswahl bei Varianten, sprich welche Variante für den Kunden vorausgewählt ist, sollte Auswahl in der Varianten Konfiguration gewählt sein. In der MysQl Tabelle ist die Vorauswahl der Variante zu finden unter: S_articles_details -> kind 2 = Vorauswahl false 1 = Vorauswahl true