Skip to content

Commit

Permalink
Modify Baader Bank PDF-Importer to support new transaction (#4416)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirus2000 authored Dec 23, 2024
1 parent cd20daf commit 870fab9
Show file tree
Hide file tree
Showing 4 changed files with 268 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5129,6 +5129,31 @@ public void testRechnungsabschluss01()
hasTaxes("EUR", 0.49 + 0.03 + 0.02), hasFees("EUR", 0.00))));
}

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

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "StatementofInterestandCharges01.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 interest transaction
assertThat(results, hasItem(interest( //
hasDate("2023-06-30T00:00"), //
hasSource("StatementofInterestandCharges01.txt"), //
hasNote("Transaction No.: 0420015 | 2023-03-31 to 2023-06-30"), //
hasAmount("EUR", 112.45), hasGrossValue("EUR", 112.45), //
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
}

@Test
public void testEinbuchung01()
{
Expand Down Expand Up @@ -5266,6 +5291,39 @@ public void testFusion02()
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))));
}

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

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Fusion03.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("LU2089238203"), hasWkn("A2PWMK"), hasTicker(null), //
hasName("Amundi Index Solu.-A.PRIME GL. Nam.-Ant.UC.ETF DR USD Acc.oN"), //
hasCurrencyCode("EUR"))));

// check unsupported transaction
assertThat(results, hasItem(withFailureMessage( //
Messages.MsgErrorTransactionTypeNotSupported, //
outboundDelivery( //
hasDate("2024-11-22T00:00"), hasShares(26.00), //
hasSource("Fusion03.txt"), //
hasNote(null), //
hasAmount("EUR", 0.00), hasGrossValue("EUR", 0.00), //
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))));
}

@Test
public void testDepoteinlieferung01()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.72.2
-----------------------------------------
Baader Bank AG Weihenstephaner Straße 4 85716 Unterschleißheim Smartbroker AG
T 00800 00 586336* F +49 89 5150 2442 [email protected] Ritterstraße 11
10969 Berlin
Seite 1/2
Berlin
vFwoSZWLD BjEFQARmF 29.11.2024
Brunnenstr. 6
vTLWHaMam KLhLHSoLp
13398 XBhRLjx Stamm-Nr.: 4091975 Portfolio: 1
Depot-Nr.: 4045038254
Vorgangs-Nr.: 84618810
Referenz-Nr.: 032504176
Buchungsanzeige
Fusion / Zusammenlegung
Ausbuchung aus Depot 5140233227 per 22.11.2024
Nominale ISIN: LU2089238203 WKN: A2PWMK
STK 26 Amundi Index Solu.-A.PRIME GL.
Nam.-Ant.UC.ETF DR USD Acc.oN
Einbuchung in Depot 7271460689 per 22.11.2024
Nominale ISIN: IE0009DRDY20 WKN: ETF210
STK 26 Amu.ETF ICAV-PRIME Glbl ETF
Bear.Shs USD Acc. oN
Verhältnis: 1 : 1
Umrechnungskurs: EUR/USD 1,0412000
Kapitalertragsteuer USD 34,88 -
Solidaritätszuschlag USD 1,91 -
Zu Lasten Konto 6394165637 Valuta: 22.11.2024 USD 36,79
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.
smartbrokerplus.de
Brauchen Sie Unterstützung? Dann kontaktieren Sie bitte den Service von SMARTBROKER+ über das Kontaktformular in der SMARTBROKER+ App.

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*
[email protected] UMTA-053.048

* Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen.
Fusion / Zusammenlegung
Fortsetzung: Seite 2/2
Darstellung der steuerlichen Berechnungsgrundlagen:
Merkposten / Steuertöpfe vorher Erhöhung/Reduktion nachher
Allgemeiner Verlusttopf (VVT) EUR 3,52 EUR 64,39 EUR 67,91
Allgemeiner Verlusttopf (VVT) EUR 67,91 EUR 2,46 EUR 70,37
Allgemeiner Verlusttopf (VVT) EUR 70,37 EUR 70,37 - EUR 0,00
Verrechnung FSA mit allg. Erträgen EUR 0,00 EUR 11,01 - EUR 11,01 -
Kapitalertragsteuer EUR 0,00 EUR 33,50 EUR 33,50
Freistellungsauftrag (FSA) EUR 11,01 EUR 11,01 - EUR 0,00
Bemessungsgrundlagen Steuerpflicht brutto Steuerpflicht netto
Veräußerungsergebnis vor Teilfreistellung Aktienfonds EUR 214,63 EUR 133,25
Veräußerungsergebnis Teilfreistellung 30% EUR 64,39 - EUR 0,00
Abzug besitzanteilige Vorabpauschale vor Teilfreistellung EUR 2,46 - EUR 0,00
Abzug besitzanteilige Vorabpauschale Teilfreistellung 30% EUR 0,74 EUR 0,74
Bemessungsgrundlage zur Kapitalertragsteuer EUR 148,52 EUR 133,99
Bemessungsgrundlage zur Kapitalertragsteuer
Kapitalertragsteuer 25,00 %
EUR 33,50 - EUR 33,50 -
Solidaritätszuschlag 5,50 %
EUR 1,83 - EUR 1,83 -
Ausbuchung
Stück 26 Amundi Index Solu.-A.PRIME GL.
ISIN: LU2089238203/EUR
Kurs: USD 33,5388
Berücksichtigte Anschaffungsgeschäfte (alle ermittelten Beträge in EUR)
Geschäfts-
Geschäft Nr. Datum Whg./St. Nominal/Stück Anschaff.-kosten ant. Veräußer.-erlös ant. Ergebnis
WP Kauf 25638487 06.10.2023 STK 26 613,47 828,10 214,63
akk.Vorabpauschale Aktienfonds 2,46 0,00 2,46
Einbuchung
Stück 26 Amu.ETF ICAV-PRIME Glbl ETF
ISIN: IE0009DRDY20/EUR
Kurs: USD 33,6431
Berücksichtigte Anschaffungsgeschäfte (alle ermittelten Beträge in EUR)
Geschäfts-
Geschäft Nr. Datum Whg./St. Nominal/Stück Anschaff.-kosten
WP Einbuchung CA 36717900 22.11.2024 STK 26 825,53
Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben.
smartbrokerplus.de
Brauchen Sie Unterstützung? Dann kontaktieren Sie bitte den Service von SMARTBROKER+ über das Kontaktformular in der SMARTBROKER+ App.

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*
[email protected] UMTA-053.048

* Kostenfreie Telefonnummer aus dem (inter-) nationalen Festnetz. Für Anrufe aus anderen Netzen können Gebühren anfallen.
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.72.2
-----------------------------------------
Scalable Capital GmbH
Seitzstrasse 8e
80538 Munich
[email protected]
Page 1/1
Mr. Munich
2023-07-06
xybAlBOja PAO JcDSKO
HOAajaSu 735 LxcijKguN wfH aUqPfb
1478 zB qJYkAEmD Client ID: 1531608 Portfolio: 1
Account No.: 5338249068
THE NETHERLANDS IBAN: WA70 3969 1232 0217 6645 82
BIC: LKiOsCep
Transaction No.: 0420015
Reference No.: 386281809
Statement of Interest and Charges: EUR
Account: DE63 3050 9195 8950 6266 76
Dear Mr. jhW MXXllQ,
For the period from 2023-03-31 to 2023-06-30 following closing entries have been posted for account LN85
1208 3069 0088 5137 79.
Closing Balance as of 2023-06-30
Calculation of Interest: Amount in EUR
Credit Interest (gross) 112.45
Total Amount: 112.45
The above amounts are posted to account IBAN DE63 7003 3100 2864 8030 08 per value date 2023-06-30.
Please refer to the enclosed interest scale for a detailed calculation of the interest amounts.
Best regards
Your Scalable Capital Team
For key transactions and balances during this period, please refer to the separate Periodic Account Statement.
Please check our Statement of Interest and Charges. You will be deemed to have approved the Statement of Interest and Charges if
you do not raise any objections within 6 weeks of receipt. Please refer to our Terms and Conditions.
If no VAT is shown, it is a VAT exempted financial service.
This document has been generated electronically and will not be signed.
Scalable Capital GmbH • Managing Directors: Erik Podzuweit, Florian Prucker, Martin Krebs, Dirk Urmoneit, Dirk Franzmeyer • HRB 217778, District Court
Munich • VAT No. DE300434774 • www.scalable.capital

Publisher and responsible for the content is Baader Bank Aktiengesellschaft • Weihenstephaner Strasse 4 • 85716 Unterschleissheim • Germany
Management Board: Nico Baader (CEO), Oliver Riedel (Deputy CEO), Dietmar von Blücher • Chairman of the Supervisory Board: Helmut Schreyer •
Commercial Register HRB 121537 • Principal Office: Unterschleissheim • TaxNo: 143/107/04009 • VAT ID: DE114123893 • LEI: 529900JFOPPEDUR61H13
T 00800 00 586336* • [email protected] KKTKK802-039.033
* Toll-free from (inter-) national landline networks. Charges may apply from other networks.

Scalable Capital GmbH
Seitzstrasse 8e
80538 Munich
[email protected]
Page 1/1
Mr. Munich
2023-07-06
BogVRBXJg fWz HDTrby
WMviKNWS 221 GTOeORXAE avl dRCtVD
6365 rv CBGJqgaY Client ID: 9109467 Portfolio: 1
Account No.: 0308021912
THE NETHERLANDS IBAN: bB07 7415 4364 7646 3718 15
BIC: UUAdefeJ
Transaction No.: 7582637
Reference No.: 069454025
Interest Scale: EUR
Account: lY42 9596 8659 0581 7304 78
For the period from 2023-03-31 to 2023-06-30 following interests have been calculated for your account
yN11 4137 6179 6925 3034 87.
Interest Balance Interest Amount of Interest
Value Date Days Limit in EUR Rate % in EUR
2023-04-03 88 20,001.00 2.3000 112.45 CI
Please check this statement and raise any objections immediately.
This document has been generated electronically and will not be signed.
Scalable Capital GmbH • Managing Directors: Erik Podzuweit, Florian Prucker, Martin Krebs, Dirk Urmoneit, Dirk Franzmeyer • HRB 217778, District Court
Munich • VAT No. DE300434774 • www.scalable.capital

Publisher and responsible for the content is Baader Bank Aktiengesellschaft • Weihenstephaner Strasse 4 • 85716 Unterschleissheim • Germany
Management Board: Nico Baader (CEO), Oliver Riedel (Deputy CEO), Dietmar von Blücher • Chairman of the Supervisory Board: Helmut Schreyer •
Commercial Register HRB 121537 • Principal Office: Unterschleissheim • TaxNo: 143/107/04009 • VAT ID: DE114123893 • LEI: 529900JFOPPEDUR61H13
T 00800 00 586336* • [email protected] KKTKK802-039.033
* Toll-free from (inter-) national landline networks. Charges may apply from other networks.
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,8 @@ private void addAdvanceTaxTransaction()
{
final DocumentType type = new DocumentType("(Vorabpauschale|Advance Lump Sum)", //
"(Wertpapierabrechnung" //
+ "|Steuerausgleichsrechnung" //
+ "|Steuerausgleichsrechnung"
+ "|Fusion \\/ Zusammenlegung" //
+ "|Transaction Statement" //
+ "|Kontoauszug" //
+ "|Account Statement)");
Expand Down Expand Up @@ -844,7 +845,7 @@ private void addDepotStatementTransaction()
final DocumentType type = new DocumentType("(Perioden\\-Kontoauszug" //
+ "|Tageskontoauszug" //
+ "|Periodic Account Statement)", //
"Rechnungsabschluss:", //
"(Rechnungsabschluss|Statement of Interest and Charges):", //
documentContext -> documentContext //
// @formatter:off
// Perioden-Kontoauszug: EUR-Konto KOPIE
Expand Down Expand Up @@ -1065,20 +1066,21 @@ private void addFeesAssetManagerTransaction()

private void addInterestTransaction()
{
final DocumentType type = new DocumentType("Zinsberechnung: Betrag in [\\w]{3}", //
final DocumentType type = new DocumentType("(Zinsberechnung: Betrag in|Statement of Interest and Charges:) [\\w]{3}", //
documentContext -> documentContext //
// @formatter:off
// Zinsberechnung: Betrag in EUR
// Calculation of Interest: Amount in EUR
// @formatter:on
.section("currency") //
.match("^Zinsberechnung: Betrag in (?<currency>[\\w]{3})$") //
.match("^(Zinsberechnung|Calculation of Interest): (Betrag|Amount) in (?<currency>[\\w]{3})$") //
.assign((ctx, v) -> ctx.put("currency", asCurrencyCode(v.get("currency")))));

this.addDocumentTyp(type);

Transaction<AccountTransaction> pdfTransaction = new Transaction<>();

Block firstRelevantLine = new Block("^.*(Vorgangs\\-Nr|Transaction No)\\.: .*$", "^Die Buchung erfolgt über Konto.*$");
Block firstRelevantLine = new Block("^.*(Vorgangs\\-Nr|Transaction No)\\.: .*$", "^(Die Buchung erfolgt über Konto|The above amounts are posted to account).*$");
type.addBlock(firstRelevantLine);
firstRelevantLine.set(pdfTransaction);

Expand All @@ -1093,35 +1095,56 @@ private void addInterestTransaction()
// @formatter:off
// Zinsberechnung: Betrag in EUR
// Gesamtsumme: 1,46
//
// Calculation of Interest: Amount in EUR
// Total Amount: 112.45
// @formatter:on
.section("currency", "amount") //
.match("^Zinsberechnung: Betrag in (?<currency>[\\w]{3})$") //
.match("^Gesamtsumme: (?<amount>[\\.,\\d]+)$") //
.match("^(Zinsberechnung|Calculation of Interest): (Betrag|Amount) in (?<currency>[\\w]{3})$") //
.match("^(Gesamtsumme|Total Amount): (?<amount>[\\.,\\d]+)$") //
.assign((t, v) -> {
t.setCurrencyCode(asCurrencyCode(v.get("currency")));
t.setAmount(asAmount(v.get("amount")));
})

// @formatter:off
// Abschlussbuchung vom 31.10.2023
// @formatter:on
.section("date") //
.match("^Abschlussbuchung vom (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4})$") //
.assign((t, v) -> t.setDateTime(asDate(v.get("date"))))
.optionalOneOf( //
// @formatter:off
// Abschlussbuchung vom 31.10.2023
// @formatter:on
section -> section //
.attributes("date") //
.match("^Abschlussbuchung vom (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4})$") //
.assign((t, v) -> t.setDateTime(asDate(v.get("date")))),
// @formatter:off
// Closing Balance as of 2023-06-30
// @formatter:on
section -> section //
.attributes("date") //
.match("^Closing Balance as of (?<date>[\\d]{4}\\-[\\d]{2}\\-[\\d]{2})$") //
.assign((t, v) -> t.setDateTime(asDate(v.get("date")))))

// @formatter:off
// Vorgangs-Nr.: 12345678
// @formatter:on
.section("note").optional() //
.section("note") //
.match("^.*(?<note>(Vorgangs\\-Nr|Transaction No)\\.: .*)$") //
.assign((t, v) -> t.setNote(trim(v.get("note"))))

// @formatter:off
// für den Zeitraum 30.09.2023 bis 31.10.2023 ergeben sich für das Konto DE12 3456 7891 2345 6789 12
// @formatter:on
.section("note").optional() //
.match("^f.r den Zeitraum (?<note>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} .* [\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*$") //
.assign((t, v) -> t.setNote(concatenate(t.getNote(), trim(v.get("note")), " | ")))
.optionalOneOf( //
// @formatter:off
// für den Zeitraum 30.09.2023 bis 31.10.2023 ergeben sich für das Konto DE12 3456 7891 2345 6789 12
// @formatter:on
section -> section //
.attributes("note") //
.match("^f.r den Zeitraum (?<note>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} .* [\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*$") //
.assign((t, v) -> t.setNote(concatenate(t.getNote(), trim(v.get("note")), " | "))),
// @formatter:off
// For the period from 2023-03-31 to 2023-06-30 following closing entries have been posted for account LN85
// @formatter:on
section -> section //
.attributes("note") //
.match("^For the period from (?<note>[\\d]{4}\\-[\\d]{2}\\-[\\d]{2} .* [\\d]{4}\\-[\\d]{2}\\-[\\d]{2}).*$") //
.assign((t, v) -> t.setNote(concatenate(t.getNote(), trim(v.get("note")), " | "))))

.wrap(TransactionItem::new);

Expand Down

0 comments on commit 870fab9

Please sign in to comment.