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 DAB PDF-Importer to support new transaction #3880

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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasTicker;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasWkn;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.inboundDelivery;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.sale;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.security;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.taxRefund;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.taxes;
Expand Down Expand Up @@ -1669,6 +1670,37 @@ public void testWertpapierVerkauf12WithSecurityInEUR()
assertThat(s, is(Status.OK_STATUS));
}

@Test
public void testWertpapierVerkauf13()
{
DABPDFExtractor extractor = new DABPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Verkauf13.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("DE0001104875"), hasWkn(null), hasTicker(null), //
hasName("Bundesrep.Deutschland Bundesschatzanw. v.22(24)"), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(sale( //
hasDate("2024-03-15T00:00"), hasShares(100), //
hasSource("Verkauf13.txt"), //
hasNote("Abrechnungs-Nr. 12345678"), //
hasAmount("EUR", 9880.00), hasGrossValue("EUR", 10000.00), //
hasTaxes("EUR", 100.00 + 10.00 + 10.00), hasFees("EUR", 0.00))));
}

@Test
public void testMultipleWertpapierKaufVerkauf01()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.68.1
-----------------------------------------
BELEGDRUCK=J
ORIGINAL=1
FAXVERSAND=N
EMAILVERSAND=N
DEPOTNUMMER=1234567890
Gesamtfälligkeit DEPOTUNTERBEZEICHNUNG=
VERSANDARTENSCHLUESSEL=DRUCK
ADRESSZEILE1=Herr
ADRESSZEILE2=Vorname Nachname
ADRESSZEILE3=Musterstr. 10
ADRESSZEILE4=12345 Stadt
Depot-Nr. Abrechnungs-Nr. ADRESSZEILE5=
1234567890 12345678 / 14.03.2024 ADRESSZEILE6=
BELEGNUMMER=123
Herr SEITENNUMMER=1
Vorname Nachname STEUERERSTATTUNG=N
Musterstr. 10 Depotinhaber
12345 Stadt Vorname Nachname
München, 14.03.2024
Gutschriftsanzeige
Gattungsbezeichnung Fälligkeit näch. Zinstermin ISIN
Bundesrep.Deutschland Bundesschatzanw. 15.03.2024 DE0001104875
v.22(24)
Nominal Einlösung zu:
EUR 10.000,000 100,0000 %
Verwahrart Girosammelverwahrung Kurswert EUR 10.000,00
Kapitalertragsteuer EUR 100,00-
Solidaritätszuschlag EUR 10,00-
Kirchensteuer EUR 10,00-
Wert Konto-Nr. Betrag zu Ihren Gunsten
15.03.2024 1234567890 EUR 9.880,00
Hinweise zur steuerlichen Verrechnung: vorher aktuell
Veräußerungsgewinn Sonstige EUR 800,00
Aktienverlusttopf EUR 0,00 0,00
allgemeiner Verlusttopf EUR 0,00 0,00
Quellensteuertopf EUR 0,00 0,00
zu versteuern EUR 800,00
im laufenden Jahr einbehaltene Kapitalertragsteuer EUR 100,00
im laufenden Jahr einbehaltener Solidaritätszuschlag EUR 10,00
im laufenden Jahr einbehaltene Kirchensteuer EUR 10,00
Kapitalertragsteuer, Solidaritätszuschlag und ggf. Kirchensteuer nach gemeldetem Kirchensteuersatz verrechnet mit dem
Finanzamt Frankfurt/M. V-Höchst, Steuernummer 012/345/67890.
Dieser Beleg wird maschinell erstellt und daher nicht unterschrieben.
BNP Paribas S.A. Niederlassung Deutschland > Standort: München > Landsberger Straße 300 > 80687 München > Postadresse: DAB BNP Paribas > Postfach 2547 >
90011 Nürnberg > Sitz: Nürnberg HRB Nürnberg 31129 > USt.-Ident-Nr.: DE191528929 > Sitz der Hauptniederlassung der BNP Paribas S.A.: 16, boulevard des Italiens
> 75009 Paris > Frankreich > Registergericht: R.C.S. Paris 662 042 449 > Président du Conseil d‘Administration: Jean Lemierre > Directeur Général: Jean-Laurent Bonnafé
3.18/ABREEREITILG/GDBTILAN/000429/140324/235925
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ private void addBuySellTransaction()
// EUR 1.000,000 100,0000 %
// @formatter:on
section -> section //
.attributes("isin", "name", "name1", "currency") //
.attributes("name", "isin", "name1", "currency") //
.find("Gattungsbezeichnung F.lligkeit n.ch\\. Zinstermin ISIN") //
.match("^(?<name>.*) [\\d]{2}\\.[\\d]{2}\\.[\\d]{2,4} [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9])$") //
.match("^(?<name1>.*)$") //
Expand All @@ -103,6 +103,25 @@ private void addBuySellTransaction()
}),
// @formatter:off
// Gattungsbezeichnung Fälligkeit näch. Zinstermin ISIN
// Bundesrep.Deutschland Bundesschatzanw. 15.03.2024 DE0001104875
// v.22(24)
// Nominal Einlösung zu:
// EUR 10.000,000 100,0000 %
// @formatter:on
section -> section //
.attributes("name", "isin", "name1", "currency") //
.find("Gattungsbezeichnung F.lligkeit n.ch\\. Zinstermin ISIN") //
.match("^(?<name>.*) [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9])$") //
.match("^(?<name1>.*)$") //
.match("^(?<currency>[\\w]{3}) [\\.,\\d]+ [\\.,\\d]+ %$") //
.assign((t, v) -> {
if (!v.get("name1").startsWith("Nominal"))
v.put("name", v.get("name") + " " + trim(v.get("name1")));

t.setSecurity(getOrCreateSecurity(v));
}),
// @formatter:off
// Gattungsbezeichnung Fälligkeit näch. Zinstermin ISIN
// HSBC Trinkaus & Burkhardt AG DIZ 27.08.21 27.08.2021 DE000TT649A1
// Siemens 140
// Nominal Kurs
Expand Down Expand Up @@ -873,6 +892,25 @@ private void addBuySellTaxReturnBlock(DocumentType type)
}),
// @formatter:off
// Gattungsbezeichnung Fälligkeit näch. Zinstermin ISIN
// Bundesrep.Deutschland Bundesschatzanw. 15.03.2024 DE0001104875
// v.22(24)
// Nominal Einlösung zu:
// EUR 10.000,000 100,0000 %
// @formatter:on
section -> section //
.attributes("name", "isin", "name1", "currency") //
.find("Gattungsbezeichnung F.lligkeit n.ch\\. Zinstermin ISIN") //
.match("^(?<name>.*) [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9])$") //
.match("^(?<name1>.*)$") //
.match("^(?<currency>[\\w]{3}) [\\.,\\d]+ [\\.,\\d]+ %$") //
.assign((t, v) -> {
if (!v.get("name1").startsWith("Nominal"))
v.put("name", v.get("name") + " " + trim(v.get("name1")));

t.setSecurity(getOrCreateSecurity(v));
}),
// @formatter:off
// Gattungsbezeichnung Fälligkeit näch. Zinstermin ISIN
// HSBC Trinkaus & Burkhardt AG DIZ 27.08.21 27.08.2021 DE000TT649A1
// Siemens 140
// Nominal Kurs
Expand Down
Loading