diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/BigbankPDFExtractorTest.java b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/BigbankPDFExtractorTest.java index 8e6270241c..37c9463d39 100644 --- a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/BigbankPDFExtractorTest.java +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/BigbankPDFExtractorTest.java @@ -57,4 +57,37 @@ public void testKontoauszug01() assertThat(results, hasItem(removal(hasDate("2024-03-25"), hasAmount("EUR", 10.12), // hasSource("Kontoauszug01.txt"), hasNote(null)))); } + + @Test + public void testKontoauszug02() + { + BigbankPDFExtractor extractor = new BigbankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kontoauszug02.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(0L)); + assertThat(countBuySell(results), is(0L)); + assertThat(countAccountTransactions(results), is(4L)); + assertThat(results.size(), is(4)); + new AssertImportActions().check(results, CurrencyUnit.EUR); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-03-20"), hasAmount("EUR", 10.00), // + hasSource("Kontoauszug02.txt"), hasNote(null)))); + + // assert transaction + assertThat(results, hasItem(deposit(hasDate("2024-03-21"), hasAmount("EUR", 10500.00), // + hasSource("Kontoauszug02.txt"), hasNote(null)))); + + // assert transaction + assertThat(results, hasItem(removal(hasDate("2024-03-25"), hasAmount("EUR", 10.00), // + hasSource("Kontoauszug02.txt"), hasNote(null)))); + + // assert transaction + assertThat(results, hasItem(removal(hasDate("2024-03-28"), hasAmount("EUR", 3500.00), // + hasSource("Kontoauszug02.txt"), hasNote(null)))); + } } diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/Kontoauszug02.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/Kontoauszug02.txt new file mode 100644 index 0000000000..a934e31e82 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/bigbank/Kontoauszug02.txt @@ -0,0 +1,32 @@ +``` +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.68.3 +----------------------------------------- + 01.04.2024 +tyFY kJRhzK MNFKoXDym +XYJuNusQOtCEvbPy 59 +3951 nzHW +qSUUJWYLLx +Tagesgeldvertrag SD-ATC-01331910 +Kontoauszug von 01.03.2024 bis 31.03.2024 +IBAN: EE123456789101112131 +Anfangssaldo 01.03.2024 0,00 +Datum Gegenkonto Buchung Name Betrag in EUR +20.03.2024 AT123456789101112131 Einzahlung EEVtAWeOf irRZwa +10,00 +21.03.2024 AT123456789101112131 Einzahlung eGuACSyzF yuNzvi +10 500,00 +25.03.2024 AT123456789101112131 Auszahlung rCVrxYZph CHeMVH -10,00 +28.03.2024 EE123456789101112132 Interne Belastung wMGSJi WajHthpvl -3 500,00 +Endsaldo 31.03.2024 7 000,00 +Anfangssaldo 01.03.2024 0,00 +Summe Belastungen -3 510,00 +Summe Gutschriften +10 510,00 +Endsaldo 31.03.2024 7 000,00 +Dies ist ein automatisch generierter Kontoauszug. +BIGBANK AS Telefon 0810 900 629 +Riia 2, Tartu E-mail kundenservice@bigbank.at +51004 Reg. Nr. 10183757 +www.bigbank.at VAT. Nr. EE100041383 +1 / 1 +Powered by TCPDF (www.tcpdf.org) + +``` \ No newline at end of file diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BigbankPDFExtractor.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BigbankPDFExtractor.java index b3af718fda..0897870640 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BigbankPDFExtractor.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/BigbankPDFExtractor.java @@ -41,7 +41,7 @@ private void addAccountStatementTransaction() this.addDocumentTyp(type); // @formatter:off - // 21.03.2024 AT123456789101112131 Einzahlung oDkoRVZEb TxDUxE +1 500,00 + // 21.03.2024 AT123456789101112131 Einzahlung oDkoRVZEb TxDUxE +1 500,34 // @formatter:on Block depositBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}.*Einzahlung.* \\+[\\.,\\d\\s]+$"); type.addBlock(depositBlock); @@ -65,9 +65,11 @@ private void addAccountStatementTransaction() .wrap(TransactionItem::new)); // @formatter:off - // 25.03.2024 AT123456789101112131 Auszahlung sUBHAKqzf vNNKxT -10,00 + // 25.03.2024 AT123456789101112131 Auszahlung sUBHAKqzf vNNKxT -10,12 + // 28.03.2024 EE123456789101112132 Interne Belastung wMGSJi WajHthpvl -3 500,00 // @formatter:on - Block removalBlock = new Block("^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}.*Auszahlung.* \\-[\\.,\\d\\s]+$"); + Block removalBlock = new Block( + "^[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}.*(Auszahlung|Interne Belastung).* \\-[\\.,\\d\\s]+$"); type.addBlock(removalBlock); removalBlock.set(new Transaction() @@ -79,7 +81,7 @@ private void addAccountStatementTransaction() .section("date", "amount") // .documentContext("currency") // - .match("^(?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*Auszahlung.* \\-(?[\\.,\\d\\s]+)$") // + .match("^(?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}).*(Auszahlung|Interne Belastung).* \\-(?[\\.,\\d\\s]+)$") // .assign((t, v) -> { t.setDateTime(asDate(v.get("date"))); t.setAmount(asAmount(v.get("amount")));