Beim CSV Hochladen kommt dieser Fehler

Thema wurde von danny_jahn, 30. März 2019 erstellt.

  1. Kai Stejuhn

    Kai Stejuhn Beta-Held

    Registriert seit:
    26. September 2014
    Beiträge:
    1.422
    Danke erhalten:
    720
    Danke vergeben:
    92
    Du hast in der zweiten Zeile mehr "Pipes" als oben und somit leere Felder ohne Feldnamen. Das ist bestimmt nicht gut. Dann hast Du den Preis mit einem Komma anstatt einem Punkt. Das ist dass was ich so auf einem schnellen Blick gesehen habe.
     
  2. iloki

    iloki Erfahrener Benutzer

    Registriert seit:
    15. August 2017
    Beiträge:
    54
    Danke erhalten:
    3
    Danke vergeben:
    3
    In der Tat ist die p_stock-Sache ein Problem.
    Hier im Ticket werden mehrere Themen behandelt, das macht es etwas schwierig diese auseinander zu halten.

    Ich dachte es würde ausreichen einen Fix in die CSV-Import Datein einzubringen, dem ist aber nicht so daher habe ich die Info wieder rausgenommen.

    Es scheint so zu sein, dass die hinzugekommene Funktion dort:
    shop/system/classes/csv/CSVSource.php:2625
    $this->stockLogger->addLogEntry(

    Über die standard Produkt-Funktionen wird versucht, den Artikel zu laden um den Stock-Eintrag zu generieren, allerdings zu diesem Zeitpunkt die Description noch nicht angelegt ist. Daher der Fehler (in unserem Fall über eine API-Erweiterung):
    "The requested product description was not found in database (ID)"
    Die Description würde im nächsten Schritt angelegt.

    Quasi ein Henne-Ei-Problem ;-)
     
  3. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.310
    Danke vergeben:
    2.208
    Stimmt, haben wir heute auch so analysiert.
     
  4. iloki

    iloki Erfahrener Benutzer

    Registriert seit:
    15. August 2017
    Beiträge:
    54
    Danke erhalten:
    3
    Danke vergeben:
    3
    Danke für die späte Rückmeldung.
    Ein erster in unserem Fall funktionierender Workaround scheint zu sein die Funktion zu deaktivieren:

    Code:
    shop/system/classes/csv/CSVSource.php:2611
    Code:
    protected function import_products(&$p_import_data)
    ...
    /*     if (array_key_exists('products_quantity', $t_table_data) )
          {
                $this->stockLogger->addLogEntry(
                    new IdType((int)$t_table_data['products_id']),
                    new DecimalType((float)$t_table_data['products_quantity']),
                    new NonEmptyStringType('CSV-Import (Artikel)')
             );
          }
    */
    

    Zumindest funktionieren so die CSV-Importe (in unserem Fall API die CSV-Funktionen nutzt) und damit unser Shop wieder, Stock/Quantity ist auch vorhanden, nur kein Log ;-)

    Als nächstes könnte man versuchen, der Funktion addLogEntry den Aufruf getProductById austauschen oder evtl. noch einfacher die beiden aus dem Objekt geladenen Variablen einfach als zusätzliche Parameter der Funktion übergeben (ProductModel, ProductName).

    Das alles findet sich hier:
    Code:
    shop/GXMainComponents/Shared/StockLogger.inc.php:45
    
     
  5. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.160
    Danke erhalten:
    6.199
    Danke vergeben:
    1.101
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    das solltest auf utf8 html zeichen umstellen. &umlo und so ähnlich sieht das dann aus.
    generell also viel vorarbeit.
    UTF8 und html Zeichensatz einhalten
    PIIKE als Trenner nutzen
    Auf weitere Sonderzeichen verziichten
    H1 und H2 generell H Tags nur für überschriften nutzen und rest mit <p> umschließen oder mit Listenpunkten usw. jenachdem was deine Beschreibung für design haben soll.
    Ansonsten ist keine formatierung besser als eine völlig falsche
     
  6. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    wo hast du die Zeile her?
     
  7. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.160
    Danke erhalten:
    6.199
    Danke vergeben:
    1.101
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    klick neben zitaten auf den Pfeil, dann kommst zu ursprungsposting
     

    Anhänge:

  8. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    Ah jetzt, da weiß ich nicht was falsch war, hab die csv nochmal neu eingespielt und jetzt werden die umlaute richtig angezeigt. h2 habe ich da erstmal rausgenommen
     
  9. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    habe jetzt auch alle meine CSV dateien auf PIPE umgestellt, verstehe zwar immer noch nicht warum das besser sein soll, aber jetzt ist es so.
     
  10. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.310
    Danke vergeben:
    2.208
    Weil die Pipe ein Zeichen ist was in deinen Daten nicht vorkommt. Du hast das Semikolon doppelt belegt, als Inhalt und als Steuerzeichen, das kann nicht funktionieren und funktioniert nicht.
     
  11. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    Aber wie konnte ich dann in den letzten 2 Jahren die Artikel per csv und Semikolon anlegen? Das verstehe ich dann wirklich nicht
     
  12. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.310
    Danke vergeben:
    2.208
    Fakt ist: Du hast uns jetzt CSV Dateien mit Semikolon in den Datenfeldern geschickt. Die gingen definitiv nicht. Wenn die Dateien vorher immer genauso waren, hast du vorher garantiert immer kaputte Artikel im Sortiment gehabt. Da wir die Dateien der Vergangenheit nicht kennen, kann man nicht mehr sagen, auch nicht wieviele von X. Das ging aber nie wirklich.
     
  13. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.160
    Danke erhalten:
    6.199
    Danke vergeben:
    1.101
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    man kann es ja mal testen indem man die CSV wieder in Open / Libre Office zieht und Seikolon als trnner angibt und sich dann die untersten zeilen anschaut. da müsste dann alles verschoben sein.

    das ein weg die datei zu checken und die stellen zu finden
     
  14. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    Ist mir nicht bewusst, aber ihr habt mich ja überzeugt und ich habe jetzt alle CSV Dateien auf die PIPE umgebaut und jetzt ändere ich da nichts mehr:)
     
  15. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    Verschoben war da eigentlich nie etwas, das wäre mir ja aufgefallen. Aber gut jetzt ist ja das PIPE drin. Ich bin Verkäufer kein ITler:)
     
  16. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.160
    Danke erhalten:
    6.199
    Danke vergeben:
    1.101
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    (Link nur für registrierte Nutzer sichtbar.)müssen auch excel und Co beherschen :)
     
  17. danny_jahn

    danny_jahn Erfahrener Benutzer

    Registriert seit:
    21. September 2017
    Beiträge:
    80
    Danke erhalten:
    1
    Danke vergeben:
    11
    Excel und Co ist kein Problem:) Semikolon und Pipe lernte man dazu:)