Skip to content

Commit 59e5b10

Browse files
hportenNirus2000
andauthored
Support carry-overs in PDFs of Deutsche Bank (#5166)
* Support carry-overs in PDFs of Deutsche Bank A statement entry like Übertrag (Überweisung) von + 1.000,00 denoting an incoming transfer was not recognized until now. The name of the sending account owner will get logged as a note. * Improve some source Closes #5154 (comment) --------- Co-authored-by: Alexander Ott <webmaster@nirus-online.de>
1 parent 63ddc10 commit 59e5b10

File tree

3 files changed

+125
-46
lines changed

3 files changed

+125
-46
lines changed

name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/deutschebank/DeutscheBankPDFExtractorTest.java

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -949,10 +949,9 @@ public void testWertpapierKauf10()
949949
assertThat(results, hasItem(purchase( //
950950
hasDate("2025-08-21T16:37"), hasShares(5000.0 / 100), //
951951
hasSource("Kauf10.txt"), //
952-
hasNote("Belegnummer 1234567890 / 123456789"), //
953-
hasAmount("USD", 5232.20), hasGrossValue("USD", 5003.00), //
954-
hasTaxes("USD", 150.86), // accrued interest
955-
hasFees("USD", 68.32 + 5.22 + 4.80))));
952+
hasNote("Belegnummer 1234567890 / 123456789 | Zinsen für 158 Zinstage: 150,86 USD"), //
953+
hasAmount("USD", 5232.20), hasGrossValue("USD", 5153.86), //
954+
hasTaxes("USD", 0.00), hasFees("USD", 68.32 + 5.22 + 4.80))));
956955
}
957956

958957
@Test
@@ -2799,14 +2798,49 @@ public void testGiroKontoauszug08()
27992798

28002799
List<Exception> errors = new ArrayList<>();
28012800

2802-
// A trailing whitespace in "Kontoauszug vom 19.09.2025 bis 02.10.2025 "
2803-
// caused a mismatch of the pattern meant to extract the year of the
2804-
// bank statement. It was anchored strictly to the end of the line.
28052801
var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "GiroKontoauszug08.txt"), errors);
28062802

2807-
assertThat(errors, empty());
2803+
// Check if the results list is not empty
2804+
assertTrue(results.isEmpty());
2805+
2806+
// Check if at least one error is present
2807+
assertTrue(!errors.isEmpty());
2808+
2809+
// Extract the first error from the list
2810+
var firstError = errors.get(0);
28082811

2809-
// just a single (skipped) transaction
2812+
// Check if the first error is an UnsupportedOperationException
2813+
assertTrue(firstError instanceof UnsupportedOperationException);
2814+
2815+
// Check the error message of the first error
2816+
var expectedErrorMessage = MessageFormat.format(Messages.PDFdbMsgCannotDetermineFileType,
2817+
"Deutsche Bank Privat- und Geschäftskunden AG", "GiroKontoauszug08.txt");
2818+
assertEquals(expectedErrorMessage, firstError.getMessage());
2819+
}
2820+
2821+
@Test
2822+
public void testGiroKontoauszug09()
2823+
{
2824+
var extractor = new DeutscheBankPDFExtractor(new Client());
2825+
2826+
List<Exception> errors = new ArrayList<>();
2827+
2828+
var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "GiroKontoauszug09.txt"), errors);
2829+
2830+
assertThat(errors, empty());
2831+
assertThat(countSecurities(results), is(0L));
2832+
assertThat(countBuySell(results), is(0L));
2833+
assertThat(countAccountTransactions(results), is(1L));
2834+
assertThat(countAccountTransfers(results), is(0L));
2835+
assertThat(countItemsWithFailureMessage(results), is(0L));
28102836
assertThat(results.size(), is(1));
2837+
new AssertImportActions().check(results, "EUR");
2838+
2839+
// check transaction
2840+
assertThat(results, hasItem(deposit( //
2841+
hasDate("2021-10-21"), hasShares(0), //
2842+
hasSource("GiroKontoauszug09.txt"), hasNote("Übertrag (Überweisung) von Max Mustermann"), //
2843+
hasAmount("EUR", 1000.00), hasGrossValue("EUR", 1000.00), //
2844+
hasTaxes("EUR", 0), hasFees("EUR", 0.00))));
28112845
}
28122846
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
PDFBox Version: 3.0.6
2+
Portfolio Performance Version: 0.80.5.qualifier
3+
System: linux | x86_64 | 21.0.8+9-LTS | Eclipse Adoptium
4+
-----------------------------------------
5+
Deutsche Bank AG
6+
V 100/248 Filiale
7+
Herrn Musterhausen
8+
Max Mustermann Bank-Platz 1
9+
Musterstr. 1a 22222 Musterhausen
10+
22223 Bankstadt Frau Birgit Bankfrau
11+
Telefon (010) 3333-4444
12+
24h-Kundenservice (069) 910-10000
13+
29. Oktober 2021
14+
Kontoauszug vom 14.06.2021 bis 29.10.2021
15+
Kontoinhaber: Max Mustermann
16+
Auszug Seite IBAN BIC (SWIFT) Alter Saldo per 13.06.2021
17+
1 1/1 DE22 2007 0024 0222 4444 00 DEUTDEDBMUS EUR + 0,00
18+
Buchung Valuta Vorgang Soll Haben
19+
21.10. 21.10. Übertrag (Überweisung) von + 1.000,00
20+
Max Mustermann
21+
IBAN DE22200700240222444460
22+
Verwendungszweck/ Kundenreferenz
23+
ÜBERTRAG
24+
Filialnummer Kontonummer Neuer Saldo
25+
100 2224444 00 EUR + 1.000,00
26+
Bankleitzahl
27+
222 333 24
28+
Wichtige Hinweise
29+
Bitte erheben Sie Einwendungen gegen einzelne Buchungen unverzüglich. Schecks, Wechsel und sonstige Lastschriften schreiben wir unter dem Vorbehalt
30+
des Eingangs gut. Der angegebene Kontostand berücksichtigt nicht die Wertstellung der Buchungen (siehe oben unter "Valuta").
31+
Somit können bei Verfügungen1) möglicherweise Zinsen für die Inanspruchnahme einer eingeräumten oder geduldeten Kontoüberziehung anfallen.
32+
Die abgerechneten Leistungen sind als Bank- oder Finanzdienstleistungen von der Umsatzsteuer befreit, sofern Umsatzsteuer nicht gesondert
33+
ausgewiesen ist. Umsatzsteuer ID Nr.: Deutsche Bank AG, 60262 Frankfurt DE114103379
34+
Guthaben sind als Einlagen nach Maßgabe des Einlagensicherungsgesetzes entschädigungsfähig. Nähere Informationen können dem "Informationsbogen
35+
für den Einleger" entnommen werden.
36+
1) Der Begriff umfasst unter anderem die relevanten Zahlungskontendienste "Bargeldauszahlung" und "Überweisung".
37+
0000000003 / 06600800 / 20211030

0 commit comments

Comments
 (0)