Skip to content

Commit

Permalink
Modify FlatEx PDF-Importer to support new transaction (#4530)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirus2000 authored Feb 17, 2025
1 parent 33a5ddd commit 224e5c3
Show file tree
Hide file tree
Showing 6 changed files with 533 additions and 84 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1482,9 +1482,9 @@ public void testFinTechKauf10()
assertThat(entry.getNote(), is("Transaktion-Nr.: 1321692761"));

assertThat(entry.getPortfolioTransaction().getMonetaryAmount(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(399.99))));
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(400.00))));
assertThat(entry.getPortfolioTransaction().getGrossValue(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(399.99))));
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(400.00))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.TAX),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(0.00))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.FEE),
Expand Down Expand Up @@ -4275,6 +4275,68 @@ public void testFlatExDegiroKauf03WithSecurityInEUR()
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testFlatExDegiroKauf04()
{
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FlatExDegiroKauf04.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("IE000F6G1DE0"), hasWkn("A3DJQH"), hasTicker(null), //
hasName("ISHARES CORP BOND 1-5YR"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(purchase( //
hasDate("2024-03-13T09:04"), hasShares(1520.00), //
hasSource("FlatExDegiroKauf04.txt"), //
hasNote("Transaktion-Nr.: 5419071589"), //
hasAmount("EUR", 7734.01), hasGrossValue("EUR", 7721.60), //
hasTaxes("EUR", 0.00), hasFees("EUR", 9.90 + 2.51))));
}

@Test
public void testFlatExDegiroKauf05()
{
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FlatExDegiroKauf05.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("IE00BJ5JNY98"), hasWkn("A2PHCC"), hasTicker(null), //
hasName("ISHARES MSCI WLD INFO TEC"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(purchase( //
hasDate("2025-01-16T21:57"), hasShares(2065.00), //
hasSource("FlatExDegiroKauf05.txt"), //
hasNote("Transaktion-Nr.: 4076340401"), //
hasAmount("EUR", 28009.30), hasGrossValue("EUR", 28001.40), //
hasTaxes("EUR", 0.00), hasFees("EUR", 5.90 + 2.00))));
}

@Test
public void testFlatExDegiroVerkauf01()
{
Expand Down Expand Up @@ -4518,6 +4580,76 @@ public void testFlatExDegiroVerkauf05()
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testFlatExDegiroVerkauf06()
{
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FlatExDegiroVerkauf06.txt"), errors);

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

// check security
assertThat(results, hasItem(security( //
hasIsin("IE00B4L5Y983"), hasWkn("A0RPWH"), hasTicker(null), //
hasName("ISHARES CORE MSCI WORLD E"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(sale( //
hasDate("2025-01-16T00:00"), hasShares(0.105442), //
hasSource("FlatExDegiroVerkauf06.txt"), //
hasNote("Transaktion-Nr.: 4076392428"), //
hasAmount("EUR", 5.25), hasGrossValue("EUR", 11.15), //
hasTaxes("EUR", 0.00), hasFees("EUR", 5.90))));

// check taxes transaction
assertThat(results, hasItem(taxRefund( //
hasDate("2025-01-16T00:00"), hasShares(0.105442), //
hasSource("FlatExDegiroVerkauf06.txt"), //
hasNote("Transaktion-Nr.: 4076392428"), //
hasAmount("EUR", 1.08), hasGrossValue("EUR", 1.08), //
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testFlatExDegiroVerkauf07()
{
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "FlatExDegiroVerkauf07.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("IE00BD1F4N50"), hasWkn("A2AP36"), hasTicker(null), //
hasName("ISHARES EDGE MSCI USA MOM"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(sale( //
hasDate("2024-12-02T11:14"), hasShares(4400.00), //
hasSource("FlatExDegiroVerkauf07.txt"), //
hasNote("Transaktion-Nr.: 5623076367"), //
hasAmount("EUR", 63704.10), hasGrossValue("EUR", 63712.00), //
hasTaxes("EUR", 0.00), hasFees("EUR", 5.90 + 2.00))));
}

@Test
public void testFlatExDegiroDividende01WithNegativeAmount()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.72.2
-----------------------------------------
flatexDEGIRO Bank AG
Kundenservice
Opernring 1 / Top 736
1010 Wien
Tel.: +43 - (0)720 518 777
Mail: info@flatex.at
flatexDEGIRO Bank AG - Opernring 1 / Top 736 - A-1010 Wien
Wien, 13.03.2024
0324709264870339719576
Herr Auftragsdatum 04.03.2024n
kBv abc HuEjl Handelstag 13.03.2024xan
XuxWCdSuL 362/90 Ausführungszeit 09:04 Uhr.
8016 NZbY Valuta 15.03.2024
ÖSTERREICH Auftragsnummer 292857832/1
Ausf.platz/-art Tradegate
Wertpapierabrechnung Kauf Fonds/Zertifikate
Ihre Depotnummer: 41059423596
Depotinhaber: dnFBo, NkTmgFByQ
Nr.157166966/1 Kauf ISHARES CORP BOND 1-5YR (IE000F6G1DE0/A3DJQH)
Ausgeführt : 1.520 St. Kurswert : 7.721,60 EUR
Kurs : 5,080000 EUR Provision : 9,90 EUR
Devisenkurs : 1,000000 Eigene Spesen : 0,00 EUR
*Fremde Spesen : 2,51 EUR
Verwahrart : Wertpapierrechnung
Lagerstelle : Clearstream Lux.
Lagerland : Irland Bemessungs-
grundlage : 0,00 EUR
Gewinn/Verlust: 0,00 EUR **Einbeh. KESt : 0,00 EUR
Endbetrag : -7.734,01 EUR
* Enthalten sind folgende Gebühren Courtage : 0,00 EUR
Tradinggebühr : 0,00 EUR
Regulierung : 2,44 EUR
Schlussnoten : 0,07 EUR
LS-Umlegung : 0,00 EUR
Finanztransaktionssteuer : 0,00 EUR
Sonstige : 0,00 EUR
** Einbehaltene Kapitalerstragsteuer. Details dazu finden Sie im Steuerreport
unter der Transaktion-Nr.: 5419071589.
Die Verrechnung der Endbeträge erfolgt über Ihr Konto Nr.: 45074841818
Die Wertpapiere sowie den Gegenwert werden wir entsprechend der Abrechnung mit
dem angegebenen Valutatag buchen. Bitte prüfen Sie diese Abrechnung auf
Richtigkeit und Vollständigkeit. Etwaige Einwendungen gegen diese Abrechnung
müssen unverzüglich nach Zugang bei der Bank erhoben werden. Die
______________________________________________________________________________
Seite 1/2
flatexDEGIRO Bank AG Niederlassung Österreich | Aktiengesellschaft | Opernring 1 / Top 736 | 1010 Wien | Handelsgericht Wien | FN 334642 x | DVR 4000544 | UID ATU 65140956
Hauptniederlassung: flatexDEGIRO Bank AG | Omniturm | Große Gallusstr. 16-18 | 60312 Frankfurt am Main (Deutschland) | Amtsgericht Frankfurt am Main | HRB 105687
- Vorsitzender des Aufsichtsrats: Martin Korbmacher | Vorstand: Frank Niehage (Vorsitzender), Dr. Benon Janos,
Dr. Matthias Heinrich, Steffen Jentsch, Stephan Simmang, Jens Möbitz -
6692828493414108 6333172362828316
Unterlassung rechtzeitiger Einwendung gilt als Genehmigung. Bitte beachten
Sie mögliche Hinweise des Emittenten hinsichtlich vorzeitiger Fälligstellung,
beispielsweise wegen Knock-Out, in den jeweiligen Optionsscheinbedingungen und
informieren Sie sich rechtzeitig, welche spezielle Fälligkeitsregelung auf die
von Ihnen gehaltenen Wertpapiere zutreffen. Kapitalerträge sind ESt-pflichtig.
Diese Mitteilung ist maschinell erstellt und wird nicht unterschrieben.
Für weitergehende Fragen wenden Sie sich bitte an Ihr flatex-Service-Team.
______________________________________________________________________________
Seite 2/2
flatexDEGIRO Bank AG Niederlassung Österreich | Aktiengesellschaft | Opernring 1 / Top 736 | 1010 Wien | Handelsgericht Wien | FN 334642 x | DVR 4000544 | UID ATU 65140956
Hauptniederlassung: flatexDEGIRO Bank AG | Omniturm | Große Gallusstr. 16-18 | 60312 Frankfurt am Main (Deutschland) | Amtsgericht Frankfurt am Main | HRB 105687
- Vorsitzender des Aufsichtsrats: Martin Korbmacher | Vorstand: Frank Niehage (Vorsitzender), Dr. Benon Janos,
Dr. Matthias Heinrich, Steffen Jentsch, Stephan Simmang, Jens Möbitz -
1691308898505269 1499085416526951
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.73.0
System: linux | x86_64 | 21.0.5+2 | Flathub
-----------------------------------------
flatexDEGIRO Bank AG
Postfach 100551
41405 Neuss
USt-IdNr.: DE 246 786 363
Kundenservice:
Tel.: +49 9221 7035898
E-Mail: info@flatex.de
flatexDEGIRO Bank AG - Hammfelddamm 4 - 41460 Neuss, Deutschland
Frankfurt, 16.01.2025
5018893443676558698451
Herr Auftragsdatum 16.01.2025n
ePgx FpSgMQ mgYwLhl Handelstag 16.01.2025
WR ZbgYYdcYug Ausführungszeit 21:57 Uhr
zHwdt ByVKEXzQqG 26 Valuta 20.01.2025
62541 mNPJUisVJ Auftragsnummer 826637070/1
Ausf.platz/-art Société Général
Wertpapierabrechnung Kauf Fonds/Zertifikate
Ihre Depotnummer: 2943276222
Depotinhaber: CRXAhep, Mxzy LrYREt
Nr.218139137/1 Kauf ISHARES MSCI WLD INFO TEC (IE00BJ5JNY98/A2PHCC)
Ausgeführt : 2.065 St. Kurswert : 28.001,40 EUR
Kurs : 13,560000 EUR Provision : 5,90 EUR
Devisenkurs : 1,000000 Eigene Spesen : 0,00 EUR
*Fremde Spesen : 2,00 EUR
Verwahrart : Wertpapierrechnung
Lagerstelle : Clearstream Lux.
Lagerland : Irland Bemessungs-
grundlage : 0,00 EUR
Gewinn/Verlust: 0,00 EUR **Einbeh. Steuer: 0,00 EUR
Endbetrag : -28.009,30 EUR
* Enthalten sind folgende Gebühren Courtage : 0,00 EUR
Tradinggebühr : 0,00 EUR
Regulierung : 2,00 EUR
Schlussnoten : 0,00 EUR
LS-Umlegung : 0,00 EUR
Finanztransaktionssteuer : 0,00 EUR
Sonstige : 0,00 EUR
** Enthalten sind folgende Steuern (negative Werte bedeuten Steuererstattung)
Kapitalertragsteuer : 0,00 EUR
Solidaritätszuschlag : 0,00 EUR
Kirchensteuer : 0,00 EUR
Evtl. Details dazu finden Sie im Steuerreport unter der Transaktion-Nr.:
4076340401.
Die Verrechnung der Endbeträge erfolgt über Ihr Konto Nr.: 1529377381
Die Wertpapiere sowie den Gegenwert werden wir entsprechend der Abrechnung mit
______________________________________________________________________________
Seite 1/2
BLZ 101 308 00 / BIC: BIWBDE33XXX - Aktiengesellschaft, Sitz Frankfurt - Amtsgericht Frankfurt am Main (HRB 105687)
Vorsitzender des Aufsichtsrats: Martin Korbmacher - Vorstand: Oliver Behrens (Vorsitzender), Dr. Benon Janos (stellv. Vorsitzender),
Stephan Simmang, Dr. Matthias Heinrich, Steffen Jentsch, Jens Möbitz
2000004563937700 0113202270000102
dem angegebenen Valutatag buchen. Bitte prüfen Sie diese Abrechnung auf
Richtigkeit und Vollständigkeit. Etwaige Einwendungen gegen diese Abrechnung
müssen unverzüglich nach Zugang bei der Bank erhoben werden. Die
Unterlassung rechtzeitiger Einwendung gilt als Genehmigung. Bitte beachten
Sie mögliche Hinweise des Emittenten hinsichtlich vorzeitiger Fälligstellung,
beispielsweise wegen Knock-Out, in den jeweiligen Optionsscheinbedingungen und
informieren Sie sich rechtzeitig, welche spezielle Fälligkeitsregelung auf die
von Ihnen gehaltenen Wertpapiere zutreffen. Kapitalerträge sind ESt-pflichtig.
Diese Mitteilung ist maschinell erstellt und wird nicht unterschrieben.
Für weitergehende Fragen wenden Sie sich bitte an Ihr flatex-Service-Team.
______________________________________________________________________________
Seite 2/2
BLZ 101 308 00 / BIC: BIWBDE33XXX - Aktiengesellschaft, Sitz Frankfurt - Amtsgericht Frankfurt am Main (HRB 105687)
Vorsitzender des Aufsichtsrats: Martin Korbmacher - Vorstand: Oliver Behrens (Vorsitzender), Dr. Benon Janos (stellv. Vorsitzender),
Stephan Simmang, Dr. Matthias Heinrich, Steffen Jentsch, Jens Möbitz
2000004563937700 0113202270000202
Loading

0 comments on commit 224e5c3

Please sign in to comment.