Skip to content

Commit 2485f52

Browse files
hportenbuchen
authored andcommitted
Deutsche Bank: accept optional seconds specification.
A PDF has surfaced that suddenly includes seconds: Schlusstag/-zeit MEZ 20.03.2026 / 08:00:46 Note: there are other places in the code that parse the time. Until we find proof of them also carrying seconds, we leave their patterns untouched. Closes portfolio-performance#5583
1 parent cf0992b commit 2485f52

File tree

3 files changed

+79
-1
lines changed

3 files changed

+79
-1
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,40 @@ public void testWertpapierKauf11()
10911091
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
10921092
}
10931093

1094+
@Test
1095+
public void testWertpapierKauf12()
1096+
{
1097+
var extractor = new DeutscheBankPDFExtractor(new Client());
1098+
1099+
List<Exception> errors = new ArrayList<>();
1100+
1101+
var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kauf12.txt"), errors);
1102+
1103+
assertThat(errors, empty());
1104+
assertThat(countSecurities(results), is(1L));
1105+
assertThat(countBuySell(results), is(1L));
1106+
assertThat(countAccountTransactions(results), is(0L));
1107+
assertThat(countAccountTransfers(results), is(0L));
1108+
assertThat(countItemsWithFailureMessage(results), is(0L));
1109+
assertThat(countSkippedItems(results), is(0L));
1110+
assertThat(results.size(), is(2));
1111+
new AssertImportActions().check(results, "EUR");
1112+
1113+
// check security
1114+
assertThat(results, hasItem(security( //
1115+
hasIsin("IE00BP3QZ825"), hasWkn("A12ATF"), hasTicker(null), //
1116+
hasName("ISIV-E.MSCI WMF U.ETF DLA FUNDS"), //
1117+
hasCurrencyCode("EUR"))));
1118+
1119+
// check transaction
1120+
assertThat(results, hasItem(purchase( //
1121+
hasDate("2026-03-20T08:00:46"), hasShares(0.3945), //
1122+
hasSource("Kauf12.txt"), //
1123+
hasNote("Belegnummer 1595497338 / 718623085"), //
1124+
hasAmount("EUR", 32.60), hasGrossValue("EUR", 32.60), //
1125+
hasTaxes("EUR", 0.00), hasFees("EUR", 0.0))));
1126+
}
1127+
10941128
@Test
10951129
public void testWertpapierVerkauf01()
10961130
{
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
PDFBox Version: 3.0.6
2+
Portfolio Performance Version: 0.82.1
3+
System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc.
4+
-----------------------------------------
5+
Deutsche Bank AG
6+
Zentrale Frankfurt
7+
60262 Frankfurt
8+
eNDOYG lLuxum
9+
ZkwZZXDcp Mayuren Balachandran
10+
Str. 47
11+
22820 WiakHBnmCu Telefon 0211 8838330
12+
24/7-Kundenservice (069) 910-10000
13+
20. März 2026
14+
Abrechnung: Kauf von Wertpapieren
15+
Depotinhaber: WTbxIh IBuXgY
16+
Filialnummer Depotnummer Wertpapierbezeichnung Seite
17+
201 3264459 28 ISIV-E.MSCI WMF U.ETF DLA FUNDS 1/1
18+
WKN A12ATF Nominal ST 0,3945
19+
ISIN IE00BP3QZ825 Kurs EUR 82,64
20+
Verwahrart Wertpapierrechnung Irland
21+
Geschäft Kommissionsgeschäft
22+
Börse Frankfurt a.M. - Deutsche Börse - Frankfurter Wertpapierbörse (FWB) - Xetra
23+
Belegnummer 1595497338 / 718623085 Schlusstag/-zeit MEZ 20.03.2026 / 08:00:46
24+
Ihre Referenz gLZ05
25+
Auftragsart sonstiger Auftrag
26+
Abrechnung Währung Betrag
27+
Kurswert EUR 32,60
28+
Provision EUR 0,41
29+
Provisions-Rabatt EUR -0,41
30+
Belastung
31+
Buchung auf Kontonummer 1864976 80 mit Wertstellung 24.03.2026 EUR 32,60
32+
Die Wertpapiere haben wir entsprechend der Abrechnung gebucht. Unser Geschäftsverkehr mit Ihnen wird durch unsere Allgemeinen Geschäftsbedingungen
33+
und die Sonderbedingungen für Wertpapiergeschäfte geregelt. Bitte überprüfen Sie diese Abrechnung schnellstmöglich und richten Sie etwaige Einwendungen
34+
in den Geschäftsräumen der Bank oder schriftlich an Deutsche Bank AG, QM - Support, 04082 Leipzig. Andernfalls gilt diese Abrechnung als genehmigt.
35+
Die unter § 4 Nr. 8 UStG im Inland fallenden Bank- und Finanzdienstleistungen sind von der Umsatzsteuer befreit, sofern Umsatzsteuer nicht gesondert
36+
ausgewiesen ist. Soweit der Leistungsempfänger umsatzsteuerlicher Unternehmer ist und seinen Sitz in einem anderen EU-Mitgliedstaat hat und die Bank
37+
und Finanzdienstleistungen nach dortigem Recht umsatzsteuerpflichtig sind, gilt die Steuerschuldnerschaft des Leistungsempfängers. Umsatzsteuer ID
38+
Nr.: Deutsche Bank AG, 60262 Frankfurt DE114103379
39+
Vorsitzender des Aufsichtsrats: Alexander R. Wynaendts
40+
Vorstand: Christian Sewing (Vorsitzender), James von Moltke, Raja Akram, Fabrizio Campelli, Marcus Chromik, Bernd Leukert, Alexander von zur Mühlen, Laura Padovani,
41+
Claudio de Sanctis, Rebecca Short
42+
Deutsche Bank Aktiengesellschaft mit Sitz in Frankfurt am Main; Amtsgericht Frankfurt am Main, HRB Nr. 30 000; Umsatzsteuer-Id.-Nr. DE114103379; www.db.com/de
43+
TR00000001 20260320 338_000_

name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/DeutscheBankPDFExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,11 @@ private void addBuySellTransaction()
172172
.assign((t, v) -> t.setDate(asDate(v.get("date"), v.get("time")))),
173173
// @formatter:off
174174
// Belegnummer 1234567890 / 123456 Schlusstag/-zeit MEZ 02.04.2015 / 09:04
175+
// Belegnummer 1595497338 / 718623085 Schlusstag/-zeit MEZ 20.03.2026 / 08:00:46
175176
// @formatter:on
176177
section -> section //
177178
.attributes("date", "time") //
178-
.match("^Belegnummer .* Schlusstag\\/\\-zeit .* (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) \\/ (?<time>[\\d]{2}:[\\d]{2})$") //
179+
.match("^Belegnummer .* Schlusstag\\/\\-zeit .* (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) \\/ (?<time>[\\d]{2}:[\\d]{2}(:[\\d]{2})?)$") //
179180
.assign((t, v) -> t.setDate(asDate(v.get("date"), v.get("time")))),
180181
// @formatter:off
181182
// Belegnummer 1039975477 / 91752537 Schlusstag/-zeit MEZ 23.07.2024 18:20

0 commit comments

Comments
 (0)