From 65b36c0c1bef7c47010b82ee80859a40398a30c3 Mon Sep 17 00:00:00 2001 From: Nirus2000 Date: Fri, 3 May 2024 10:14:43 +0200 Subject: [PATCH] Modify Arkea Direct Bank PDF-Importer to support new transaction https://forum.portfolio-performance.info/t/pdf-import-from-arkea-direct-bank-fortuneo-banque-france/28131/6 --- .../ArkeaDirectBankPDFExtractorTest.java | 31 +++++++++++++++++++ .../pdf/arkeadirectbank/Kauf03.txt | 31 +++++++++++++++++++ .../pdf/ArkeaDirectBankPDFExtractor.java | 7 +++-- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/Kauf03.txt diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/ArkeaDirectBankPDFExtractorTest.java b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/ArkeaDirectBankPDFExtractorTest.java index 0f214a115c..99c7c597b0 100644 --- a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/ArkeaDirectBankPDFExtractorTest.java +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/ArkeaDirectBankPDFExtractorTest.java @@ -115,6 +115,37 @@ public void testWertpapierKauf02() hasTaxes("EUR", 0.00), hasFees("EUR", 9.64)))); } + @Test + public void testWertpapierKauf03() + { + ArkeaDirectBankPDFExtractor extractor = new ArkeaDirectBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kauf03.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, "EUR"); + + // check security + assertThat(results, hasItem(security( // + hasIsin("LU2655993207"), hasWkn(null), hasTicker(null), // + hasName("AMUNDI MSCI WORLD UC.ETF EUR D"), // + hasCurrencyCode("EUR")))); + + // check buy sell transaction + assertThat(results, hasItem(purchase( // + hasDate("2024-03-28T09:39:48"), hasShares(7.00), // + hasSource("Kauf03.txt"), // + hasNote("Référence 50Z3117582492059"), // + hasAmount("EUR", 212.42), hasGrossValue("EUR", 211.68), // + hasTaxes("EUR", 0.00), hasFees("EUR", 0.74)))); + } + @Test public void testDividende01() { diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/Kauf03.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/Kauf03.txt new file mode 100644 index 0000000000..6f851689e6 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/arkeadirectbank/Kauf03.txt @@ -0,0 +1,31 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.68.4 +----------------------------------------- +AVIS D'OPÉRATIONS +M DUPONT JEAN +Au 28 mars 2024 +04 RUE xbNqiWk +27665 UCRpez +VOTRE COMPTE PEA N° 476945643793 M DUPONT JEAN +Date +Désignation Débit Crédit +opération +¢ TRACKER : AMUNDI MSCI WORLD UC.ETF EUR D (LU2655993207) +28-03-2024 Référence 50Z3117582492059 +09:39:48 Sens Achat - Exécution unique +Modalité Limité +Marché Comptant +Lieu d'exécution NYSE EURONEXT PARIS +Quantité 7 Cours 30,24 € +Montant Brut 211,68 € +Courtage et Commission 0,74 € +Montant NET 212,42 € 212,42 € +Sous réserve de bonne fin. +Lorsqu'elle s'applique, l'exonération de TVA relève de l'article 261 C du CGI. +Sous réserve de son application à la présente transaction, la Taxe sur les Transactions Financières prévue par l'article 235 ter ZD du +CGI est prélevée sur votre compte espèces et fait l'objet d'un avis récapitulatif spécifique. +Duplicata Internet +Page 1/1 +Fortuneo est une marque commerciale d'Arkéa Direct Bank. Arkéa Direct Bank, Société Anonyme à Directoire et Conseil de Surveillance +au capital de 89 198 952 euros. RCS Nanterre 384 288 890. Siège social : Tour Ariane - 5, place de la Pyramide 92088 Paris La Défense. +Courtier en assurance n°ORIAS 07 008 441. Adresse postale : Fortuneo - Service Clients - TSA41707 - 35917 RENNES CEDEX 9. \ No newline at end of file diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/ArkeaDirectBankPDFExtractor.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/ArkeaDirectBankPDFExtractor.java index 315e9508b2..df31aadc52 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/ArkeaDirectBankPDFExtractor.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/ArkeaDirectBankPDFExtractor.java @@ -39,7 +39,7 @@ private void addBuySellTransaction() Transaction pdfTransaction = new Transaction<>(); - Block firstRelevantLine = new Block("^.* ACTION : .* \\([A-Z]{2}[A-Z0-9]{9}[0-9]\\)$"); + Block firstRelevantLine = new Block("^.* (ACTION|TRACKER) : .* \\([A-Z]{2}[A-Z0-9]{9}[0-9]\\)$"); type.addBlock(firstRelevantLine); firstRelevantLine.set(pdfTransaction); @@ -54,9 +54,12 @@ private void addBuySellTransaction() // @formatter:off // ¢ ACTION : ORANGE (FR0000133308) // Quantité 46 Cours 10,646 € + // + // ¢ TRACKER : AMUNDI MSCI WORLD UC.ETF EUR D (LU2655993207) + // Quantité 7 Cours 30,24 € // @formatter:on .section("name", "isin", "currency") // - .match("^.* ACTION : (?.*) \\((?[A-Z]{2}[A-Z0-9]{9}[0-9])\\)$") // + .match("^.* (ACTION|TRACKER) : (?.*) \\((?[A-Z]{2}[A-Z0-9]{9}[0-9])\\)$") // .match("^Quantit. [\\,\\d\\s]+ Cours [\\,\\d\\s]+ (?\\p{Sc})$") // .assign((t, v) -> t.setSecurity(getOrCreateSecurity(v)))