Gelöst JTLConnector 2.10.2: Sonderpreise

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Hallo,

wir haben vor einigen Tagen upgedatet auf JTL Wawi 1.5.8.1 und JTL Gambio Connector 2.10.2 upgedatet. Weil das damals alles nicht richtig lief mit den Sonderpreisen, hatten wir die sync in der features.json auf false gesetzt. Das ist jetzt auch noch so, aber bei einigen Artikeln zerschießt die Wawi uns nach dem Import einer Bestellung und einer anschließenden Aktualisierung von Preis/Bestand ab und zu den Preis. Nicht bei jedem Artikel. Da kommt dann sowas Lustiges wie: Artikel kostet -430 EUR, Sonderpreis -520 EUR. Jemand eine Idee woran das liegen könnte? Kann das sein dass wenn man die Sonderpreis-Aktualisierung ausstellt, dass JTL Wawi dann die eingetragenen Sonderpreise irgendwie berücksichtigt und daraus einen regulären Verkaufspreis berechnet?

Anbei ein Log-Auszug. Was mir da aufällt:

"recommendedRetailPrice": 0.0,
"purchasePrice": 0.0,

Und die SKU die da aktualisiert wird ist die des Vaterartikels, nicht das Kind: tk-6000x6a Ist das normal?
 

Anhänge

  • log-auszug.txt
    2,3 KB · Aufrufe: 3

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Hallo,

also ich bin mit meinem Problem noch nicht weiter, aber was ich gerade sicher und auch reproduzierbar sagen kann: Wenn in der features.json die Aktualisierung von Sonderpreisen deaktiviert ist (pull, push und delete auf false), dann wird mit Connnector-Version 2.10.2 ein bestehender Sonderpreis im Shop gelöscht, wenn es in JTL Wawi 1.5.8.1 keinen aktiven Sonderpreis gibt...
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Komplettabgleich getestet: Ist aber gescheitert mit folgender Fehlermeldung:

Code:
JTL-Wawi: End sync
Exception: Call to a member function getLanguageISO() on null
Call to a member function getLanguageISO() on null
Artikel-Senden-Fehler: Bitte beachten Sie, dass zur Fehler-Diagnose ebenfalls die Log-Datei des Servers und das Abgleich-Log der JTL-Wawi notwendig sind!
Exception bei product.push: Call to a member function getLanguageISO() on null

Call to a member function getLanguageISO() on null

Response: {"result":null,"error":{"code":0,"message":"Call to a member function getLanguageISO() on null","data":"Exception 'Error' (Code: 0) with message 'Call to a member function getLanguageISO() on null' in phar:\/\/\/www\/htdocs\/w009bf1b\/windstaerke7\/gx22\/jtlconnector\/index.php\/src\/Mapper\/ProductAttr.php:112"},"jtlrpc":"2.0","id":"unknown"}
Exception bei product.push: Call to a member function getLanguageISO() on null

Call to a member function getLanguageISO() on null

Response: {"result":null,"error":{"code":0,"message":"Call to a member function getLanguageISO() on null","data":"Exception 'Error' (Code: 0) with message 'Call to a member function getLanguageISO() on null' in phar:\/\/\/www\/htdocs\/w009bf1b\/windstaerke7\/gx22\/jtlconnector\/index.php\/src\/Mapper\/ProductAttr.php:112"},"jtlrpc":"2.0","id":"unknown"}
   bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.BJp2njyJsfn(String  , Object  , Boolean  , NetworkCredential  )
   bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.m6y2DkOnG2f(String  , Object  , Boolean  , NetworkCredential  )
   bei jtlCore.ControllerClasses.Connector.Abgleich.Connector.BJp2njyJsfn(String  , Object  , Boolean  , NetworkCredential  )

Liegt das daran, dass es möglicherweise im Shop Artikel gibt die eine Sprache mehr haben als in JTL Wawi hinterlegt? Oder ist da noch was anderes faul?

Wenn ich beim Komplettabgleich statt aller Artikel nur die Preise nehme, dann habe ich das Problem, dass erstens alle Sonderpreise gelöscht sind (siehe https://forum.jtl-software.de/threads/jtlconnector-2-10-2-sonderpreise.123512/post-677318 ) und zweitens dass manche Varkombi-Preise viel zu niedrig sind. Da gibts dann Artikel die bei uns -489,05 EUR kosten. Das ist ein Artikel, der weder bei uns im Shop noch in der JTL Wawi einen Sonderpreis hat. In der JTL-Wawi ist der Vaterartikelpreis 0,- EUR und die Kindartikel kosten alle 99,95 EUR brutto. In der Eigenschaften-Ansicht in Gambio zeigt sich dann: Vaterartikel hat korrekterweise 0,- EUR, bei den Kindartikeln gibt es 2 mit -489,05 EUR und alle anderen sind passen 99,95 EUR. Siehe Bild im Anhang.
Unbenannt.png
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Noch ein wenig weitergetestet: Sobald ich am Artikel mehr als nur den Preis ändere, wird der Sonderpreis in Gambio gelöscht, auch wenn Sonderpreise in der Connector-Konfiguration von der Sync ausgeschlossen sind. Wenn ich in JTL einen Sonderpreis einrichte, verändere oder lösche, ändert das auch nichts - es wird konsequent gelöscht. Gerne Teamviewer-Sitzung bei Bedarf...
 

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Hallo @bork,

soweit ich weiß, funktioniert das Deaktivieren von Elementen über die features.json nur für Haupt-Elemente wie Bestellungen, Produkte, Hersteller oder Kunden. Das De-Aktiveren von bspw. ProductSpecialPrices in der features.json sollte grundsätzlich gar keine Auswirkungen haben.

Das in #5 beschriebene Problem tritt dadurch auf, dass an irgendeinem Sprachelement, welches an einem Produkt hängt, kein Sprach-Code (langugageISO) hinterlegt ist. Bist du dir sicher, dass du schon Connector Version 2.10.2 nutzt? Denn damit müsste in der Fehlermeldung die SKU des Artikels stehen, bei dem das Problem aufgetreten ist.
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Hallo Immanuel,

danke für die Antwort. Eigentlich war ich mir recht sicher den 2.10.2 zu verwenden, aber ich habe es nochmal sicherheitshalber drübergebügelt und folgendes getestet:

Sonderpreis-Synchronisation in der features.json deaktiviert:
- Sonderpreis in JTL Wawi anlegen und hochladen => kommt nicht an im Gambio Shop
- Sonderpreis in Gambio anlegen und Artikelsynchronisation aus JTL Wawi => Sonderpreis im Gambio Shop wird gelöscht

Sonderpreis-Synchronisation in der features.json aktiviert:
- Sonderpreis in JTL Wawi anlegen und hochladen => funktioniert
- Sonderpreis in Gambio anlegen und Artikelsynchronisation aus JTL Wawi => Sonderpreis im Gambio Shop wird gelöscht

Ich finde die Sonderpreis-Einstellung in JTL Wawi etwas kompliziert und muss den Preis von Hand für alle meine 4 Kundengruppen hinterlegen, daher würde ich das lieber weiterhin über Gambio machen. Frage daher: Haben wir eine Chance, dass wenn die Synchronisation von Sonderpreisen in der features.json deaktviert ist dass dann auch tatsächlich die specials Tabelle in Gambio unberührt bleibt?

Danke und VG
 

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Die features.json ist nur für die Wawi gedacht. Der Connector muss die Sonderpreise löschen, wenn diese nicht existieren, unabhängig von der Einstellung in der features.json. Einzige Möglichkeit ist den Quicksync zu aktivieren. Darüber könnten dann nur noch Preise (nicht Sonderpreise) und Bestände aktualisiert werden. Du müsstest wahrscheinlich trotzdem einmal einen Komplettabgleich der Artikel vor Umstellung auf den Quicksync durchführen.
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Hmmm... Und gibt es eine Möglichkeit, hier einen Sonderpreis einmal für alle Kundengruppen einzutragen?
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    22,8 KB · Aufrufe: 7

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Das in #5 beschriebene Problem tritt dadurch auf, dass an irgendeinem Sprachelement, welches an einem Produkt hängt, kein Sprach-Code (langugageISO) hinterlegt ist. Bist du dir sicher, dass du schon Connector Version 2.10.2 nutzt? Denn damit müsste in der Fehlermeldung die SKU des Artikels stehen, bei dem das Problem aufgetreten ist.

[2019-10-29 17:24:25] global.ERROR: Exception 'Error' (Code: 0) with message 'Call to a member function getLanguageISO() on null' in phar:///www/htdocs/xxx/xx/xxx/jtlconnector/index.php/src/Mapper/ProductAttr.php:115 [] []

Das sind wohl die Gambio Produktattribute? Welche, die sprachabhängig sind? Das können ja nur wesentliche Produktmerkmale sein dann. Da muss ich nach suchen, ob da ein Produkt verhunzt ist? Irgendwann in einer Connector-Version waren ja die wesentlichen Produktmerkmale auch mal durch einen Bug einsprachig. Vielleicht liegt es daran, dass da noch ein Produkt einsprachige Produktmerkmale hat?

Du hattest gesagt, mit Connector-Version 2.10.2 kann man in irgendeinem Log das betroffene Produkt ablesen? Im JTL Connector Log das auf dem Server abgelegt wird nicht, im JTL Wawi Fehlerlog auch nicht, um JTL Connector-Log das lokal abgelegt wird auch nicht? Der Abbruch erfolgt immer bei Artikel 2200 / 5203. Kann man daraus was ablesen, wenn man die ersten 2200 Artikel in der Datenbank (aufsteigend sortiert nach internem Schlüssel) abzählt?
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Hallo,

habe jetzt mal alle überflüssigen Artikelattribute gelöscht und zusätzlich noch das einzige sprachabhängige Artikelattribut "Wesentliche Produktmerkmale", das in Gambio in der products_description.checkout_information landet. Das hatte ich im Verdacht, weil der Fehler ja in der ProductAttr.php hervorgerufen wird. Das ist aber nicht die Ursache. Also ein Tipp wie ich herausfinden kann welcher Artikel beschädigt ist, das wäre sehr hilfreich...
 

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Hallo @bork,

bei Version 2.10.2 sollte in der Fehlermeldung die ausgegeben wird, die SKU des betroffenen Produktes auftauchen. Ich vermute aber, du hast noch Version 2.10.1 installiert. Das war zumindest den Logs zu entnehmen, die du mir per PM geschickt hattest. Alternative um herauszufinden wo es kracht, ist die Paketgrößé der zu sendenden Elemente auf 1 zu stellen. Dann sollte das letzte Produkt, das im Log auftaucht das betroffene sein. Kannst mir gerne den Log dann auch nochmal per PM schicken.
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Hallo Immanuel,

ich habe gestern nochmal 2.10.2 drübergebügelt. Habe inzwischen mal versucht, alle Artikeldaten zu exportieren über die Ameise und hänge bei einigen Produkten. In DER Fehlermeldung steht die kArtikel drin, und die kann ich über HeidiSQL suchen um herauszufinden welcher Artikel hakt. Wenn ich die lösche, geht es weiter - bis zum nächsten Artikel bei dem ich nicht weiß was los ist. Die Fehlermeldung aus dem JTL Wawi Log ist z.B.:

Code:
Unbehandelte Ausnahme #2950B1CFB6B85B61 vom Typ System.ArgumentException in Void Insert(System.Object, System.Object, Boolean)
System.ArgumentException: Das Element wurde bereits hinzugefügt. Schlüssel im Wörterbuch: "tSonderpreise.1.1.netto". Hinzuzufügender Schlüssel: "tSonderpreise.1.1.netto".
   bei System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add)
   bei System.Collections.Hashtable.Add(Object key, Object value)
   bei ameise.exporter.Exporter_ArtikelArtikeldaten.BerechneSonderPreise(Int32 kArtikel, Hashtable ht, Int32 kSteuerklasse, dbExportVorlage dboExportVorlage)
   bei ameise.exporter.Exporter_ArtikelArtikeldaten.gibExportData(String kArtikel, dbExportVorlage dboExportVorlage)
   bei ameise.exporter.Exporter_ArtikelArtikeldaten.doWork()
   bei ameise.forms.subforms.export_main.DoExport()
   bei ameise.forms.subforms.export_main.bgWorker_DoWork(Object sender, DoWorkEventArgs e)
kArtikel = 14169

Zeitstempel: 2019-10-29T20:43:40
Locale: German (Germany)
Locale: German (Germany)
Version: 1.5.8.1
Plattform: Ameise
WawiSeed: 1.5.81530.78001
Versionshash: 3025A297
Prozessname: JTL-wawi-ameise
Physikalischer Speicher: 130813952 / Peak: 157536256
Basispriorität: 8
Prioritätsklasse: Normal
CPU-Zeit (User): 0:02:20,9375
CPU-Zeit (System): 0:02:35,3125
Page-Size (Sytem): 1247112 / Peak: 121905152
Page-Size: 100179968 / Peak: 121905152
Offene Handles: 1248

Seltsam oder?

Deinen Vorschlag mit der Paketgröße probiere ich gleich nochmal aus...

VG
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Wenn ich auf Paketgröße 1 stelle, hakt die Komplettübertragung bei Artikel 1264. Läuft sich einfach tot ohne Abbruch und ohne Fehlermeldung.

Hier die Einstellungen:
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    23,3 KB · Aufrufe: 4
Zuletzt bearbeitet:

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Habe eine Vermutung, wenn es der letzte Eintrag im Log ist. Den Artikel könnte ich mal löschen wenn es was hilft. Log zur Prüfung per PN...

Danke schonmal.
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Es sieht mir so aus, als könnte man keine Sonderpreise in Gambio löschen / deaktivieren, indem man "Sonderpreise aktivieren von" abhakt. Ist das so gedacht? Der einzige Weg den ich gefunden habe ist, den Sonderpreis aktiv zu lassen und als Enddatum ein Datum in der Vergangenheit einzurichten?
 

bork

Sehr aktives Mitglied
26. Januar 2007
830
97
Jemand eine Idee, wie man Sonderpreise in Gambio wieder loswird, ohne dass man das Gültigkeitsdatum auf die Vergangenheit setzt?
 

Ähnliche Themen