Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: EAN der Artikel-Variationen von JTL importieren - Connector anpassen

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Hallo.

    Ich hab schon viele nützliche Tipps im Forum gefunden - danke an alle die hier aktiv sind.

    Für mein aktuelles Problem konnte ich aber noch keine Lösung finden.

    Ich benutze modified eCommerce Shopsoftware v1.05 dated: 2010-07-18 und die aktuelle JTL Wawi mit Connector. Den Shop haben wir soweit angepasst, dass den einzelnen Attributen EAN Nummern zugewiesen werden können. Wir haben auch das Googlebase Modul so erweitert, dass diese EANs für Google Shopping exportiert werden können. Leider werden aber die EAN der Variationen aus JTL mit dem Standart Connector nicht an den Shop übertragen.

    Meine Lösungsansatz ist technisch nicht sauber, würde mir aber ausreichen: Man müsste die EAN der Variation anhand der Artikelbezeichnung (products_name) und der Bezeichnung der Variation (products_options_values_name) beim Import in den Shop zuordnen. Mir ist bewust, dass das nur funktioniert solang es die Artkelbezeichnung nur genau ein mal gibt. Bei unserem Sortiment ist das aber soweit kein Problem und ev. kann man Dopplungen ja auch noch abfangen. Ich denk mit ein paar SQL Kenntnissen ist das umzusetzen - für mich ist´s jedenfalls so schnell nicht zu realisieren.

    Ich hoffe mir kann geholfen werden. Wenn sich jemand sicher ist wie der Connector angepasst werden kann oder das Problem anderweitig gelöst werden kann, vergebe ich das auch gerne als Job mit Bezahlung.

    Viele Grüße

    Denis

    Linkback: https://www.modified-shop.org/forum/index.php?topic=18945.0

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Denis,

    ich habe das mit dem EAN Codes aus den Varianten wie folgt gelöst.
    Ich verwende in der JTL das Feld Gew. Diff um dort den EAN Code aufzunehmen.
    Dazu musste ich wie folgt vorgehen:
    1. In der JTL Datenbank bei der Tabelle teigenschaftwert das Zahlenformat von Flowchart auf Varchart (50) ändern.
    2. Einen Datenbank-trigger anlegen der beim Beschreiben des Feldes Barcode diesen Wert auch gleich in das Feld Gew. Diff schreibt. (Dieser Umweg war nötig da ich beim Import mit der Ameise den EAN Code nur richtig in das Feld Barcode übernehmen konnte)

    Der Trigger
    Code: SQL  [Auswählen]
    CREATE TRIGGER [WriteBarcodefiledToWeightField]
       ON  dbo.teigenschaftwert
       FOR INSERT,UPDATE
    AS
    BEGIN
            -- SET NOCOUNT ON added to prevent extra result sets from
            -- interfering with SELECT statements.
            SET NOCOUNT ON;
        UPDATE teigenschaftwert
        SET [fGewichtDiff] = inserted [cBarcode]
        FROM [teigenschaftwert], inserted
        -- Insert statements for trigger here
        WHERE inserted.cBarcode

    END
    GO

    3. Dann habe ich den Connector wie folgt geändert.
    Folgende Anpassungen an der Datei VariationWert.php

    Suche:
    Code: PHP  [Auswählen]
    $EigenschaftWert->fGewichtDiff = floatval($_POST["GewichtDiff"]);

    Ersetze mit:
    Code: PHP  [Auswählen]
    $EigenschaftWert->fGewichtDiff = str_replace(".0000", "", realEscape($_POST["GewichtDiff"]));

    ------------------
    Suche:
    Code: PHP  [Auswählen]
    options_values_weight
    Ersetze mit:
    Code: PHP  [Auswählen]
    attributes_ean

    4. Das EAN Feld in den Attributen habe ich nach dieser Anleitung eingebaut.
    http://www.modified-shop.org/forum/index.php?topic=8884.0

    Aber Achtung, das ist bisher nur in einer Testumgebung mit 12.000 Artikeln am laufen.
    Ich werde damit zwar bald online gehen aber es fehlen hier noch ein paar Stunden Betrieb ;-).
    Bisher funktioniert es.

    Hoffe es hilft.

    Gruß Marc

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Hallo Marc,

    danke für deine Antwort. Ich kann mir vorstellen wie´s gemeint ist und werde das heute Abend mal ausprobieren.

    Denis

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Ich habe die ersten beiden Punkte versucht umzusetzen, leider ohne Erfolg.

    zu 1.
    Per SQL Server Managment Studio Express habe ich den Datentyp bei fGewichtDiff auf varchar(50) geändert, aber die Werte werden nicht richtig gespeichert.

    Aus z.B. 885290982836 wird 885291000000.0000

    zu 2.
    Wenn ich deinen Trigger ausführe bekomme ich folgenden Fehler:
    Meldung 102, Ebene 15, Status 1, Prozedur WriteBarcodefiledToWeightField, Zeile 15
    Falsche Syntax in der Nähe von 'cBarcode'.

    Was ist da falsch?

    Ausserdem hab ich noch das Problem, dass der gespeichert Trigger nicht im Ordner Trigger von dbo.teigenschaftswert angezeigt wird.

    Was muss ich anders machen?

    VG

    Denis

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Denis,

    Zu 1.
    Genau aus diesem Grund habe ich den Trigger verwendet  ;-)
    Zu 2.
    Sorry mein Fehler  :doh:, bitte ersetze am Ende des Triggers das where mit folgendem:
    Code: SQL  [Auswählen]
            WHERE inserted.cArtNr = dbo.teigenschaftwert.cArtNr
     

    Dann sollte es eigentlich gehen.
    Zu 3.
    Du hast den Trigger noch nicht erzeugt. ;-)

    @Admins:
    bitte in meinem oberen Beitrag berichtigen. Danke

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Hallo Marc,

    ich habe die Zeile geändert, aber es hilft nicht...
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Und noch ein Problem:
    Durch das Umstellen der Spalte fGewichtDiff auf varchar funktioniert der Rechnungsdruck sowie der Vorlageneditor nicht mehr. Ich musste den Datentyp wieder auf float umstellen, damit die Fehler verschwinden.

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Denis,
    hier mal mein komplettes Statement

    Code: SQL  [Auswählen]
    -- ================================================
    -- Template generated from Template Explorer using:
    -- Create Trigger (New Menu).SQL
    --
    -- Use the Specify Values for Template Parameters
    -- command (Ctrl-Shift-M) to fill in the parameter
    -- values below.
    --
    -- See additional Create Trigger templates for more
    -- examples of different Trigger statements.
    --
    -- This block of comments will not be included in
    -- the definition of the function.
    -- ================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:              <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    CREATE TRIGGER [WriteBarcodefiledToWeightField]
       ON  dbo.teigenschaftwert
       FOR INSERT,UPDATE
    AS
    BEGIN
            -- SET NOCOUNT ON added to prevent extra result sets from
            -- interfering with SELECT statements.
            SET NOCOUNT ON;
        UPDATE teigenschaftwert
        SET [fGewichtDiff] = inserted [cBarcode]
        FROM [teigenschaftwert], inserted
        -- Insert statements for trigger here
        WHERE inserted.cArtNr = dbo.teigenschaftwert.cArtNr

    END
    GO
     

    Gruß Marc

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Dennis,
    wenn der Trigger funktioniert sollte eigentlich dass Format flow auch funktionieren. Konntest du den Trigger nun installieren?

    Danke für dem Hinweis mit der Rechnung und dem Editor, hatte auch das Problem. Werde heute Abend dass ganze noch mal testen.

    Gruß Marc

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Denis,
    ein kleiner Update.
    So funktioniert es.
    Die Änderung des Daten Format in der SQL DB ist nicht nötig.
    Der Trigger sollte sich mit dem Skript das ich zuletzte gepostet habe sich installieren lassen.
    Code: SQL  [Auswählen]
    -- ================================================
    -- Template generated from Template Explorer using:
    -- Create Trigger (New Menu).SQL
    --
    -- Use the Specify Values for Template Parameters
    -- command (Ctrl-Shift-M) to fill in the parameter
    -- values below.
    --
    -- See additional Create Trigger templates for more
    -- examples of different Trigger statements.
    --
    -- This block of comments will not be included in
    -- the definition of the function.
    -- ================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:              <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    CREATE TRIGGER [WriteBarcodefiledToWeightField]
       ON  dbo.teigenschaftwert
       FOR INSERT,UPDATE
    AS
    BEGIN
            -- SET NOCOUNT ON added to prevent extra result sets from
            -- interfering with SELECT statements.
            SET NOCOUNT ON;
        UPDATE teigenschaftwert
        SET [fGewichtDiff] = inserted [cBarcode]
        FROM [teigenschaftwert], inserted
        -- Insert statements for trigger here
        WHERE inserted.cArtNr = dbo.teigenschaftwert.cArtNr
     
    END
    GO
    In der JTL wird dann der EAN code 1234567891234.0000 angezeigt aber beim Übertragen an modified eCommerce Shopsoftware wird dieses .0000 durch folgende Anpassung abgeschnitten.
    Folgende Anpassungen an der Datei VariationWert.php
    Suche:
       
    Code: PHP  [Auswählen]
    $EigenschaftWert->fGewichtDiff = floatval($_POST["GewichtDiff"]);
    Ersetze mit:
       
    Code: PHP  [Auswählen]
    $EigenschaftWert->fGewichtDiff = str_replace(".0000", "", realEscape($_POST["GewichtDiff"]));

    Suche:
       
    Code: PHP  [Auswählen]
    options_values_weight

    Ersetze mit:
      
    Code: PHP  [Auswählen]
     attributes_ean

    Gruß Marc

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Hallo Marc,

    meine Datenbank kommt mit dem Trigger nicht klar. Ich bekomme immernoch den Fehler:

    Meldung 102, Ebene 15, Status 1, Prozedur WriteBarcodefiledToWeightField, Zeile 15
    Falsche Syntax in der Nähe von 'cBarcode'.

    Ich benutze MS SQL Server 2005 mit MS SQL Server Managment Studio Express. An der Datenbank hab ich bisher nichts geändert.

    Ansonsten kenne ich mich mit der Materie nicht wirklich aus - ich versuch grad nur deine Lösung umzusetzen. Um den Trigger zu installieren habe ich im Unterordner Trigger von teigenschaftswert mit Rechtsklick "Neuer Trigger..." ausgewählt und dann dein Skript da rein kopiert. Danach klick ich auf "Ausführen" und ... es funktioniert leider nicht.

    Irgendwas ist bei mir anders als bei dir.  Ich hoffe du kannst mir helfen.

    VG

    Denis

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Hallo Denis,
    sorry im Statement vom Trigger war ein Fehler.
    es fehlte ein Punkt zwischen inserted.[cBarcode].
    Ich habe es heute im Produktivsystem eingebaut und hatte den gleichen Fehler wie Du.
     :sorry:
    Damit geht es jetzt sicher.

    Code: SQL  [Auswählen]
    -- ================================================
    -- Template generated from Template Explorer using:
    -- Create Trigger (New Menu).SQL
    --
    -- Use the Specify Values for Template Parameters
    -- command (Ctrl-Shift-M) to fill in the parameter
    -- values below.
    --
    -- See additional Create Trigger templates for more
    -- examples of different Trigger statements.
    --
    -- This block of comments will not be included in
    -- the definition of the function.
    -- ================================================
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:              <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    CREATE TRIGGER [WriteBarcodefiledToWeightField]
       ON  dbo.teigenschaftwert
       FOR INSERT,UPDATE
    AS
    BEGIN
            -- SET NOCOUNT ON added to prevent extra result sets from
            -- interfering with SELECT statements.
            SET NOCOUNT ON;
        UPDATE teigenschaftwert
        SET [fGewichtDiff] = inserted.[cBarcode]
        FROM [teigenschaftwert], inserted
        -- Insert statements for trigger here
        WHERE inserted.cArtNr = dbo.teigenschaftwert.cArtNr
     
    END
    GO
     

    Und noch ein Hinweis!
    In der Tabelle teigenschaftwert hat die Spalte fGewichtDiff normal den Type "real" diesen auf "float" ändern, dann geht das auch mit den Rechnungen!

    Gruß Marc

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Hallo Marc,

    danke für den Punkt   :thx:  Der Trigger meldet keinen Fehler mehr und ist jetzt auch gespeichert.

    Eigentlich wollte ich gerade folgendes schreiben:
    ----------
    Allerdings hat das ganze noch keine Wirkung. Ich hätte jetzt erwartet, dass nachdem ich eine Variation anlege, eine Zahl bei "Barcode" eintrage und das speicher danach im Feld "Geicht Diff" die Zahl drin steht. Das Feld bleibt aber leer und auch bei Export mit der Ameise ist entprechendes Feld ohne Inhalt.
    ----------

    Ich hab dann aber erkannt, dass der Trigger nur funktioniert, wenn man eine ArtikelNr für den Variationswert einträgt. Damit funktiont dass dann auch bei mir  :-D

    Hast du noch eine Idee wie der Trigger ohne ArtNr funktionieren könnte? Ich würde mir die Eingabe der ArtNR gern sparen - man müsste ja dort eine Hersteller ArtNr verwenden. Ich hab´s grad schon mal mit folgender Änderung versucht:

    WHERE inserted.cBarcode = dbo.teigenschaftwert.cBarcode

    das funktioniert aber nicht.

    Ich wünsche ein schönen WE.

    VG

    Denis

    kunde78

    • Neu im Forum
    • Beiträge: 7
    Nach einigem Testen hat sich diese Problemlösung nun entgültig als nicht tauglich erwiesen.

    Durch den Missbrauch des Feldes Gewichtsdifferenz stürtzt die Wawi beim auswählen von Variationen im Auftrag ab.

    Schade, aber damit ist die Kombination JTL-Wawi und modified eCommerce Shopsoftware für mich nicht sinnvoll.

    VG

    Denis

    dietrim2

    • Fördermitglied
    • Beiträge: 41
    • Geschlecht:
    Nach einigem Testen hat sich diese Problemlösung nun endgültig als nicht tauglich erwiesen.

    Durch den Missbrauch des Feldes Gewichtsdifferenz stürzt die Wawi beim auswählen von Variationen im Auftrag ab.

    Schade, aber damit ist die Kombination JTL-Wawi und modified eCommerce Shopsoftware für mich nicht sinnvoll.

    VG

    Denis

    Hallo Denis,
    danke für den Hinweis, kann ich leider bestätigen, der Absturz von der WAWI tritt bei mir in diesem Fall auch auf.  :nixweiss:
    Ich werde noch mal etwas an den Formaten (SQLDB) rumspielen, eventuell klappt das noch damit.
    Wie weit sind Deine Versuche in dieser Richtung gegangen?

    Gruß Marc
    5 Antworten
    6423 Aufrufe
    04. Mai 2010, 19:52:01 von Tatifa76
    1 Antworten
    2507 Aufrufe
    09. Mai 2013, 23:01:57 von h-h-h
    3 Antworten
    4136 Aufrufe
    01. Juni 2014, 23:56:29 von miheha
               
    anything