Jump to content

Automatischer upload von Excel-Datei (Produkte)


MekkaS

Recommended Posts

Hallo zusammen,

 

wir haben ca. 4000Artikel in unserem Shop und müssen die Bestände alle 2-3 Stunden aktualisieren.

 

Wir suchen derzeit nach einer Lösung, wie wir dies automatisiert durchführen können.

 

Hat jemand einen Vorschlag?

 

Wir benutzen zum Upload das Zusatzmodul "Product Catalog (CSV, Excel) Import".

 

Viele Grüße

Mekkas

Link to comment
Share on other sites

Hallo Mekkas

 

Ich würde ein Script auf dem Server laufen lassen, welches alle paar Minuten überprüft ob eine (neue) Excel-Datei in einem festgelegtem Verzeichnis existiert.

 

Wenn eine neue Datei vorhanden ist, dann muss das Script lediglich die Lagerbestände aus der Datei lesen und in die MySQL-Datenbank schreiben. Optimalerweise sollte wahrscheinlich die Prestashop-API dazu verwendet werden. Ich persönlich habe jedoch bisher Lagerbestände immer direkt mit PHP- und SHELL-Scripts überschrieben.

 

Stellt sich noch die Frage wie die Excel-Datei auf den Server kommt. Dies müsste ja auch automatisiert werden. Wenn die Excel-Datei bereits irgendwo automatisch generiert wird, dann könnte man dort dafür sorgen, dass die Datei auch gleich, z.B. per FTP, in das festgelegte Verzeichnis hochgeladen wird.

 

Wenn die Excel-Datei von einem Lieferanten zur Verfügung gestellt wird, dann könnte das Script auf dem Webserver die Datei abholen. 

 

Alternativ könnte das Script auch irgendwo anders laufen. Meiner Meinung nach macht es jedoch Sinn, wenn dieses auf dem Webserver läuft. Somit kann das Script auch Alarm schlagen sollte nach einer vordefinierten Zeitspanne keine neue Excel-Datei eingetroffen sein.

 

 

Alles sehr oberflächlich erklärt, weil mir keine Details bekannt sind.

 

Ich hoffe ich konnte dich trotzdem ein wenig inspirieren ;-)

 

Gruss Michael

Link to comment
Share on other sites

Hallo Michael,

 

vielen Dank für deine Ausführungen.

 

Wir bekommen zwar eine CSV mit Artikelnummer;Artikelname;Bestand;Abbildung;EAN; von unserem Lieferant aber können diese, zumindest nach unserem Kenntnisstand nicht automatisch verarbeiten.

D.h. wir müssen diese CSV runterladen und in unser Uploadfile integrieren mit diversen Formeln (deswegen sind wir auf xlsx umgestiegen)

 

"Ich würde ein Script auf dem Server laufen lassen, welches alle paar Minuten überprüft ob eine (neue) Excel-Datei in einem festgelegtem Verzeichnis existiert."

An diese Option hatten wir auch schon gedacht, jedoch meinte der Entwickler von unserem Modul, dass ein manueller FTP Upload nicht funktioniert, und wir es über modules im backoffice abwickeln müssen.

 

Wir sind in diesem Bereich ziemliche Laien aber Lernbereit. Falls du uns Tipps hast in welchem Bereich wir uns schlau machen müssen, wären wir dir sehr dankbar.

 

Unser Ablauf sieht momentan so aus:

1. CSV runterladen und in große xlsx integrieren, dabei wird per SVERWEIS der Bestand gezogen, gleichzeitig prüfen wir per Formel ob ein VK Preis und Bestand vorhanden ist. Falls nein, wird dieser Artikel auf nicht sichtbar gestellt. Diese Spalte kopieren wir dann in visibility.

2. Upload über Modul im Backoffice

 

Und dies sollte so oft wie möglich geschehen. Die CSV vom Lieferanten wird alle 2h aktualisiert.

 

Ich hoffe ich konnte dir einen besseren Einblick geben.

 

Schönen Abend noch.

 

Grüße

Link to comment
Share on other sites

Geht nicht gibt's nicht! ;-) Es ist meistens eine Frage des Aufwandes und Willen.

 

Ich würde den gesamten von dir beschriebenen Ablauf mit einem PHP-Script lösen das auf dem Server statt findet. Ich würde mir nicht den Aufwand machen ein Modul dafür zu schreiben. Obwohl es ziemlich sicher möglich ist, alle notwendigen Prozesse in ein Modul zu verpacken. Das Modul hätte zwar den Vorteil, dass im Backoffice z.B. eine Status-Seite über den Verlauf des Imports angezeigt werden könnte. Mir würde es jedoch reichen, wenn das PHP-Script proaktiv bei Fehlern und Warnungen per E-Mail informiert.

 

Es stellt sich dann nur noch die Frage: Wie kommt die eigene Excel-Datei auf den Server. Wenn diese selten angepasst wird, könnte man diese wirklich noch "von Hand" hochladen. Wie das auch immer passiert (Backoffice, FTP, Webupload, WebDAV, E-Mail, usw.).

 

Das PHP-Script würde ich mit dem Cron-Daemon in einem zeitlich festgelegten Abstand aufrufen.

 

Der grobe Script-Ablauf:

1. Herunterladen der CSV-Datei von Lieferant

2. Irgendwoher die eigene Excel-Datei holen

3. id_product + upc (Artikelnummer) von Prestashop-Datenbank holen (optimalerweise über Prestashop REST-API)

4. Für jede upc (Artikelnummer) in beiden Dateien die gewünschten Werte auslesen (unter Berücksichtung von Abhängigkeiten ( VK Preis, Bestand, usw.))

5. Update der Produktdaten in der Datenbank (optimalerweise über Prestashop REST-API)

 

Je nachdem wie man das programmiert macht es aus performancegründen Sinn, die beiden Dateien zuerst zu einer Datei zusammen zu führen, bevor die REST-API aufgerufen wird. Ich würde ausserdem in diesem Fall anstelle der Excel-Datei eine CSV-Datei verwenden. In PHP lässt sich diese leicht auslesen und benötigt nicht wie für Excel ein extra Famework/Library.

 

Du wirst kaum Schwierigkeiten haben, Information im Web über die obigen Punkte zu finden. Dazu gibt es wirklich jede Menge Beispielcode und Forendiskussionen (Prestashop ausgenommen ;-)). 

 

Ich will dir an dieser Stelle nicht vorenthalten dass es Windows-Programme für Prestashop gibt, welche den Produktimport ziemlich erleichtern. Ich habe Kunden welche mit dem "Store Manager for PrestaShop" arbeiten. Siehe https://www.prestashopmanager.com

 

Anscheinend programmiert die Hersteller-Firma auch Scripts nach Kundenwunsch, welche dann im Programm so einiges automatisiert. Ob jedoch der obige Ablauf abgebildet werden kann ist mir nicht bekannt. Mir persönlich gefallen diese Applikationen jedoch nur bedingt, wenn es um Automatisierung geht.

 

Gruss Michael

Link to comment
Share on other sites

Na ja, vielleicht bislang nur nicht in diesem Forum, dafür aber hier: https://coderwall.com/p/2q5lcw/prestashop-background-cron-csv-products-import

 

Ich sagte ja nicht, dass es nichts gibt, nur nicht jede Menge ;-) Vielen Dank für den Link. Diese Variante gefällt mir jedoch persönlich nicht so gut weil mit POST gesendet wird. Wenn da schon eine REST API existiert, würde ich diese gegenüber POST bevorzugen. 

 

Oder gibt es Gründe die API nicht zu benutzen? Bislang habe ich die API übrigens nicht wirklich benutzt, sondern direkt in die Datenbank geschrieben. Aber das waren dann auch nur Kleinigkeiten wie Lagerbestand, Verfügbarkeit, Artikelbeschreibungen, usw.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...