Skip to content

Commit

Permalink
Modify BoursoBank PDF-Importer to support new transaction (#4483)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirus2000 authored Jan 19, 2025
1 parent 4c21d8b commit e96d3f4
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.73.0
System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc.
-----------------------------------------
OPERATION DE BOURSE
le 08/01/2024
€
a(B;QEKetEL!JafM+€)T!MqBJ1Th/XzG3J+
000000
€fn 'x v!"*TaN= D aV€%RaHi&
;F@|6j,TV
P26025
a!!!a!!a!aa!!!aaa!a!aaa!a!!a!!a!!!a!aa!!aa!a!a!!
MR qKIEgu ksBtL
Uhr 73
14 FLZ xi vNJUMaL lGNpYi
34668 xJGsT
Références de votre compte titres
Compte PEA
11241 79887 49486422235
Résident Français
ACHAT COMPTANT
ACTION
Date et heure
locale d'exécution Quantité Informations sur la valeur Informations sur l'exécution
Référence : 337163166408
08/01/2024 7 AM.MSCI WORLD UCITS ETF EUR C
Type d'ordre : au marché
14:20:31
Code ISIN : LU1681043599 Cours exécuté : 447,5239 EUR
Lieu d'exécution : EURONEXT PARIS
Montant brut Commission Frais (¨) Montant net au débit de votre compte
3 132,67 EUR 15,66 EUR 3 148,33 EUR
Sous réserve de bonne fin.
(¨) Frais inhérents à la Taxe sur les Transactions Financières française
Cet avis ne tient pas compte des frais inhérents aux Taxes sur les Transactions Financières européennes (hors France), s'ils doivent s'appliquer.

Service Clientèle : 01 46 09 49 49 ou +33 146 09 49 49 depuis l'étranger, du lundi au vendredi de 8h à 20h et le samedi de 8h45 à 16h30 – www.boursobank.com
Boursorama S.A. au capital de 51 171 597,60 € - RCS Nanterre 351 058 151 - TVA 69 351 058 151 - 44 rue Traversière - CS 80134 - 92772 Boulogne Billancourt Cedex
AA1
Adresse du médiateur : Médiateur de l'AMF - 17, place de la Bourse - 75082 PARIS CEDEX 02
000000 F1 P26025 1/1
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,37 @@ public void testCompteAChat04()
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testCompteAChat05()
{
BoursoBankPDFExtractor extractor = new BoursoBankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "AChat05.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("LU1681043599"), hasWkn(null), hasTicker(null), //
hasName("AM.MSCI WORLD UCITS ETF EUR C"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(purchase( //
hasDate("2024-01-08T14:20:31"), hasShares(7.00), //
hasSource("AChat05.txt"), //
hasNote("au marché | Référence : 337163166408"), //
hasAmount("EUR", 3148.33), hasGrossValue("EUR", 3132.67), //
hasTaxes("EUR", 0.00), hasFees("EUR", 15.66))));
}

@Test
public void testCompteVente01()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,16 @@ private void addBuySellTransaction()
section -> section //
.attributes("name", "isin", "currency") //
.match("^[\\d]{2}\\/[\\d]{2}\\/[\\d]{4} [\\,\\d\\s]+ (?<name>.*) R.f.rence : .*$") //
.match("^Code ISIN : (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9]) Cours ex.cu.é : [\\,\\d\\s]+ (?<currency>[\\w]{3})$") //
.match("^Code ISIN : (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9]) Cours ex.cu.. : [\\,\\d\\s]+ (?<currency>[\\w]{3})$") //
.assign((t, v) -> t.setSecurity(getOrCreateSecurity(v))),
// @formatter:off
// 08/01/2024 7 AM.MSCI WORLD UCITS ETF EUR C
// Code ISIN : LU1681043599 Cours exécuté : 447,5239 EUR
// @formatter:on
section -> section //
.attributes("name", "isin", "currency") //
.match("^[\\d]{2}\\/[\\d]{2}\\/[\\d]{4} [\\,\\d\\s]+ (?<name>.*)$") //
.match("^Code ISIN : (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9]) Cours ex.cu.. : [\\,\\d\\s]+ (?<currency>[\\w]{3})$") //
.assign((t, v) -> t.setSecurity(getOrCreateSecurity(v))))

// @formatter:off
Expand Down

0 comments on commit e96d3f4

Please sign in to comment.