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 C24 Bank GmbH PDF-Importer to support new transaction #4532

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 @@ -159,4 +159,65 @@ public void testKontoauszug05()
assertThat(results, hasItem(deposit(hasDate("2024-08-05"), hasAmount("EUR", 2800.00), //
hasSource("Kontoauszug05.txt"), hasNote("Überweisung"))));
}

@Test
public void testKontoauszug06()
{
C24BankGmbHPDFExtractor extractor = new C24BankGmbHPDFExtractor(new Client());

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

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

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

// assert transaction
assertThat(results, hasItem(removal(hasDate("2025-01-31"), hasAmount("EUR", 3800.00), //
hasSource("Kontoauszug06.txt"), hasNote("Lastschrift"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-30"), hasAmount("EUR", 1055.70), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-29"), hasAmount("EUR", 400.00), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));

// assert transaction
assertThat(results, hasItem(removal(hasDate("2025-01-27"), hasAmount("EUR", 400.00), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));

// assert transaction
assertThat(results, hasItem(removal(hasDate("2025-01-27"), hasAmount("EUR", 200.00), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));

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

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-20"), hasAmount("EUR", 1000.00), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));

// assert transaction
assertThat(results, hasItem(removal(hasDate("2025-01-20"), hasAmount("EUR", 0.01), //
hasSource("Kontoauszug06.txt"), hasNote("Lastschrift"))));

// assert transaction
assertThat(results, hasItem(removal(hasDate("2025-01-19"), hasAmount("EUR", 1.20), //
hasSource("Kontoauszug06.txt"), hasNote("Echtzeitüberweisung"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-16"), hasAmount("EUR", 0.01), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));

// assert transaction
assertThat(results, hasItem(deposit(hasDate("2025-01-14"), hasAmount("EUR", 6000.00), //
hasSource("Kontoauszug06.txt"), hasNote("Überweisung"))));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
PDFBox Version: 3.0.3

Portfolio Performance Version: 0.74.0

System: linux | x86_64 | 21.0.6+7 | Arch Linux

-----------------------------------------

LEbyOu GADXWN

KfTsYIfvYqYBBx 14

29156 AlxccOvXF

C24 Smartkonto

Girokonto

IBAN: _

BIC: iqsKHJLLIVQ

Kontoauszug 01/2025 Kontostand 2.654,50 €

01.01.2025 - 31.01.2025 Eingeräumter Dispokredit 0,00 €

Transaktionsübersicht

Buchung Valuta Transaktionsinformation Betrag

31.01. 31.01. Lastschrift - 3.800,00 €

YsoCMl fMTfnR

suhdrfgu

IBAN: - / BIC: usrhzgiuhzs

30.01. 30.01. Überweisung + 1.055,70 €

HbTVQjcyAjxqI exK üaoidfiohuo-utfut

IBAN: - / BIC: LGBEfJZ8453

30.01. 30.01. Überweisung - 400,00 €

tupqsV cUwvwG

IBAN: - / BIC: MjtdNtmblQn

29.01. 29.01. Überweisung + 400,00 €

wesrtr

27.01. 27.01. Überweisung - 400,00 €

NNCgYS nTwSst

gtea mzDXqrNqgAAt MBkwXmzb SvpTXbE

IBAN: - / BIC: iQVjpupsgIJ

27.01. 27.01. Überweisung - 200,00 €

SlWanw RxrgVj

EZGQ dgEBCkOghaJf NTgUOQB RYeRO

IBAN: - / BIC: iKKrEWXLRnm

20.01. 20.01. Überweisung - 1.000,00 €

gsiPlfIwT

20.01. 20.01. Überweisung + 1.000,00 €

bRbIsa iYxVlb

eTbFNHDOO

IBAN: - / BIC: JvWxnezWUXp

20.01. 20.01. Lastschrift - 0,01 €

bvKnrezgr

Bogr-CykoY-xdPF

IBAN: - / BIC: NpOzxcRYljH

19.01. 19.01. Echtzeitüberweisung - 1,20 €

UPtbw JlCrjXlEqv

VvfdbHnDb

IBAN: - / BIC: mASIkDykxbg

T86 kcXb qLyQ

01/2025 Neue Mainzer Straße 14 - 18, 60311 Frankfurt am Main Seite 1 von 3

mAT.-ID DE 322 469 451

SORhRz PzUcLP

dtukVTFaNcoGBB 73

89869 SAmjRUosn

C24 Smartkonto

Girokonto

IBAN: _

BIC: aoWMRhCcoSL

Buchung Valuta Transaktionsinformation Betrag

16.01. 16.01. Überweisung + 0,01 €

HMNLhgjkj

YiXR-nEOaZ-WVDD

IBAN: - / BIC: FPamuFXrxHV

14.01. 14.01. Überweisung + 6.000,00 €

pwWxHXRqd

Zusammenfassung

Startsaldo 0,00 €

Kontobelastungen - 5.801,21 €

Kontogutschriften + 8.455,71 €

Endsaldo 2.654,50 €

C24 Bank GmbH

01/2025 Neue Mainzer Straße 14 - 18, 60311 Frankfurt am Main Seite 2 von 3

Ust.-ID DE 322 469 451

xGNlCr YYfHna

YFykeRJyYeTJVG 35

17302 DsNVCWvZb

C24 Smartkonto

Girokonto

IBAN: _

BIC: eHXMUqogVZf

Weitere Informationen

Einwendungen gegen den Rechnungsabschluss oder Kontobuchungen

Für das Girokonto erfolgt jeweils am letzten Tag der Monate März, Juni, September und Dezember ein

Rechnungsabschluss. Dieser gilt gemäß Ziffer 6 Abs. 2 unserer AGB als genehmigt, wenn Einwendungen nicht vor Ablauf

von sechs Wochen nach dessen Zugang geltend gemacht werden. Einwendungen gegen die Richtigkeit oder

Vollständigkeit von Kontoauszügen sind unverzüglich zu erheben. Bei Einwendungen in Textform genügt die

Absendung innerhalb der jeweils genannt Frist.

Ihre Kontodisposition

Der Kontostand berücksichtigt nicht die Valuta (Wertstellung) der einzelnen Buchungen. Das bedeutet, dass der

angezeigte Kontostand nicht dem tatsächlichen Kontoguthaben entsprechen muss und bei Verfügungen

möglicherweise Zinsen für die Inanspruchnahme einer eingeräumten oder geduldeten Kontoüberziehung anfallen

können. Bitte berücksichtigen Sie bei Ihrer Disposition daher ggf. die Wertstellungen der Kontoumsätze der letzten Tage.

Es kann zu Abweichungen zwischen Ihrem Kontoauszug und der Anzeige in Ihrer App (oder dem Online-Banking)

kommen, da Transaktionen in Echtzeit dargestellt werden, die tatsächliche Durchführung hingegen 1-2 Tage in

Anspruch nehmen kann. Auf dem Kontoauszug werden nur vollständig durchgeführte Transaktionen abgebildet.

Hinweis zur Einlagensicherung

Guthaben sind als Einlagen nach Maßgabe des Einlagensicherungsgesetzes entschädigungsfähig. Nähere Informationen

können dem "Informationsbogen für den Einleger" entnommen werden. Diesen finden Sie unter www.c24.de/

rechtliches.

Hinweis zur standardisierten Zahlungskontenterminologie

Nachfolgende Begriffe entsprechen den Begriffen der standardisierten Zahlungskontenterminologie: C24 Mastercard

(Debitkarte), Dispokredit (eingeräumte Kontoüberziehung)

C24 Bank GmbH

01/2025 Neue Mainzer Straße 14 - 18, 60311 Frankfurt am Main Seite 3 von 3

Ust.-ID DE 322 469 451
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,12 @@ private void addAccountStatementTransaction()
// 17.05. 17.05. Überweisung - 1.508,42 €
// 17.05. 17.05. Überweisung + 1.115,22 €
// 05.08. 05.08. Echtzeitüberweisung - 2.800,00 €
// 31.01. 31.01. Lastschrift - 3.800,00 €
// @formatter:on
Block depositRemovalBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\. [\\d]{2}\\.[\\d]{2}\\. "
+ "(.berweisung"
+ "|Echtzeit.berweisung) "
+ "|Echtzeit.berweisung"
+ "|Lastschrift) "
+ "[\\-|\\+] [\\.,\\d]+ \\p{Sc}.*$");
type.addBlock(depositRemovalBlock);
depositRemovalBlock.set(new Transaction<AccountTransaction>()
Expand All @@ -61,7 +63,8 @@ private void addAccountStatementTransaction()
.documentContext("year") //
.match("^(?<date>[\\d]{2}\\.[\\d]{2}\\.) [\\d]{2}\\.[\\d]{2}\\. " //
+ "(?<note>.berweisung"
+ "|Echtzeit.berweisung) " //
+ "|Echtzeit.berweisung"
+ "|Lastschrift) " //
+ "(?<type>[\\-|\\+]) " //
+ "(?<amount>[\\.,\\d]+) (?<currency>\\p{Sc}).*$") //
.assign((t, v) -> {
Expand Down