diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/INGDiBaPDFExtractorTest.java b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/INGDiBaPDFExtractorTest.java index de8ce8892b..1723da45fe 100644 --- a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/INGDiBaPDFExtractorTest.java +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/INGDiBaPDFExtractorTest.java @@ -1015,6 +1015,37 @@ public void testWertpapierKauf20() hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))); } + @Test + public void testWertpapierKauf21() + { + INGDiBaPDFExtractor extractor = new INGDiBaPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kauf21.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("IE00B9CQXS71"), hasWkn("A1T8GD"), hasTicker(null), // + hasName("SPDR S&P Glob.Div.Aristocr.ETF Registered Shares o.N."), // + hasCurrencyCode("EUR")))); + + // check buy sell transaction + assertThat(results, hasItem(purchase( // + hasDate("2025-02-24T09:04:29"), hasShares(8.9548), // + hasSource("Kauf21.txt"), // + hasNote("Ordernummer 381419383.001"), // + hasAmount("EUR", 284.27), hasGrossValue("EUR", 284.27), // + hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))); + } + @Test public void testValorCompra01() { diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/Kauf21.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/Kauf21.txt new file mode 100644 index 0000000000..8b12fad4dd --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/ingdiba/Kauf21.txt @@ -0,0 +1,32 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.73.0 +System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc. +----------------------------------------- +ING-DiBa AG · 60628 Frankfurt am Main +Depotinhaber: Thomas Mustermann +Herrn Direkt-Depot Nr.: 9999999999 +Thomas Mustermann Datum: 24.02.2025 +Muster-Str. 10 Seite: 1 von 1 +99999 Musterort +Wertpapierabrechnung Kauf aus Wiederanlage einer Ausschüttung +Ordernummer 381419383.001 +ISIN (WKN) IE00B9CQXS71 (A1T8GD) +Wertpapierbezeichnung SPDR S&P Glob.Div.Aristocr.ETF +Registered Shares o.N. +Nominale Stück 8,9548 +Kurs (Festpreisgeschäft) EUR 31,745 +Handelsplatz Direktgeschäft Inl. +Ausführungstag / -zeit 24.02.2025 um 09:04:29 Uhr +Kurswert EUR 284,27 +Zwischensumme EUR 284,27 +Endbetrag zu Ihren Lasten EUR 284,27 +Abrechnungs-IBAN DE99 9999 9999 9999 9999 99 +Valuta 26.02.2025 +Wertpapiere zugunsten Wertpapierrechnung Großbritannien. +Ihren Ertrag haben wir für Sie wiederangelegt. +Bei Fragen besuchen Sie uns einfach unter www.ing.de/wertpapierwissen - da gibt es viele schnelle +Antworten. +ING-DiBa AG · Theodor-Heuss-Allee 2 · 60486 Frankfurt am Main · Vorsitzende des Aufsichtsrates: Susanne Klöß-Braekler · Vorstand: Lars Stoy (Vorsitzender), +Michael Clijdesdale, Eddy Henning, Nikolaus Maximilian Linaric, Dr. Ralph Müller, Nurten Spitzer-Erdogan · Sitz: Frankfurt am Main · AG Frankfurt am Main · HRB 7727 +Steuernummer: 014 220 2800 4 · USt-IdNr.: DE 114 103 475 · Internet: www.ing.de · BIC: INGDDEFFXXX · Mitglied im Einlagensicherungsfonds +34WAAD8030557526_T \ No newline at end of file diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/INGDiBaPDFExtractor.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/INGDiBaPDFExtractor.java index 6c37e8401e..9fa9cb6360 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/INGDiBaPDFExtractor.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/INGDiBaPDFExtractor.java @@ -68,13 +68,14 @@ private void addBuySellTransaction() + "|Kauf Einmalanlage" // + "|Kauf aus Sparplan" // + "|Kauf aus Wiederanlage Fondsaussch.ttung" // + + "|Kauf aus Wiederanlage einer Aussch.ttung" // + "|Kauf Zeichnung" // + "|Bezug" // + "|Verkauf" // + "|Verkauf aus Kapitalmaßnahme" // + "|Verk\\. Teil\\-\\/Bezugsr\\.)" // + "|R.ckzahlung" // - + "|Einl.sung" + + "|Einl.sung" // + "|Operaciones Cuenta de Valores)", jointAccount); this.addDocumentTyp(type); @@ -85,13 +86,14 @@ private void addBuySellTransaction() + "|Kauf Einmalanlage" // + "|Kauf aus Sparplan" // + "|Kauf aus Wiederanlage Fondsaussch.ttung" // + + "|Kauf aus Wiederanlage einer Aussch.ttung" // + "|Kauf Zeichnung" // + "|Bezug" // + "|Verkauf" // + "|Verkauf aus Kapitalmaßnahme" // + "|Verk\\. Teil\\-\\/Bezugsr\\.)" // + "|R.ckzahlung" // - + "|Einl.sung" + + "|Einl.sung" // + "|Operaciones Cuenta de Valores)"); type.addBlock(firstRelevantLine); firstRelevantLine.set(pdfTransaction); @@ -111,14 +113,15 @@ private void addBuySellTransaction() + "|Kauf Einmalanlage" // + "|Kauf aus Sparplan" // + "|Kauf aus Wiederanlage Fondsaussch.ttung" // + + "|Kauf aus Wiederanlage einer Aussch.ttung" // + "|Kauf Zeichnung" // + "|Bezug" // + "|Verkauf" // + "|Verkauf aus Kapitalmaßnahme" // + "|Verk. Teil\\-\\/Bezugsr\\.)" // + "|R.ckzahlung" // - + "|Einl.sung" - + "|Venta)$") // + + "|Einl.sung" // + + "|Venta)$") .assign((t, v) -> { if ("Verkauf".equals(v.get("type")) // || "Verkauf aus Kapitalmaßnahme".equals(v.get("type")) // @@ -351,7 +354,7 @@ private void addDividendeTransaction() { final DocumentType type = new DocumentType("(Dividendengutschrift" // + "|Ertragsgutschrift" // - + "|Zinsgutschrift" + + "|Zinsgutschrift" // + "|Abono de Dividendos)", // jointAccount); this.addDocumentTyp(type); @@ -360,7 +363,7 @@ private void addDividendeTransaction() Block firstRelevantLine = new Block("^(Dividendengutschrift" // + "|Ertragsgutschrift" // - + "|Zinsgutschrift" + + "|Zinsgutschrift" // + "|Abono de Dividendos).*$"); type.addBlock(firstRelevantLine); firstRelevantLine.set(pdfTransaction);