DaWanda-Daten nach Fakturama importieren
Das deutsche Online-Portal DaWanda bietet Makern und Kreativen die Moeglichkeit, ihre selbstgefertigten Produkte zum Kauf anzubieten. Jedes Jahr aufs neue kommt dann die leidige Zeit in der die Einkuefte aus selbststaendiger Arbeit fuer die Steuererklaerung erfasst werden muessen. Anfangs mag es noch vertretbar sein eine Calc-Tabelle zu pflegen, mit steigenden Kunden- und Verkaufszahlen wuenscht man sich allerdings eine Software um Produkte, Kunden und Bestellungen verwalten und auf komfortablem Weg eine Jahresabrechnung erstellen zu koennen. Soll diese Software unter Linux lauffaehig sein und zudem nach Moeglichkeit unter einer freien Softwarelizenz stehen, ist die Auswahl allerdings gewohnt beschraenkt.
Fakturama
Die Bueroanwendung Fakturama steht unter der Eclipse Public License v 1.0, einer freien Lizenz mit schwachem Copyleft. Fakturama ist in Java programmiert und unter anderem auch fuer Linux verfuegbar. Der Quelltext wird mit Git unter Bitbucket gehostet.
Auf den ersten Blick bietet Fakturama keinen direkte Anbindung an DaWanda, lediglich ein Forumsbeitrag weist auf eine inoffizielle DaWanda-Schnittstelle hin.
Ein Blick ins Fakturama Handbuch zeigt die Moeglichkeit, Kunden und Produkte per CSV-Datei einzulesen. Die Dateien muessen dabei UTF-8 kodiert sein und im folgenden Format vorliegen:
"itemnr";"name";"category";"description";"price1";"price2";"price3";"price4";"price5";"block1";"block2";"block3";"block4";"block5";"vat";"options";"weight";"unit";"date_added";"picturename";"quantity";"webshopid";"qunit"
Ein entsprechender Produktdatensatz muesste somit wie folgt aussehen:
"0000139";"Pumpjeans darkblue Denim #2";"Pumphosen";"Eine robuste Jeans für kleine Abenteurer und Entdecker. Die zwei großen, extra tiefen Popotaschen helfen beim Verstauen aller Schätze, die man unterwegs so findet... Hochwertiger Bio-Denim in dark blue und grau gestreifte Bündchen zum Mitwachsen machen die neue Lieblingsjeans zum langen Begleiter. Individualisierungen sind möglich.";39,0;39,0;39,0;39,0;39,0;"1";"1";"1";"1";"1";0,00;"";"";-1;"";"c9_1c_4d_40_62_14_4c_bb_98_37_36_8f_d8_af_ff_a7_original.JPEG";"";-1;"St."
Die fuer den Datensatz notwendigen Informationen koennen uber die DaWanda-Programmierschnittstelle (API) fuer Verkaeufer, abgefragt werden. Ueber die Schnittstelle koennen unter anderem die folgenden Informationen abgefragt werden:
Produkte
Bestellungen
Produktkategorien
Eine direkte Abfrage einer Kundenliste ist nicht moeglich, diese kann jedoch aus dem Datensatz mit den Bestellungen gewonnen werden.
Um Shop-interne Daten (z.B. Produkte und Bestellungen) abfragen zu koennen, muss ein sogenannter API-Key erzeugt werden. Der API-Key ist ein 40 Zeichen langer SHA1-Hash which identifies you as a unique API user and is used to track your requests. At the moment, the DaWanda API enables you to access public information. That makes an additional login process unnecessary.
dawanda_tools: Funktionsuebersicht
Alle bisherigen Kunden in ein Fakturama-kompatibles Format exportieren, der erste Kunde erhaelt die Kundennummer KD000001.
Adress- und Namensaenderungen eines Kunden werden erkannt und gegebenenfalls aktualisiert.
Eventueller Kunden-Feedback wird im Fakturama Kundendatensatz unter Notiz gespeichert.
Alle bisher bei DaWanda angebotenen Produkte werden in eine Fakturama-kompatible CSV-Datei exportiert.
Alle bisher eingegangenen Bestellungen in Fakturama einlesen.
Abhaenigkeiten installieren
sudo apt-get install python-progressbar # Ubuntu
su -c 'pacman -S python2-progressbar' # Arch Linux
git clone https://github.com/graznik/dawanda_tools cd dawanda_tools python2 fakturamaImport.py /pfad/zu/fakturama/ --api_key DEIN_API_KEY
Je nach Anzahl der Produkte und Menge der Kundenbewertungen, kann dieser Vorgang einige Zeit in Anspruch nehmen. Nachdem das Programm seine Arbeit verrichten hat, sollten die folgenden Dateien erzeugt worden sein:
FakturamaCustomer.csv
FakturamaProducts.csv
Database.log
Kunden und Produkte importieren
Die beiden CSV-Dateien koennen direkt in Fakturama importiert werden. Der Import erfolgt in drei Schritten und ist im Folgenden am Beispiel der Kundendaten aufgezeigt.
Ueber Datei->Importieren wird der Importdialog gestartet.

Im naechsten Fenster wird der Quelldatensatz spezifiziert, fuer einen Kundenimport ist Kontakte aus CSV Datei importieren zu waehlen.

Beim aller ersten Import genuegt im letzten Schritt ein einfacher Klick auf Fertigstellen um alle Kundendatensaetze zu importieren.

Bestellungen importieren
Vorbereitung
Der naechste Schritt gestaltet sich etwas aufwaendiger. Zu erst muss Fakturama zwingend neu gestartet werden.
Fakturama bietet auf den ersten Blick keine Moeglichkeit Bestellungen zu importieren. Werden Bestellungen von Hand eingegeben, oder sonstige Veraenderungen an Datensaetzen vorgenommen, erstellt Fakturama eine Datei names Database.log im Unterverzeichnis Database. Anhand der in der Datei gespeicherten Anweisungen aktualisiert Fakturama die entsprechenden Datensaetze. Ein ensprechender Dateiinhalt koennte wie folgt aussehen:
INSERT INTO PROPERTIES VALUES(204,'last_setnextnr_date_order','2017-11-04') COMMIT INSERT INTO ITEMS VALUES(0,'',FALSE,'',0.0E0,'0000076','\\u263c Pumphose Bio M\\u00e4dchen Junge \\u263c ',FALSE,FALSE,0,'af_c7_63_d2_a6_e7_42_1a_bc_b9_5f_da_7f_c6_b4_d7_original.JPEG',28.0E0,75,1.0E0,'St.',FALSE,'Free of Tax',0,'Tax-free',0.0E0) COMMIT INSERT INTO DOCUMENTS VALUES(0,'Max Mustermann\\u000aMusterstr. 23c\\u000a12345 Neustadt\\u000aDE','Max Mustermann',2,3,'','','2017-11-04',FALSE,'Max Mustermann\\u000aNeustadt. 23c\\u000a12345 Neustadt\\u000aDE',0.0E0,0,0,-1,FALSE,'0',0.0E0,'','','','BS000001',2,FALSE,'','','','2017-11-04',FALSE,'2000-01-01','Pay Cash',0,'','',0.0E0,'',FALSE,'',0,'2017-11-04',3.0E0,1,'Free of shipping costs',0,'',0.0E0,'Free of shipping costs',31.0E0,426346190,'2017-11-04','') COMMIT
Der Inhalt der Datei wird bei einem Neustart geloescht.
Import
Nach dem Neustart sollte noch einmal ueberprueft werden, ob die Datei Database.log oder deren Inhalt wirklich geloescht wurde. Ist dies der Fall, kann die Datei durch die vom Programm fakturamaImport.py erzeugte Database.log ersetzt werden.
cp Database.log /pfad/zu/fakturama/Database/Database.log
Nach einem erneuten Neustart sollten alle Bestellungen in Fakturama vorhanden sein.
