Skip to content

Commit

Permalink
Improve 1822direct PDF-Importer (#4362)
Browse files Browse the repository at this point in the history
Add taxes lost adjustment for dividend transaction
  • Loading branch information
Nirus2000 authored Nov 22, 2024
1 parent c480477 commit 2e55332
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ public void testWertpapierKauf04()
assertThat(entry.getPortfolioTransaction().getDateTime(), is(LocalDateTime.parse("2021-07-09T00:00")));
assertThat(entry.getPortfolioTransaction().getShares(), is(Values.Share.factorize(100)));
assertThat(entry.getSource(), is("Kauf04.txt"));
assertNull(entry.getNote());
assertThat(entry.getNote(), is("Auftragsnummer 333333/33.00"));

assertThat(entry.getPortfolioTransaction().getMonetaryAmount(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(4020.00))));
Expand Down Expand Up @@ -366,7 +366,7 @@ public void testWertpapierVerkauf01()
assertThat(entry.getPortfolioTransaction().getDateTime(), is(LocalDateTime.parse("2021-01-01T11:11:11")));
assertThat(entry.getPortfolioTransaction().getShares(), is(Values.Share.factorize(1)));
assertThat(entry.getSource(), is("Verkauf01.txt"));
assertThat(entry.getNote(), is("Auftragsnummer 111/11.11111 | Limit 11,00 EUR"));
assertThat(entry.getNote(), is("Auftragsnummer 111111111/11.00 | Limit 11,00 EUR"));

assertThat(entry.getPortfolioTransaction().getMonetaryAmount(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(111.11))));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ private void addBuySellTransaction()

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

Block firstRelevantLine = new Block("^Wertpapier Abrechnung (Kauf|Verkauf|(Ausgabe|R.cknahme) Investmentfonds).*$");
Block firstRelevantLine = new Block("^Postfach.*$");
type.addBlock(firstRelevantLine);
firstRelevantLine.set(pdfTransaction);

Expand Down Expand Up @@ -321,12 +321,16 @@ private void addAdvanceTaxTransaction()

private void addTaxesLostAdjustmentTransaction()
{
DocumentType type = new DocumentType("Wertpapier Abrechnung (Verkauf|(Ausgabe|R.cknahme) Investmentfonds)");
DocumentType type = new DocumentType("(Wertpapier Abrechnung (Verkauf|(Ausgabe|R.cknahme) Investmentfonds)" //
+ "|Gutschrift von .*" //
+ "|Aussch.ttung Investmentfonds" //
+ "|Aussch.ttung aus Genussschein" //
+ "|Dividendengutschrift)");
this.addDocumentTyp(type);

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

Block firstRelevantLine = new Block("^Wertpapier Abrechnung (Verkauf|(Ausgabe|R.cknahme) Investmentfonds).*$");
Block firstRelevantLine = new Block("^Postfach.*$");
type.addBlock(firstRelevantLine);
firstRelevantLine.set(pdfTransaction);

Expand All @@ -338,22 +342,35 @@ private void addTaxesLostAdjustmentTransaction()
return accountTransaction;
})

// @formatter:off
// Stück 13 COMSTA.-MSCI EM.MKTS.TRN U.ETF LU0635178014 (ETF127)
// INHABER-ANTEILE I O.N.
// Börse Außerbörslich (gemäß Weisung)
// Ausführungskurs 40,968 EUR Auftragserteilung Online-Banking
// @formatter:on
.section("name", "isin", "wkn", "name1", "currency") //
.match("^St.ck [\\.,\\d]+ (?<name>.*) (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9]) \\((?<wkn>[A-Z0-9]{6})\\)$") //
.match("(?<name1>.*)$") //
.match("^Ausf.hrungskurs [\\.,\\d]+ (?<currency>[\\w]{3}) .*$") //
.assign((t, v) -> {
if (!v.get("name1").startsWith("Börse"))
v.put("name", trim(v.get("name")) + " " + trim(v.get("name1")));
.oneOf( //
// @formatter:off
// Stück 13 COMSTA.-MSCI EM.MKTS.TRN U.ETF LU0635178014 (ETF127)
// INHABER-ANTEILE I O.N.
// Börse Außerbörslich (gemäß Weisung)
// Ausführungskurs 40,968 EUR Auftragserteilung Online-Banking
// @formatter:on
section -> section //
.attributes("name", "isin", "wkn", "name1", "currency") //
.match("^St.ck [\\.,\\d]+ (?<name>.*) (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9]) \\((?<wkn>[A-Z0-9]{6})\\)$") //
.match("(?<name1>.*)$") //
.match("^Ausf.hrungskurs [\\.,\\d]+ (?<currency>[\\w]{3}) .*$") //
.assign((t, v) -> {
if (!v.get("name1").startsWith("Börse"))
v.put("name", trim(v.get("name")) + " " + trim(v.get("name1")));

t.setSecurity(getOrCreateSecurity(v));
})
t.setSecurity(getOrCreateSecurity(v));
}),
// @formatter:off
// Stück 920 ISHSIV-FA.AN.HI.YI.CO.BD U.ETF IE00BYM31M36 (A2AFCX)
// REGISTERED SHARES USD O.N.
// Zahlbarkeitstag 29.12.2017 Ertrag pro St. 0,123000000 USD
// @formatter:on
section -> section //
.attributes("name", "isin", "wkn", "nameContinued", "currency") //
.match("^St.ck [\\.,\\d]+ (?<name>.*) (?<isin>[A-Z]{2}[A-Z0-9]{9}[0-9]) \\((?<wkn>[A-Z0-9]{6})\\)$") //
.match("(?<nameContinued>.*)") //
.match("^Zahlbarkeitstag [\\d]{2}\\.[\\d]{2}\\.[\\d]{4} (Aussch.ttung|Dividende|Ertrag) pro (St\\.|St.ck) [\\.,\\d]+ (?<currency>[\\w]{3})$") //
.assign((t, v) -> t.setSecurity(getOrCreateSecurity(v))))

// @formatter:off
// Stück 13 COMSTA.-MSCI EM.MKTS.TRN U.ETF LU0635178014 (ETF127)
Expand All @@ -376,6 +393,13 @@ private void addTaxesLostAdjustmentTransaction()
section -> section //
.attributes("date") //
.match("^Schlusstag (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) .*$") //
.assign((t, v) -> t.setDateTime(asDate(v.get("date")))),
// @formatter:off
// Den Betrag buchen wir mit Wertstellung 03.01.2018 zu Gunsten des Kontos xxxxxxxxxx (IBAN DExx xxxx xxxx xxxx
// @formatter:on
section -> section //
.attributes("date") //
.match("^Den Betrag buchen wir mit Wertstellung (?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*$") //
.assign((t, v) -> t.setDateTime(asDate(v.get("date")))))

// @formatter:off
Expand Down

0 comments on commit 2e55332

Please sign in to comment.