Skip to content

Commit

Permalink
Modify Commerzbank PDF-Importer to support new transaction (#4413)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nirus2000 authored Dec 23, 2024
1 parent 397d607 commit cd20daf
Show file tree
Hide file tree
Showing 4 changed files with 533 additions and 243 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
package name.abuchen.portfolio.datatransfer.pdf.commerzbank;

import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasAmount;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasCurrencyCode;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasDate;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasFees;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasGrossValue;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasIsin;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasName;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasNote;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasShares;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasSource;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasTaxes;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasTicker;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.hasWkn;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.purchase;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.sale;
import static name.abuchen.portfolio.datatransfer.ExtractorMatchers.security;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countAccountTransactions;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countBuySell;
import static name.abuchen.portfolio.datatransfer.ExtractorTestUtilities.countSecurities;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.collection.IsEmptyCollection.empty;
Expand Down Expand Up @@ -119,11 +139,11 @@ public void testWertpapierKauf02()
assertThat(entry.getPortfolioTransaction().getMonetaryAmount(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(49.92))));
assertThat(entry.getPortfolioTransaction().getGrossValue(),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(48.70))));
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(48.73))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.TAX),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(0.00))));
assertThat(entry.getPortfolioTransaction().getUnitSum(Unit.Type.FEE),
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(1.22))));
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(1.19))));
}

@Test
Expand Down Expand Up @@ -216,6 +236,37 @@ public void testWertpapierKauf04()
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(119.38 + 2.90 + 1.20 + 2.73))));
}

@Test
public void testWertpapierKauf05()
{
CommerzbankPDFExtractor extractor = new CommerzbankPDFExtractor(new Client());

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

List<Item> 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, CurrencyUnit.EUR);

// check security
assertThat(results, hasItem(security( //
hasIsin(null), hasWkn("A2DWBY"), hasTicker(null), //
hasName("i S h s I I I - M S C I W l d S m . C a . U C I . E T F R e g i s t e r e d S h a r e s U S D ( A c c ) o . N ."), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(purchase( //
hasDate("2021-10-15T00:00"), hasShares(192.60), //
hasSource("Kauf05.txt"), //
hasNote("R.-Nr.: [persönlichjeDaten}"), //
hasAmount("EUR", 1250.00), hasGrossValue("EUR", 1244.39), //
hasTaxes("EUR", 0.00), hasFees("EUR", 5.61))));
}

@Test
public void testWertpapierVerkauf01()
{
Expand Down Expand Up @@ -396,6 +447,37 @@ public void testWertpapierVerkauf04()
is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(115.10 + 2.90 + 2.63))));
}

@Test
public void testWertpapierVerkauf05()
{
CommerzbankPDFExtractor extractor = new CommerzbankPDFExtractor(new Client());

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

List<Item> results = extractor.extract(PDFInputFile.loadTestCase(getClass(), "Verkauf05.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, CurrencyUnit.EUR);

// check security
assertThat(results, hasItem(security( //
hasIsin(null), hasWkn("A3E2FV"), hasTicker(null), //
hasName("C a n o p y G r o w t h C o r p . R e g i s t e r e d S h a r e s o . N ."), //
hasCurrencyCode("EUR"))));

// check buy sell transaction
assertThat(results, hasItem(sale( //
hasDate("2024-09-27T13:02"), hasShares(4.00), //
hasSource("Verkauf05.txt"), //
hasNote(null), //
hasAmount("EUR", 1.13), hasGrossValue("EUR", 16.26), //
hasTaxes("EUR", 0.00), hasFees("EUR", 9.90 + 3.25 + 1.98))));
}

@Test
public void testSteuermitteilungWertpapierVerkauf01()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.72.2

Ihren Auftrag haben wir gemäß unseren Sonderbedingungen für
Wertpapiergeschäfte wie nachstehend ausgeführt. Die Wertpapiere
haben wir der Abrechnung entsprechend gebucht. Wir bitten Sie,

[persönlichje Daten}

diese Abrechnung auf ihre Richtigkeit und Vollständigkeit zuüberprüfen und etwaige Einwendungen unverzüglich zu erheben.
[persönliche Daten}
GESCHÄFTSABRECHNUNG VOM 18.10.2021
f ü r I h r D i r e k t D e p o t
*
W e r t p a p i e r k a u f
G e s c h ä f t s n u m m e r : [persönliche Daten}
[persönliche Daten}
Rechnungsnummer : [persönlichje Daten}
G e s c h ä f t s t a g : 1 5 . 1 0 . 2 0 2 1 A u s f ü h r u n g s p l a t z : XETRA

W e r t p a p i e r - B e z e i c h n u n g W e r t p a p i e r k e n n n u m m e r
i S h s I I I - M S C I W l d S m . C a . U C I . E T F A2DWBY
R e g i s t e r e d S h a r e s U S D ( A c c ) o . N .
N e n n w e r t Zum K u r s von
S t . 1 9 2 , 6 0 EUR 6 , 4 6 1
K u r s w e r t : EUR 1 . 2 4 4 , 3 9

E i g e n e E n t g e l t e
P r o v i s i o n : EUR 5 , 6 1

IBAN V a l u t a Zu I h r e n L a s t e n v o r S t e u e r n
[persönliche Daten} EUR 1 9 . 1 0 . 2 0 2 1 EUR 1 . 2 5 0 , 0 0
V e r w a h r u n g s - A r t : WERTPAPIERRECHNUNG IRLAND ( A K V )
I n f o r m a t i o n e n z u r s t e u e r l i c h e n B e h a n d l u n g d i e s e s G e s c h ä f t s v o r g a n g s u n d d e n a u f
I h r e m K o n t o g e b u c h t e n E n d b e t r a g f i n d e n S i e a u f d e r s e p a r a t e n S t e u e r m i t t e i l u n g .
C O M M E R Z B A N K
Aktiengesellschaft
Diese Abrechnung wird von der Bank nicht unterschrieben
D i e L e i s t u n g i s t gemäß § 4 N r . 8 UStG u m s a t z s t e u e r f r e i . U S t - I d - N r . : DE 1 1 4 1 0 3 5 1 4
A113
DO151D/16/04/2010
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
PDFBox Version: 1.8.17
Portfolio Performance Version: 0.72.2
-----------------------------------------
Ihren Auftrag haben wir gemäß unseren Sonderbedingungen für

Wertpapiergeschäfte wie nachstehend ausgeführt. Die Wertpapiere
haben wir der Abrechnung entsprechend gebucht. Wir bitten Sie,
PRIVATE BANKING STUTTGART diese Abrechnung auf ihre Richtigkeit und Vollständigkeit zuüberprüfen und etwaige Einwendungen unverzüglich zu erheben.

GESCHÄFTSABRECHNUNG VOM 27.09.2024
f ü r I h r D i r e k t D e p o t
*
W e r t p a p i e r v e r k a u f

G e s c h ä f t s n u m m e r :
G e s c h ä f t s t a g : 2 7 . 0 9 . 2 0 2 4 A u s f ü h r u n g s p l a t z : STUTTGART
H a n d e l s z e i t : 1 3 : 0 2 U h r (MEZ/MESZ)

W e r t p a p i e r - B e z e i c h n u n g W e r t p a p i e r k e n n n u m m e r
C a n o p y G r o w t h C o r p . A3E2FV
R e g i s t e r e d S h a r e s o . N .
N e n n w e r t Zum K u r s von
S t . 4 EUR 4 , 0 6 5
K u r s w e r t : EUR 1 6 , 2 6
- - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
E i g e n e E n t g e l t e
M i n i m u m p r o v i s i o n : EUR 9 , 9 0 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

F r e m d e K o s t e n

V a r i a b l e B ö r s e n s p e s e n : EUR 3 , 2 5 -

C l e a r s t r e a m - E n t g e l t : EUR 1 , 9 8 -
Summe K o s t e n : EUR 5 , 2 3 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IBAN V a l u t a Zu I h r e n Guns ten v o r S t e u e r n
EUR 0 1 . 1 0 . 2 0 2 4 EUR 1 , 1 3
V e r w a h r u n g s - A r t : WERTPAPIERRECHNUNG KANADA/USA ( A K V )
I h r e W e r t p a p i e r - O r d e r w u r d e ü b e r d a s O n l i n e B a n k i n g e r t e i l t .

A b r e c h n u n g e r f o l g t m i t d e n v e r g ü n s t i g t e n K o n d i t i o n e n d e s D i r e k t D e p o t s .

I n f o r m a t i o n e n z u r s t e u e r l i c h e n B e h a n d l u n g d i e s e s G e s c h ä f t s v o r g a n g s u n d d e n a u f

I h r e m K o n t o g e b u c h t e n E n d b e t r a g f i n d e n S i e a u f d e r s e p a r a t e n S t e u e r m i t t e i l u n g .

C O M M E R Z B A N K

Aktiengesellschaft

Diese Abrechnung wird von der Bank nicht unterschrieben

D i e L e i s t u n g i s t gemäß § 4 N r . 8 UStG u m s a t z s t e u e r f r e i . U S t - I d - N r . : DE 1 1 4 1 0 3 5 1 4
A113
DO151D/16/04/2010
Loading

0 comments on commit cd20daf

Please sign in to comment.