Skip to content

Commit cc36399

Browse files
buchenclaude
andcommitted
Updated SantanderConsumerBank 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 9d6b9e3 commit cc36399

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/santanderconsumerbank/SantanderConsumerBankPDFExtractorTest.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasDate;
99
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasFees;
1010
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasForexGrossValue;
11+
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasExDate;
1112
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasGrossValue;
1213
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasIsin;
1314
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasName;
@@ -194,6 +195,7 @@ public void testDividende01()
194195
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
195196

196197
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-06-16T00:00")));
198+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-05-20T00:00")));
197199
assertThat(transaction.getShares(), is(Values.Share.factorize(2)));
198200
assertThat(transaction.getSource(), is("Dividende01.txt"));
199201
assertThat(transaction.getNote(), is("Abrechnungsnr. 00000000000 | Quartalsdividende"));
@@ -240,6 +242,7 @@ public void testDividende01WithSecurityInEUR()
240242
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
241243

242244
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-06-16T00:00")));
245+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-05-20T00:00")));
243246
assertThat(transaction.getShares(), is(Values.Share.factorize(2)));
244247
assertThat(transaction.getSource(), is("Dividende01.txt"));
245248
assertThat(transaction.getNote(), is("Abrechnungsnr. 00000000000 | Quartalsdividende"));
@@ -291,6 +294,7 @@ public void testDividende02()
291294
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));
292295

293296
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2021-05-10T00:00")));
297+
assertThat(transaction.getExDate(), is(LocalDateTime.parse("2021-05-06T00:00")));
294298
assertThat(transaction.getShares(), is(Values.Share.factorize(2)));
295299
assertThat(transaction.getSource(), is("Dividende02.txt"));
296300
assertThat(transaction.getNote(), is("Abrechnungsnr. 0000000000"));
@@ -333,7 +337,8 @@ public void testDividende03()
333337
hasNote("Abrechnungsnr. 00000000000"), //
334338
hasAmount("EUR", 327.96), hasGrossValue("EUR", 327.96), //
335339
hasForexGrossValue("USD", 360.00), //
336-
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
340+
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00), //
341+
hasExDate("2023-06-15T00:00"))));
337342
}
338343

339344
@Test
@@ -369,6 +374,7 @@ public void testDividende03WithSecurityInEUR()
369374
hasNote("Abrechnungsnr. 00000000000"), //
370375
hasAmount("EUR", 327.96), hasGrossValue("EUR", 327.96), //
371376
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00), //
377+
hasExDate("2023-06-15T00:00"), //
372378
check(tx -> {
373379
var c = new CheckCurrenciesAction();
374380
var account = new Account();
@@ -410,7 +416,8 @@ public void testDividende04()
410416
hasNote("Abrechnungsnr. 00000000000"), //
411417
hasAmount("EUR", 291.95), hasGrossValue("EUR", 363.10), //
412418
hasForexGrossValue("USD", 390.48), //
413-
hasTaxes("EUR", 62.15 + 3.41 + 5.59), hasFees("EUR", 0.00))));
419+
hasTaxes("EUR", 62.15 + 3.41 + 5.59), hasFees("EUR", 0.00), //
420+
hasExDate("2024-06-13T00:00"))));
414421
}
415422

416423
@Test
@@ -446,6 +453,7 @@ public void testDividende04WithSecurityInEUR()
446453
hasNote("Abrechnungsnr. 00000000000"), //
447454
hasAmount("EUR", 291.95), hasGrossValue("EUR", 363.10), //
448455
hasTaxes("EUR", 62.15 + 3.41 + 5.59), hasFees("EUR", 0.00), //
456+
hasExDate("2024-06-13T00:00"), //
449457
check(tx -> {
450458
var c = new CheckCurrenciesAction();
451459
var account = new Account();

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@ private void addDividendeTransaction()
212212
.match("^.* Art der Dividende (?<note>.*)$") //
213213
.assign((t, v) -> t.setNote(concatenate(t.getNote(), v.get("note"), " | ")))
214214

215+
// @formatter:off
216+
// Ex-Tag 20.05.2021 Art der Dividende Quartalsdividende
217+
// Ex-Tag 06.05.2021
218+
// @formatter:on
219+
.section("exDate").optional() //
220+
.match("^Ex\\-Tag (?<exDate>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*$") //
221+
.assign((t, v) -> t.setExDate(asDate(v.get("exDate"))))
222+
215223
.wrap(TransactionItem::new);
216224

217225
addTaxesSectionsTransaction(pdfTransaction, type);

0 commit comments

Comments
 (0)