From b0e65bc1155cd9f5a6a6810a3bab55751834195e Mon Sep 17 00:00:00 2001 From: Alexander Ott <45203494+Nirus2000@users.noreply.github.com> Date: Wed, 19 Feb 2025 15:58:40 +0100 Subject: [PATCH] Modify Baader Bank PDF-Importer to support new transaction (#4531) https://forum.portfolio-performance.info/t/pdf-import-von-traders-place/25739/8 https://forum.portfolio-performance.info/t/pdf-import-von-traders-place/25739/13 https://forum.portfolio-performance.info/t/pdf-import-von-traders-place/25739/14 --- .../BaaderBankPDFExtractorTest.java | 145 +++++++++++++++ .../pdf/baaderbank/Dividende25.txt | 62 +++++++ .../pdf/baaderbank/Periodenauszug13.txt | 171 ++++++++++++++++++ .../pdf/baaderbank/Periodenauszug14.txt | 113 ++++++++++++ .../pdf/BaaderBankPDFExtractor.java | 65 ++++++- 5 files changed, 553 insertions(+), 3 deletions(-) create mode 100644 name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Dividende25.txt create mode 100644 name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug13.txt create mode 100644 name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug14.txt diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/BaaderBankPDFExtractorTest.java b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/BaaderBankPDFExtractorTest.java index 2b57648f78..658aa49828 100644 --- a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/BaaderBankPDFExtractorTest.java +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/BaaderBankPDFExtractorTest.java @@ -23,6 +23,7 @@ import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.interest; import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.outboundDelivery; import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.purchase; +import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.removal; import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.sale; import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.security; import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.taxRefund; @@ -4277,6 +4278,77 @@ public void testDividende24() hasTaxes("EUR", 0.52), hasFees("EUR", 0.00)))); } + @Test + public void testDividende25() + { + BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende25.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(1L)); + assertThat(countBuySell(results), is(0L)); + assertThat(countAccountTransactions(results), is(1L)); + assertThat(results.size(), is(2)); + new AssertImportActions().check(results, CurrencyUnit.USD); + + // check security + assertThat(results, hasItem(security( // + hasIsin("US698299AW45"), hasWkn("A0GMJZ"), hasTicker(null), // + hasName("Panama, Republik DL-Bonds 2006(34-36)"), // + hasCurrencyCode("USD")))); + + // check dividends transaction + assertThat(results, hasItem(dividend( // + hasDate("2024-01-26T00:00"), hasShares(10.00), // + hasSource("Dividende25.txt"), // + hasNote("Transaction No.: 01473347"), // + hasAmount("USD", 33.50), hasGrossValue("USD", 33.50), // + hasTaxes("USD", 0.00), hasFees("USD", 0.00)))); + } + + @Test + public void testDividende25WithSecurityInEUR() + { + Security security = new Security("Panama, Republik DL-Bonds 2006(34-36)", CurrencyUnit.EUR); + security.setIsin("US698299AW45"); + security.setWkn("A1JA0GMJZSB"); + + Client client = new Client(); + client.addSecurity(security); + + BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(client); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende25.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(0L)); + assertThat(countBuySell(results), is(0L)); + assertThat(countAccountTransactions(results), is(1L)); + assertThat(results.size(), is(1)); + new AssertImportActions().check(results, CurrencyUnit.USD); + + // check dividends transaction + assertThat(results, hasItem(dividend( // + hasDate("2024-01-26T00:00"), hasShares(10.00), // + hasSource("Dividende25.txt"), // + hasNote("Transaction No.: 01473347"), // + hasAmount("USD", 33.50), hasGrossValue("USD", 33.50), // + hasForexGrossValue("EUR", 30.81), // + hasTaxes("USD", 0.00), hasFees("USD", 0.00), // + check(tx -> { + CheckCurrenciesAction c = new CheckCurrenciesAction(); + Account account = new Account(); + account.setCurrencyCode(CurrencyUnit.USD); + Status s = c.process((AccountTransaction) tx, account); + assertThat(s, is(Status.OK_STATUS)); + })))); + } + @Test public void testDividendeStorno01() { @@ -5079,6 +5151,79 @@ public void testPeriodenauszug12() hasSource("Periodenauszug12.txt"), hasNote("Gutschrift")))); } + @Test + public void testPeriodenauszug13() + { + BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Periodenauszug13.txt"), + errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(0L)); + assertThat(countBuySell(results), is(0L)); + assertThat(countAccountTransactions(results), is(5L)); + assertThat(results.size(), is(5)); + new AssertImportActions().check(results, CurrencyUnit.EUR); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-12-19"), hasAmount("EUR", 105.00), // + hasSource("Periodenauszug13.txt"), hasNote("Gutschrift")))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-12-19"), hasAmount("EUR", 105.00), // + hasSource("Periodenauszug13.txt"), hasNote("Gutschrift")))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-12-20"), hasAmount("EUR", 1000.00), // + hasSource("Periodenauszug13.txt"), hasNote("Gutschrift")))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-12-30"), hasAmount("EUR", 250.00), // + hasSource("Periodenauszug13.txt"), hasNote("Gutschrift")))); + + // assert transaction + assertThat(results, hasItem(withFailureMessage( // + Messages.MsgErrorTransactionAlternativeDocumentRequired, // + interest( // + hasDate("2024-12-31"), // + hasSource("Periodenauszug13.txt"), // + hasNote("Rechnungsabschluss"), // + hasAmount("EUR", 0.01))))); + } + + @Test + public void testPeriodenauszug14() + { + BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Periodenauszug14.txt"), + errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(0L)); + assertThat(countBuySell(results), is(0L)); + assertThat(countAccountTransactions(results), is(3L)); + assertThat(results.size(), is(3)); + new AssertImportActions().check(results, CurrencyUnit.EUR); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2025-01-09"), hasAmount("EUR", 100.00), // + hasSource("Periodenauszug14.txt"), hasNote("Ueberweisung")))); + + // assert transaction + assertThat(results, hasItem(removal(hasDate("2025-01-20"), hasAmount("EUR", 1000.00), // + hasSource("Periodenauszug14.txt"), hasNote("SEPA-Ueberweisung")))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2025-01-27"), hasAmount("EUR", 200.00), // + hasSource("Periodenauszug14.txt"), hasNote("Gutschrift")))); + } + @Test public void testTageskontoauszug01() { diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Dividende25.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Dividende25.txt new file mode 100644 index 0000000000..3dc848f1f9 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Dividende25.txt @@ -0,0 +1,62 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.72.2 +----------------------------------------- +Baader Bank AG Weihenstephaner Straße 4 85716 Unterschleißheim Scalable Capital GmbH +T 00800 00 586336* F +49 89 5150 2442 service@baaderbank.de Seitzstrasse 8e +80538 Munich +service@scalable.capital +Page 1/2 +Mr. Munich +2023-12-14 +vreozuzRr iFD hpMsYV +czWGONTy 230 isFPzGhCs Cgg DHGNTE +0049 Th JFsdSEid Client ID: 9259468 Portfolio: 1 +Sec. Account No.: 0303777450 +THE NETHERLANDS Transaction No.: 01473347 +Referenz-Nr.: 513801214 +Zinsabrechnung +Ex-Tag: 26.01.2024 +Nominale ISIN: US698299AW45 WKN: A0GMJZ Zinsertrag +USD 1.000,00 6,70 % 3,35 % +Panama, Republik +DL-Bonds 2006(34-36) +Zahlungszeitraum: 26.07.2023 - 25.01.2024 +Zahltag: 26.01.2024 +Umrechnungskurs: EUR/USD 1,0872000 +Bruttobetrag USD 33,50 +Zu Gunsten Konto 9999999031 Valuta: 26.01.2024 USD 33,50 +Bitte beachten Sie Ihre eventuelle Meldepflicht nach § 67 AWV. +Einkünfte aus Kapitalvermögen im Sinne von § 20 EStG sind einkommensteuerpflichtig. +Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben. +Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: TRADERS PLACE + +Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland +Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB +121537 • Sitz der Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336* +service@baaderbank.de + +DCUP-055.048 + +Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen. +Zinsabrechnung +Fortsetzung: Seite 2/2 +Darstellung der steuerlichen Berechnungsgrundlagen: +Merkposten / Steuertöpfe vorher Erhöhung/Reduktion nachher +Zinserträge +Allgemeiner Verlusttopf (VVT) EUR 378,10 EUR 30,81 - EUR 347,29 +Bemessungsgrundlagen Steuerpflicht brutto Steuerpflicht netto +Zinserträge EUR 30,81 EUR 0,00 +Bemessungsgrundlage zur Kapitalertragsteuer EUR 30,81 EUR 0,00 +Bitte beachten Sie Ihre eventuelle Meldepflicht nach § 67 AWV. +Einkünfte aus Kapitalvermögen im Sinne von § 20 EStG sind einkommensteuerpflichtig. +Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben. +Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: TRADERS PLACE + +Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland +Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB +121537 • Sitz der Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336* +service@baaderbank.de + +DCUP-055.048 + + Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen. diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug13.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug13.txt new file mode 100644 index 0000000000..8b775f4820 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug13.txt @@ -0,0 +1,171 @@ +PDFBox Version: 3.0.3 + +Portfolio Performance Version: 0.74.0 + +System: linux | x86_64 | 21.0.6+7 | Arch Linux + +----------------------------------------- + +Baader Bank AG Weihenstephaner Straße 4 85716 Unterschleißheim Traders Place GmbH & Co. KGaA + +T 00800 00 586336* F +49 89 5150 2442 service@baaderbank.de E-Mail: kundenservice@tradersplace.de + +www.tradersplace.de + +Seite 1/2 + +Freilassing + +Herrn 09.01.2025 + +bPradp eGRsNq + +piROGw mdsUMO + +JsGVrHGOVMlsvQ 54 Stamm-Nr.: - Portfolio: 1 + +33505 iFbOuXqJh Konto-Nr.: - + +IBAN: - + +BLZ: - + +BIC: nZUcezcx + +Vorgangs-Nr.: 534656656 + +Referenz-Nr.: 345566655 + +Perioden-Kontoauszug: EUR-Konto + +Periodenauszugs-Nr. 566778 + +Buchungstag Erläuterungen Valuta Belastung Gutschrift + +in EUR in EUR + +Kontostand in EUR am 0,00 + +19.12.2024 Gutschrift 19.12.2024 105,00 + +TjYsYy myZMNc + +- + +pOEtJWA3032 + +BXNpAqUY qpSGhIu vCXuu + +Vorgangs-Nr.: 605568352 + +19.12.2024 Gutschrift 19.12.2024 105,00 + +KxIUGc JRtBAT + +- + +gVlwjPG1032 + +WZNCOmKZ LDWXiBy EHVKm 6 + +rHibgxKt-uw.: 653230958 + +20.12.2024 Gutschrift 20.12.2024 1.000,00 + +dIFDEK xgccxC + +- + +QpEbNSF8455 + +AcyEUlQB + +Vorgangs-Nr.: 4567567 + +23.12.2024 Kauf 23.12.2024 202,93 - + +yycdNEipbY zr A DL -,001 + +ISIN US8361001071 + +STK 10 + +Vorgangs-Nr.: SyGc 456456456 + +Übertrag: 1.007,07 + +Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: www.tradersplace.de/impressum + +Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland + +Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB 121537 • Sitz der + +Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336* • service@baaderbank.de + +* Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen. + +KKTKK801-043.041 + +Perioden-Kontoauszug: EUR-Konto + +Periodenauszugs-Nr. 024001 + +Fortsetzung: Seite 2/2 + +Konto-Nr.: - BLZ: 700 331 00 IBAN: - BIC: BDWBDEMM + +Buchungstag Erläuterungen Valuta Belastung Gutschrift + +in EUR in EUR + +Übertrag: 1.007,07 + +27.12.2024 Kauf 30.12.2024 267,44 - + +AST SPACEMOBIL.A DL-,0001 + +ISIN US00217D1000 + +STK 11 + +Vorgangs-Nr.: WbUM 45645676 + +30.12.2024 Gutschrift 30.12.2024 250,00 + +iinpxE oBvyRt + +- + +CnSXURt9348 + +dkGV AXnDrqmdObZr WhDZzzx ZOebO + +Purpose Code: + +RvqY + +Vorgangs-Nr.: 456456456 + +31.12.2024 Rechnungsabschluss 31.12.2024 0,01 + +siehe Beleg + +Vorgangs-Nr.: 5456456 + +Kontostand in EUR am 31.12.2024 989,64 + +Bitte beachten Sie Ihre eventuelle Meldepflicht nach § 67 AWV. + +Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben. + +Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: www.tradersplace.de/impressum + +Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland + +Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB 121537 • Sitz der + +Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336* • service@baaderbank.de + +* Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen. + +KKTKK801-043.041 \ No newline at end of file diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug14.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug14.txt new file mode 100644 index 0000000000..557549102b --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/baaderbank/Periodenauszug14.txt @@ -0,0 +1,113 @@ +PDFBox Version: 3.0.3 + +Portfolio Performance Version: 0.74.0 + +System: linux | x86_64 | 21.0.6+7 | Arch Linux + +----------------------------------------- + +Baader Bank AG Weihenstephaner Straße 4 85716 Unterschleißheim Traders Place GmbH & Co. KGaA + +T 00800 00 586336* F +49 89 5150 2442 service@baaderbank.de E-Mail: kundenservice@tradersplace.de + +www.tradersplace.de + +Seite 1/1 + +Freilassing + +Herrn 06.02.2025 + +FMxOEz hwSWBQ + +MZzFPB iJjlcQ + +YjtWxAMNxMKdin 70 Stamm-Nr.: 4100567 Portfolio: 1 + +00101 PlUSiBsvU Konto-Nr.: 345816545602 + +IBAN: lx25 1296 6066 4788 8338 17 + +BLZ: 729 919 07 + +BIC: OqBlOOuk + +Vorgangs-Nr.: 932242512 + +Referenz-Nr.: 827583781 + +Perioden-Kontoauszug: EUR-Konto + +Periodenauszugs-Nr. 025001 + +Buchungstag Erläuterungen Valuta Belastung Gutschrift + +in EUR in EUR + +Kontostand in EUR am 31.12.2024 989,64 + +09.01.2025 Ueberweisung 09.01.2025 100,00 + +VrIfiNHlXYcBhS + +Vorgangs-Nr.: 19937195bt2872 + +20.01.2025 SEPA-Ueberweisung 20.01.2025 1.000,00 - + +mNuweR eatMvQ + +DE457656756778 + +MHZHCkgPHTQ + +HkNuqbFYK + +End to end Referenz: + +55705 + +Vorgangs-Nr.: 659876862 + +27.01.2025 Gutschrift 27.01.2025 200,00 + +AwarZL VccSTH + +IF576867867854 + +XjqbjumcUkZ + +jXVr yloWckSceXvv aJPmAzU OWsVi + +End to end Referenz: + +EN-319s4Xx3gn2g3BNe40r6107K3193i7gz + +Vorgangs-Nr.: 977070275 + +30.01.2025 Kauf 30.01.2025 208,50 - + +SOUNDHOUND AI A DL -,001 + +ISIN US8361001071 + +STK 15 + +Vorgangs-Nr.: sVbf 64511022990 + +Kontostand in EUR am 31.01.2025 81,14 + +Bitte beachten Sie Ihre eventuelle Meldepflicht nach § 67 AWV. + +Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben. + +Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: www.tradersplace.de/impressum + +Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland + +Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB 121537 • Sitz der + +Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336* • service@baaderbank.de + +* Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen. + +KKTKK801-043.041 \ No newline at end of file diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BaaderBankPDFExtractor.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BaaderBankPDFExtractor.java index 4f27e8c30a..99fc7dd0ac 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BaaderBankPDFExtractor.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BaaderBankPDFExtractor.java @@ -861,8 +861,9 @@ private void addDepotStatementTransaction() // @formatter:off // 12.04.2018 Lastschrift aktiv 12.04.2018 10.000,00 // 11.12.2020 Gutschrift 11.12.2020 20,00 + // 09.01.2025 Ueberweisung 09.01.2025 100,00 // @formatter:on - Block depositBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (Lastschrift aktiv|Gutschrift) [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} [\\.,\\d]+$"); + Block depositBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (Lastschrift aktiv|Gutschrift|Ueberweisung) [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} [\\.,\\d]+$"); type.addBlock(depositBlock); depositBlock.set(new Transaction() @@ -874,7 +875,7 @@ private void addDepotStatementTransaction() .section("note", "date", "amount") // .documentContext("currency") // - .match("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?(Lastschrift aktiv|Gutschrift)) (?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (?[\\.,\\d]+)$") // + .match("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?(Lastschrift aktiv|Gutschrift|Ueberweisung)) (?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (?[\\.,\\d]+)$") // .assign((t, v) -> { t.setDateTime(asDate(v.get("date"))); t.setCurrencyCode(v.get("currency")); @@ -911,7 +912,7 @@ private void addDepotStatementTransaction() .wrap(TransactionItem::new)); // @formatter:off - // 12.04.2018 Lastschrift aktiv 12.04.2018 10.000,00 + // 06.07.2018 Lastschrift aktiv 06.07.2018 6,97 - // 22.08.2018 SEPA-Ueberweisung 22.08.2018 2.000,00 - // @formatter:on Block removalBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (Lastschrift aktiv|SEPA\\-Ueberweisung) [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} [\\.,\\d]+ \\-$"); @@ -936,6 +937,10 @@ private void addDepotStatementTransaction() .wrap(TransactionItem::new)); + // @formatter:off + // 06.07.2018 Transaktionskostenpauschale o. MwSt. 10.07.2018 2,56 - + // 15.07.2024 Ordergebühr 15.07.2024 0,99 - + // @formatter:on Block feesBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (Transaktionskostenpauschale o\\. MwSt\\.|Ordergeb.hr) [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} [\\.,\\d]+ \\-$"); type.addBlock(feesBlock); feesBlock.setMaxSize(3); @@ -1007,6 +1012,60 @@ private void addDepotStatementTransaction() }) .wrap(TransactionItem::new)); + + Block interestBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} Rechnungsabschluss [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} [\\.,\\d]+( \\-)?$"); + type.addBlock(interestBlock); + interestBlock.setMaxSize(1); + interestBlock.set(new Transaction() + + .subject(() -> { + AccountTransaction accountTransaction = new AccountTransaction(); + accountTransaction.setType(AccountTransaction.Type.INTEREST); + return accountTransaction; + }) + + .oneOf( // + // @formatter:off + // + // @formatter:on + section -> section // + .attributes("note", "date", "amount") // + .documentContext("currency") // + .match("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?Rechnungsabschluss) (?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (?[\\.,\\d]+) \\-$") // + .assign((t, v) -> { + t.setType(AccountTransaction.Type.INTEREST_CHARGE); + + v.getTransactionContext().put(FAILURE, Messages.MsgErrorTransactionAlternativeDocumentRequired); + + t.setDateTime(asDate(v.get("date"))); + t.setCurrencyCode(v.get("currency")); + t.setAmount(asAmount(v.get("amount"))); + t.setNote(v.get("note")); + }), + // @formatter:off + // 31.12.2024 Rechnungsabschluss 31.12.2024 0,01 + // @formatter:on + section -> section // + .attributes("note", "date", "amount") // + .documentContext("currency") // + .match("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?Rechnungsabschluss) (?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (?[\\.,\\d]+)$") // + .assign((t, v) -> { + v.getTransactionContext().put(FAILURE, Messages.MsgErrorTransactionAlternativeDocumentRequired); + + t.setDateTime(asDate(v.get("date"))); + t.setCurrencyCode(v.get("currency")); + t.setAmount(asAmount(v.get("amount"))); + t.setNote(v.get("note")); + })) + + .wrap((t, ctx) -> { + TransactionItem item = new TransactionItem(t); + + if (ctx.getString(FAILURE) != null) + item.setFailureMessage(ctx.getString(FAILURE)); + + return item; + })); } private void addFeesAssetManagerTransaction()