diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Kauf05.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Kauf05.txt new file mode 100644 index 0000000000..3c81bbfb54 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Kauf05.txt @@ -0,0 +1,44 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.68.2 +----------------------------------------- +LGT Bank (Schweiz) AG +Glärnischstrasse 36, Postfach, CH-8027 Zürich +Tel. +41 44 250 81 81 +lgt.ch@lgt.com, www.lgt.ch, BIC BLFLCHBB +CHE-109.346.830 MWST +Securities dealer no. 647613 +____________________ +P.P. Post CH AG_____C_H__-_8_0_2_7_ _Z_ü_r_ic_h_ PF 1909 A -PRIORITY_________________________________________________ +Liberty Freizügigkeitsstiftung +bei Liberty Vorsorge AG +Postfach 733 +6431 Schwyz +1 / 1 +Zürich, 26. Juli 2023 + +Abrechnung Kauf Portfolio: 1234457.000 +Auftragsnummer: 212706117 Kundenportfolio +Kunde: Liberty Freizügigkeitsstiftung XX - 1.1001.4567-01 +Titel Roche Holding AG +Inhaber-Genussschein +ISIN CH0012032048 +Valorennummer 1203204 +Wertpapierkennnummer 855167 +Abschlussdatum 26.07.2023 +Ausführungsplatz SIX Swiss Exchange, börslich +Auftragstyp Bestens +Anzahl 40 Stück +Kurs CHF 273.05 +Kurswert CHF 10'922.00 +Eidg. Umsatzabgabe CHF 8.19 +SIX Börsengebühr CHF 1.24 +SIX Meldegebühr CHF 0.20 +Belastung CHF Freizügigkeitskonto 2026457.031 CHF 10'931.63 +Valuta 28.07.2023 +Wir haben die Titel in das oben genannte Depot eingebucht. +Die Gutschrift im oben erwähnten Depot erfolgt vorbehaltlich der effektiven Lieferung. +Dieser Auftrag wurde als Gruppenauftrag ausgeführt. +Weitere Details zum durchgeführten Auftrag stellen wir Ihnen auf Anfrage gerne zur Verfügung. +2026457 00A T ZH I TRD1001 39509429 12:10 26.07.2023 %Media:XML-A4H +____ +____ \ No newline at end of file diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/LGTBankPDFExtractorTest.java b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/LGTBankPDFExtractorTest.java index 53fef4bba1..fa1701b7ea 100644 --- a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/LGTBankPDFExtractorTest.java +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/LGTBankPDFExtractorTest.java @@ -165,7 +165,8 @@ public void testWertpapierKauf03() // check buy sell transaction assertThat(results, hasItem(purchase( // hasDate("2023-06-29T14:54:02"), hasShares(260), // - hasSource("Kauf03.txt"), hasNote("Auftragsnummer: 210796978 | Valorennummer 3176893"), // + hasSource("Kauf03.txt"), // + hasNote("Auftragsnummer: 210796978 | Valorennummer 3176893"), // hasAmount("CHF", 48502.01), hasGrossValue("CHF", 48465.46), // hasTaxes("CHF", 36.35), hasFees("CHF", 0.20)))); } @@ -195,11 +196,43 @@ public void testWertpapierKauf04() // check buy sell transaction assertThat(results, hasItem(purchase( // hasDate("2023-06-08T00:00"), hasShares(480), // - hasSource("Kauf04.txt"), hasNote("Auftragsnummer: 209174085 | Valorennummer 50139326"), // + hasSource("Kauf04.txt"), // + hasNote("Auftragsnummer: 209174085 | Valorennummer 50139326"), // hasAmount("USD", 50595.78), hasGrossValue("USD", 50520.00), // hasTaxes("USD", 75.78), hasFees("USD", 0.00)))); } + @Test + public void testWertpapierKauf05() + { + LGTBankPDFExtractor extractor = new LGTBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Kauf05.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(1L)); + assertThat(countBuySell(results), is(1L)); + assertThat(countAccountTransactions(results), is(0L)); + assertThat(results.size(), is(2)); + new AssertImportActions().check(results, "CHF"); + + // check security + assertThat(results, hasItem(security( // + hasIsin("CH0012032048"), hasWkn("855167"), hasTicker(null), // + hasName("Roche Holding AG Inhaber-Genussschein"), // + hasCurrencyCode("CHF")))); + + // check buy sell transaction + assertThat(results, hasItem(purchase( // + hasDate("2023-07-26T00:00"), hasShares(40), // + hasSource("Kauf05.txt"), // + hasNote("Auftragsnummer: 212706117 | Valorennummer 1203204"), // + hasAmount("CHF", 10931.63), hasGrossValue("CHF", 10922.00), // + hasTaxes("CHF", 8.19), hasFees("CHF", 1.24 + 0.20)))); + } + @Test public void testWertpapierVerkauf01() { @@ -225,11 +258,74 @@ public void testWertpapierVerkauf01() // check buy sell transaction assertThat(results, hasItem(sale( // hasDate("2023-06-08T11:22:14"), hasShares(260), // - hasSource("Verkauf01.txt"), hasNote("Auftragsnummer: 209179086 | Valorennummer 41359963"), // + hasSource("Verkauf01.txt"), // + hasNote("Auftragsnummer: 209179086 | Valorennummer 41359963"), // hasAmount("USD", 8332.19), hasGrossValue("USD", 8344.70), // hasTaxes("USD", 12.51), hasFees("USD", 0.00)))); } + @Test + public void testWertpapierVerkauf02() + { + LGTBankPDFExtractor extractor = new LGTBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Verkauf02.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(1L)); + assertThat(countBuySell(results), is(1L)); + assertThat(countAccountTransactions(results), is(0L)); + assertThat(results.size(), is(2)); + new AssertImportActions().check(results, "CHF"); + + // check security + assertThat(results, hasItem(security( // + hasIsin("CH0031768937"), hasWkn("A0MW4N"), hasTicker(null), // + hasName("iShares ETF (CH) - iShares SLI(R) ETF (CH) Inhaber-Anteile -A-"), // + hasCurrencyCode("CHF")))); + + // check buy sell transaction + assertThat(results, hasItem(sale( // + hasDate("2023-07-04T00:00"), hasShares(260), // + hasSource("Verkauf02.txt"), // + hasNote("Auftragsnummer: 123295456 | Valorennummer 3176893"), // + hasAmount("CHF", 48591.42), hasGrossValue("CHF", 48636.90), // + hasTaxes("CHF", 36.48), hasFees("CHF", 8.80 + 0.20)))); + } + + @Test + public void testWertpapierVerkauf03() + { + LGTBankPDFExtractor extractor = new LGTBankPDFExtractor(new Client()); + + List errors = new ArrayList<>(); + + List results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Verkauf03.txt"), errors); + + assertThat(errors, empty()); + assertThat(countSecurities(results), is(1L)); + assertThat(countBuySell(results), is(1L)); + assertThat(countAccountTransactions(results), is(0L)); + assertThat(results.size(), is(2)); + new AssertImportActions().check(results, "CHF"); + + // check security + assertThat(results, hasItem(security( // + hasIsin("CH0012005267"), hasWkn("904278"), hasTicker(null), // + hasName("Novartis AG Namen-Aktien"), // + hasCurrencyCode("CHF")))); + + // check buy sell transaction + assertThat(results, hasItem(sale( // + hasDate("2023-11-02T00:00"), hasShares(260), // + hasSource("Verkauf03.txt"), // + hasNote("Auftragsnummer: 219764567 | Valorennummer 1200526"), // + hasAmount("CHF", 21954.31), hasGrossValue("CHF", 21972.42), // + hasTaxes("CHF", 16.48), hasFees("CHF", 1.43 + 0.20)))); + } + @Test public void testDividende01() { @@ -295,10 +391,11 @@ public void testDividende02() hasName("Novartis AG Namen-Aktien"), // hasCurrencyCode("CHF")))); - // check dividende transaction + // check dividends transaction assertThat(results, hasItem(dividend( // hasDate("2023-03-13T00:00"), hasShares(760), // - hasSource("Dividende02.txt"), hasNote("Auftragsnummer: 200738771 | Ordentliche Dividende"), // + hasSource("Dividende02.txt"), // + hasNote("Auftragsnummer: 200738771 | Ordentliche Dividende"), // hasAmount("CHF", 1580.80), hasGrossValue("CHF", 2432.00), // hasTaxes("CHF", 851.20), hasFees("CHF", 0.00)))); } @@ -325,10 +422,11 @@ public void testDividende03() hasName("Schindler Holding AG Inhaber-Partizipationsschein"), // hasCurrencyCode("CHF")))); - // check dividende transaction + // check dividends transaction assertThat(results, hasItem(dividend( // hasDate("2023-04-03T00:00"), hasShares(130), // - hasSource("Dividende03.txt"), hasNote("Auftragsnummer: 330401346 | Ordentliche Dividende"), // + hasSource("Dividende03.txt"), // + hasNote("Auftragsnummer: 330401346 | Ordentliche Dividende"), // hasAmount("CHF", 338.00), hasGrossValue("CHF", 520.00), // hasTaxes("CHF", 182.00), hasFees("CHF", 0.00)))); } @@ -355,10 +453,11 @@ public void testDividende04() hasName("SGS Ltd Namen-Aktien"), // hasCurrencyCode("CHF")))); - // check dividende transaction + // check dividends transaction assertThat(results, hasItem(dividend( // hasDate("2023-04-03T00:00"), hasShares(12), // - hasSource("Dividende04.txt"), hasNote("Auftragsnummer: 303105603 | Ordentliche Dividende"), // + hasSource("Dividende04.txt"), // + hasNote("Auftragsnummer: 303105603 | Ordentliche Dividende"), // hasAmount("CHF", 624.00), hasGrossValue("CHF", 960.00), // hasTaxes("CHF", 336.00), hasFees("CHF", 0.00)))); } @@ -385,10 +484,11 @@ public void testDividende05() hasName("iShares ETF (CH) - iShares SLI(R) ETF (CH) Inhaber-Anteile -A-"), // hasCurrencyCode("CHF")))); - // check dividende transaction + // check dividends transaction assertThat(results, hasItem(dividend( // hasDate("2023-04-03T00:00"), hasShares(490), // - hasSource("Dividende05.txt"), hasNote("Auftragsnummer: 303107922 | Ordentliche Dividende"), // + hasSource("Dividende05.txt"), // + hasNote("Auftragsnummer: 303107922 | Ordentliche Dividende"), // hasAmount("CHF", 127.40), hasGrossValue("CHF", 196.00), // hasTaxes("CHF", 68.60), hasFees("CHF", 0.00)))); } diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Verkauf02.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Verkauf02.txt new file mode 100644 index 0000000000..a7c991e93b --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Verkauf02.txt @@ -0,0 +1,62 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.68.2 +----------------------------------------- +LGT Bank (Schweiz) AG +Glärnischstrasse 36, Postfach, CH-8027 Zürich +Tel. +41 44 250 81 81 +lgt.ch@lgt.com, www.lgt.ch, BIC BLFLCHBB +CHE-109.346.830 MWST +Securities dealer no. 647613 +____________________ +P__.P__. +Post CH AG +_C_H__-_8_0_2_7_ _Z_ü_r_ic_h_ PF 1909 A -PRIORITY_________________________________________________ +Liberty Freizügigkeitsstiftung +bei Liberty Vorsorge AG +Postfach 733 +6431 Schwyz +1 / 2 +Zürich, 4. Juli 2023 + +Abrechnung Verkauf Portfolio: 1236457.000 +Auftragsnummer: 123295456 Kundenportfolio +Kunde: Liberty Freizügigkeitsstiftung XX - 1.1001.1234-01 +Titel iShares ETF (CH) - iShares SLI(R) ETF (CH) +Inhaber-Anteile -A- +Verwaltungsgesellschaft / AIFM BlackRock Asset Management Schweiz AG +ISIN CH0031768937 +Valorennummer 3176893 +Wertpapierkennnummer A0MW4N +Auftragserteilung 04.07.2023 17:09:20 +Abschlussdatum 04.07.2023 +Ausführungsplatz SIX Swiss Exchange, börslich +Auftragstyp Bestens +Anzahl 260 Stück +Kurs CHF 187.065 +Kurswert CHF 48'636.90 +Eidg. Umsatzabgabe CHF -36.48 +SIX Börsengebühr CHF -8.80 +SIX Meldegebühr CHF -0.20 +Gutschrift CHF Freizügigkeitskonto 2026457.031 CHF 48'591.42 +Valuta 06.07.2023 +Wir entnehmen die Titel Ihrem oben genannten Depot. +Die Gutschrift auf oben erwähntem Konto erfolgt vorbehaltlich des effektiven Zahlungseinganges. +2026457 00A T ZH I TRD1001 39509429 18:10 04.07.2023 %Media:XML-A4H +____ +____ +LGT Bank (Schweiz) AG +Glärnischstrasse 36, Postfach, CH-8027 Zürich +Tel. +41 44 250 81 81 +lgt.ch@lgt.com, www.lgt.ch, BIC BLFLCHBB +CHE-109.346.830 MWST +Securities dealer no. 647613 +2 / 2 +Abrechnung Verkauf Kundenportfolio +Auftragsnummer: 211295144 Portfolio: 2026457.000 +Kunde: Liberty Freizügigkeitsstiftung MP - 1.1001.4097-01 +Ausführungsdetails +Whg. Anzahl Ausführungszeit Markt Kurs +CHF 63 04.07.2023 17:10:48 SIX Swiss Exchange 187.080000 +CHF 2 04.07.2023 17:10:49 SIX Swiss Exchange 187.080000 +CHF 195 04.07.2023 17:10:53 SIX Swiss Exchange 187.060000 +2026457 00A T ZH I TRD1001 39509429 18:10 04.07.2023 %Media:XML-A4H \ No newline at end of file diff --git a/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Verkauf03.txt b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Verkauf03.txt new file mode 100644 index 0000000000..0b9b0b5356 --- /dev/null +++ b/name.abuchen.portfolio.tests/src/name/abuchen/portfolio/datatransfer/pdf/lgtbank/Verkauf03.txt @@ -0,0 +1,45 @@ +PDFBox Version: 1.8.17 +Portfolio Performance Version: 0.68.2 +----------------------------------------- +LGT Bank (Schweiz) AG +Glärnischstrasse 36, Postfach, CH-8027 Zürich +Tel. +41 44 250 81 81 +lgt.ch@lgt.com, www.lgt.ch, BIC BLFLCHBB +CHE-109.346.830 MWST +Securities dealer no. 647613 +____________________ +P.P. Post CH AGCH-8027 Zürich PF 1909 -PRIORITY +__________________________________________________A__________________ +Liberty Freizügigkeitsstiftung +bei Liberty Vorsorge AG +Postfach 733 +6431 Schwyz +1 / 1 +Zürich, 2. November 2023 + +Abrechnung Verkauf Portfolio: 2024567.000 +Auftragsnummer: 219764567 Kundenportfolio +Kunde: Liberty Freizügigkeitsstiftung XX - 1.1001.1234-01 +Titel Novartis AG +Namen-Aktien +ISIN CH0012005267 +Valorennummer 1200526 +Wertpapierkennnummer 904278 +Abschlussdatum 02.11.2023 +Ausführungsplatz SIX Swiss Exchange +Auftragstyp Bestens +Anzahl 260 Stück +Kurs CHF 84.509301 +Kurswert CHF 21'972.42 +Eidg. Umsatzabgabe CHF -16.48 +SIX Börsengebühr CHF -1.43 +SIX Meldegebühr CHF -0.20 +Gutschrift CHF Freizügigkeitskonto 2024567.031 CHF 21'954.31 +Valuta 06.11.2023 +Wir haben die Titel dem oben genannten Portfolio entnommen. +Die Gutschrift erfolgt vorbehaltlich des effektiven Zahlungseinganges. +Dieser Auftrag wurde als Gruppenauftrag ausgeführt. +Weitere Details zum durchgeführten Auftrag stellen wir Ihnen auf Anfrage gerne zur Verfügung. +1234457 00A T ZH I TRD1001 39509429 19:13 02.11.2023 %Media:XML-A4H +____ +____ \ No newline at end of file diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/LGTBankPDFExtractor.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/LGTBankPDFExtractor.java index 972aff25ee..ea2f8a2eea 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/LGTBankPDFExtractor.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/pdf/LGTBankPDFExtractor.java @@ -41,7 +41,7 @@ private void addBuySellTransaction() Transaction pdfTransaction = new Transaction<>(); - Block firstRelevantLine = new Block("^Abrechnung (Kauf|Verkauf|Zeichnung).*$"); + Block firstRelevantLine = new Block("^Abrechnung (Kauf|Verkauf|Zeichnung).*$", "^Valuta [\\d]{2}\\.[\\d]{2}\\.[\\d]{4}$"); type.addBlock(firstRelevantLine); firstRelevantLine.set(pdfTransaction); @@ -110,6 +110,13 @@ private void addBuySellTransaction() .match("^Abschlussdatum (?[\\d]{2}\\.[\\d]{2}\\.[\\d]{4}) (?