From 9221a9b9e0a5075a7c16d827b0a0b1dc0ac085f0 Mon Sep 17 00:00:00 2001 From: Alexander Ott <45203494+Nirus2000@users.noreply.github.com> Date: Sun, 8 Dec 2024 08:04:42 +0100 Subject: [PATCH] Add test case to Trade Republic PDF-Importer (#4390) https://forum.portfolio-performance.info/t/pdf-import-von-trade-republic/5107/724 Fix missing check MsgErrorTransactionAlternativeDocumentRequired in interest transations --- .../pdf/traderepublic/Kontoauszug23.txt | 38 +++++++ .../TradeRepublicPDFExtractorTest.java | 99 ++++++++++++++----- 2 files changed, 115 insertions(+), 22 deletions(-) create mode 100644 name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Kontoauszug23.txt diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Kontoauszug23.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Kontoauszug23.txt new file mode 100644 index 0000000000..81ea0e1c9a --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/traderepublic/Kontoauszug23.txt @@ -0,0 +1,38 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.72.2 +----------------------------------------- +zmQMYoSZ vfiG sdiUQ DATUM 01 Dez. 2024 - 02 Dez. 2024 +KmptPZIkGoYM Straße 46, 00527 IBAN DE12121123450242790201 +BgdudDzwS, DE BIC TRBKDEBBXXX +KONTOÜBERSICHT +PRODUKT ANFANGSSALDO ZAHLUNGSEINGANG ZAHLUNGSAUSGANG ENDSALDO +Depotkonto 76.171,86 € 657,52 € 547,18 € 76.282,20 € +UMSATZÜBERSICHT +DATUM TYP BESCHREIBUNG ZAHLUNGSEINGANG ZAHLUNGSAUSGANG SALDO +01 Dez. +2024 Zinszahlung Your interest payment 150,28 € 76.322,14 € +02 Dez. +2024 Kartentransaktion xoSEqCGkmh eqt STATION 39,94 € 76.282,20 € +02 Dez. Handel Savings plan execution LU0908500753 Amundi Index Solutions - Amundi 2024 Stoxx Europe 600 UCITS ETF Acc, quantity: 0.420256 100,00 € 76.182,20 € +02 Dez. +2024 Überweisung Incoming transfer from FFzotalY jzkOA VDDIVAlJ-BFlsJNLDaTKa 500,00 € 76.682,20 € +02 Dez. +2024 Prämie Your Saveback payment 7,24 € 76.689,44 € +02 Dez. Handel Savings plan execution IE00BTJRMP35 Xtrackers (IE) Plc - Xtrackers MSCI 2024 Emerging Markets UCITS ETF 1C, quantity: 1.374431 75,00 € 76.614,44 € +02 Dez. Handel Savings plan execution IE00B4L5Y983 iShares III plc - iShares Core MSCI 2024 World UCITS ETF USD (Acc), quantity: 0.068495 7,24 € 76.607,20 € +02 Dez. Handel Savings plan execution IE00B4L5Y983 iShares III plc - iShares Core MSCI 2024 World UCITS ETF USD (Acc), quantity: 3.076777 325,00 € 76.282,20 € +Seite 1 von 2 +Erstellt am 03 Dez. 2024 +Trade Republic Bank GmbH +HAFTUNGSAUSSCHLUSS +Sehr geehrte Kundin, sehr geehrter Kunde +Bitte überprüfe unbedingt deine Buchungen, Berechnungen und den Schlusssaldo auf dem Kontoauszug, der gleichzeitig deinen Rechnungsabschluss +darstellt. Der Rechnungsabschluss gilt als anerkannt, wenn du innerhalb von sechs Wochen nach Zugang keine Einwendungen erhebst. Einwendungen +gegen Kontoauszüge sind schriftlich an uns zu richten. Guthaben sind einlagefähig im Sinne des Einlagensicherungsgesetzes (EinSiG). Weitere +Informationen entnehme bitte dem Merkblatt für den Einleger, das zusammen mit unseren Allgemeinen Geschäftsbedingungen eingesehen werden kann. +Trade Republic Bank GmbH Kontakt Sitz der Gesellschaft: Berlin +Brunnenstraße 19-21 www.traderepublic.com AG Charlottenburg HRB 244347 B +10119 Berlin service@traderepublic.com Umsatzsteuer-ID DE307510626 +Seite 2 von 2 +Erstellt am 03 Dez. 2024 +Trade Republic Bank GmbH \ 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 63f7fd63d1..ebeebd71d9 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 @@ -2281,8 +2281,10 @@ public void testKontoauszug21() new AssertImportActions().check(results, CurrencyUnit.EUR); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-04-01"), hasAmount("EUR", 114.96), // - hasSource("Kontoauszug21.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-04-01"), hasAmount("EUR", 114.96), // + hasSource("Kontoauszug21.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(fee(hasDate("2024-04-16"), hasAmount("EUR", 5.00), @@ -2293,12 +2295,16 @@ public void testKontoauszug21() hasSource("Kontoauszug21.txt"), hasNote("ALDI SAGT DANKE")))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-05-01"), hasAmount("EUR", 111.50), // - hasSource("Kontoauszug21.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-05-01"), hasAmount("EUR", 111.50), // + hasSource("Kontoauszug21.txt"), hasNote(null))))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-06-01"), hasAmount("EUR", 115.41), // - hasSource("Kontoauszug21.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-06-01"), hasAmount("EUR", 115.41), // + hasSource("Kontoauszug21.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(deposit(hasDate("2024-06-14"), hasAmount("EUR", 250.00), @@ -2317,8 +2323,10 @@ public void testKontoauszug21() hasSource("Kontoauszug21.txt"), hasNote("REWE Riethmueller oHG")))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-07-01"), hasAmount("EUR", 107.80), // - hasSource("Kontoauszug21.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-07-01"), hasAmount("EUR", 107.80), // + hasSource("Kontoauszug21.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-07-05"), hasAmount("EUR", 89.43), @@ -2341,8 +2349,10 @@ public void testKontoauszug21() hasSource("Kontoauszug21.txt"), hasNote("Neckarbruecke")))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-08-01"), hasAmount("EUR", 168.75), - hasSource("Kontoauszug21.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-08-01"), hasAmount("EUR", 168.75), // + hasSource("Kontoauszug21.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-08-09"), hasAmount("EUR", 5.63), @@ -2357,8 +2367,10 @@ public void testKontoauszug21() hasSource("Kontoauszug21.txt"), hasNote(null)))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-09-01"), hasAmount("EUR", 193.06), - hasSource("Kontoauszug21.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-09-01"), hasAmount("EUR", 193.06), // + hasSource("Kontoauszug21.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-09-02"), hasAmount("EUR", 7.50), @@ -2398,6 +2410,39 @@ public void testKontoauszug22() hasSource("Kontoauszug22.txt"), hasNote(null)))); } + @Test + public void testKontoauszug23() + { + TradeRepublicPDFExtractor extractor = new TradeRepublicPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kontoauszug23.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(0L)); + assertThat(countBuySell(results), is(0L)); + assertThat(countAccountTransactions(results), is(4L)); + assertThat(results.size(), is(4)); + new AssertImportActions().check(results, CurrencyUnit.EUR); + + // assert transaction + assertThat(results, hasItem(interest(hasDate("2024-12-01"), hasAmount("EUR", 150.28), + hasSource("Kontoauszug23.txt"), hasNote(null)))); + + // assert transaction + assertThat(results, hasItem(removal(hasDate("2024-12-02"), hasAmount("EUR", 39.94), + hasSource("Kontoauszug23.txt"), hasNote("xoSEqCGkmh eqt STATION")))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-12-02"), hasAmount("EUR", 500.00), + hasSource("Kontoauszug23.txt"), hasNote(null)))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-12-02"), hasAmount("EUR", 7.24), + hasSource("Kontoauszug23.txt"), hasNote(null)))); + } + @Test public void testReleveDeCompte01() { @@ -2693,8 +2738,10 @@ public void testTransaccionesDeCuenta01() hasSource("TransaccionesDeCuenta01.txt"), hasNote("WETACA")))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-06-01"), hasAmount("EUR", 32.61), // - hasSource("TransaccionesDeCuenta01.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-06-01"), hasAmount("EUR", 32.61), // + hasSource("TransaccionesDeCuenta01.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-06-01"), hasAmount("EUR", 20.00), // @@ -2921,8 +2968,10 @@ public void testTransaccionesDeCuenta01() hasSource("TransaccionesDeCuenta01.txt"), hasNote("Tesla Spain, S.L.")))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-07-01"), hasAmount("EUR", 34.97), // - hasSource("TransaccionesDeCuenta01.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-07-01"), hasAmount("EUR", 34.97), // + hasSource("TransaccionesDeCuenta01.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-07-01"), hasAmount("EUR", 16.72), // @@ -3002,8 +3051,10 @@ public void testTransaccionesDeCuenta02() hasSource("TransaccionesDeCuenta02.txt"), hasNote(null)))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-02-01"), hasAmount("EUR", 10.07), // - hasSource("TransaccionesDeCuenta02.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-02-01"), hasAmount("EUR", 10.07), // + hasSource("TransaccionesDeCuenta02.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-02-08"), hasAmount("EUR", 300.00), // @@ -3014,8 +3065,10 @@ public void testTransaccionesDeCuenta02() hasSource("TransaccionesDeCuenta02.txt"), hasNote(null)))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-03-01"), hasAmount("EUR", 14.48), // - hasSource("TransaccionesDeCuenta02.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-03-01"), hasAmount("EUR", 14.48), // + hasSource("TransaccionesDeCuenta02.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(removal(hasDate("2024-03-05"), hasAmount("EUR", 5809.91), // @@ -3030,8 +3083,10 @@ public void testTransaccionesDeCuenta02() hasSource("TransaccionesDeCuenta02.txt"), hasNote(null)))); // assert transaction - assertThat(results, hasItem(interest(hasDate("2024-04-01"), hasAmount("EUR", 7.79), // - hasSource("TransaccionesDeCuenta02.txt"), hasNote(null)))); + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest(hasDate("2024-04-01"), hasAmount("EUR", 7.79), // + hasSource("TransaccionesDeCuenta02.txt"), hasNote(null))))); // assert transaction assertThat(results, hasItem(fee(hasDate("2024-04-03"), hasAmount("EUR", 5.00), //