Guten Morgen,
ich habe ein Artikelimport Plugin, welches Artikel mit Varianten erstellt. Das ganze wurde auf Basis SW 6 EA etc entwickelt.
Seit ich auf die 6.1.1 und jetzt 6.1.3 aktualisiert habe, bekomm ich bei den Childs Probleme. Es wird zwingend ein „Name“ benötigt.
Wenn ich ein „Name“ angebe, so gibt es keine Vererbung und in der product_translation steht in jeder Variante der Name des Hauptartikels.
Theoretisch muss in der product_translation aber null stehen, damit die Vererbung zum Hauptartikel klappt.
Was mich irritiert, wenn ich im Backend den Namen auflöse und die Vererbung aktiviere, so wird über die API name = null im Payload übertragen.
Warum geht dies dann nicht (mehr) über das ProductRepository?
Hier ein Auszug vom Array:
$product['children'][] =
[
'productNumber' => $sizeItem['productNumber'],
'stock' => $sizeItem['stock'],
'options' => [['id' => $sizeItem['optionId']]],
'price' => [['currencyId' => 'b7d2554b0ce847cd82f3ac9bd1c0dfca', 'gross' => $sizeItem['price'], 'net' => $sizeItem['price'] / 1.19, 'linked' => false]],
]
];
Hat jemand eine Idee dazu?
Viele Grüße
Ottscho
Also bei mir scheint das auch ohne Name zu funktionieren. In dem SwagPlatformDemoData Plugin sind die Beispiele auch ohne.
Auszug aus dem Plugin:
'configuratorSettings' => [
[
'optionId' => '41e5013b67d64d3a92b7a275da8af441',
],
[
'optionId' => '54147692cbfb43419a6d11e26cad44dc',
],
],
'children' => [
[
'productNumber' => 'SWDEMO10007.1',
'stock' => 50,
'options' => [
[
'id' => '41e5013b67d64d3a92b7a275da8af441'
],
]
],
[
'productNumber' => 'SWDEMO10007.2',
'stock' => 50,
'options' => [
[
'id' => '54147692cbfb43419a6d11e26cad44dc'
],
]
]
]
Ich bin auf dem aktuellen 6.1 Branch.
Hallo Claudio,
danke für deine Info. Evtl. sehe ich auch vor lauter Bäumen den Wald nicht. Aber sobald ich bei einem Import den Name im Child weg lasse, erhalte ich diese Meldung:
There are 12 error(s) while writing data.
1. [/0/children/0/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/1/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/2/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/3/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/4/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/5/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/6/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/7/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/8/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/9/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/10/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
1. [/0/children/11/translations/2fbb5fe2e29a4d70aa5854ce7ce3e20b/name] Dieser Wert sollte nicht leer sein.
Anbei mal mein Produkt als komplettes Array (gekürzte Version). Evtl. fällt dir was auf?
array(15) {
["name"]=>
string(24) "Florett 60920 60 Varomed"
["productNumber"]=>
string(13) "570-00-09-001"
["stock"]=>
int(13)
["isCloseout"]=>
bool(true)
["description"]=>
string(0) ""
["price"]=>
array(1) {
[0]=>
array(4) {
["currencyId"]=>
string(32) "b7d2554b0ce847cd82f3ac9bd1c0dfca"
["gross"]=>
string(5) "65.95"
["net"]=>
float(55.420168067227)
["linked"]=>
bool(false)
}
}
["manufacturerId"]=>
string(32) "648ffef3522143718bfa2c7067cde3c4"
["taxId"]=>
string(32) "0000d75fa1194bfda1cc41225b4d46b8"
["categories"]=>
array(1) {
[0]=>
array(1) {
["id"]=>
string(32) "c016033979dc4f84b001dcb559b7b2fb"
}
}
["visibilities"]=>
array(1) {
[0]=>
array(2) {
["salesChannelId"]=>
string(32) "6b153442d6b14577b43714eecb973de7"
["visibility"]=>
int(30)
}
}
["customFields"]=>
array(3) {
["custom_his_sizeindex"]=>
string(1) "6"
["custom_his_stock_fel"]=>
int(8)
["custom_his_stock_sch"]=>
int(5)
}
["media"]=>
array(3) {
[0]=>
array(2) {
["mediaId"]=>
string(32) "bf9c09e3eef846999c47174b13545b00"
["position"]=>
int(1)
}
[1]=>
array(2) {
["mediaId"]=>
string(32) "28a4ba0691434418ba9dc126acc602e0"
["position"]=>
int(2)
}
[2]=>
array(2) {
["mediaId"]=>
string(32) "09b2b8f060e04582bef8253f43de7c3d"
["position"]=>
int(3)
}
}
["cover"]=>
array(2) {
["mediaId"]=>
string(32) "389d84b671e44c45b12a93f9be6c5f79"
["position"]=>
int(0)
}
["children"]=>
array(12) {
[0]=>
array(5) {
["productNumber"]=>
string(15) "570-00-09-001-6"
["stock"]=>
int(13)
["options"]=>
array(1) {
[0]=>
array(1) {
["id"]=>
string(32) "e4818da496044a4f9f7a8ddcb85e7e43"
}
}
["price"]=>
array(1) {
[0]=>
array(4) {
["currencyId"]=>
string(32) "b7d2554b0ce847cd82f3ac9bd1c0dfca"
["gross"]=>
string(5) "65.95"
["net"]=>
float(55.420168067227)
["linked"]=>
bool(false)
}
}
["customFields"]=>
array(3) {
["custom_his_sizeindex"]=>
string(1) "6"
["custom_his_stock_fel"]=>
int(8)
["custom_his_stock_sch"]=>
int(5)
}
}
[1]=>
array(5) {
["productNumber"]=>
string(15) "570-00-09-001-7"
["stock"]=>
int(8)
["options"]=>
array(1) {
[0]=>
array(1) {
["id"]=>
string(32) "09219620fdc04ea6998987b5eaceed44"
}
}
["price"]=>
array(1) {
[0]=>
array(4) {
["currencyId"]=>
string(32) "b7d2554b0ce847cd82f3ac9bd1c0dfca"
["gross"]=>
string(5) "65.95"
["net"]=>
float(55.420168067227)
["linked"]=>
bool(false)
}
}
["customFields"]=>
array(3) {
["custom_his_sizeindex"]=>
string(1) "7"
["custom_his_stock_fel"]=>
int(5)
["custom_his_stock_sch"]=>
int(3)
}
}
}
["configuratorSettings"]=>
array(12) {
[0]=>
array(1) {
["optionId"]=>
string(32) "e4818da496044a4f9f7a8ddcb85e7e43"
}
[1]=>
array(1) {
["optionId"]=>
string(32) "09219620fdc04ea6998987b5eaceed44"
}
[2]=>
array(1) {
["optionId"]=>
string(32) "234ca017cbf7449fa7f3cca099877671"
}
[3]=>
array(1) {
["optionId"]=>
string(32) "201d20541a7b411790393a0b85e63730"
}
[4]=>
array(1) {
["optionId"]=>
string(32) "91849c236cce4faca6aaf5864b42bf69"
}
[5]=>
array(1) {
["optionId"]=>
string(32) "11b8197c4b1f48b3b9432ec914211404"
}
[6]=>
array(1) {
["optionId"]=>
string(32) "1b3dbadea3a245bdbdd61a58ef69e71e"
}
[7]=>
array(1) {
["optionId"]=>
string(32) "5f63a457a50a4abaa5f276c58f0fb89b"
}
[8]=>
array(1) {
["optionId"]=>
string(32) "5d39215206874ca693aa30df402322ee"
}
[9]=>
array(1) {
["optionId"]=>
string(32) "5241a8ab8de846a7b0b4b72aa555fc26"
}
[10]=>
array(1) {
["optionId"]=>
string(32) "52700115b4764fb19636ea7bb5b18424"
}
[11]=>
array(1) {
["optionId"]=>
string(32) "0060069430a1475b99db7fee7c43a20f"
}
}
}
So auf Anhieb leider nicht. Was ich aber mache, ist beim Hauptartikel den Namen für die Sprachen explizit zu setzen. Weiß nicht ob das einen Unterschied macht.
$importData =
[
'name' => [
'de-DE' => 'Name DE',
'en-GB' => 'Name EN',
],
Allerdings funktioniert es bei mir auch, wenn ich das nicht mache.
auf der Version 6.1.4 tritt das Problem beim Einzel-Post der Varianten auf. Hier sind name, tax dann zwingend erforderlich. Wenn ich sie als Children (wie von claudio am 4. März geschrieben) mitgebe, dann funktioniert es ohne name und tax und die Felder werden wie erwartet vom Hauptartikel vererbt.