Hallo Zusammen,
ich dreh grad ziemlich am Rad, da ich es nicht schaffe über die API Produktvarianten anzulegen und diese mit dem configuratorSet bzw. mit den options zu verbinden. Ich kann es leider auch im Shopware-Backend und über die Chrome-DeveloperTools (Register Network) nicht genau nachvollziehen, wie man das genau macht.
=========================
Die Kurzfassung:
Beim Setzen der optionIds der Produktvariante über den product-Endpoint bekomme ich folgende Fehlermeldung:
“This field is write-protected. /0/optionIdsoptionIds”
Welche alternative Möglichkeit gibt es da, wenn ich das optionsIds-Array so nicht setzen darf?
=========================
Die Ausführliche Fassung:
Ich gehe wie folgt vor:
Zuerst das Hauptprodukt anlegen:
https://…/api/v1/product
POST
{
"id": "e4433372d14e415ea5543b58c612b28d",
"active": true,
"name": "Variantenprodukt",
"description": "Lorem ipsum dolor sit amet",
"weight": 0.0,
"width": 0.0,
"height": 0.0,
"ean": "",
"purchasePrice": 0,
"purchaseUnit": 1,
"referenceUnit": 1,
"packUnit": "Stück",
"releaseDate": null,
"stock": 300,
"manufacturerId": null,
"manufacturerNumber": "",
"productNumber": "SWDEMO10005",
"length": 0.0,
"taxId": "83eb170e3ee04d66bb6b40f063dda009",
"price": [
{
"net": 16.7983193277311,
"linked": true,
"gross": 19.989999771118164,
"currencyId": "b7d2554b0ce847cd82f3ac9bd1c0dfca"
}
],
"visibilities": [
{
"visibility": 30,
"salesChannelId": "f883064f04de4071a885405c381161a4"
}
]
}
OK. Funktioniert.
Bevor ich die Produktvariante hinzufüge, erweitere ich das Konfigurator-Set des Hauptproduktes um die relevanten Optionen:
https://…/api/v1/product/e4433372d14e415ea5543b58c612b28d
PATCH
{
"configuratorSettings": [
{
"optionId": "41e5013b67d64d3a92b7a275da8af441"
},
{
"optionId": "2bfd278e87204807a890da4a3e81dd90"
}
]
}
OK. Funktioniert.
Produktvariante anlegen. Hier wäre ich davon ausgegangen, dass man über die optionIds die Zuordnung an der Produktvariante machen könnte:
https://…/api/v1/product
POST
{
"id": "55525971b3d9474dad68d81c6c836f7c",
"parentId": "e4433372d14e415ea5543b58c612b28d",
"active": true,
"name": "Variante 1",
"description": "",
"weight": 0.0,
"width": 0.0,
"height": 0.0,
"ean": "",
"purchasePrice": 0,
"purchaseUnit": 1,
"referenceUnit": 1,
"packUnit": "Stück",
"releaseDate": null,
"stock": 50,
"manufacturerId": null,
"manufacturerNumber": "",
"productNumber": "SWDEMO10005.1",
"length": 0.0,
"taxId": "83eb170e3ee04d66bb6b40f063dda009",
"optionIds": [
"41e5013b67d64d3a92b7a275da8af441",
"2bfd278e87204807a890da4a3e81dd90"
],
"visibilities": [
{
"visibility": 30,
"salesChannelId": "f883064f04de4071a885405c381161a4"
}
]
}
Funktioniert nicht. Dies führt zu folgendem Fehler:
{
"errors": [
{
"code": "FRAMEWORK__WRITE_CONSTRAINT_VIOLATION",
"status": "400",
"detail": "This field is write-protected.",
"template": "This field is write-protected.",
"meta": {
"parameters": [
"user",
""
]
},
"source": {
"pointer": "/0/optionIdsoptionIds"
}
}
]
}
Welche alternative Möglichkeit gibt es da, wenn ich das optionsIds-Array so nicht setzen darf?
Vielen Dank im Vorhinein für euere Hilfe. Ich wäre unfassbar dankbar, da ich schon sehr lange am Suchen bin.
LG Florian