Muster-Datenimport Tutorial

Gerade im Bereich der ERP-Systeme ist es wichtig Daten z.B aus anderen Systemen oder auch alten Versionen importieren zu können. Die Möglichkeit des CSV-Daten Imports ist beim Open Source ERP System Software eine der gängisten Methoden, um seine bisher vorhandenen Daten weiterverwenden zu können.


Im Verlauf dieses Tutorials wird gezeigt wie man anhand eines Muster-Pythons-Skripts und einer beispielhaften CSV-Datei einen Import durchführen kann.

Kundendaten-Import

CSV-Datei

Eine CSV-Datei lässt sich mit den gängisten Tabellenkalkulationsprogrammen öffnen. Wir empfehlen hierzu das Programm LibreOffice Calc. Die im nachfolgenden Tutorial verwendete CSV-Datei Exemplary_customer_csv.csv liegt für Sie hier zum Download bereit.

Sobald Sie die CSV-Datei Exemplary_customer_csv.csv mit dem Programm LibreOffice Calc öffnen, müssen Sie verschiedene Parameter setzen, um so ein Spaltenweises Erscheinungsbild zu erreichen. Es ist wichtig, dass das verwendete Trennzeichen richtig gesetzt ist (wie hier im Beispiel "Comma"). Als Zeihensatz empfehlen wir UTF-8, da sich damit auch z.B. Sonderzeichen von Fremdsprachen abbilden lassen.

Die verschiedenen einzelnen Spalten sind im späteren Verlauf von diesem Tutorial von Wichtigkeit (siehe Kundendaten-Import Python-Skript).

Kundendaten-Import

Python-Skript

Bevor Sie ein Python-Skript nutzen oder Ihren Bedürfnissen anpassen können, müssen Sie zunächst über eine geeigente Entwicklungsumgebung verfügen. Hierfür empfehlen wir PyCharm. PyCharm ist für die Betriebssysteme Windows, Mac OS  und Linux verfügbar.

Darüber hinaus verwenden wir die Python-Version 2.7.11. Diese können Sie hier herunterladen.


Nachfolgend wird ein Teil des Python-Skripts des Kundendaten-Imports näher betrachtet und erläutert. Das gesamte Python-Skript import_exemplary_customer.py finden Sie hier

Der Daten-Import verläuft über die XML-RPC Schnittstelle. Durch diese wird ein Funktionsaufruf durch verteilte Systeme ermöglicht. Damit man aber einen erfolgreichen Import via Python-Skript vornehmen kann, müssen neben den erforderlichen Bibliotheken (xmlrpclib und csv) zunächst die Zugangsdaten der gewünschten Datenbank bekannt und im Python Skript eingetragen werden.




Anschließend muss die verwendete CSV-Datei angegeben werden, in diesem Fall die Exemplary_customer_csv.csv. Der delimiter (in diesem Fall das ,) gibt das Trennzeichen an, welches auch zuvor beim Öffnen der CSV-Datei eingestellt und verwendet wurde. Ein falsch gesetztes Trennzeichen wirft unter Umständen Fehler aus (z.B. Index out of range).

Wichtig: Geben Sie bitte den korrekten Pfad zu Ihrer CSV-Datei an (hier: 'csv/Exemplary_customer_csv.csv'), sodass später der Import ohne Fehlermeldungen gestartet werden kann.

Um mit Python die entsprechenden Spalten der CSV-Datei ansprechen und demzufolge verwenden zu können, müssen diese zunächst im Python-Skript zugeordnet werden. Dies erfolgt in der import_exemplary_customer.py über eine einfache Zuweisung der einzelnen Spalten (row) zu den verschiedenen Feldernamen des Open Source ERP Software Systems (z.B. Zeile 92 'name'). Außerdem wird hier bei jedem Feld durch eine Abfrage zunächst überprüft, ob das jeweilige Feld der CSV-Datei komplett leer ist oder nur aus einem Leerzeichen besteht. Wenn dies nicht der Fall ist, wird der Eintrag entsprechend der CSV-Datei getätigt.

Wichtig: Sollten Sie eine selbsterstellte CSV-Datei verwenden, so müssen Sie die verschiedenen Spalten (row) des Python-Skripts Ihrer CSV-Datei anpassen. row[0] entspricht der 1. Spalte der CSV-Datei, row[1] der 2. Spalte usw. 

Nun folgen Felder, welche sich durch andere Eigenschaften wie die bereits erwähnten Felder kennzeichnen:

  • Zahlungsbedingungen
  • Schlagwörte
  • und die Debitorenkonten der Kunden.

Das im unteren Screenshot zu sehende Feld der Zahlungsbedingungen im Open Source ERP System Software ist zum Beispiel durch seine many-to-one Beziehung gekennzeichnet und muss somit auch im Python Skript anderst gesetzt werden. Das Dictionary payment_data enthält die drei benötigten Felder dieser Rubrik Zahlungsbedingungen. 

Das Feld der Zahlungsbedingung muss als erstes neu erstellt werden, mit dessen dazugehörigen Feldern 'name', 'active' und 'note'. Die Neuerstellung geschieht aber nur, wenn diese Zahlungsbedingung nicht bereits schon existiert. Das verwendete Mapping payment_name_mapping{ }aus Zeile 163 wird für die Überprüfung genutzt, ob ein in der CSV-Datei enthaltene Bezeichnung einer Zahlungsbedingung bereits in der Datenbank enthalten ist (wie zum Beispiel 'Sofortige Zahlung' und die englische Bezeichnung dazu 'Immediate Payment'). Zur Überprüfung wird außerdem die Methode search aus Zeile 174 verwendet. Hier werden die Einträge der CSV-Datei in der Spalte der Zahlungsbedingungen mit den in der Datenbank vom Open Source ERP System Software verwendeten verglichen und sobald sich eine unterscheidet, wird diese wiederum angelegt und zum Schluss durch 

partner_data['property_payment_term] = payment_id

dem jeweiligen Kunden zugeordnet.

Genauso verläuft der Import der kundenspezifisch gesetzten Schlagwörter. Auch hier wird das verwendete Mapping category_name_mapping{ } aus Zeile 187 zur Überprüfung der bereits in der Datenbank enthaltenen Schlagwörter genutzt, um so einen doppelten Eintrag zu vermeiden. Der einzige Unterschied zu den Zahlungsbedingungen ist hier die many-to-many Beziehung, welche es zu beachten gilt. Dadurch können pro Kunde mehrere Schlagwörter gesetzt werden. Der Import eines solches many-to-many Feldes geschieht, wie in der dazugehörigen Software Dokumentation unter der Rubrik Model References

Die Vorgehensweise des Imports der Debitorenkonten der einzelnen Kunden entspricht der beiden anderen zuvor genannten Rubriken der Zahlungsbedingungen und der Schlagwörter. Auch hier wird zunächst überprüft, ob es zu dem Kunden schon ein Debitorenkonto gibt oder nicht. 


Produktdatenimport per CSV

CSV-Datei

Für den Produktdaten-Import wurde die CSV-Datei Exemplary_product_csv.csv verwendet. Diese liegt hier in GitHub für Sie bereit. Hier wurde aus Präsentationsgründen ein Semikolon als Trennzeichen verwendet. Vom groben Aufbau entspricht diese CSV-Datei der CSV-Datei der Kundendaten. Ausnahme sind hier die unterschiedlichen Felder, welche bei Produktdaten im Vergleich zu Kundendaten verwendet werden.

Produktdatenimport per Python Skript

Python-Skript

Das Python-Skript für den Kundendaten-Import ähnelt im Aufbau dem Python-Skript des Kundendaten-Imports. Jedoch gibt es hier wiederum andere Felder, welche gesetzt werden müssen oder auch gar nicht bei den Produkten existieren. Dies galt es zu ändern und anzupassen.

Das aus Präsentationszwecken verwendete andere Trennzeichen (delimiter) muss auch hier dem Python-Skript bekannt gemacht werden (siehe Bild rechts delimiter=';').


Rechts sehen Sie nun auch die einzelnen Feldernamen eines Produkts, wie Sie dem Open Source ERP System Software bekannt sind. Diese müssen genauso wie beim Kundendaten-Import den Spalten (row) der CSV-Datei zugeordnet werden. 


Nun erfolgt auch hier bei jedem Feld der CSV-Datei zunächst eine Abfrage, ob dieses leer ist oder nicht. Ist diese Abfrage erfolgt und ist das Feld der CSV-Datei nicht leer, so wird der Inhalt in das dazu gehörige Feld des Open Source ERP Systems Software importiert.

Zusammenfassung

Tutorial: Musterdaten-Import

Dieses Tutorial sollte einerseits einen Kundendaten-Import und andererseits einen Produktdaten-Import exemplarisch zur Verfügung stellen und diese dementsprechend erläutern. Dieses Tutorial soll demnach für Endbenutzer als Hilfe bereitgestellt werden, welche sich mal selbst an einem Import Ihrer Daten versuchen möchten.