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 Bondora PDF-Importer to support new transaction #3115

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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -477,4 +477,78 @@ public void testKontoauszug08()
assertThat(transaction.getSource(), is("Kontoauszug08.txt"));
assertThat(transaction.getNote(), is("Go & Grow Zinsen"));
}

@Test
public void testKontoauszug09()
{
BondoraCapitalPDFExtractor extractor = new BondoraCapitalPDFExtractor(new Client());

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

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

assertThat(errors, empty());
assertThat(results.size(), is(5));
new AssertImportActions().check(results, CurrencyUnit.EUR);

// check transaction
// get transactions
Iterator<Extractor.Item> iter = results.stream().filter(TransactionItem.class::isInstance).iterator();
assertThat(results.stream().filter(TransactionItem.class::isInstance).count(), is(5L));

Item item = iter.next();

// assert transaction
AccountTransaction transaction = (AccountTransaction) item.getSubject();
assertThat(transaction.getType(), is(AccountTransaction.Type.INTEREST));
assertThat(transaction.getCurrencyCode(), is(CurrencyUnit.EUR));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-12-29T00:00")));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(0.86)));
assertThat(transaction.getSource(), is("Kontoauszug09.txt"));
assertThat(transaction.getNote(), is("Go & Grow Zinsen"));

item = iter.next();

// assert transaction
transaction = (AccountTransaction) item.getSubject();
assertThat(transaction.getType(), is(AccountTransaction.Type.REMOVAL));
assertThat(transaction.getCurrencyCode(), is(CurrencyUnit.EUR));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-12-30T00:00")));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(474.35)));
assertThat(transaction.getSource(), is("Kontoauszug09.txt"));
assertThat(transaction.getNote(), is("Abheben"));

item = iter.next();

// assert transaction
transaction = (AccountTransaction) item.getSubject();
assertThat(transaction.getType(), is(AccountTransaction.Type.REMOVAL));
assertThat(transaction.getCurrencyCode(), is(CurrencyUnit.EUR));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-12-30T00:00")));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(4230.27)));
assertThat(transaction.getSource(), is("Kontoauszug09.txt"));
assertThat(transaction.getNote(), is("Abheben"));

item = iter.next();

// assert transaction
transaction = (AccountTransaction) item.getSubject();
assertThat(transaction.getType(), is(AccountTransaction.Type.INTEREST));
assertThat(transaction.getCurrencyCode(), is(CurrencyUnit.EUR));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-12-30T00:00")));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(0.84)));
assertThat(transaction.getSource(), is("Kontoauszug09.txt"));
assertThat(transaction.getNote(), is("Go & Grow Zinsen"));

item = iter.next();

// assert transaction
transaction = (AccountTransaction) item.getSubject();
assertThat(transaction.getType(), is(AccountTransaction.Type.DEPOSIT));
assertThat(transaction.getCurrencyCode(), is(CurrencyUnit.EUR));
assertThat(transaction.getDateTime(), is(LocalDateTime.parse("2022-12-31T00:00")));
assertThat(transaction.getAmount(), is(Values.Amount.factorize(4204.97)));
assertThat(transaction.getSource(), is("Kontoauszug09.txt"));
assertThat(transaction.getNote(), is("Überweisen"));
}
}
@@ -0,0 +1,16 @@
PDFBox Version: 1.8.16
Portfolio Performance Version: 0.60.1
-----------------------------------------
Zusammenfassung
********* ***** Zu Beginn 4.679,41 €
Einzahlungen 4.230,18 €
Datum 01.12.2022 - 31.12.2022 Auszahlungen 4.704,62 €
Referenznummer GG****** Ergebnis 4.204,97 €
Ziel 100€ Zinsen monatlich
Datum Zahlungsart Eingänge Ausgänge Guthaben
29.12.2022 Go & Grow Zinsen 0,86 € 4.703,78 €
30.12.2022 Abheben 474,35 € 4.229,43 €
30.12.2022 Abheben 4.230,27 € -0,84 €
30.12.2022 Go & Grow Zinsen 0,84 € 0 €
31.12.2022 Überweisen 4.204,97 € 4.204,97 €
Gesamt 4.204,97 €
Expand Up @@ -56,7 +56,7 @@ private void addAccountStatementTransaction()
+ "Withdrawal)) "
+ "(\\p{Sc})?(\\W)?"
+ "(?<amount>[\\.,'\\d\\s]+)"
+ "(\\W)?(\\p{Sc})(\\W)?[\\.,'\\d\\s]+(\\W)?(\\p{Sc})?$")
+ "(\\W)?(\\p{Sc})(\\W)?(\\-)?[\\.,'\\d\\s]+(\\W)?(\\p{Sc})?$")
.assign((t, v) -> {
t.setDateTime(asDate(v.get("date")));
t.setAmount(asAmount(v.get("amount")));
Expand Down