Skip to content

Commit c9b463e

Browse files
Nirus2000hporten
authored andcommitted
Add test case to GenoBroker PDF-Importer (portfolio-performance#5219)
Improve source Add test case https://forum.portfolio-performance.info/t/pdf-import-von-geno-broker/24550/51
1 parent a5ab632 commit c9b463e

File tree

2 files changed

+93
-60
lines changed

2 files changed

+93
-60
lines changed

name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/genobroker/GenoBrokerPDFExtractorTest.java

Lines changed: 55 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package name.abuchen.portfolio.datatransfer.pdf.genobroker;
22

3-
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.check;
43
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.dividend;
54
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasAmount;
65
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasCurrencyCode;
@@ -24,8 +23,8 @@
2423
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.withFailureMessage;
2524
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransactions;
2625
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransfers;
27-
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countItemsWithFailureMessage;
2826
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countBuySell;
27+
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countItemsWithFailureMessage;
2928
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countSecurities;
3029
import static org.hamcrest.CoreMatchers.hasItem;
3130
import static org.hamcrest.CoreMatchers.is;
@@ -38,16 +37,10 @@
3837
import org.junit.Test;
3938

4039
import name.abuchen.portfolio.Messages;
41-
import name.abuchen.portfolio.datatransfer.ImportAction.Status;
4240
import name.abuchen.portfolio.datatransfer.actions.AssertImportActions;
43-
import name.abuchen.portfolio.datatransfer.actions.CheckCurrenciesAction;
4441
import name.abuchen.portfolio.datatransfer.pdf.GenoBrokerPDFExtractor;
4542
import name.abuchen.portfolio.datatransfer.pdf.PDFInputFile;
46-
import name.abuchen.portfolio.model.Account;
47-
import name.abuchen.portfolio.model.AccountTransaction;
4843
import name.abuchen.portfolio.model.Client;
49-
import name.abuchen.portfolio.model.Portfolio;
50-
import name.abuchen.portfolio.model.PortfolioTransaction;
5144
import name.abuchen.portfolio.model.Security;
5245

5346
@SuppressWarnings("nls")
@@ -112,7 +105,7 @@ public void testWertpapierKauf02()
112105

113106
// check buy sell transaction
114107
assertThat(results, hasItem(purchase( //
115-
hasDate("2023-07-19T08:18"), hasShares(500), //
108+
hasDate("2023-07-19T08:18"), hasShares(500.00), //
116109
hasSource("Kauf02.txt"), //
117110
hasNote("Auftragsnummer: 422576/44.00 | Limit 10,00 EUR"), //
118111
hasAmount("EUR", 4714.55), hasGrossValue("EUR", 4704.50), //
@@ -145,7 +138,7 @@ public void testWertpapierKauf03()
145138

146139
// check buy sell transaction
147140
assertThat(results, hasItem(purchase( //
148-
hasDate("2023-08-03T12:00"), hasShares(2100), //
141+
hasDate("2023-08-03T12:00"), hasShares(2100.00), //
149142
hasSource("Kauf03.txt"), //
150143
hasNote("Auftragsnummer: 896962/04.00"), //
151144
hasAmount("EUR", 506.62), hasGrossValue("EUR", 506.62), //
@@ -180,16 +173,11 @@ public void testWertpapierKauf03WithSecurityInEUR()
180173

181174
// check buy sell transaction
182175
assertThat(results, hasItem(purchase( //
183-
hasDate("2023-08-03T12:00"), hasShares(2100), //
176+
hasDate("2023-08-03T12:00"), hasShares(2100.00), //
184177
hasSource("Kauf03.txt"), //
185178
hasNote("Auftragsnummer: 896962/04.00"), //
186179
hasAmount("EUR", 506.62), hasGrossValue("EUR", 506.62), //
187-
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00), //
188-
check(tx -> {
189-
var c = new CheckCurrenciesAction();
190-
var s = c.process((PortfolioTransaction) tx, new Portfolio());
191-
assertThat(s, is(Status.OK_STATUS));
192-
}))));
180+
hasTaxes("EUR", 0.00), hasFees("EUR", 0.00))));
193181
}
194182

195183
@Test
@@ -218,7 +206,7 @@ public void testWertpapierKauf04()
218206

219207
// check buy sell transaction
220208
assertThat(results, hasItem(purchase( //
221-
hasDate("2025-06-10T15:33"), hasShares(2000), //
209+
hasDate("2025-06-10T15:33"), hasShares(2000.00), //
222210
hasSource("Kauf04.txt"), //
223211
hasNote("Auftragsnummer: 625571/30.00 | Limit billigst"), //
224212
hasAmount("EUR", 4222.17), hasGrossValue("EUR", 4156.80), //
@@ -252,16 +240,44 @@ public void testWertpapierKauf04WithSecurityInEUR()
252240

253241
// check buy sell transaction
254242
assertThat(results, hasItem(purchase( //
255-
hasDate("2025-06-10T15:33"), hasShares(2000), //
243+
hasDate("2025-06-10T15:33"), hasShares(2000.00), //
256244
hasSource("Kauf04.txt"), //
257245
hasNote("Auftragsnummer: 625571/30.00 | Limit billigst"), //
258246
hasAmount("EUR", 4222.17), hasGrossValue("EUR", 4156.80), //
259-
hasTaxes("EUR", 0.00), hasFees("EUR", 9.95 + 21.65 + 8.77 + 25.00), //
260-
check(tx -> {
261-
var c = new CheckCurrenciesAction();
262-
var s = c.process((PortfolioTransaction) tx, new Portfolio());
263-
assertThat(s, is(Status.OK_STATUS));
264-
}))));
247+
hasTaxes("EUR", 0.00), hasFees("EUR", 9.95 + 21.65 + 8.77 + 25.00))));
248+
}
249+
250+
@Test
251+
public void testWertpapierKauf05()
252+
{
253+
var extractor = new GenoBrokerPDFExtractor(new Client());
254+
255+
List<Exception> errors = new ArrayList<>();
256+
257+
var results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kauf05.txt"), errors);
258+
259+
assertThat(errors, empty());
260+
assertThat(countSecurities(results), is(1L));
261+
assertThat(countBuySell(results), is(1L));
262+
assertThat(countAccountTransactions(results), is(0L));
263+
assertThat(countAccountTransfers(results), is(0L));
264+
assertThat(countItemsWithFailureMessage(results), is(0L));
265+
assertThat(results.size(), is(2));
266+
new AssertImportActions().check(results, "EUR");
267+
268+
// check security
269+
assertThat(results, hasItem(security( //
270+
hasIsin("DE0005552004"), hasWkn("555200"), hasTicker(null), //
271+
hasName("DEUTSCHE POST AG NAMENS-AKTIEN O.N."), //
272+
hasCurrencyCode("EUR"))));
273+
274+
// check buy sell transaction
275+
assertThat(results, hasItem(purchase( //
276+
hasDate("2025-12-11T16:14"), hasShares(200.00), //
277+
hasSource("Kauf05.txt"), //
278+
hasNote("Auftragsnummer: 210741/20.00 | Limit billigst"), //
279+
hasAmount("EUR", 9391.91), hasGrossValue("EUR", 9374.00), //
280+
hasTaxes("EUR", 0.00), hasFees("EUR", 17.81 + 0.10))));
265281
}
266282

267283
@Test
@@ -290,7 +306,7 @@ public void testWertpapierVerkauf01()
290306

291307
// check buy sell transaction
292308
assertThat(results, hasItem(sale( //
293-
hasDate("2023-07-25T16:48"), hasShares(2100), //
309+
hasDate("2023-07-25T16:48"), hasShares(2100.00), //
294310
hasSource("Verkauf01.txt"), //
295311
hasNote("Auftragsnummer: 433499/69.01 | Limit bestens"), //
296312
hasAmount("EUR", 6319.37), hasGrossValue("EUR", 6331.50), //
@@ -323,7 +339,7 @@ public void testWertpapierVerkauf02()
323339

324340
// check buy sell transaction
325341
assertThat(results, hasItem(sale( //
326-
hasDate("2023-09-05T13:10"), hasShares(500), //
342+
hasDate("2023-09-05T13:10"), hasShares(500.00), //
327343
hasSource("Verkauf02.txt"), //
328344
hasNote("Auftragsnummer: 498470/51.00 | Limit bestens"), //
329345
hasAmount("EUR", 4759.31), hasGrossValue("EUR", 4779.50), //
@@ -356,7 +372,7 @@ public void testDividende01()
356372

357373
// check dividend transaction
358374
assertThat(results, hasItem(dividend( //
359-
hasDate("2023-07-14T00:00"), hasShares(1000), //
375+
hasDate("2023-07-14T00:00"), hasShares(1000.00), //
360376
hasSource("Dividende01.txt"), //
361377
hasNote("Abrechnungsnr.: 60007000"), //
362378
hasAmount("EUR", 445.94), hasGrossValue("EUR", 615.87), //
@@ -389,7 +405,7 @@ public void testDividende02()
389405

390406
// check dividend transaction
391407
assertThat(results, hasItem(dividend( //
392-
hasDate("2023-07-10T00:00"), hasShares(2100), //
408+
hasDate("2023-07-10T00:00"), hasShares(2100.00), //
393409
hasSource("Dividende02.txt"), //
394410
hasNote("Abrechnungsnr.: 000000000"), //
395411
hasAmount("EUR", 6107.09), hasGrossValue("EUR", 9475.70), //
@@ -423,7 +439,7 @@ public void testDividende03()
423439

424440
// check dividend transaction
425441
assertThat(results, hasItem(dividend( //
426-
hasDate("2023-08-29T00:00"), hasShares(600), //
442+
hasDate("2023-08-29T00:00"), hasShares(600.00), //
427443
hasSource("Dividende03.txt"), //
428444
hasNote("Abrechnungsnr.: 74014833940"), //
429445
hasAmount("EUR", 236.34), hasGrossValue("EUR", 486.03), //
@@ -458,18 +474,11 @@ public void testDividende03WithSecurityInEUR()
458474

459475
// check dividends transaction
460476
assertThat(results, hasItem(dividend( //
461-
hasDate("2023-08-29T00:00"), hasShares(600), //
477+
hasDate("2023-08-29T00:00"), hasShares(600.00), //
462478
hasSource("Dividende03.txt"), //
463479
hasNote("Abrechnungsnr.: 74014833940"), //
464480
hasAmount("EUR", 236.34), hasGrossValue("EUR", 486.03), //
465-
hasTaxes("EUR", 121.51 + 121.50 + 6.68), hasFees("EUR", 0.00), //
466-
check(tx -> {
467-
var c = new CheckCurrenciesAction();
468-
var account = new Account();
469-
account.setCurrencyCode("EUR");
470-
var s = c.process((AccountTransaction) tx, account);
471-
assertThat(s, is(Status.OK_STATUS));
472-
}))));
481+
hasTaxes("EUR", 121.51 + 121.50 + 6.68), hasFees("EUR", 0.00))));
473482
}
474483

475484
@Test
@@ -498,7 +507,7 @@ public void testDividende04()
498507

499508
// check dividend transaction
500509
assertThat(results, hasItem(dividend( //
501-
hasDate("2023-09-13T00:00"), hasShares(23), //
510+
hasDate("2023-09-13T00:00"), hasShares(23.00), //
502511
hasSource("Dividende04.txt"), //
503512
hasNote("Abrechnungsnr.: 75555439660"), //
504513
hasAmount("EUR", 24.01), hasGrossValue("EUR", 32.26), //
@@ -537,14 +546,7 @@ public void testDividende04WithSecurityInEUR()
537546
hasSource("Dividende04.txt"), //
538547
hasNote("Abrechnungsnr.: 75555439660"), //
539548
hasAmount("EUR", 24.01), hasGrossValue("EUR", 32.26), //
540-
hasTaxes("EUR", 4.84 + 3.23 + 0.18), hasFees("EUR", 0.00), //
541-
check(tx -> {
542-
var c = new CheckCurrenciesAction();
543-
var account = new Account();
544-
account.setCurrencyCode("EUR");
545-
var s = c.process((AccountTransaction) tx, account);
546-
assertThat(s, is(Status.OK_STATUS));
547-
}))));
549+
hasTaxes("EUR", 4.84 + 3.23 + 0.18), hasFees("EUR", 0.00))));
548550
}
549551

550552
@Test
@@ -573,7 +575,7 @@ public void testDividende05()
573575

574576
// check dividend transaction
575577
assertThat(results, hasItem(dividend( //
576-
hasDate("2023-12-29T00:00"), hasShares(30), //
578+
hasDate("2023-12-29T00:00"), hasShares(30.00), //
577579
hasSource("Dividende05.txt"), //
578580
hasNote("Abrechnungsnr.: 86249245170"), //
579581
hasAmount("EUR", 6.03), hasGrossValue("EUR", 7.50), //
@@ -608,18 +610,11 @@ public void testDividende05WithSecurityInEUR()
608610

609611
// check dividends transaction
610612
assertThat(results, hasItem(dividend( //
611-
hasDate("2023-12-29T00:00"), hasShares(30), //
613+
hasDate("2023-12-29T00:00"), hasShares(30.00), //
612614
hasSource("Dividende05.txt"), //
613615
hasNote("Abrechnungsnr.: 86249245170"), //
614616
hasAmount("EUR", 6.03), hasGrossValue("EUR", 7.50), //
615-
hasTaxes("EUR", 1.29 + 0.07 + 0.11), hasFees("EUR", 0.00), //
616-
check(tx -> {
617-
var c = new CheckCurrenciesAction();
618-
var account = new Account();
619-
account.setCurrencyCode("EUR");
620-
var s = c.process((AccountTransaction) tx, account);
621-
assertThat(s, is(Status.OK_STATUS));
622-
}))));
617+
hasTaxes("EUR", 1.29 + 0.07 + 0.11), hasFees("EUR", 0.00))));
623618
}
624619

625620
@Test
@@ -648,7 +643,7 @@ public void testDividende06()
648643

649644
// check dividend transaction
650645
assertThat(results, hasItem(dividend( //
651-
hasDate("2024-04-30T00:00"), hasShares(75), //
646+
hasDate("2024-04-30T00:00"), hasShares(75.00), //
652647
hasSource("Dividende06.txt"), //
653648
hasNote("Abrechnungsnr.: 08172459718"), //
654649
hasAmount("EUR", 255.00), hasGrossValue("EUR", 255.00), //
@@ -681,7 +676,7 @@ public void testDividende07()
681676

682677
// check dividend transaction
683678
assertThat(results, hasItem(dividend( //
684-
hasDate("2024-04-30T00:00"), hasShares(23), //
679+
hasDate("2024-04-30T00:00"), hasShares(23.00), //
685680
hasSource("Dividende07.txt"), //
686681
hasNote("Abrechnungsnr.: 20967773045"), //
687682
hasAmount("EUR", 309.07), hasGrossValue("EUR", 345.00 + 216.60), //
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
PDFBox Version: 3.0.5
2+
Portfolio Performance Version: 0.80.4
3+
System: win32 | x86_64 | 21.0.5+11-LTS | Azul Systems, Inc.
4+
-----------------------------------------
5+
6+
GENO Broker GmbH Kundenservice · Postfach 30 30 · 48016 Münster
7+
Depotnummer
8+
9193874968
9+
Kundennummer 0333801865
10+
GgLtcNK KaKWxv
11+
Auftragsnummer 210741/20.00
12+
BsGscIE IcEsTa Datum 11.12.2025
13+
Tannholzstr. 2 Rechnungsnummer W07700-0000535645/25
14+
42469 SEixHjCMWqMRtD Umsatzsteuer-ID DE288411485
15+
16+
Wertpapier Abrechnung Kauf
17+
Nominale Wertpapierbezeichnung ISIN (WKN)
18+
Stück 200 DEUTSCHE POST AG DE0005552004 (555200)
19+
NAMENS-AKTIEN O.N.
20+
Handels-/Ausführungsplatz Tradegate (gemäß Weisung)
21+
Börsensegment XGAT
22+
Market-Order
23+
Limit billigst
24+
Schlusstag/-Zeit 11.12.2025 16:14:10 KcoZutzKyufI nDe OUNmdWDm qkPCFD
25+
Ausführungskurs 46,87 EUR Auftragserteilung/ -ort Online-Banking
26+
Girosammelverwahrung - Sammel-Urkunden in Namensaktien
27+
Kurswert 9.374,00- EUR
28+
Provision 0,1900 % vom Kurswert 17,81- EUR
29+
Übertragungs-/Liefergebühr 0,10- EUR
30+
Ausmachender Betrag 9.391,91- EUR
31+
32+
Den Gegenwert buchen wir mit Valuta 15.12.2025 zu Lasten des Kontos 3282155 (IBAN DE05 7206 9274 0003 2821 55),
33+
BLZ 72069274 (BIC GENODEF1ZUS).
34+
Die Wertpapiere schreiben wir Ihrem Depotkonto gut.
35+
Sofern keine Umsatzsteuer ausgewiesen ist, handelt es sich um eine umsatzsteuerbefreite Finanzdienstleistung.
36+
37+
Dieses Dokument wurde maschinell erstellt und wird nicht unterschrieben.
38+
7700.12111732.0001276OR07

0 commit comments

Comments
 (0)