Skip to content

Commit 2916e5c

Browse files
buchenclaude
andcommitted
Updated DZBankGruppe PDF Extractor to support parsing of dividend ex-date
Issue: portfolio-performance#5439 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 2485f52 commit 2916e5c

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/dzbankgruppe/DZBankGruppePDFExtractorTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,7 @@ public void testDividende01()
722722
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
723723

724724
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-06-10T00:00")));
725+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-05-31T00:00")));
725726
assertThat(transaction.getShares(), is(Values.Share.factorize(17)));
726727
assertThat(transaction.getSource(), is("Dividende01.txt"));
727728
assertNull(transaction.getNote());
@@ -769,6 +770,7 @@ public void testDividende01WithSecurityinEUR()
769770
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
770771

771772
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-06-10T00:00")));
773+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-05-31T00:00")));
772774
assertThat(transaction.getShares(), is(Values.Share.factorize(17)));
773775
assertThat(transaction.getSource(), is("Dividende01.txt"));
774776
assertNull(transaction.getNote());
@@ -821,6 +823,7 @@ public void testDividende02()
821823
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
822824

823825
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-03-17T00:00")));
826+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-02-26T00:00")));
824827
assertThat(transaction.getShares(), is(Values.Share.factorize(205)));
825828
assertThat(transaction.getSource(), is("Dividende02.txt"));
826829
assertThat(transaction.getNote(), is("Quartalsdividende"));
@@ -868,6 +871,7 @@ public void testDividende02WithSecurityinEUR()
868871
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
869872

870873
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-03-17T00:00")));
874+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-02-26T00:00")));
871875
assertThat(transaction.getShares(), is(Values.Share.factorize(205)));
872876
assertThat(transaction.getSource(), is("Dividende02.txt"));
873877
assertThat(transaction.getNote(), is("Quartalsdividende"));
@@ -920,6 +924,7 @@ public void testDividende03()
920924
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
921925

922926
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-02-08T00:00")));
927+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-02-04T00:00")));
923928
assertThat(transaction.getShares(), is(Values.Share.factorize(160)));
924929
assertThat(transaction.getSource(), is("Dividende03.txt"));
925930
assertNull(transaction.getNote());
@@ -965,6 +970,7 @@ public void testDividende04()
965970
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
966971

967972
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-03-24T00:00")));
973+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-03-18T00:00")));
968974
assertThat(transaction.getShares(), is(Values.Share.factorize(350)));
969975
assertThat(transaction.getSource(), is("Dividende04.txt"));
970976
assertNull(transaction.getNote());
@@ -1011,6 +1017,7 @@ public void testDividende04WithSecurityinEUR()
10111017
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
10121018

10131019
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-03-24T00:00")));
1020+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-03-18T00:00")));
10141021
assertThat(transaction.getShares(), is(Values.Share.factorize(350)));
10151022
assertThat(transaction.getSource(), is("Dividende04.txt"));
10161023
assertNull(transaction.getNote());
@@ -1062,6 +1069,7 @@ public void testDividende05()
10621069
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
10631070

10641071
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-06-23T00:00")));
1072+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-06-21T00:00")));
10651073
assertThat(transaction.getShares(), is(Values.Share.factorize(250)));
10661074
assertThat(transaction.getSource(), is("Dividende05.txt"));
10671075
assertNull(transaction.getNote());
@@ -1107,6 +1115,7 @@ public void testDividende06()
11071115
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
11081116

11091117
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-06-21T00:00")));
1118+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2022-06-08T00:00")));
11101119
assertThat(transaction.getShares(), is(Values.Share.factorize(102)));
11111120
assertThat(transaction.getSource(), is("Dividende06.txt"));
11121121
assertNull(transaction.getNote());
@@ -1154,6 +1163,7 @@ public void testDividende06WithSecurityinEUR()
11541163
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
11551164

11561165
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-06-21T00:00")));
1166+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2022-06-08T00:00")));
11571167
assertThat(transaction.getShares(), is(Values.Share.factorize(102)));
11581168
assertThat(transaction.getSource(), is("Dividende06.txt"));
11591169
assertNull(transaction.getNote());
@@ -1206,6 +1216,7 @@ public void testDividende07()
12061216
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
12071217

12081218
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-09-30T00:00")));
1219+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2022-07-28T00:00")));
12091220
assertThat(transaction.getShares(), is(Values.Share.factorize(1400)));
12101221
assertThat(transaction.getSource(), is("Dividende07.txt"));
12111222
assertThat(transaction.getNote(), is("Zwischendividende"));
@@ -1253,6 +1264,7 @@ public void testDividende07WithSecurityinEUR()
12531264
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
12541265

12551266
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-09-30T00:00")));
1267+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2022-07-28T00:00")));
12561268
assertThat(transaction.getShares(), is(Values.Share.factorize(1400)));
12571269
assertThat(transaction.getSource(), is("Dividende07.txt"));
12581270
assertThat(transaction.getNote(), is("Zwischendividende"));

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,14 @@ private void addDividendeTransaction()
255255
.match("^Den Betrag buchen wir mit Wertstellung (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*$") //
256256
.assign((t, v) -> t.setDateTime(asDate(v.get("date"))))
257257

258+
// @formatter:off
259+
// Ex-Tag 26.02.2021 Art der Dividende Quartalsdividende
260+
// Ex-Tag 31.05.2021
261+
// @formatter:on
262+
.section("exDate").optional() //
263+
.match("^Ex\\-Tag (?<exDate>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*$") //
264+
.assign((t, v) -> t.setExDate(asDate(v.get("exDate"))))
265+
258266
// @formatter:off
259267
// Ausmachender Betrag 13,28+ EUR
260268
// @formatter:on

0 commit comments

Comments
 (0)