- Python 100%
|
|
||
|---|---|---|
| .gitignore | ||
| config_example.json | ||
| LICENSE | ||
| main.py | ||
| README.md | ||
EasyVerein2PAIN
Python-Script zur Konvertierung von EasyVerein-Export (CSV, UTF-8) zur Erstellung einer SEPA-XML-Datei (SEPA PAIN.008.001.08).
Die Konvertierung erfolgt mithilfe der sepaxml-Library (https://github.com/raphaelm/python-sepaxml, https://pypi.org/project/sepaxml).
Das Hinzufügen von fehlenden BICs erfolgt mithilfe der schwifty-Library (https://pypi.org/project/schwifty). Diese überprüft auch die Prüfsumme der IBANs auf Gültigkeit.
Die entsprechenden Abhängigkeiten können via pip installiert werden.
To-Do
[] Doc
create_single_payment_json
[] Implementierung letzte Abbuchung bei Konvertierung normalisierter CSV zu single_payment_JSON
Formatbeispiele
input_csv.csv
"Vorname";"Nachname";"Zahlungsart";"IBAN";"BIC";"Betrag";"Mandatsreferenz";"Mandatsdatum";"Typ";"Datum der Belastung";"Verwendungszweck"
"Max";"Mustermann";"Lastschrift";"DE1234567890";"BIC";"10,00 €";"00000000";"01.01.00";"Folgelastschrift";"01.01.00";"Buchungstext"
config.json
{
"name": "Test von Testenstein",
"IBAN": "NL50BANK1234567890",
"BIC": "BANKNL2A",
"batch": true,
"creditor_id": "DE26ZZZ00000000000",
"currency": "EUR",
"instrument": "B2C"
}
single_payment_json
{
"name": "Vorname Nachname",
"IBAN": "IBAN",
"BIC": "BIC",
"amount": "Betrag in cents (Betrag * 100)",
"type": "Typ", # if value in CSV "erstmalige Abbuchung" = FRST, if "Folgelastschrift" = RCUR
"collection_date": "Datum der Belastung",
"mandate_id": "Mandatsreferenz",
"mandate_date": "Mandatsdatum",
"description": "Test Verwendungszweck"
}
Vorbereitugen
config.json
Die Datei confg.json muss vor Ausführung mit den entsprechenden Werten gefüllt werden. Hierzu kann die config_example.json kopiert werden.
Die Verwendung von Umlauten, Sonderzeichen (Nicht-ASCII) o. Ä. ist nicht vorgesehen und sollte vermieden werden.
Input-Datei
Die Input-Datei muss im CSV-Format vorliegen. Codierung: UTF-8, Trennzeichen: Semikolon. Alle Felder sollen mit Anführungszeichen versehen sein.
Die erste Zeile enthält die Überschriften, nachfolgend die Daten. Die Reihenfolge der Spalten hat dem Formatbeispiel für "input_csv.csv" zu entsprechen.
Auf folgende Formatierung ist besonders zu achten:
Datum: "TT.MM.JJJJ"
Betrag: "00,00 €"
Verwendung
Das Skript setzt zwei Argumente vorraus:
python main.py /path/to/input/file.csv /path/to/output/file.xml
Normalisierung
Die Input-Datei wird an die technischen Voraussetzungen angepasst:
ä -> ae
ö -> oe
ü -> ue
/ -> Leerzeichen
Sonstige Nicht-ASCII-Zeichen werden entfernt.
Die normalisierte Datei wird im Programmordner als "normalized_csv.csv" zwischengespeichert.