Skip to content

Commit

Permalink
Modify Trade Republic to support new transaction
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirus2000 authored and buchen committed Sep 26, 2023
1 parent e9bb9f1 commit 9112c91
Show file tree
Hide file tree
Showing 3 changed files with 631 additions and 567 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.65.3
-----------------------------------------
TRADE REPUBLIC BANK GMBH KASTANIENALLEE 32 10435 BERLIN
Max Mustermann SEITE 1 von 1
Musterstraße 1 DATUM 10.01.2022
01234 Musterstadt ORDER 25a4-7fba
AUSFÜHRUNG dd26-52b9
CRYPTO-WALLET BitGo
DEPOT 0123456789
ABRECHNUNG CRYPTOGESCHÄFT
ÜBERSICHT
Market-Order Verkauf am 10.01.2022, um 16:11 Uhr (Europe/Berlin) im außerbörslichen Handel (Bankhaus
Scheich).
Der Kontrahent der Transaktion ist Bankhaus Scheich Wertpapierspezialist AG.
POSITION ANZAHL KURS BETRAG
Ethereum (ETH) 0,1 Stk. 2.628,45 EUR 262,85 EUR
GESAMT 262,85 EUR
ABRECHNUNG
POSITION BETRAG
Fremdkostenzuschlag -1,00 EUR
GESAMT 261,85 EUR
BUCHUNG
VERRECHNUNGSKONTO VALUTA BETRAG
DE99012345670123456789 10.01.2022 261,85 EUR
Diese Abrechnung wird maschinell erstellt und daher nicht unterschrieben.
Die Cryptowerte werden in einer zentralen Wallet bei dem Cryptoverwahrer BitGo Deutschland GmbH verwahrt.
Cryptowährungen unterfallen derzeit nicht der Abgeltungssteuer. Deshalb haben wir noch keine Steuern für
Dich abgeführt. Bitte prüfe aber mit Deinem Steuerberater, inwieweit Du Steuern abführen musst. Trade
Republic erbringt keine Steuerberatung.
Trade Republic Bank GmbH www.traderepublic.com Sitz der Gesellschaft: Düsseldorf Geschäftsführer
Kastanienallee 32 [email protected] AG Düsseldorf HRB 85864 Andreas Willius
10435 Berlin USt-ID DE307510626 Karsten Müller
Original file line number Diff line number Diff line change
@@ -1,14 +1,5 @@
package name.abuchen.portfolio.datatransfer.pdf.traderepublic;

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.dividend;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasAmount;
Expand All @@ -28,7 +19,16 @@
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.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.io.IOException;
import java.time.LocalDateTime;
Expand Down Expand Up @@ -436,6 +436,37 @@ public void testKauf08()
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(1.00))));
}

@Test
public void testWertpapierKauf09()
{
TradeRepublicPDFExtractor extractor = new TradeRepublicPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kauf09.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("DE000SQ6QKU9"), hasWkn(null), hasTicker(null), //
hasName("Société Générale Effekten GmbH MiniL O.End CBOE VIX 11,49"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(purchase( //
hasDate("2023-04-28T11:13"), hasShares(100.0), //
hasSource("Kauf09.txt"), //
hasNote(null), //
hasAmount("EUR", 87.40), hasGrossValue("EUR", 86.40), //
hasTaxes("EUR", 0.00), hasFees("EUR", 1.00))));
}

@Test
public void testCryptoKauf01()
{
Expand Down Expand Up @@ -590,13 +621,11 @@ public void testCryptoKauf05()
}

@Test
public void testWertpapierKauf15()
public void testCryptoVerkauf01()
{
TradeRepublicPDFExtractor extractor = new TradeRepublicPDFExtractor(new Client());

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

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

assertThat(errors, empty());
assertThat(countSecurities(results), is(1L));
Expand All @@ -607,16 +636,18 @@ public void testWertpapierKauf15()

// check security
assertThat(results, hasItem(security( //
hasIsin("DE000SQ6QKU9"), hasWkn(null), hasTicker(null), //
hasName("Société Générale Effekten GmbH MiniL O.End CBOE VIX 11,49"), //
hasCurrencyCode("EUR"))));
hasIsin(null), hasWkn(null), hasTicker("ETH"), //
hasName("Ethereum"), //
hasCurrencyCode("EUR"), //
hasFeed(CoinGeckoQuoteFeed.ID), //
hasFeedProperty(CoinGeckoQuoteFeed.COINGECKO_COIN_ID, "ethereum"))));

// check buy sell transaction
assertThat(results, hasItem(purchase( //
hasDate("2023-04-28T11:13"), hasShares(100.0), //
hasSource("Kauf09.txt"), //
hasNote(null), //
hasAmount("EUR", 87.40), hasGrossValue("EUR", 86.40), //
assertThat(results, hasItem(sale( //
hasDate("2022-01-10T16:11"), hasShares(0.1), //
hasSource("CryptoVerkauf01.txt"), //
hasNote("Order: 25a4-7fba | Ausführung: dd26-52b9"), //
hasAmount("EUR", 261.85), hasGrossValue("EUR", 262.85), //
hasTaxes("EUR", 0.00), hasFees("EUR", 1.00))));
}

Expand Down
Loading

0 comments on commit 9112c91

Please sign in to comment.