Skip to content

Commit

Permalink
Improve TradeRepublic PDF Importer (#4339)
Browse files Browse the repository at this point in the history
Add support for interest transaction with the identifiying line:
"IBAN BUCHUNGSDATUM GESAMT"
  • Loading branch information
MonkeySon authored Nov 9, 2024
1 parent b6e46c3 commit 4b2ffef
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8082,6 +8082,39 @@ public void testZinsabrechnung06()
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testZinsabrechnung07()
{
TradeRepublicPDFExtractor extractor = new TradeRepublicPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Zinsabrechnung07.txt"), errors);

assertThat(errors, empty());
assertThat(countSecurities(results), is(0L));
assertThat(countBuySell(results), is(0L));
assertThat(countAccountTransactions(results), is(2L));
assertThat(results.size(), is(2));
new AssertImportActions().check(results, CurrencyUnit.EUR);

// check interest transaction
assertThat(results, hasItem(interest( //
hasDate("2024-07-01T00:00"), //
hasSource("Zinsabrechnung07.txt"), //
hasNote("Zinsen 01.06.2024 - 11.06.2024 (4,00%)"), //
hasAmount("EUR", 21.02), hasGrossValue("EUR", 21.02), //
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));

// check interest transaction
assertThat(results, hasItem(interest( //
hasDate("2024-07-01T00:00"), //
hasSource("Zinsabrechnung07.txt"), //
hasNote("Zinsen 12.06.2024 - 30.06.2024 (3,75%)"), //
hasAmount("EUR", 52.06), hasGrossValue("EUR", 52.06), //
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testRescontoInteressiMaturati01()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.71.3.qualifier
-----------------------------------------
TRADE REPUBLIC BANK GMBH BRUNNENSTRASSE 19-21 10119 BERLIN
JKPzDZ ELEXWvPTL SEITE 1 von 1
EfeCspUiGehWvSAZ 89 DATUM 01.07.2024
8051 Ipgs VERRECHNUNGSKONTO 7964603079
STEUER-ID 542208021
ABRECHNUNG ZINSEN
zum 30.06.2024
ÜBERSICHT
VERMÖGENSWERT EINKOMMENSART ZINSEN DATUM GESAMT
Cash Zinsen 4,00% 01.06.2024 - 11.06.2024 21,02 EUR
Cash Zinsen 3,75% 12.06.2024 - 30.06.2024 52,06 EUR
BUCHUNG
IBAN BUCHUNGSDATUM GESAMT
DE12321546856552266333 01.07.2024 74,08 EUR
Trade Republic Bank GmbH www.traderepublic.com Sitz der Gesellschaft: Berlin Geschäftsführer
Brunnenstraße 19-21 service@traderepublic.com AG Charlottenburg HRB 244347 B Andreas Torner
10119 Berlin USt-ID DE307510626 Gernot Mittendorfer
Original file line number Diff line number Diff line change
Expand Up @@ -2528,9 +2528,13 @@ private void addTaxesStatementTransaction()
//
// VERRECHNUNGSKONTO DATUM DER ZAHLUNG BETRAG
// DE12345678912345678912 28.09.2024 -0.27 EUR
//
// IBAN BUCHUNGSDATUM GESAMT
// DE12321546856552266333 01.07.2024 74,08 EUR
//
// @formatter:on
.section("date") //
.find("(IBAN BUCHUNGSDATUM GUTSCHRIFT NACH STEUERN|VERRECHNUNGSKONTO (VALUTA|WERTSTELLUNG|DATUM DER ZAHLUNG) BETRAG)") //
.find("(IBAN BUCHUNGSDATUM (GUTSCHRIFT NACH STEUERN|GESAMT)|VERRECHNUNGSKONTO (VALUTA|WERTSTELLUNG|DATUM DER ZAHLUNG) BETRAG)") //
.match("^.* (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (\\-)?[\\.,\\d]+( [\\w]{3})?$") //
.assign((ctx, v) -> {
ctx.put("date", v.get("date"));
Expand Down Expand Up @@ -2883,11 +2887,16 @@ private void addInterestStatementTransaction()
+ "|INTEREST INVOICE)", //
documentContext -> documentContext //
// @formatter:off
//
// IBAN BUCHUNGSDATUM GUTSCHRIFT NACH STEUERN
// DE10123456789123456789 01.02.2023 0,88 EUR
//
// IBAN BUCHUNGSDATUM GESAMT
// DE12321546856552266333 01.07.2024 74,08 EUR
//
// @formatter:on
.section("date") //
.find("IBAN (BUCHUNGSDATUM|DATA EMISSIONE|BOOKING DATE) (GUTSCHRIFT NACH STEUERN|TOTALE|TOTAL)") //
.find("IBAN (BUCHUNGSDATUM|DATA EMISSIONE|BOOKING DATE) (GUTSCHRIFT NACH STEUERN|GESAMT|TOTALE|TOTAL)") //
.match("^.* (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) [\\.,\\d]+ [\\w]{3}$") //
.assign((ctx, v) -> {
ctx.put("date", v.get("date"));
Expand Down

0 comments on commit 4b2ffef

Please sign in to comment.