Skip to content

Commit 9d286da

Browse files
authored
Modify Trade Republic PDF-Importer to support new transaction (#5189)
https://forum.portfolio-performance.info/t/pdf-import-von-trade-republic/5107/798
1 parent 6b28100 commit 9d286da

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed

name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/TradeRepublicPDFExtractorTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10638,6 +10638,33 @@ public void testRapportDInterets01()
1063810638
hasAmount("EUR", 0.09), hasGrossValue("EUR", 0.09), //
1063910639
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
1064010640
}
10641+
10642+
@Test
10643+
public void testZinsabrechnung10()
10644+
{
10645+
var extractor = new TradeRepublicPDFExtractor(new Client());
10646+
10647+
List<Exception> errors = new ArrayList<>();
10648+
10649+
var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Zinsabrechnung10.txt"), errors);
10650+
10651+
assertThat(errors, empty());
10652+
assertThat(countSecurities(results), is(0L));
10653+
assertThat(countBuySell(results), is(0L));
10654+
assertThat(countAccountTransactions(results), is(1L));
10655+
assertThat(countAccountTransfers(results), is(0L));
10656+
assertThat(countItemsWithFailureMessage(results), is(0L));
10657+
assertThat(results.size(), is(1));
10658+
new AssertImportActions().check(results, "EUR");
10659+
10660+
// check interest transaction
10661+
assertThat(results, hasItem(interest( //
10662+
hasDate("2025-12-01T00:00"), //
10663+
hasSource("Zinsabrechnung10.txt"), //
10664+
hasNote(null), //
10665+
hasAmount("EUR", 28.88), hasGrossValue("EUR", 38.51), //
10666+
hasTaxes("EUR", 9.63), hasFees("EUR", 0.00))));
10667+
}
1064110668

1064210669
@Test
1064310670
public void testRapportDInterets02()
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
PDFBox Version: 3.0.5
2+
Portfolio Performance Version: 0.80.4
3+
System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc.
4+
-----------------------------------------
5+
TRADE REPUBLIC BANK GMBH, BRANCH AUSTRIA KÄRNTNER RING 5-7 1010 WIEN, ÖSTERREICH
6+
flBEUCs wWGSVIhSY
7+
DATUM 01.12.2025
8+
PlMZKYooiYeYhPCATv 1
9+
VERRECHNUNGSKONTO 1234567890
10+
8796 tYLH
11+
ABRECHNUNG ZINSEN
12+
zum 30.11.2025
13+
ÜBERSICHT
14+
VERMÖGENSWERT EINKOMMENSART RATE DATUM GESAMT
15+
Cash Zinsen 2,00% 01.11.2025 - 30.11.2025 38,51 EUR
16+
Gesamt 38,51 EUR
17+
ABRECHNUNG - ZINSEN
18+
POSITION BETRAG
19+
Besteuerungsgrundlage 38,51 EUR
20+
Zinsabschlagsteuer -9,63 EUR
21+
Gesamt 28,88 EUR
22+
BUCHUNG
23+
IBAN BUCHUNGSDATUM GUTSCHRIFT NACH STEUERN
24+
AT123456789012345678 01.12.2025 28,88 EUR
25+
Trade Republic Bank GmbH, Branch Austria www.traderepublic.at Sitz der Gesellschaft: Geschäftsführer
26+
Kärntner Ring 5-7 USt-IdNr DE307510626 Trade Republic Bank GmbH Andreas Torner
27+
1010 Wien, Österreich Brunnenstrasse 19-21 Gernot Mittendorfer
28+
FN 630983 t 10119 Berlin, Deutschland Christian Hecker
29+
AG Charlottenburg HRB 244347 B Thomas Pischke
30+
Erstellt am 2025 Dec 1 03:23:46 Seite 1 von 1

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2683,7 +2683,7 @@ private void addAccountStatementTransaction_Format02()
26832683
// mar Recompensa Your Saveback payment 2,69 € 1.970,43 €
26842684
// 2025
26852685
//
2686-
// 03
2686+
// 03
26872687
// Nov. Prämie Your Kindergeld bonus 0,01 € 410,69 €
26882688
// 2025
26892689
// @formatter:on
@@ -4875,6 +4875,13 @@ private <T extends Transaction<?>> void addTaxesSectionsTransaction(T transactio
48754875
.match("^Pr.l.vements sociaux (\\-)?(?<tax>[\\.,\\d]+) (?<currency>[A-Z]{3})$") //
48764876
.assign((t, v) -> processTaxEntries(t, v, type))
48774877

4878+
// @formatter:off
4879+
// Zinsabschlagsteuer -9,63 EUR
4880+
// @formatter:on
4881+
.section("tax", "currency").optional() //
4882+
.match("^Zinsabschlagsteuer (\\-)?(?<tax>[\\.,\\d]+) (?<currency>[A-Z]{3})$") //
4883+
.assign((t, v) -> processTaxEntries(t, v, type))
4884+
48784885
// @formatter:off
48794886
// Impôt sur le revenu des personnes physiques -0,13 EUR
48804887
// @formatter:on

0 commit comments

Comments
 (0)