diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Sparplan11.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Sparplan11.txt new file mode 100644 index 0000000000..0b1a8b3af0 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Sparplan11.txt @@ -0,0 +1,31 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.71.2 +----------------------------------------- +TRADE REPUBLIC BANK GMBH BRUNNENSTRASSE 19-21 10119 BERLIN +Max Mustermann SEITE 1 von 1 +Musterstraße 123 DATUM 04.11.2024 +01234 Musterstadt AUSFÜHRUNG 1234-abcd +SPARPLAN abcd-1234 +DEPOT 0123456789 +WERTPAPIERABRECHNUNG SPARPLAN +ÜBERSICHT +Sparplanausführung am 04.11.2024 an der Lang und Schwarz Exchange. +Der Kontrahent der Transaktion ist Lang & Schwarz TradeCenter AG & Co. KG. +POSITION ANZAHL DURCHSCHNITTSKURS BETRAG +Société Générale 0,920979 Stk. 27,145 EUR 25,00 EUR +ISIN: FR0000130809 +GESAMT 25,00 EUR +ABRECHNUNG +POSITION BETRAG +Finanztransaktionssteuer -0,08 EUR +GESAMT -25,08 EUR +BUCHUNG +VERRECHNUNGSKONTO WERTSTELLUNG BETRAG +DE99012345670123456789 2024-11-06 -25,08 EUR +Société Générale in Girosammelverwahrung in Deutschland +Diese Abrechnung wird maschinell erstellt und daher nicht unterschrieben. +Sofern keine Umsatzsteuer ausgewiesen ist, handelt es sich gem. § 4 Nr. 8 UStG um eine umsatzsteuerfreie Leistung. +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 +ABRE / 4321-dcba \ No newline at end of file diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/TradeRepublicPDFExtractorTest.java b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/TradeRepublicPDFExtractorTest.java index 7d641fd605..d88a7133ee 100644 --- a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/TradeRepublicPDFExtractorTest.java +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/TradeRepublicPDFExtractorTest.java @@ -7437,6 +7437,37 @@ public void testSparplan10() hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))); } + @Test + public void testSparplan11() + { + TradeRepublicPDFExtractor extractor = new TradeRepublicPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Sparplan11.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(1L)); + assertThat(countBuySell(results), is(1L)); + assertThat(countAccountTransactions(results), is(0L)); + assertThat(results.size(), is(2)); + new AssertImportActions().check(results, CurrencyUnit.EUR); + + // check security + assertThat(results, hasItem(security( // + hasIsin("FR0000130809"), hasWkn(null), hasTicker(null), // + hasName("Société Générale"), // + hasCurrencyCode("EUR")))); + + // check buy sell transaction + assertThat(results, hasItem(purchase( // + hasDate("2024-11-04T00:00"), hasShares(0.920979), // + hasSource("Sparplan11.txt"), // + hasNote("Ausführung: 1234-abcd | Sparplan: abcd-1234"), // + hasAmount("EUR", 25.08), hasGrossValue("EUR", 25.00), // + hasTaxes("EUR", 0.08), hasFees("EUR", 0.00)))); + } + @Test public void testPlanDeInvestion01() { diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/TradeRepublicPDFExtractor.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/TradeRepublicPDFExtractor.java index 96289a8a05..924ed5d7b9 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/TradeRepublicPDFExtractor.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/TradeRepublicPDFExtractor.java @@ -3984,6 +3984,13 @@ private > void addTaxesSectionsTransaction(T transactio // @formatter:on .section("tax", "currency").optional() // .match("^.* Finanztransaktionssteuer (\\-)?(?[\\.,\\d]+) (?[\\w]{3})$") // + .assign((t, v) -> processTaxEntries(t, v, type)) + + // @formatter:off + // Finanztransaktionssteuer -0,08 EUR + // @formatter:on + .section("tax", "currency").optional() // + .match("^Finanztransaktionssteuer (\\-)?(?[\\.,\\d]+) (?[\\w]{3})$") // .assign((t, v) -> processTaxEntries(t, v, type)); }