Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modify FlatEx PDF-Importer to support new transaction #3590

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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -1,14 +1,5 @@
package name.abuchen.portfolio.datatransfer.pdf.fintechgroupbank;

import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransactions;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countBuySell;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countSecurities;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.collection.IsEmptyCollection.empty;
import static org.junit.Assert.assertNull;

import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.check;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.deposit;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.dividend;
Expand All @@ -35,6 +26,14 @@
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.security;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.taxes;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.withFailureMessage;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransactions;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countBuySell;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countSecurities;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.collection.IsEmptyCollection.empty;
import static org.junit.Assert.assertNull;

import java.time.LocalDateTime;
import java.util.ArrayList;
Expand Down Expand Up @@ -1889,7 +1888,7 @@ public void testFinTechDividende06()
assertThat(transaction.getType(), is(AccountTransaction.Type.DIVIDENDS));

assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2016-04-28T00:00")));
assertThat(transaction.getShares(), is(Values.Share.factorize(1000)));
assertThat(transaction.getShares(), is(Values.Share.factorize(10)));
assertThat(transaction.getSource(), is("FinTechDividende06.txt"));
assertThat(transaction.getNote(), is("Transaktion-Nr.: 111111111"));

Expand Down Expand Up @@ -4750,6 +4749,77 @@ public void testFlatExDegiroDividende09()
hasTaxes("CHF", 42.78), hasFees("CHF", 0.00))));
}

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

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

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

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

// check security
assertThat(results, hasItem(security( //
hasIsin("US89114QCB23"), hasWkn("A2RY26"), hasTicker(null), //
hasName("TORON.DOM.BK 19/24 MTN"), //
hasCurrencyCode("USD"))));

// check taxes transaction
assertThat(results, hasItem(dividend( //
hasDate("2023-09-11T00:00"), hasShares(100.00), //
hasSource("FlatExDegiroDividende10.txt"), //
hasNote("Transaktion-Nr.: 3415691892"), //
hasAmount("EUR", 109.86), hasGrossValue("EUR", 151.53), //
hasForexGrossValue("USD", 162.50), //
hasTaxes("EUR", 41.67), hasFees("EUR", 0.00))));
}

@Test
public void testFlatExDegiroDividende10WithSecurityInEUR()
{
Security security = new Security("TORON.DOM.BK 19/24 MTN", CurrencyUnit.EUR);
security.setIsin("US89114QCB23");
security.setWkn("A2RY26");

Client client = new Client();
client.addSecurity(security);

FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(client);

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

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

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

// check taxes transaction
assertThat(results, hasItem(dividend( //
hasDate("2023-09-11T00:00"), hasShares(100.00), //
hasSource("FlatExDegiroDividende10.txt"), //
hasNote("Transaktion-Nr.: 3415691892"), //
hasAmount("EUR", 109.86), hasGrossValue("EUR", 151.53), //
hasTaxes("EUR", 41.67), hasFees("EUR", 0.00), //
check(tx -> {
CheckCurrenciesAction c = new CheckCurrenciesAction();
Account account = new Account();
account.setCurrencyCode(CurrencyUnit.EUR);
Status s = c.process((AccountTransaction) tx, account);
assertThat(s, is(Status.OK_STATUS));
}))));
}

@Test
public void testFlatExSammelabrechnung01()
{
Expand Down
@@ -0,0 +1,41 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.65.4
-----------------------------------------
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
0102492000003433116450
Herrn

Wien, 12.09.2023
Zinsgutschrift für Wertpapiere
Ihre Depotnummer: 31010852643
Depotinhaber :
Nr.3415691892 TORON.DOM.BK 19/24 MTN (US89114QCB23/A2RY26)
St./Nominale : 10.000,00 USD
Zinstage : 180 Ertrag p.a. : 3,2500 %
Extag : 11.09.2023 Ertrag : 1,6250 %
Zinstermin : 11.09.2023 Zinsbetrag : 162,50 USD
Zahlungstag : 11.09.2023 Faktor : 1,000000
Valuta : 11.09.2023 *Einbeh. Steuer : 41,67 EUR
Devisenkurs : 1,072400
Endbetrag : 109,86 EUR
* Einbehaltene Kapitalertragsteuer. Details dazu finden Sie im Steuerreport
unter der Transaktion-Nr.: 3415691892.
Die Verrechnung des Endbetrag erfolgt über Ihr Konto Nr.: 31010852635.
Die Gutschrift erfolgt unter Vorbehalt des Eingangs. Einwendungen müssen
unverzüglich nach Zugang erhoben werden. Die Unterlassung rechtzeitiger
Einwendung gilt als Genehmigung.
Dieser Beleg ist keine Steuerbescheinigung. Kapitalerträge sind
einkommensteuerpflichtig.
Diese Mitteilung ist maschinell erstellt und wird nicht unterschrieben.
Für weitergehende Fragen wenden Sie sich bitte an Ihr flatex-Service-Team.
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 -
2000003433116450 0351102490000101