From 7f80902acdd48f092070deeeca21710651bfb43a Mon Sep 17 00:00:00 2001 From: Paul van Kaam Date: Wed, 4 Nov 2020 14:11:07 +0100 Subject: [PATCH 1/2] Key addition for parser ('F' added) Newer KNAB MT940 files contain an F instead of M. (example: ':60F:C200427EUR12490,07') This addition fixes the parser for these files. --- src/Parser/Banking/Mt940/Engine/Knab.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Parser/Banking/Mt940/Engine/Knab.php b/src/Parser/Banking/Mt940/Engine/Knab.php index d0b88d5..b8a98d6 100644 --- a/src/Parser/Banking/Mt940/Engine/Knab.php +++ b/src/Parser/Banking/Mt940/Engine/Knab.php @@ -30,7 +30,7 @@ protected function parseStatementBank() */ protected function parseStatementStartPrice() { - return $this->parseStatementPrice('60M'); + return $this->parseStatementPrice('60[FM]'); } /** @@ -38,7 +38,7 @@ protected function parseStatementStartPrice() */ protected function parseStatementEndPrice() { - return $this->parseStatementPrice('62M'); + return $this->parseStatementPrice('62[FM]'); } /** @@ -46,7 +46,7 @@ protected function parseStatementEndPrice() */ protected function parseStatementStartTimestamp() { - return $this->parseTimestampFromStatement('60M'); + return $this->parseTimestampFromStatement('60[FM]'); } /** @@ -54,7 +54,7 @@ protected function parseStatementStartTimestamp() */ protected function parseStatementEndTimestamp() { - return $this->parseTimestampFromStatement('62M'); + return $this->parseTimestampFromStatement('62[FM]'); } /** From be06599daa12387f9952f95b0453f38e340c8313 Mon Sep 17 00:00:00 2001 From: Paul van Kaam Date: Wed, 4 Nov 2020 14:49:36 +0100 Subject: [PATCH 2/2] unit test for start and end price --- .../Banking/Mt940/Engine/Knab/ParseTest.php | 25 +++++++++++++++++++ test/Parser/Banking/Mt940/Engine/Knab/sample2 | 10 ++++++++ 2 files changed, 35 insertions(+) create mode 100644 test/Parser/Banking/Mt940/Engine/Knab/sample2 diff --git a/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php index edd116f..a18ed47 100644 --- a/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php @@ -64,4 +64,29 @@ public function testStructuredMt940() { $this->assertEquals('ACHMEA SCHADEVERZEKERINGEN N.V.', $structuredTransaction->getAccountName()); $this->assertEquals('EERSTE MAAND, MAART VERZEKERING 5002100023 310160', $structuredTransaction->getDescription()); } + + + public function testStartPrice() { + $this->engine->loadString(file_get_contents(__DIR__.'/sample')); + $statements = $this->engine->parse(); + $start_price_m = $statements[0]->getStartPrice(); + $this->assertSame(1000.21 , $start_price_m); + + $this->engine->loadString(file_get_contents(__DIR__.'/sample2')); + $statements = $this->engine->parse(); + $start_price_f = $statements[0]->getStartPrice(); + $this->assertSame(12490.07 , $start_price_f); + } + + public function testEndPrice() { + $this->engine->loadString(file_get_contents(__DIR__.'/sample')); + $statements = $this->engine->parse(); + $price_m = $statements[0]->getEndPrice(); + $this->assertSame(945.21 , $price_m); + + $this->engine->loadString(file_get_contents(__DIR__.'/sample2')); + $statements = $this->engine->parse(); + $price_f = $statements[0]->getEndPrice(); + $this->assertSame(13057.49 , $price_f); + } } diff --git a/test/Parser/Banking/Mt940/Engine/Knab/sample2 b/test/Parser/Banking/Mt940/Engine/Knab/sample2 new file mode 100644 index 0000000..158e139 --- /dev/null +++ b/test/Parser/Banking/Mt940/Engine/Knab/sample2 @@ -0,0 +1,10 @@ +{1:F01KNABNL2HAXXX0000000000}{2:I940KNABNL2HXXXXN3020}{4: +:20:C0D28MSTE73HKBCM +:25:NL52RABO0326203011 +:28C:108/1 +:60F:C200427EUR12490,07 +:61:2004270427C567,42N110NONREF//C0D27XM01D000031 +:86:/TRTP/OVERBOEKING/IBAN/123/BIC/SXPYDEHHXX +X/NAME/STRIPE PAYMENTS UK LTD/REMI/SHOPIFY D3DJ2 +:62F:C200428EUR13057,49 +-} \ No newline at end of file