Neu Wir haben 28.000 Quantity Units im Gambio Shop... ?!

  • Temporäre Senkung der Mehrwertsteuer Hier findet ihr gesammelt alle Informationen, Videos und Fragen inkl. Antworten: https://forum.jtl-software.de/threads/mehrwertsteuer-senkung-vom-01-07-31-12-2020-offizieller-diskussionthread-video.129542/

bork

Gut bekanntes Mitglied
26. Januar 2007
567
14
Hallo,

sind heute über eine Fehlermeldung im Order Editor in Gambio darauf aufmerksam geworden, dass wir 28 quantity unit descriptions in der Datenbank haben, aber 28.000 quantity units. Die fehlenden quantity unit descriptions für die übrigen 27.972 Quantity Units verursachen den Fehler.

Meine Vermutung: Quantity Units werden bei jeder Shop-Synchronisation neu hochgeladen, egal ob sie existieren oder nicht?
 

daniel.jtl

Moderator
Mitarbeiter
12. März 2014
1.277
28
Quantity units werden grundsätzlich am Produkt mitgesendet. Hier wird aber zunächst geprüft, ob es im Shop in der Primär-Sprache bereits eine identische Bezeichnung gibt.
Neu angelegt wird nur dann, wenn hier kein Treffer erzielt wird.
Da würde ich daher zunächst mal nachgucken ob die Sprachen korrekt auf beiden Seiten angelegt sind und mitgesendet werden...
 

bork

Gut bekanntes Mitglied
26. Januar 2007
567
14
Achso, dann kann es vielleicht damit zusammenhängen, dass 99 % unserer Produkte in der JTL Wawi gar keine Verkaufseinheit hinterlegt haben. Dann kann natürlich keine gleichnamige gefunden werden, und dann wird eine neue angelegt. Bei jedem Produkt das synchronisiert wird, jedes Mal. Seit dem letzten "Aufräumen" sind schon wieder 48 quantity_units hinzugekommen.
 

bork

Gut bekanntes Mitglied
26. Januar 2007
567
14
Hallo Daniel,

also es wird immer eine neue quantity_unit erstellt, aber dazu keine passende neue quantity_unit_description... Da aber trotzdem immer ein neuer Eintrag in products_quantity_unit erstellt wird, um die quantity_unit mit dem product zu matchen, gibt es beim Anlegen von Bestellungen eine Fehlermeldung:

Code:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'StringType: Invalid argument value given (expected string got NULL): ' in /www/htdocs/w009bf1b/xxx/gx22/GXEngine/Shared/Types/StringType.inc.php:43 Stack trace: #0 /www/htdocs/w009bf1b/xxx/gx22/admin/orders_edit.php(399): StringType->__construct(NULL) #1 {main} thrown in /www/htdocs/w009bf1b/xxx/gx22/GXEngine/Shared/Types/StringType.inc.php on line 43

FATAL ERROR(1): "Uncaught exception 'InvalidArgumentException' with message 'StringType: Invalid argument value given (expected string got NULL): ' in /www/htdocs/w009bf1b/xxx/gx22/GXEngine/Shared/Types/StringType.inc.php:43
Stack trace:
#0 /www/htdocs/w009bf1b/xxx/gx22/admin/orders_edit.php(399): StringType->__construct(NULL)
#1 {main}
  thrown"
Log sende ich per PN...
 

Verkäuferlein

Sehr aktives Mitglied
29. April 2012
893
145
Hallo,

das Problem ist bei uns wieder aktuell.

Wir haben derzeit 281 Artikel in einem Shop, aber 1036 Einträge in quantity_unit und 487 Einträge in quantity_unit_description wobei fast alle bei unit_name "Stück" oder "Stk" haben.

Schleppen wir hier lediglich veraltete Einträge mit oder gibt es diesen Fehler noch im Connector?

Sprache haben wir nur deutsch aktiv, diese ist in der Wawi als Standardsprache aktiviert und im Shop auch.

Was müssen wir tun, um die vielen Einträge in der DB sauber zu bereinigen und in Zukunft nicht immer wieder neue quantity_units angelegt zu bekommen?

Gruß,
Verkäuferlein
 

bork

Gut bekanntes Mitglied
26. Januar 2007
567
14
Ja richtig, das Problem ist noch nicht gelöst. Wir haben einen Fix in unseren Cronjob aufgenommen, mit dem wir alle unerwünschten Dinge die der JTL Connector verursacht korrigieren:

xtc_db_query("delete from products_quantity_unit where quantity_unit_id > 10;") or die (mysqli_error());

quantity_unit_id 1-10 sind welche die von früher sind und die wir brauchen. Alles was darüber ist ist vom Connector immer neu angelegt und wird dann bei uns 1x täglich gelöscht.
 

Verkäuferlein

Sehr aktives Mitglied
29. April 2012
893
145
Hm, schade, dass so etwas nicht mal gefixed wird...

Irgendwie werden die Connectoren sowieso sehr stiefmütterlich behandelt, was eigentlich schade ist und im Endeffekt einfach nur dafür sorgt, dass das Vertrauen in JTL insgesamt schwindet... (Thema: Corporate Behaviour) Aber gut, was soll man hier sein Leid klagen. :)

Nochmal zum Thema:

Es gibt ja insgesamt 3 Tabellen, die betroffen sind:
1.) quantity_unit (diese hat allerdings nur den Inhalt quantity_unit_id, so dass der Sinn sich mir nicht so ganz erschließt)
2.) products_quantity_unit (Zuordnung der quantity_unit_id zu einer products_id)
3.) quantity_unit_description (Zuordnung eines Textes zu einer quantity_unit_id und einer language_id)

Wenn Du jetzt nur #2 löscht bzw. leerst, hast Du ja in #1 und #3 immer noch ganz viel Datenmüll und zu Deinen Produkten keine quantity_unit mehr zugeordnet, führt das nicht zu Problemen?
Eigentlich müsste man doch dafür sorgen, dass die quantity_units nicht doppelt in der #3 angelegt werden sondern bereits vorhandene in #2 mit dem Produkt verknüpft werden.

Was mir im Moment auch noch nicht ganz klar ist:
Was ist eigentlich der Unterschied von products_quantity_unit und products_vpe (bzw. welchen Unterschied macht hier der Connector)?

Übersetzen würde ich mir das ganze ja mit Produkt-Mengen-Einheit und Produkt-Verpackungs-Einheit, also z.B.
(200) ml (products_quantity_unit) Tube (products_vpe)
(6) Stück (products_quantity_unit) Karton (products_vpe)

Bei mir sind die eingetragenen Bezeichnungen allerdings weitestgehend identisch, welche man in products_vpe_name und in unit_name findet...
 

Verkäuferlein

Sehr aktives Mitglied
29. April 2012
893
145
Ergänzung:
Nun habe ich mal alle 3 Tabellen (s.o.) geleert und einen Connector-Abgleich gestartet.

Im Connector-Debug-Datenbank- Log erscheint dann folgendes:
[2018-02-13 17:12:31] database.DEBUG: SELECT languages_id FROM languages WHERE code="de" [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT code FROM languages WHERE languages_id=2 [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT quantity_unit_id FROM quantity_unit_description WHERE language_id=2 && unit_name="Meter" [] []
[2018-02-13 17:12:31] database.DEBUG: INSERT INTO quantity_unit SET [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT languages_id FROM languages WHERE code="de" [] []
[2018-02-13 17:12:31] database.DEBUG: INSERT INTO quantity_unit_description SET language_id = '2', unit_name = 'Meter' [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT languages_id FROM languages WHERE code="de" [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT code FROM languages WHERE languages_id=2 [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT quantity_unit_id FROM quantity_unit_description WHERE language_id=2 && unit_name="Millimeter" [] []
[2018-02-13 17:12:31] database.DEBUG: INSERT INTO quantity_unit SET [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT languages_id FROM languages WHERE code="de" [] []
[2018-02-13 17:12:31] database.DEBUG: INSERT INTO quantity_unit_description SET language_id = '2', unit_name = 'Millimeter' [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT languages_id FROM languages WHERE code="de" [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT code FROM languages WHERE languages_id=2 [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT quantity_unit_id FROM quantity_unit_description WHERE language_id=2 && unit_name="Centimeter" [] []
[2018-02-13 17:12:31] database.DEBUG: INSERT INTO quantity_unit SET [] []
[2018-02-13 17:12:31] database.DEBUG: SELECT languages_id FROM languages WHERE code="de" [] []
[2018-02-13 17:12:31] database.DEBUG: INSERT INTO quantity_unit_description SET language_id = '2', unit_name = 'Centimeter' [] []
....
Das eigentliche Problem scheint also doch gefixed zu sein. Allerdings habe ich anschließend in der DB nur den Eintrag zur Einheit "Meter".

Also habe ich noch einmal einen Komplettabgleich durchgeführt und anschließend geschaut. Es wurden jetzt tatsächlich mehrere quantity_unit_descriptions angelegt und keine davon doppelt. Des Weiteren wurden die Artikel (auch mehrere) korrekt auf die quantity_units gematched. Das einzig seltsame bleibt, dass nachwievor keine Millimeter, Centimert,... angelegt sind, aber alle in Artikeln verwendeten Einheiten sind auf jeden Fall korrekt und einmalig vorhanden.
 

walprecht

Aktives Mitglied
17. Mai 2018
7
0
Ich habe hier leider auch noch ein Problem, es werden manche VPE richtig zugeordnet wie Liter, andere werden aber nicht zugeordnet.
Die Einheit "Stück" zum Beispiel wird nicht zugeordnet.
Ich habe auch schon die VPE Stueck eingeführt, weil ich dachte, dass er sich vielleicht am Umlaut aufhängt aber es funktioniert nicht. Im Log gibts keine Fehler und ich bin etwas ratlos.

Was außerdem aufgefallen ist:
Der Connector erstellt die Mengeneinheiten jedes mal neu. Die Liste ist mittlerweile unerträglich lang im Gambio.

JTL Wawi: 1.5.24.1
Gambio Connector: 2.10.7
Gambio 4.0.0.1
 

bork

Gut bekanntes Mitglied
26. Januar 2007
567
14
Entweder über einen Cronjob regelmäßig löschen, oder versuchen, in der features.json des connectors die Übertragung von Mengeneinheiten unterbinden. Wichtig zu wissen: Eine reine Änderung in der features.json reicht nicht aus - damit die Änderungen wirksam werden, muss man einmal in JTL Wawi in die Connector-Konfiguration und auf "Verbindung testen", damit die Änderungen übernommen werden.
 

walprecht

Aktives Mitglied
17. Mai 2018
7
0
Die Mengeneinheiten stören mich insgesamt auch nicht so sehr. Schlimmer finde ich, dass die Zuordnung der VPE nur zT stattfindet.
Die Anzeige der Grundpreise wäre schon klasse. Gibt es da eine Lösung?
 

bork

Gut bekanntes Mitglied
26. Januar 2007
567
14
Ich weiß nicht mehr genau wie das war - ich glaube, man durfte keine neuen VPE anlegen, sondern nur bestehende verwenden. Dann klappt das eigentlich ganz gut...