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 FinTechGroupBank PDF-Importer after fusion to flatexDEGIRO Bank AG #2206

Merged
merged 1 commit into from Apr 18, 2021
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
Expand Up @@ -583,6 +583,73 @@ public void testWertpapierKauf17() // NOSONAR
assertThat(entry.getPortfolioTransaction().getShares(), is(Values.Share.factorize(2.460378)));
}

@Test
public void testWertpapierKauf18() // NOSONAR
{
FinTechGroupBankPDFExtractor extractor = new FinTechGroupBankPDFExtractor(new Client());

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

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

assertThat(errors, empty());
assertThat(results.size(), is(4));
new AssertImportActions().check(results, CurrencyUnit.EUR);

// check securities
Optional<Item> item = results.stream().filter(i -> i instanceof SecurityItem).findFirst();
assertThat(item.isPresent(), is(true));
Security security = ((SecurityItem) item.get()).getSecurity();
assertThat(security.getIsin(), is("US17275R1023"));
assertThat(security.getName(), is("CISCO SYSTEMS DL-,001"));
assertThat(security.getWkn(), is("878841"));
assertThat(security.getCurrencyCode(), is(CurrencyUnit.EUR));

item = results.stream().filter(i -> i instanceof SecurityItem).skip(1).findFirst();
assertThat(item.isPresent(), is(true));
security = ((SecurityItem) item.get()).getSecurity();
assertThat(security.getIsin(), is("US88339J1051"));
assertThat(security.getName(), is("THE TRA.DESK A DL-,000001"));
assertThat(security.getWkn(), is("A2ARCV"));
assertThat(security.getCurrencyCode(), is(CurrencyUnit.EUR));

// check 1st buy sell transactions
Optional<Item> t = results.stream().filter(i -> i instanceof BuySellEntryItem).findFirst();
assertThat(t.isPresent(), is(true));
assertThat(t.get().getSubject(), instanceOf(BuySellEntry.class));
BuySellEntry entry = (BuySellEntry) t.get().getSubject();

assertThat(entry.getPortfolioTransaction().getType(), is(PortfolioTransaction.Type.BUY));
assertThat(entry.getAccountTransaction().getType(), is(AccountTransaction.Type.BUY));

assertThat(entry.getPortfolioTransaction().getDateTime(), is(LocalDateTime.parse("2021-04-09T17:40")));
assertThat(entry.getPortfolioTransaction().getShares(), is(Values.Share.factorize(41)));
assertThat(entry.getPortfolioTransaction().getMonetaryAmount(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(1796.12))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.TAX),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(0.00))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.FEE),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(5.90 + 2.00))));

// check 2nd buy sell transactions
t = results.stream().filter(i -> i instanceof BuySellEntryItem).skip(1).findFirst();
assertThat(t.isPresent(), is(true));
assertThat(t.get().getSubject(), instanceOf(BuySellEntry.class));
entry = (BuySellEntry) t.get().getSubject();

assertThat(entry.getPortfolioTransaction().getType(), is(PortfolioTransaction.Type.SELL));
assertThat(entry.getAccountTransaction().getType(), is(AccountTransaction.Type.SELL));

assertThat(entry.getPortfolioTransaction().getDateTime(), is(LocalDateTime.parse("2021-04-09T17:37")));
assertThat(entry.getPortfolioTransaction().getShares(), is(Values.Share.factorize(3)));
assertThat(entry.getPortfolioTransaction().getMonetaryAmount(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(1737.50))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.TAX),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(0.00))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.FEE),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(5.90 + 2.00))));
}

@Test
public void testKontoauszug()
{
Expand Down
@@ -0,0 +1,90 @@
PDF Autor: ''
PDFBox Version: 1.8.16
-----------------------------------------
flatexDEGIRO Bank AG
Postfach 100551
41405 Neuss
USt-IdNr.: DE 246 786 363
Kundenservice:
Tel.: +49 (0)9221 - 7035898
E-Mail: kunden@flatex.de
flatexDEGIRO Bank AG - Rotfeder-Ring 7 - 60327 Frankfurt am Main
030350200000196XXXXX80
Herrn
Max Mustermann
Frankfurt, 10.04.2021
Sammelabrechnung (Wertpapierkauf/-verkauf)
Ihre Depotnummer: 101XXXXX34
Depotinhaber: Max Mustermann
Nr.171111181/1 Verkauf THE TRA.DESK A DL-,000001 (US88339J1051/A2ARCV)
Ordervolumen : 3,00 St. Handelsplatz : Tradegate
davon ausgef. : 3,00 St. Schlusstag : 09.04.2021, 17:37 Uhr
Kurs : 581,8000 EUR Kurswert : 1.745,40 EUR
Devisenkurs : Provision : 5,90 EUR
Bew-Faktor : 1,0000 Eigene Spesen :
Verwahrart : GS-Verwahrung *Fremde Spesen : 2,00 EUR
Lagerstelle : Clearstream Nat.
Lagerland : USA Bemessungs-
Gewinn/Verlust: 94,70 EUR grundlage : 76,27 EUR
Valuta : 13.04.2021 **Einbeh. Steuer: 0,00 EUR
Endbetrag : 1.737,50 EUR
* Enthalten sind folgende Gebühren
Courtage : 0,00 EUR
Tradinggebühr : 0,00 EUR
Regulierung : 2,00 EUR
Schlussnoten : 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.:
229XXXXX43.
______________________________________________________________________________
Seite 1/2
BLZ 101 308 00 / BIC: BIWBDE33XXX - Aktiengesellschaft, Sitz Frankfurt - Amtsgericht Frankfurt am Main (HRB 105687)
Vorsitzender des Aufsichtsrats: Martin Korbmacher - Vorstand: Frank Niehage (Vorsitzender), Jörn Engelmann, Steffen Jentsch
2000001968682980 0113303500000101
Nr.171111135/1 Kauf CISCO SYSTEMS DL-,001 (US17275R1023/878841)
Ordervolumen : 41,00 St. Handelsplatz : Tradegate
davon ausgef. : 41,00 St. Schlusstag : 09.04.2021, 17:40 Uhr
Kurs : 43,6150 EUR Kurswert : 1.788,22 EUR
Devisenkurs : Provision : 5,90 EUR
Bew-Faktor : 1,0000 Eigene Spesen :
Verwahrart : GS-Verwahrung *Fremde Spesen : 2,00 EUR
Lagerstelle : Clearstream Nat.
Lagerland : USA Bemessungs-
Gewinn/Verlust: 0,00 EUR grundlage : 0,00 EUR
Valuta : 13.04.2021 **Einbeh. Steuer: 0,00 EUR
Endbetrag : -1.796,12 EUR
* Enthalten sind folgende Gebühren
Courtage : 0,00 EUR
Tradinggebühr : 0,00 EUR
Regulierung : 2,00 EUR
Schlussnoten : 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.:
229XXXXX95.
Die Verrechnung der Endbeträge erfolgt über Ihr Konto Nr.: 101XXXXX27
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
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: Frank Niehage (Vorsitzender), Jörn Engelmann, Steffen Jentsch
2000001968682980
Expand Up @@ -27,6 +27,7 @@ public FinTechGroupBankPDFExtractor(Client client)
addBankIdentifier("biw AG"); //$NON-NLS-1$
addBankIdentifier("FinTech Group Bank AG"); //$NON-NLS-1$
addBankIdentifier("flatex Bank AG"); //$NON-NLS-1$
addBankIdentifier("flatexDEGIRO Bank AG"); //$NON-NLS-1$

addBuySellTransaction();
addBuyTransaction();
Expand All @@ -44,13 +45,25 @@ public FinTechGroupBankPDFExtractor(Client client)
addVorabpauschaleTransaction();
}

@Override
public String getPDFAuthor()
{
return ""; //$NON-NLS-1$
}

@Override
public String getLabel()
{
return "flatexDEGIRO Bank AG / FinTech Group Bank AG / biw AG"; //$NON-NLS-1$
}

@SuppressWarnings("nls")
private void addBuySellTransaction()
{
DocumentType type = new DocumentType("Sammelabrechnung \\(Wertpapierkauf/-verkauf\\)");
DocumentType type = new DocumentType("Sammelabrechnung \\(Wertpapierkauf\\/-verkauf\\)");
this.addDocumentTyp(type);

Block block = new Block("Nr.(\\d*)/(\\d*) *Kauf.*");
Block block = new Block("Nr.(\\d*)\\/(\\d*) *Kauf.*");
type.addBlock(block);
block.set(new Transaction<BuySellEntry>()

Expand Down Expand Up @@ -104,7 +117,7 @@ private void addBuySellTransaction()

.wrap(BuySellEntryItem::new));

block = new Block("Nr.(\\d*)/(\\d*) *Verkauf.*");
block = new Block("Nr.(\\d*)\\/(\\d*) *Verkauf.*");
type.addBlock(block);
block.set(new Transaction<BuySellEntry>()

Expand Down Expand Up @@ -1401,10 +1414,4 @@ private void addTaxRefundForSell(DocumentType type)
return null;
}));
}

@Override
public String getLabel()
{
return "FinTech Group Bank AG / flatex / Whitebox"; //$NON-NLS-1$
}
}