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 Comdirekt PDF-Importer to support older sell transactions #2155

Merged
merged 1 commit into from Mar 23, 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 @@ -719,6 +719,105 @@ public void testWertpapierVerkauf5()
assertThat(entryTaxReturn.getDateTime(), is(LocalDateTime.parse("2020-12-15T00:00")));
}

@Test
public void testWertpapierVerkauf6()
{
ComdirectPDFExtractor extractor = new ComdirectPDFExtractor(new Client());

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

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

assertThat(errors, empty());
assertThat(results.size(), is(2));

// security
Security security = results.stream().filter(i -> i instanceof SecurityItem).findFirst()
.orElseThrow(IllegalArgumentException::new).getSecurity();
assertThat(security.getName(), is("HSBC Trinkaus & Burkhardt AG Call 14.01.11 Juniper 30"));
assertThat(security.getIsin(), is("DE000TB1AF62"));
assertThat(security.getWkn(), is("TB1AF6"));

// purchase
PortfolioTransaction txP = ((BuySellEntry) results.stream().filter(i -> i instanceof BuySellEntryItem)
.findFirst().orElseThrow(IllegalArgumentException::new).getSubject()).getPortfolioTransaction();

assertThat(txP.getType(), is(PortfolioTransaction.Type.SELL));

assertThat(txP.getShares(), is(Values.Share.factorize(2000)));
assertThat(txP.getAmount(), is(Values.Amount.factorize(906.85)));
assertThat(txP.getDateTime(), is(LocalDateTime.parse("2008-06-11T18:54")));
assertThat(txP.getUnitSum(Unit.Type.FEE),
is(Money.of("EUR", Values.Amount.factorize(9.90 + 2.50 + 0.75))));
}

@Test
public void testWertpapierVerkauf7()
{
ComdirectPDFExtractor extractor = new ComdirectPDFExtractor(new Client());

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

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

assertThat(errors, empty());
assertThat(results.size(), is(2));

// security
Security security = results.stream().filter(i -> i instanceof SecurityItem).findFirst()
.orElseThrow(IllegalArgumentException::new).getSecurity();
assertThat(security.getName(), is("Citigroup Global Markets Dt. KOS03/21.12.04 Allianz 80"));
assertThat(security.getIsin(), is("DE0009503540"));
assertThat(security.getWkn(), is("950354"));

// purchase
PortfolioTransaction txP = ((BuySellEntry) results.stream().filter(i -> i instanceof BuySellEntryItem)
.findFirst().orElseThrow(IllegalArgumentException::new).getSubject()).getPortfolioTransaction();

assertThat(txP.getType(), is(PortfolioTransaction.Type.SELL));

assertThat(txP.getShares(), is(Values.Share.factorize(550)));
assertThat(txP.getAmount(), is(Values.Amount.factorize(1086.72)));
assertThat(txP.getDateTime(), is(LocalDateTime.parse("2003-12-08T00:00")));
assertThat(txP.getUnitSum(Unit.Type.FEE),
is(Money.of("EUR", Values.Amount.factorize(0.88 + 9.90 + 2.50))));
}

@Test
public void testWertpapierVerkauf8()
{
ComdirectPDFExtractor extractor = new ComdirectPDFExtractor(new Client());

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

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

assertThat(errors, empty());
assertThat(results.size(), is(2));

// security
Security security = results.stream().filter(i -> i instanceof SecurityItem).findFirst()
.orElseThrow(IllegalArgumentException::new).getSecurity();
assertThat(security.getName(), is("Deutsche Bank AG KOS03/13.12.04 SAP 150"));
assertThat(security.getIsin(), is("DE0005601215"));
assertThat(security.getWkn(), is("560121"));

// purchase
PortfolioTransaction txP = ((BuySellEntry) results.stream().filter(i -> i instanceof BuySellEntryItem)
.findFirst().orElseThrow(IllegalArgumentException::new).getSubject()).getPortfolioTransaction();

assertThat(txP.getType(), is(PortfolioTransaction.Type.SELL));

assertThat(txP.getShares(), is(Values.Share.factorize(300)));
assertThat(txP.getAmount(), is(Values.Amount.factorize(136.85)));
assertThat(txP.getDateTime(), is(LocalDateTime.parse("2004-03-10T00:00")));
assertThat(txP.getUnitSum(Unit.Type.FEE),
is(Money.of("EUR", Values.Amount.factorize(0.75 + 9.90 + 2.50))));
}

@Test
public void testGutschrift1()
{
Expand Down
@@ -0,0 +1,68 @@
PDF Autor: 'HAVI Solutions GmbH & Co. KG, phg'
PDFBox Version: 1.8.16
-----------------------------------------
Ihren Auftrag haben wir gemäß unseren Sonderbe-
dingungen für Wertpapiergeschäfte wie nachstehend
ausgeführt.
Die Wertpapiere haben wir der Abrechnung entspre-
25449 Quickborn chend gebucht.Wir bitten Sie, diese Abrechnung auf ihre Richtigkeit und
Telefon 01803-33 63 66 Vollständigkeit zu überprüfen und etwaige Einwendungen: unverzüglich zu erheben.




11869 010



Max Muster Depotnummer: 1234567 00

Musterstr. 1

99999 Musterstadt





ABRECHNUNG VOM 11.06.2008
Wertpapierverkauf
Geschäftsnummer : 12 123456
1234567890-123 Rechnungsnummer : 1234567891234567
Geschäftstag : 11.06.2008 Ausführungsplatz : STUTTGART
Handelszeit : 18:54 Uhr (MEZ/MESZ)

Wertpapier-Bezeichnung WPKNR/ISIN
HSBC Trinkaus & Burkhardt AG TB1AF6
Call 14.01.11 Juniper 30 DE000TB1AF62


Nennwert Zum Kurs von
St. 2.000 EUR 0,46

Kurswert : EUR 920,00
--------------------------------------------------------------------------------
Eigene Entgelte
Provision : EUR 9,90-
Börsenplatzabhäng. Entgelt : EUR 2,50-
Summe Entgelte : EUR 12,40-
--------------------------------------------------------------------------------
Fremde Kosten
Variable Börsenspesen : EUR 0,75-
Summe Kosten : EUR 0,75-
--------------------------------------------------------------------------------


Verrechnung über Konto Valuta Zu Ihren Gunsten
123456 00 EUR 13.06.2008 EUR 906,85

Verwahrungs-Art: GIROSAMMELDEPOT



comdirect bank AG


Diese Abrechnung wird von der Bank nicht unterschrieben
Die Leistung ist gemäß §4 Nr.8 UStG umsatzsteuerfrei. USt-Id-Nr.: DE 812 279 461
DoComd/01/2001
@@ -0,0 +1,59 @@
PDF Autor: ''
PDFBox Version: 1.8.16
-----------------------------------------
Ihren Auftrag haben wir gemäß unseren Sonderbe-
dingungen für Wertpapiergeschäfte wie nachstehend
ausgeführt.
Die Wertpapiere haben wir der Abrechnung entspre-
25449 Q i kb chend gebucht.u c orn Wir bitten Sie, diese Abrechnung auf ihre Richtigkeit und
Telefon : 01803-33 63 66 Vollständigkeit zu überprüfen und etwaige Einwendungenunverzüglich zu erheben.




11869 010



Max Mustermann Depotnummer: 1234567 00

Musterstrasse 3

12345 Musterstadt





ABRECHNUNG VOM 08.12.2003
Wertpapierverkauf
Geschäftsnummer : 00 123456
1234567890123-123
Geschäftstag : 08.12.2003 Börsenplatz : FRANKFURT


Wertpapier-Bezeichnung WPKNR/ISIN
Citigroup Global Markets Dt. 950354
KOS03/21.12.04 Allianz 80 DE0009503540


Nennwert Zum Kurs von
St. 550 EUR 2,00

Kurswert : EUR 1.100,00
0,08000% Maklercourtage : EUR 0,88-
Provision : EUR 9,90-
Börsenplatzabhäng. Entgelt : EUR 2,50-


Verrechnung über Konto Valuta Zu Ihren Gunsten
1234567 00 EUR 10.12.2003 EUR 1.086,72

Verwahrungs-Art: GIROSAMMELDEPOT



comdirect bank AG


Diese Abrechnung wird von der Bank nicht unterschrieben DoComd/01/2001