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 1822direct PDF-Importer to support new transaction #4337

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
@@ -1,6 +1,7 @@
package name.abuchen.portfolio.datatransfer.pdf.direkt1822bank;

import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.check;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.deposit;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.dividend;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasAmount;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasCurrencyCode;
Expand Down Expand Up @@ -780,4 +781,25 @@ public void testDepoteinlieferung01()
hasAmount("EUR", 0.00), hasGrossValue("EUR", 0.00), //
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00)))));
}

@Test
public void testKontoauszug01()
{
Direkt1822BankPDFExtractor extractor = new Direkt1822BankPDFExtractor(new Client());

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

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

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2024-10-17"), hasAmount("EUR", 1000.00), //
hasSource("Kontoauszug01.txt"), hasNote("Gutschrift (Überweisung)"))));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.71.2
-----------------------------------------
1822direkt Monatlicher Kontoauszug Seite 1
Kundennummer 2354224 BIC HELADEF1822
kein Freistellungsauftrag
Herr Max Mustermann (Inhaber)
Kontoauszug Oktober 2024
IBAN Bezeichnung Endsaldo
A DE22384900000023774324 1822direkt Tagesgeldkonto +1.000,00 €*
Gesamtsaldo +1.000,00 €*
Bitte beachten Sie auch die Hinweise auf der letzten Seite.
* Der angegebene Kontostand berücksichtigt nicht die Wertstellung der einzelnen Buchungen. 1822direkt
Dies bedeutet, dass der genannte Betrag nicht dem für die Zinsberechnung maßgeblichen Kon- Gesellschaft der
tostand entsprechen muss und bei Verfügungen möglicherweise Zinsen für die Inanspruchnah- Frankfurter Sparkasse mbHBorsigallee 19
me einer eingeräumten oder geduldeten Kontoüberziehung anfallen können. 60388 Frankfurt am Main
Postanschrift
1822direkt
Entdecken Sie die beliebtesten Fonds & ETFs unserer Kunden mit dem 1822direkt 60608 Frankfurt am Main
Anlage-Kompass. Mehr erfahren Geschäftsführer:
Wolfgang Degenkolb (Sprecher)
Norbert Mittelstädt
Aufsichtsratsvorsitzender:
Dr. Sven Matthiesen
Amtsgericht
Frankfurt am Main
Handelsregister: HRB 41799
www.1822direkt.de/kontakt
BIC HELADEF1822
www.1822direkt.de
1822direkt Kontoauszug Oktober 2024 — Konto DE22384900000023774324 Seite 2
A: 1822direkt Tagesgeldkonto, IBAN DE22384900000023774324
Referenzkonto: DE27482900000028462832 Umsätze vom 01.10.2024 bis 31.10.2024
Buchung Vorgang Auftraggeber / Empfänger Umsatz
Wertstellung Kto. Auftraggeber/Empfänger Verwendungszweck
Anfangssaldo vom 01.10.2024 +0,00 €*
17.10.2024 Gutschrift Überw. Max Mustermann +1.000,00€
17.10.2024 DE27482900000028462832 TG1
Endsaldo vom 31.10.2024 +1.000,00 €*
* Der angegebene Kontostand berücksichtigt nicht die Wertstellung der einzelnen Buchungen. Dies bedeutet, dass
der genannte Betrag nicht dem für die Zinsberechnungmaßgeblichen Kontostand entsprechen muss und bei Verfü-
gungen möglicherweise Zinsen für die Inanspruchnahme einer eingeräumten oder geduldeten Kontoüberziehung
anfallen können.
1822direkt Kontoauszug Oktober 2024 Seite 3
• Einwendungen gegen den Kontoauszug teilen Sie uns bitte unverzüglich mit.
• Abrechnungsabschlüsse gelten als genehmigt, sofern Sie innerhalb von sechs Wochen
nach Zugang keine Einwendungen erheben. Einwendungen gegen Rechnungsabschlüsse
müssen der 1822direkt zugehen. Zur Fristwahrung genügt die rechtzeitige Absendung
(Nr. 7 Abs. 3 unserer Allgemeinen Geschäftsbedingungen).
• Der angegebene Kontostand berücksichtigt nicht die Wertstellung der einzelnen Buchun-
gen. Dies bedeutet, dass der genannte Betrag nicht dem für die Zinsrechnung maßgebli-
chen Kontostand entsprechen muss und bei Verfügungen möglicherweise Zinsen für die
Inanspruchnahme einer eingeräumten oder geduldeten Kontoüberziehung anfallen kön-
nen.
• Gutschriften aus eingereichten Schecks, Lastschriften und anderen Einzugspapieren erfol-
gen unter dem Vorbehalt der Einlösung.
• Dieser Kontoauszug gilt im Zusammenhang mit den zugrunde liegenden Verträgen laut
angegebener Kontonummer als Rechnung im Sinne des UStG. Unsere Umsatzsteuer-
Ident Nummer: DE177283324.
Bitte beachten Sie:
Guthaben sind als Einlagen nach Maßgabe des Einlagensicherungsgesetzes entschädigungs-
fähig. Nähere Informationen können dem »Informationsbogen für den Einleger« entnommen
werden.
Mit freundlichen Grüßen
1822direkt
Postanschrift:
1822direkt
60608 Frankfurt am Main
Hausanschrift:
Borsigallee 19
60388 Frankfurt am Main
Amtsgericht
Frankfurt am Main
Handelsregister: HRB41799
www.1822direkt.de/kontakt
www.1822direkt.de
BIC: HELADEF1822
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@
import name.abuchen.portfolio.money.Money;
import name.abuchen.portfolio.money.Values;

/**
* @formatter:off
* @implNote 1822direkt
*
* @implSpec The account statement transactions are reported in EUR.
* @formatter:on
*/

@SuppressWarnings("nls")
public class Direkt1822BankPDFExtractor extends AbstractPDFExtractor
{
Expand All @@ -32,6 +40,7 @@ public Direkt1822BankPDFExtractor(Client client)
addBuySellTransaction();
addDividendeTransaction();
addAdvanceTaxTransaction();
addAccountStatementTransaction();
addNonImportableTransaction();
}

Expand Down Expand Up @@ -309,6 +318,41 @@ private void addAdvanceTaxTransaction()
.wrap(TransactionItem::new);
}

private void addAccountStatementTransaction()
{
final DocumentType type = new DocumentType("Monatlicher Kontoauszug");
this.addDocumentTyp(type);

// @formatter:off
// 17.10.2024 Gutschrift Überw. Max Mustermann +1.000,00
// @formatter:on
Block depositBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4} Gutschrift .berw\\. .* \\+[\\.,\\d]+.*$");
type.addBlock(depositBlock);
depositBlock.set(new Transaction<AccountTransaction>()

.subject(() -> {
AccountTransaction accountTransaction = new AccountTransaction();
accountTransaction.setType(AccountTransaction.Type.DEPOSIT);
return accountTransaction;
})

.section("date", "note", "amount") //
.match("^(?<date>[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (?<note>Gutschrift .berw\\.) .* \\+(?<amount>[\\.,\\d]+).*$")
.assign((t, v) -> {
t.setDateTime(asDate(v.get("date")));
t.setAmount(asAmount(v.get("amount")));
t.setCurrencyCode(asCurrencyCode("EUR"));

// Formatting some notes
if ("Gutschrift Überw.".equals(v.get("note")))
v.put("note", "Gutschrift (Überweisung)");

t.setNote(v.get("note"));
})

.wrap(TransactionItem::new));
}

private void addNonImportableTransaction()
{
final DocumentType type = new DocumentType("Depotbuchung \\- Belastung"); //
Expand Down