Artikel Export: 'articleID' cannot be null

Folgender JSON String setze ich mit einem POST auf “…api/Articles” ab: { “active”:true, “name”:“abc123”, “supplier”:“hersteller1”, “tax”:19, “MainDetail”: { “number”:“123456789”, “prices”: [{ “customerGroupKey”:“EK”, “price”:99 }] } } Und bekomme folgende Fehlermeldung zurück: (Errormesage: SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‘articleID’ cannot be null Wenn ich den Preis weg lasse, wird der Artikel erfolgreich angelegt. Wo ist das Problem?

Hi, du musst das mainDetail mit Case sensitivity schreiben, dann geht es direkt. { “active”:true, “name”:“abc123”, “supplier”:“hersteller1”, “tax”:19, “mainDetail”: { “number”:“123456789”, “prices”: [{ “customerGroupKey”:“EK”, “price”:99 }] } }

1 „Gefällt mir“

[quote=“schwindt_mg”]Hi, du musst das mainDetail mit Case sensitivity schreiben, dann geht es direkt. { “active”:true, “name”:“abc123”, “supplier”:“hersteller1”, “tax”:19, “mainDetail”: { “number”:“123456789”, “prices”: [{ “customerGroupKey”:“EK”, “price”:99 }] } }[/quote] Mein Gott, da wäre ich im Leben nicht drauf gekommen… Wie auch, mit solch einer Fehlermeldung!! vielen Dank Marco! :wink:

noch ne andere Sache, jetzt meckert er über die Einheit die ich übergebe. da ich die ID der Maßeinheit ja nicht kenne, dachte ich es ginge vielleicht das ich “unit”:“stk” übergeb in der Hoffnung das die Api so schlau ist und die ID selbst ermittelt oder im Falle das es die Einheit nicht gibt, die Einheit angelegt wird. Aber das mag die Api nicht… Frage hierzu, weisst du ob es über die Rest Api die möglichkeit gibt, Maßeinheiten anzulegen/zu berarbeiten/zu löschen/abzufragen. Ich muss ja irgendwie an die die UnitID kommen. :frowning:

Welche Version benutzt du denn? Ab 4.05. geht folgendes: Anlegen und Referenzieren von Einheiten Ab Shopware 4.0.5 kann statt der Angabe einer Einheit über ‚unitId‘ auch eine Einheit über ‚unit‘ angegeben werden: $articleWithUnit = array( 'name' =\> 'Turnschuh', 'tax' =\> 19, 'supplier' =\> 'Turnschuh Inc.', 'mainDetail' =\> array( 'number' =\> 'turn33', 'prices' =\> array( array( 'customerGroupKey' =\> 'EK', 'price' =\> 999, ), ), 'unit' =\> array( 'unit' =\> 'xyz', 'name' =\> 'Neue Einheit' ) ), ); $client-\>call('articles', ApiClient::METHODE\_POST, $articleWithUnit ); Die REST-API ermittelt dann auf Grund von „unit“ bzw. „name“, ob eine derartige Einheit bereits existiert. Wenn nicht, wird die Einheit neu angelegt und dem Artikel zugewiesen. Bei Folgeaufrufen würde dann die vorhandene Einheit verwendet. Zum Anlegen einer neuen Einheit müssen „unit“ und „name“ übergeben werden - wird lediglich eines der beiden Felder übergeben, wird auf Grund des angegebenen Feldes eine bereits existierende Einheit gesucht; wird diese nicht gefunden, kommt es zu einem Fehler. Weiterhin kann das Feld „id“ innerhalb des „unit“ Arrays gesetzt werden - hier verhält sich die API wie beim Feld „unitID“ - wird die angegebene ID nicht gefunden, wird in jedem Fall ein Fehler geworfen.

[quote=„schwindt_mg“]Welche Version benutzt du denn? Ab 4.05. geht folgendes: Anlegen und Referenzieren von Einheiten Ab Shopware 4.0.5 kann statt der Angabe einer Einheit über ‚unitId‘ auch eine Einheit über ‚unit‘ angegeben werden: $articleWithUnit = array( 'name' =\> 'Turnschuh', 'tax' =\> 19, 'supplier' =\> 'Turnschuh Inc.', 'mainDetail' =\> array( 'number' =\> 'turn33', 'prices' =\> array( array( 'customerGroupKey' =\> 'EK', 'price' =\> 999, ), ), 'unit' =\> array( 'unit' =\> 'xyz', 'name' =\> 'Neue Einheit' ) ), ); $client-\>call('articles', ApiClient::METHODE\_POST, $articleWithUnit ); Die REST-API ermittelt dann auf Grund von „unit“ bzw. „name“, ob eine derartige Einheit bereits existiert. Wenn nicht, wird die Einheit neu angelegt und dem Artikel zugewiesen. Bei Folgeaufrufen würde dann die vorhandene Einheit verwendet. Zum Anlegen einer neuen Einheit müssen „unit“ und „name“ übergeben werden - wird lediglich eines der beiden Felder übergeben, wird auf Grund des angegebenen Feldes eine bereits existierende Einheit gesucht; wird diese nicht gefunden, kommt es zu einem Fehler. Weiterhin kann das Feld „id“ innerhalb des „unit“ Arrays gesetzt werden - hier verhält sich die API wie beim Feld „unitID“ - wird die angegebene ID nicht gefunden, wird in jedem Fall ein Fehler geworfen.[/quote] ich nutze für die Entwicklung ein Demoshop von profihost.com in der Version 4.07. Der Tipp ist schon wieder super, ich wusste nicht das unit als Array übergeben werden muss. Werd ich gleich mal testen.