Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package name.abuchen.portfolio.datatransfer.pdf.boursedirect;

import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.deposit;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.dividend;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasAmount;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasCurrencyCode;
Expand All @@ -15,8 +16,10 @@
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasTicker;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasWkn;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.purchase;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.sale;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.security;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransactions;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransfers;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countBuySell;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countSecurities;
import static org.hamcrest.CoreMatchers.hasItem;
Expand Down Expand Up @@ -50,6 +53,7 @@ public void testReleveDeCompte01()
assertThat(countSecurities(results), is(3L));
assertThat(countBuySell(results), is(3L));
assertThat(countAccountTransactions(results), is(0L));
assertThat(countAccountTransfers(results), is(0L));
assertThat(results.size(), is(6));
new AssertImportActions().check(results, "EUR");

Expand Down Expand Up @@ -109,6 +113,7 @@ public void testReleveDeCompte02()
assertThat(countSecurities(results), is(5L));
assertThat(countBuySell(results), is(5L));
assertThat(countAccountTransactions(results), is(0L));
assertThat(countAccountTransfers(results), is(0L));
assertThat(results.size(), is(10));
new AssertImportActions().check(results, "EUR");

Expand Down Expand Up @@ -184,18 +189,19 @@ public void testReleveDeCompte02()
}

@Test
public void testDividende01()
public void testReleveDeCompte03()
{
var extractor = new BourseDirectPDFExtractor(new Client());

List<Exception> errors = new ArrayList<>();

var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende01.txt"), errors);
var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "ReleveDeCompte03.txt"), errors);

assertThat(errors, empty());
assertThat(countSecurities(results), is(1L));
assertThat(countBuySell(results), is(0L));
assertThat(countAccountTransactions(results), is(1L));
assertThat(countAccountTransfers(results), is(0L));
assertThat(results.size(), is(2));
new AssertImportActions().check(results, "EUR");

Expand All @@ -208,9 +214,77 @@ public void testDividende01()
// check dividends transaction
assertThat(results, hasItem(dividend( //
hasDate("2025-08-06T00:00"), hasShares(3.00), //
hasSource("Dividende01.txt"), //
hasSource("ReleveDeCompte03.txt"), //
hasNote(null), //
hasAmount("EUR", 4.08), hasGrossValue("EUR", 4.80), //
hasTaxes("EUR", 0.72), hasFees("EUR", 0.00))));
}

@Test
public void testReleveDeCompte04()
{
var extractor = new BourseDirectPDFExtractor(new Client());

List<Exception> errors = new ArrayList<>();

var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "ReleveDeCompte04.txt"), errors);

assertThat(errors, empty());
assertThat(countSecurities(results), is(0L));
assertThat(countBuySell(results), is(0L));
assertThat(countAccountTransactions(results), is(1L));
assertThat(countAccountTransfers(results), is(0L));
assertThat(results.size(), is(1));
new AssertImportActions().check(results, "EUR");

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2021-02-24"), hasAmount("EUR", 2400.00), //
hasSource("ReleveDeCompte04.txt"), hasNote(null))));
}

@Test
public void testReleveDeCompte05()
{
var extractor = new BourseDirectPDFExtractor(new Client());

List<Exception> errors = new ArrayList<>();

var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "ReleveDeCompte05.txt"), errors);

assertThat(errors, empty());
assertThat(countSecurities(results), is(2L));
assertThat(countBuySell(results), is(2L));
assertThat(countAccountTransactions(results), is(0L));
assertThat(countAccountTransfers(results), is(0L));
assertThat(results.size(), is(4));
new AssertImportActions().check(results, "EUR");

// check security
assertThat(results, hasItem(security( //
hasIsin("US0995021062"), hasWkn(null), hasTicker(null), //
hasName("BOOZ ALLEN CL.A"), //
hasCurrencyCode("USD"))));

// check security
assertThat(results, hasItem(security( //
hasIsin("US5024311095"), hasWkn(null), hasTicker(null), //
hasName("L3HARRIS TECHN."), //
hasCurrencyCode("USD"))));

// check buy sell transaction
assertThat(results, hasItem(sale( //
hasDate("2021-03-16T19:50:11"), hasShares(45.00), //
hasSource("ReleveDeCompte05.txt"), //
hasNote(null), //
hasAmount("EUR", 2977.53), hasGrossValue("EUR", 2986.04), //
hasTaxes("EUR", 0.01), hasFees("EUR", 8.50))));

// check buy sell transaction
assertThat(results, hasItem(sale( //
hasDate("2021-03-16T19:45:03"), hasShares(20.00), //
hasSource("ReleveDeCompte05.txt"), //
hasNote(null), //
hasAmount("EUR", 3178.78), hasGrossValue("EUR", 3187.29), //
hasTaxes("EUR", 0.01), hasFees("EUR", 8.50))));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
PDFBox Version: 3.0.5
Portfolio Performance Version: 0.80.2
System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc.
-----------------------------------------
1/1
Nous vous prions de trouver ci-dessous votre relevé d'opérations. Sans observation de votre part au
sujet du présent relevé, nous le considérerons comme ayant obtenu votre accord. Veuillez agréer nos
salutations distinguées.
Le 24/02/2021
Avis d'Opération
COMPTE N° 508TI00085554410EUR Ordinaire MR XKCFj JjkDQO
192 ROUTE DE CAZKIsv
MR ueWCI UVLkVC 60763 gAkPFv
Date Désignation Débit (€) Crédit (€)
24/02/2021 VIREMENT ESPECES VIRT M. ET/OU MME 2 400,00
Sous réserve de bonne fin / Ce relevé ne constitue pas une facture
Les montants des colonnes Débit et Crédit sont stipulés TVA Comprise
Bourse Direct , SA au capital de 13.988.845,75 €, R.C.S Paris B 408 790 608, Siège Social : 374 rue Saint-Honoré, 75001 Paris - Groupe VIEL et Cie
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
PDFBox Version: 3.0.5
Portfolio Performance Version: 0.80.2
System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc.
-----------------------------------------
1/1
Nous vous prions de trouver ci-dessous votre relevé d'opérations. Sans observation de votre part au
sujet du présent relevé, nous le considérerons comme ayant obtenu votre accord. Veuillez agréer nos
salutations distinguées.
Le 16/03/2021
Avis d'Opération
COMPTE N° 508TI00085554410EUR Ordinaire MR SLlPD yVlqGo
192 ROUTE DE qRRZPSm
MR lYoBQ xsdjTp 77158 IvQiGu
Date Désignation Débit (€) Crédit (€)
16/03/2021 VENTE ETRANGER US0995021062 BOOZ ALLEN CL.A 2 977,53
QUANTITE : -45
COURS : +66,356440254 BRUT : +2 986,04
COURTAGE : +8,50 TVA : +0,00
COURS EN USD : +79,2 TX USD/EUR : +1,193554080
TAXE ETRANG : +0,01
Heure Execution: 19:50:11 Lieu: NEW YORK STOCK EXCHANGE, INC.
16/03/2021 VENTE ETRANGER US5024311095 L3HARRIS TECHN. 3 178,78
QUANTITE : -20
COURS : +159,364458794 BRUT : +3 187,29
COURTAGE : +8,50 TVA : +0,00
COURS EN USD : +190,2101 TX USD/EUR : +1,193554080
TAXE ETRANG : +0,01
Heure Execution: 19:45:03 Lieu: NEW YORK STOCK EXCHANGE, INC.
Sous réserve de bonne fin / Ce relevé ne constitue pas une facture
Les montants des colonnes Débit et Crédit sont stipulés TVA Comprise
Bourse Direct , SA au capital de 13.988.845,75 €, R.C.S Paris B 408 790 608, Siège Social : 374 rue Saint-Honoré, 75001 Paris - Groupe VIEL et Cie
Loading