Skip to content

Commit

Permalink
Modify Baader Bank PDF-Importer to support new transaction (#4531)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirus2000 authored Feb 19, 2025
1 parent 224e5c3 commit b0e65bc
Show file tree
Hide file tree
Showing 5 changed files with 553 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.interest;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.outboundDelivery;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.purchase;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.removal;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.sale;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.security;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.taxRefund;
Expand Down Expand Up @@ -4277,6 +4278,77 @@ public void testDividende24()
hasTaxes("EUR", 0.52), hasFees("EUR", 0.00))));
}

@Test
public void testDividende25()
{
BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende25.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.USD);

// check security
assertThat(results, hasItem(security( //
hasIsin("US698299AW45"), hasWkn("A0GMJZ"), hasTicker(null), //
hasName("Panama, Republik DL-Bonds 2006(34-36)"), //
hasCurrencyCode("USD"))));

// check dividends transaction
assertThat(results, hasItem(dividend( //
hasDate("2024-01-26T00:00"), hasShares(10.00), //
hasSource("Dividende25.txt"), //
hasNote("Transaction No.: 01473347"), //
hasAmount("USD", 33.50), hasGrossValue("USD", 33.50), //
hasTaxes("USD", 0.00), hasFees("USD", 0.00))));
}

@Test
public void testDividende25WithSecurityInEUR()
{
Security security = new Security("Panama, Republik DL-Bonds 2006(34-36)", CurrencyUnit.EUR);
security.setIsin("US698299AW45");
security.setWkn("A1JA0GMJZSB");

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

BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(client);

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Dividende25.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.USD);

// check dividends transaction
assertThat(results, hasItem(dividend( //
hasDate("2024-01-26T00:00"), hasShares(10.00), //
hasSource("Dividende25.txt"), //
hasNote("Transaction No.: 01473347"), //
hasAmount("USD", 33.50), hasGrossValue("USD", 33.50), //
hasForexGrossValue("EUR", 30.81), //
hasTaxes("USD", 0.00), hasFees("USD", 0.00), //
check(tx -> {
CheckCurrenciesAction c = new CheckCurrenciesAction();
Account account = new Account();
account.setCurrencyCode(CurrencyUnit.USD);
Status s = c.process((AccountTransaction) tx, account);
assertThat(s, is(Status.OK_STATUS));
}))));
}

@Test
public void testDividendeStorno01()
{
Expand Down Expand Up @@ -5079,6 +5151,79 @@ public void testPeriodenauszug12()
hasSource("Periodenauszug12.txt"), hasNote("Gutschrift"))));
}

@Test
public void testPeriodenauszug13()
{
BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(new Client());

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

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

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

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2024-12-19"), hasAmount("EUR", 105.00), //
hasSource("Periodenauszug13.txt"), hasNote("Gutschrift"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2024-12-19"), hasAmount("EUR", 105.00), //
hasSource("Periodenauszug13.txt"), hasNote("Gutschrift"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2024-12-20"), hasAmount("EUR", 1000.00), //
hasSource("Periodenauszug13.txt"), hasNote("Gutschrift"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2024-12-30"), hasAmount("EUR", 250.00), //
hasSource("Periodenauszug13.txt"), hasNote("Gutschrift"))));

// assert transaction
assertThat(results, hasItem(withFailureMessage( //
Messages.MsgErrorTransactionAlternativeDocumentRequired, //
interest( //
hasDate("2024-12-31"), //
hasSource("Periodenauszug13.txt"), //
hasNote("Rechnungsabschluss"), //
hasAmount("EUR", 0.01)))));
}

@Test
public void testPeriodenauszug14()
{
BaaderBankPDFExtractor extractor = new BaaderBankPDFExtractor(new Client());

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

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

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

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-09"), hasAmount("EUR", 100.00), //
hasSource("Periodenauszug14.txt"), hasNote("Ueberweisung"))));

// assert transaction
assertThat(results, hasItem(removal(hasDate("2025-01-20"), hasAmount("EUR", 1000.00), //
hasSource("Periodenauszug14.txt"), hasNote("SEPA-Ueberweisung"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-27"), hasAmount("EUR", 200.00), //
hasSource("Periodenauszug14.txt"), hasNote("Gutschrift"))));
}

@Test
public void testTageskontoauszug01()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.72.2
-----------------------------------------
Baader Bank AG Weihenstephaner Straße 4 85716 Unterschleißheim Scalable Capital GmbH
T 00800 00 586336* F +49 89 5150 2442 service@baaderbank.de Seitzstrasse 8e
80538 Munich
service@scalable.capital
Page 1/2
Mr. Munich
2023-12-14
vreozuzRr iFD hpMsYV
czWGONTy 230 isFPzGhCs Cgg DHGNTE
0049 Th JFsdSEid Client ID: 9259468 Portfolio: 1
Sec. Account No.: 0303777450
THE NETHERLANDS Transaction No.: 01473347
Referenz-Nr.: 513801214
Zinsabrechnung
Ex-Tag: 26.01.2024
Nominale ISIN: US698299AW45 WKN: A0GMJZ Zinsertrag
USD 1.000,00 6,70 % 3,35 %
Panama, Republik
DL-Bonds 2006(34-36)
Zahlungszeitraum: 26.07.2023 - 25.01.2024
Zahltag: 26.01.2024
Umrechnungskurs: EUR/USD 1,0872000
Bruttobetrag USD 33,50
Zu Gunsten Konto 9999999031 Valuta: 26.01.2024 USD 33,50
Bitte beachten Sie Ihre eventuelle Meldepflicht nach § 67 AWV.
Einkünfte aus Kapitalvermögen im Sinne von § 20 EStG sind einkommensteuerpflichtig.
Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben.
Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: TRADERS PLACE

Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland
Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB
121537 • Sitz der Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336*
service@baaderbank.de

DCUP-055.048

Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen.
Zinsabrechnung
Fortsetzung: Seite 2/2
Darstellung der steuerlichen Berechnungsgrundlagen:
Merkposten / Steuertöpfe vorher Erhöhung/Reduktion nachher
Zinserträge
Allgemeiner Verlusttopf (VVT) EUR 378,10 EUR 30,81 - EUR 347,29
Bemessungsgrundlagen Steuerpflicht brutto Steuerpflicht netto
Zinserträge EUR 30,81 EUR 0,00
Bemessungsgrundlage zur Kapitalertragsteuer EUR 30,81 EUR 0,00
Bitte beachten Sie Ihre eventuelle Meldepflicht nach § 67 AWV.
Einkünfte aus Kapitalvermögen im Sinne von § 20 EStG sind einkommensteuerpflichtig.
Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben.
Traders Place GmbH & Co. KGaA, Sägewerkstraße 3, 83395 Freilassing, Deutschland • Impressum unter: TRADERS PLACE

Herausgeberin und verantwortlich für den Inhalt ist die Baader Bank Aktiengesellschaft • Weihenstephaner Straße 4 • 85716 Unterschleißheim • Deutschland
Vorstand: Nico Baader (Vorsitzender), Oliver Riedel (stv. Vorsitzender) • Vorsitzender des Aufsichtsrates: Helmut Schreyer • Amtsgericht München HRB
121537 • Sitz der Gesellschaft: Unterschleißheim • StNr. 143/107/04009 • USt-IdNr. DE114123893 • LEI: 529900JFOPPEDUR61H13 • T 00800 00 586336*
service@baaderbank.de

DCUP-055.048

Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen.
Loading

0 comments on commit b0e65bc

Please sign in to comment.