Bankimport: Compatibility with Postbank CSV files

This commit is contained in:
Raphael Michel
2016-08-14 19:52:00 +02:00
parent 71944d4b1e
commit a1824595b1
3 changed files with 37 additions and 1 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
import csv
import io
import re
class HintMismatchError(Exception):
@@ -23,10 +24,10 @@ def parse(data, hint):
resrow['reference'] = "\n".join([row[int(i)].strip() for i in hint.get('reference')]).strip()
if hint.get('amount') is not None:
resrow['amount'] = row[int(hint.get('amount'))].strip()
resrow['amount'] = re.sub('[^0-9,+.-]', '', resrow['amount'])
if hint.get('date') is not None:
resrow['date'] = row[int(hint.get('date'))].strip()
if len(resrow['amount']) == 0 or 'amount' not in resrow \
or resrow['amount'][0] not in list("1234567890," "+- ") \
or len(resrow['reference']) == 0 or resrow['date'] == '':
# This is probably a headline or something other special.
continue
@@ -0,0 +1,11 @@
Umsatzauskunft - gebuchte Umsätze
Name;Fiktive Veranstaltungsgesellschaft mbH
BLZ;12345679
Kontonummer;00123456789
IBAN;DE12500105170648489890
Aktueller Kontostand;1.337,42 €
Summe vorgemerkter Umsätze;0,00 €
"Buchungstag";"Wertstellung";"Umsatzart";"Buchungsdetails";"Auftraggeber";"Empfänger";"Betrag (€)";"Saldo (€)"
"07.08.2016";"01.08.2016";"Gutschrift";"Verwendungszweck 2015ABCDE";"Karla Kundin";"Fiktive Veranstaltungsgesellschaft mbH";"¤ 42,00";"¤ 1.337,42"
"29.07.2016";"29.07.2016";"Gutschrift";"Referenz NOTPROVIDED";"Lars Lieferant";"Fiktive Veranstaltungsgesellschaft mbH";"¤ 56,76";"¤ 1.337,42"
1 Umsatzauskunft - gebuchte Umsätze
2 Name Fiktive Veranstaltungsgesellschaft mbH
3 BLZ 12345679
4 Kontonummer 00123456789
5 IBAN DE12500105170648489890
6 Aktueller Kontostand 1.337,42 €
7 Summe vorgemerkter Umsätze 0,00 €
8 Buchungstag Wertstellung Umsatzart Buchungsdetails Auftraggeber Empfänger Betrag (€) Saldo (€)
9 07.08.2016 01.08.2016 Gutschrift Verwendungszweck 2015ABCDE Karla Kundin Fiktive Veranstaltungsgesellschaft mbH ¤ 42,00 ¤ 1.337,42
10 29.07.2016 29.07.2016 Gutschrift Referenz NOTPROVIDED Lars Lieferant Fiktive Veranstaltungsgesellschaft mbH ¤ 56,76 ¤ 1.337,42
@@ -121,3 +121,27 @@ class CsvImportTest(TestCase):
]
filename = "csvimport_data_de_dab.csv"
self._test_from_sample_file(filename, expected, hint, expected_parsed)
def test_sample_file_postbank(self):
expected = [
['Buchungstag', 'Wertstellung', 'Umsatzart', 'Buchungsdetails', 'Auftraggeber', 'Empfänger',
'Betrag (\x80)', 'Saldo (\x80)'],
['07.08.2016', '01.08.2016', 'Gutschrift', 'Verwendungszweck 2015ABCDE', 'Karla Kundin',
'Fiktive Veranstaltungsgesellschaft mbH', '\xA4 42,00', '\xA4 1.337,42'],
['29.07.2016', '29.07.2016', 'Gutschrift', 'Referenz NOTPROVIDED', 'Lars Lieferant',
'Fiktive Veranstaltungsgesellschaft mbH', '\xA4 56,76', '\xA4 1.337,42'],
]
hint = {
'payer': [4],
'reference': [3],
'date': 0,
'amount': 6,
'cols': 8,
}
expected_parsed = [
{'payer': 'Karla Kundin', 'reference': 'Verwendungszweck 2015ABCDE', 'amount': '42,00',
'date': '07.08.2016'},
{'payer': 'Lars Lieferant', 'reference': 'Referenz NOTPROVIDED', 'amount': '56,76', 'date': '29.07.2016'}
]
filename = "csvimport_data_de_postbank.csv"
self._test_from_sample_file(filename, expected, hint, expected_parsed)