Neu Verküpfte Felder auf Marktplatz/Channel Ebene werden nicht für Kategorien übernommen.

Metal Kids

Aktives Mitglied
17. Februar 2023
23
1
Wawi Version2.0.6
SQL Server Version2022
Windows Server Version2022 Standard 21H2

Hallo zusammen,

Wir haben gerade unseren neuen Praktikanten daran gesetzt neue Artikel in bereits verknüpften Artikelkategorien bei Amazon zu listen. Dabei ist ein seltsamer Fehler aufgetaucht.
Der Artikel hatte zwei Werte im mit dem [Amazon.de Lister] Feld "Markenname*" verknüpften Merkmal.

Als Lösung dafür haben wir eine kleine DotLiquid Funktion verknüpft um immer nur die jeweils passende Marke auszugeben. Damit hätte das Problem gelöst sein sollen. Nach dem erneuten Abgleich hatten wir allerdings wieder dieselbe Fehlermeldung. Es schien als wäre der neu Verknüpfte DotLiquid Wert nicht übernommen worden. Spätere Nachforschungen haben dies dann auch bestätigt.

Dokumentation des Fehlers:

Verküpfter Wert im Feld "Markenname*" Des Verkaufskanals [Amazon.de Lister]:
{%- if Vorgang.Merkmale.Merkmale.Artikelmerkmale.Marke.Deutsch contains 'Metal Kids' -%}Metal Kids{%- else -%}Kids-Fanshop{%- endif -%}
1793023172620.png

Die Kategorie des Artikels "Fashion,Jungen,Bekleidung,Tops & T-Shirts für Jungen,T-Shirts" beinhaltet kein Feld für den Markennamen:
1793023293709.png

Im Artikel wird folgendes als Verknüpfter Wert angezeigt:
{{ Vorgang.Merkmale.Merkmale.Artikelmerkmale.Marke.Deutsch }}

1793023394087.png
Egal wie wir den Wert für den Verkaufskanal neu verknüpfen, mit festem Text oder einem anderen DotLiquid Wert bleibt dieser veraltete Wert erhalten. Auch das ändern von Feldverküpfungen in der Kategorie des Artikels löst kein Update des Markenname* Feldes aus.

Daraufhin haben wir einen Blick in die Datenbank gewagt, mit dem Ziel herauszufinden ob und wenn ja welche anderen Felder von diesem Symptom betroffen sind.
SQL:
SELECT
    C.cDisplayName,
    CaFW.kCategory,
    CaFW.cAttributeId,
    CaFW.cWert AS Category_cWert,
    ChFW.cWert AS Channel_cWert
FROM SCX.tVerkaufskanalCategoryFeldWert CaFW
INNER JOIN SCX.tVerkaufskanalChannelFeldWert ChFW
    ON CaFW.cAttributeId = ChFW.cAttributeId AND CaFW.kShopScx = ChFW.kShopScx
INNER JOIN SCX.tCategory C ON CaFW.kCategory = C.kCategory
WHERE CaFW.cWert != ChFW.cWert

Dadurch hat sich folgendes aufgetan:
1793023694336.png

Wir vermuten, dass die Werte aus dem Verkaufskanal nur einmalig bei der ersten Verknüpfung von Kategoriefeldern für die Kategorie übernommen werden und danach bei Änderungen auf der Verkaufskanalebene nicht mehr aktualisiert werden.

Wir versuchen jetzt ebenfalls über SQL das Problem übergangsweise zu lösen.
SQL:
USE eazybusiness;

BEGIN TRANSACTION VerkaufskanalfelderAktualisieren

    -- Auflistung der verknüpften Feldwerte für Kategoriefelder die von den verknüpften Verkaufskanalfeldern abweichen
    SELECT
        C.cDisplayName,
        CaFW.kCategory,
        CaFW.cAttributeId,
        CaFW.cWert AS Category_cWert,
        ChFW.cWert AS Channel_cWert
    FROM SCX.tVerkaufskanalCategoryFeldWert CaFW
    INNER JOIN SCX.tVerkaufskanalChannelFeldWert ChFW
        ON CaFW.cAttributeId = ChFW.cAttributeId AND CaFW.kShopScx = ChFW.kShopScx
    INNER JOIN SCX.tCategory C ON CaFW.kCategory = C.kCategory
    WHERE CaFW.cWert != ChFW.cWert;

    -- Angleichen auf die Werte aus dem Verkaufskanal
    UPDATE CaFW
        SET CaFW.cWert = ChFW.cWert
    FROM SCX.tVerkaufskanalCategoryFeldWert CaFW
    INNER JOIN SCX.tVerkaufskanalChannelFeldWert ChFW
        ON CaFW.cAttributeId = ChFW.cAttributeId AND CaFW.kShopScx = ChFW.kShopScx
    INNER JOIN SCX.tCategory C ON CaFW.kCategory = C.kCategory
    WHERE CaFW.cWert != ChFW.cWert;

    -- Überprüfung ob weitere Fehler bestehen
    SELECT
        C.cDisplayName,
        CaFW.kCategory,
        CaFW.cAttributeId,
        CaFW.cWert AS Category_cWert,
        ChFW.cWert AS Channel_cWert
    FROM SCX.tVerkaufskanalCategoryFeldWert CaFW
    INNER JOIN SCX.tVerkaufskanalChannelFeldWert ChFW
        ON CaFW.cAttributeId = ChFW.cAttributeId AND CaFW.kShopScx = ChFW.kShopScx
    INNER JOIN SCX.tCategory C ON CaFW.kCategory = C.kCategory
    WHERE CaFW.cWert != ChFW.cWert;

    ROLLBACK TRANSACTION VerkaufskanalfelderAktualisieren;
    -- COMMIT TRANSACTION VerkaufskanalfelderAktualisieren;

Ein entsprechendes Support Ticket wird sogleich erstellt.
 
Zuletzt bearbeitet:

Ähnliche Themen