GX4.5 und neuer: Entfall von EAN und Grundpreisen in Attributen

Thema wurde von Wilken (Gambio), 8. November 2021 erstellt.

  1. LED-Fashion

    LED-Fashion Erfahrener Benutzer

    Registriert seit:
    15. Februar 2017
    Beiträge:
    81
    Danke erhalten:
    11
    Danke vergeben:
    18
    Wir haben auch das Problem mit den wegfallenden EAN Codes.
    Ein Update steht zwar jetzt zwar nicht zeitnah an aber die SQL Statments könnten helfen wenn es so weit ist.
    Bitte gerne hier posten falls möglich. Grüße
     
  2. CITYJEWELS

    CITYJEWELS Erfahrener Benutzer

    Registriert seit:
    13. März 2015
    Beiträge:
    682
    Danke erhalten:
    170
    Danke vergeben:
    330
    Vielen Dank für ihre Antwort.

    Wir haben großes Interesse an der der Durchführung der Migration durch einen Dienstleister.

    Bitte senden Sie ein Angebot für die Durchführung dieser Arbeiten an: info@cityjewels.de
     
  3. WinHelp GmbH

    WinHelp GmbH Erfahrener Benutzer

    Registriert seit:
    2. April 2019
    Beiträge:
    79
    Danke erhalten:
    26
    Danke vergeben:
    20
    #123 WinHelp GmbH, 12. September 2023
    Zuletzt bearbeitet: 23. Oktober 2023

    Ich habe die Schnipsel etwas ergänzt, um sie besser verständlich zu machen. Bitte schaut unbedingt vorher darüber, da wir nicht alle Optionen (ehemalige Attribute) in Varianten (ehemalige Eigenschaften) umgewandelt haben, sondern nur einige. Daher beziehen sich die Abfragen auch nur auf die Migration einer Variante, wie z.B. Größe.

    Bitte macht unbedingt vorher ein Backup!

    Außerdem sollte dies mit dem Upgrade der Gambio-Version kombiniert werden. Damals haben wir die Daten gesichert und dann von Version 4.4 auf Version 4.8 aktualisiert. Nach dem Update haben wir dann die Datenmigration durchgeführt. Bitte beachtet, dass bei niedrigeren Versionen möglicherweise Fehler auftreten können, da bestimmte Spalten erst in Version 4.7 hinzugefügt wurden.

    Vorweg muss die ID der zu migrierenden Attribute notiert werden (Diese ist nach dem Update nur noch in der Datenbank sichtbar). Öffnet die Attribute (unter "dein.shop/admin/products_attributes.php") und erstellet am besten einen vollständigen Screenshot aller Attribute.

    Es geht um die Spalte "ID", die der "options_id" im SQL entspricht (gekennzeichnet durch "Options ID nach Anforderung anpassen").

    upload_2023-9-12_11-9-28.png

    Code:
    -- Tabelle products_properties_combis kopieren (Vor dem Update um die EAN´s zu sichern)
    CREATE TABLE products_attributes_before_update
    AS
    SELECT *
    FROM products_attributes;
    
    -- ++++
    -- Gambio Update durchführen
    -- ++++
    
    -- Temporäre spalte anlegen, für leichteres mapping der products_properties_combis_values
    ALTER TABLE products_properties_combis
        ADD COLUMN options_values_id INT(11) NOT NULL DEFAULT 0 AFTER products_properties_combis_id;
    
    ALTER TABLE products_properties_combis
        ADD COLUMN options_id INT(11) NOT NULL DEFAULT 0 AFTER options_values_id;
    
    -- Alle Artikeloptionen mit Optionen ID 1 (Größe) in die Tabelle products_properties_combis übertragen
    INSERT INTO products_properties_combis
    (`options_values_id`,
     `options_id`,
     `products_id`,
     `sort_order`,
     `combi_model`,
     `combi_ean`,
     `stock_type`,
     `combi_quantity`,
     `combi_shipping_status_id`,
     `combi_weight`,
     `combi_weight_type`,
     `combi_price_type`,
     `combi_price`,
     `products_vpe_id`,
     `vpe_value`,
     `gtin`,
     `asin`)
    SELECT pa.options_values_id,
           pa.options_id,
           pa.products_id,
           pa.sortorder,
           pa.attributes_model,
           IFNULL(pa_bak.gm_ean, ''),
           pa.stock_type,
           pa.attributes_stock,
           1,                         -- Existiert in der products_attributes nicht (combi_shipping_status_id) nach Anforderung anpassen
           pa.options_values_price,
           null,                      -- Existiert in der products_attributes nicht (combi_weight_type)
           'calc',                    -- Existiert in der products_attributes nicht (combi_price_type) calc = Preis aus Artikeloptionen berechnen, fix = Artikelvarianten-Festpreis
           pa.options_values_price,
           pa_bak.products_vpe_id,    -- Wird in 4.7.1.0 gelöscht, aus Sicherungstabelle holen
           pa_bak.gm_vpe_value,       -- Wird in 4.7.1.0 gelöscht, aus Sicherungstabelle holen
           IFNULL(pa_bak.gm_ean, ''), -- Wird in 4.7.1.0 gelöscht, aus Sicherungstabelle holen
           ''                         -- Existiert in der products_attributes nicht (asin)
    FROM products_attributes pa
             LEFT JOIN
         products_attributes_before_update pa_bak
         ON pa_bak.products_attributes_id = pa.products_attributes_id
    WHERE pa.options_id = 1; -- Options ID nach Anforderung anpassen
    
    -- Alle Artikeloptionen mit Optionen ID 1 (Größe) in die Tabelle products_properties_combis_values übertragen
    INSERT INTO products_properties_combis_values
    (`products_properties_combis_id`,
     `properties_values_id`,
     `options_id`)
    SELECT products_properties_combis_id,
           (SELECT pov.option_value_id
            FROM products_options_values pov
            WHERE ppc.options_values_id = pov.products_options_values_id
              AND language_id = 1 -- Nur englische Werte übernehmen Abfrage ggf. für DE (ID 2) wiederholen
           ),
           ppc.options_id
    FROM products_properties_combis ppc
    WHERE ppc.products_properties_combis_id NOT IN (SELECT products_properties_combis_id
                                                    FROM products_properties_combis_values);
    
    -- Alle Artikeloptionen mit Options ID 1 aus der Tabelle products_attributes löschen
    DELETE
    FROM products_attributes
    WHERE options_id = 1; -- Options ID nach Anforderung anpassen
    
    -- Temporäre Spalten löschen
    ALTER TABLE products_properties_combis
        DROP COLUMN options_values_id;
    
    ALTER TABLE products_properties_combis
        DROP COLUMN options_id;
    
    -- Alle Artikeloptionen mit Optionen ID 1 (Größe) in die Tabelle products_properties_admin_select übertragen
    -- !!! ACHTUNG !!! Eigenschaften ID muss geprüft werden, kann sich nach migration geändert haben
    INSERT INTO `products_properties_admin_select`(`products_id`, `properties_id`, `properties_values_id`)
    SELECT ppi.products_id,
           ppi.properties_id,
           ppi.properties_values_id
    FROM products_properties_index ppi
    WHERE ppi.language_id = 1
    AND ppi.products_id > 0
    AND ppi.properties_id = 1;
    
    
    -- ++++
    -- Cache für Artikelvarianten-Zuweisungen neu erzeugen
    -- ++++