Eigene Importfunktion - Variantenzuordnung funktioniert nicht

Hallo zusammen,

ich versuche Artikel eine CSV-Datei von einem Lieferanten nach Shopware zu importieren.
Da es etwas komplexer ist, versuche ich gerade die Daten per PHP - Script in die Datenbank zu schreiben.

Die Artikel werden auch korrekt gespeichert und sie sind auch direkt im Frontend sichtbar. Ich habe allerdings noch ein Problem mit den Varianten. Meiner Meinung nach werden die Varianten ebenfalls korrekt in die Datenbank reingeschrieben und mit den ensprechenden Artikel verknüpft.

Wenn ich die Artikel aber im Backend aufrufe, dann ist der Haken bei “Variantenartikel” nicht gesetzt und eine Zuordnung scheint vom System auch nicht erkannt zu werden.
Die Daten werden in folgende Tabellen gespeichert:

s_articles
s_articles_attributes
s_articles_categories
s_articles_categories_ro
s_articles_details
s_articles_prices
s_article_configurator_options
s_article_configurator_option_relations
s_article_configurator_sets
s_article_configurator_set_group_relations
s_article_configurator_set_option_relations
s_article_configurator_templates
s_article_configurator_templates_attributes
s_article_configurator_template_prices

Anschliessend habe ich bei einem Artikel die Varianten über das Backend hinzugefügt und habe gesehen, dass er z.B. in den Tabellen “s_article_configurator_sets”, “s_article_configurator_set_group_relations”, “s_article_configurator_set_option_relations” exakt die gleichen Daten reingeschrieben hat, wie die die ich über das PHP-Script eingetragen hatte, nur halt als neuen Datensatz.

Ich gehe davon aus, dass ihm noch irgendeine Verknüpfung fehlt.

Ich hoffe, dass mir hier jemand einen kleinen Denkanstoß geben kann ;-).

Gruß Heiko

https://developers.shopware.com/developers-guide/rest-api/#using-the-rest-api-in-your-own-application

Hallo,

vielen Dank für Deine Antwort.
Ich habe gehofft, das jemand sagt, in der Tabelle xy fehlt noch folgender Eintrag…:-).

Ich schaue es mir dann mal an.

Gruß

Heiko

Und du musst in der s_article_details auch die entsprechenden Detail-Einträge anlegen, sowie die „Kind“ Spalte richtig setzen.

Servus Moritz,

sollte eigentlich alles passen. Werde ich aber noch mal prüfen.
Gibt es da ein bestimmtes Feld das auf alle Fälle gesetzt sein muss, damit die Zuordnung zu den Varianten auch passt? Der Artikel wird nach dem Import im Backend korrekt angezeigt auch die Daten die in der Detailtabelle stehen, wie z.B. die Attributfeldder. Es wird lediglich nicht der Haken bei „Ist Variantenartikel“ gesetzt und die Varianten fehlen in der Backendanzeige komplett.

Ich bin jetzt den obigen Link auch mal durchgegangen und habe mal versucht die Datensätze per Rest-Api abzuspeichern.

Für den ersten Test wollte ich allerdings erst mal die Artikel auslesen, aber hier gibt es schon ein Problem mit dem API-Zugriff. Hier laufe ich immer auf einen Timeout.

Fehlermeldung:
Failed connect to meine-webseite.de:80; Connection timed out

URL die mit cUrl übergeben wird:
http://meine-webseite.de/api/articles?

Api-Zugriff habe ich bei dem User aktiviert und den korrekten User habe ich auch im Code hinterlegt.
Wenn ich die URL in der Browserzeile eingebe, dann funktioniert es

Ich habe sicherheitshalber auch noch mal im Backend den Cache gelöscht und mich am System neu angemeldet.

liebe Grüße

 

Heiko

Hallo zusammen,

ich habe jetzt sehr viel mit der Api-Schnittstelle getestet und inzwischen klappt der Datenimport teilweise.

1 Problem habe ich noch bei der Importfunktion.

Es werden Produkte für PKWs, LKWs etc. importiert. Als Konfigurationstyp wird “Auswahl” genutzt.

Als Felder habe ich:

Typ (Pkw, LKW etc)
Hersteller
Modell
Motor
Baujahr
PS

Wenn ich das Produkt im Frontend in der Detailansicht aufrufe, dann wähle ich z.B. zuerst den Typ “PKW” aus, dann Hersteller, Modell, Motor, Baujahr. Im Feld “Motor” habe ich jetzt 2 Einträge drin stehen, wenn ich einen Eintrag auswähle, dann kann es passieren, dass das Feld “Typ” wieder geleert wird.
Einen Eintrag sollte es dazu doch geben, denn sonst hätte er ja keinen Eintrag im Feld “Motor” drin.

Die Datensätze werden folgendermaßen aktualisiert, nach dem die einzelnen Produkte angelegt wurden:

        //Varianten werden abgespeichert
        $updateArticle = array(
           'configuratorSet' => array(
                'type' => 1,
                'groups' => array(
                    array(
                        'name' => 'Typ',
                        'position' => 1,
                        'options' => $arrGroupTyp,
                    ),                                           
                    array(
                        'name' => 'Marke',
                        'position' => 2,
                        'options' => $arrGroupMarke,
                    ),                                        
                    array(
                        'name' => 'Modell',
                        'position' => 3,
                        'options' => $arrGroupModell,
                    ),                                            
                    array(
                        'name' => 'Baujahr',
                        'position' => 4,
                        'options' => $arrGroupBaujahr,
                    ),                                                                      
                    array(
                        'name' => 'Motor',
                        'position' => 5,
                        'options' => $arrGroupMotor,
                    ),      
                    
                    array(
                        'name' => 'PS',
                        'position' =>6,
                        'options' => $arrGroupPs,
                    ),                                                          
                                    
                )
            ),
            'taxId' => 1,
            'variants' => array(
                array(
                    'isMain' => false,
                    'active' => true,
                    'number' => $artikelnummer,
                    'inStock' => 100,
                    'additionaltext' => '',
                    'configuratorOptions' => array(
                        array('group' => 'Typ', 'option' => $typ),
                        array('group' => 'Marke', 'option' => $hersteller),
                        array('group' => 'Modell', 'option' => $modell),
                        array('group' => 'Baujahr', 'option' => $baujahr),
                        array('group' => 'Motor', 'option' => $motor),                                                                                                
                        array('group' => 'PS', 'option' => $orig_ps),    
                    ),
                    
                    'prices' => array(
                        array(
                            'customerGroupKey' => 'EK',
                            'price' => $uvp,
                        ),                                  
                    ),
                    'attribute' => array(
                        'attr1' => $adapter,                
                    ),  
                ),                        
            ),
        );

    $result=$client->put('articles/'.$id_article, $updateArticle);

Was könnte dieses Verhalten auslösen.

 

Gruss Heiko