diff --git a/src/Parser/Banking/Mt940/Engine.php b/src/Parser/Banking/Mt940/Engine.php index c1405f1..df8288e 100644 --- a/src/Parser/Banking/Mt940/Engine.php +++ b/src/Parser/Banking/Mt940/Engine.php @@ -29,9 +29,7 @@ abstract class Engine 800 => Engine\Bunq::class, 900 => Engine\Penta::class, 1000 => Engine\Asn::class, - 1100 => Engine\Kbs::class, - 1200 => Engine\Zetb::class, - 1300 => Engine\Kontist::class, + 1100 => Engine\Btrl::class, ]; /** @@ -594,7 +592,7 @@ protected function sanitizeTimestamp($string, $inFormat = 'ymd') $date = \DateTime::createFromFormat($inFormat, $string); $date->setTime(0, 0); if ($date !== false) { - return (int) $date->format('U'); + return (int)$date->format('U'); } return 0; @@ -617,7 +615,7 @@ protected function sanitizeDescription($string) */ protected function sanitizeDebitCredit($string) { - $debitOrCredit = strtoupper(substr((string) $string, 0, 1)); + $debitOrCredit = strtoupper(substr((string)$string, 0, 1)); if ($debitOrCredit !== Transaction::DEBIT && $debitOrCredit !== Transaction::CREDIT) { trigger_error('wrong value for debit/credit (' . $string . ')', E_USER_ERROR); $debitOrCredit = ''; @@ -635,6 +633,6 @@ protected function sanitizePrice($string) { $floatPrice = ltrim(str_replace(',', '.', strip_tags(trim($string))), '0'); - return (float) $floatPrice; + return (float)$floatPrice; } } diff --git a/src/Parser/Banking/Mt940/Engine/Btrl.php b/src/Parser/Banking/Mt940/Engine/Btrl.php new file mode 100644 index 0000000..044dc5f --- /dev/null +++ b/src/Parser/Banking/Mt940/Engine/Btrl.php @@ -0,0 +1,48 @@ +getCurrentTransactionData(), $results) + && !empty($results[1]) + ) { + return $this->sanitizePrice($results[1]); + } + + return 0; + } + + + /** + * + * {@inheritdoc} + * @see \Kingsquare\Parser\Banking\Mt940\Engine::isApplicable() + */ + public static function isApplicable($string) + { + $firstline = strtok($string, "\r\n\t"); + + return strpos($firstline, 'BTRL') !== false; + } +} diff --git a/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php index 92bbdbd..46470ce 100644 --- a/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Abn/ParseTest.php @@ -7,27 +7,27 @@ /** * */ -class ParseTest extends \PHPUnit_Framework_TestCase +class ParseTest extends \PHPUnit\Framework\TestCase { /** * @var Abn */ private $engine; - protected function setUp() + protected function setUp(): void { $this->engine = new Abn(); $this->engine->loadString(file_get_contents(__DIR__.'/sample')); } - public function testParseStatementBank() + public function testParseStatementBank():void { $method = new \ReflectionMethod($this->engine, 'parseStatementBank'); $method->setAccessible(true); $this->assertEquals('ABN', $method->invoke($this->engine)); } - public function testParsesAllFoundStatements() + public function testParsesAllFoundStatements():void { $statements = $this->engine->parse(); @@ -78,22 +78,4 @@ public function testIssue48() $this->assertEquals('15-12-2016', $transactions[1]->getValueTimestamp('d-m-Y')); $this->assertEquals('15-12-2016', $transactions[1]->getEntryTimestamp('d-m-Y')); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('D', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(7.5, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php index 0293593..7b14daf 100644 --- a/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Asn/ParseTest.php @@ -48,22 +48,4 @@ public function testParseTransactionEntryTimestamp() $lastTransaction = end($transactions); $this->assertEquals('02-01-2020', $lastTransaction->getEntryTimestamp('d-m-Y')); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('D', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(2000, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Btrl/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Btrl/ParseTest.php new file mode 100644 index 0000000..766cf4c --- /dev/null +++ b/test/Parser/Banking/Mt940/Engine/Btrl/ParseTest.php @@ -0,0 +1,39 @@ +engine = new Btrl(); + $this->engine->loadString(file_get_contents(__DIR__.'/sample')); + } + + public function testParseStatementBank():void + { + $method = new \ReflectionMethod($this->engine, 'parseStatementBank'); + $method->setAccessible(true); + $this->assertEquals('BTRL', $method->invoke($this->engine)); + } + + public function testParseTransactionPrice(): void + { + $statements = $this->engine->parse(); + $this->assertCount(1, $statements); + $transactions = $statements[0]->getTransactions(); + + $this->assertEquals('980.42', $transactions[0]->getPrice()); + } + +} diff --git a/test/Parser/Banking/Mt940/Engine/Btrl/sample b/test/Parser/Banking/Mt940/Engine/Btrl/sample new file mode 100644 index 0000000..f1fd7c7 --- /dev/null +++ b/test/Parser/Banking/Mt940/Engine/Btrl/sample @@ -0,0 +1,16 @@ +{1:F01BTRLRO22AXXX1111111111}{2:I940BTRLRO22XXXXN}{3:{108:005MSOG2109700AI}}{4: +:20:005RONCRT0072583603 +:25:RO21BTRLRONCRT0072583603 +:28C:00004/00001 +:60F:C210406RON0, +:61:2104060406C980,42FTRFNONREF//005z001210960373 +:86:Card 5487-6174 ID005696ER 04/04/21 Ora 22:44:12 RRN 005481058051 +ECOMM 551 Plata factura DV - 20666 - 723121 +Data entry carduri REF. 005z001210960373 +:61:2104060406C418,37FTRFNONREF//005z001210960481 +:86:Card 5299-2132 ID005696ER 05/04/21 Ora 08:14:25 RRN 005481324613 +:86:transf in ct.crt +Transfer intern - canal electronic REF. 405ECIT210960154 +:62F:C210406RON0, +:64:C210406RON0,00 +-} diff --git a/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php index b189a6c..e195867 100644 --- a/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Bunq/ParseTest.php @@ -51,22 +51,4 @@ public function testParseTransactionEntryTimestamp() $lastTransaction = end($transactions); $this->assertEquals('24-05-2019', $lastTransaction->getEntryTimestamp('d-m-Y')); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('C', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(2, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php index abe9e1b..078586e 100644 --- a/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Ing/ParseTest.php @@ -54,22 +54,4 @@ public function testParseTransactionEntryTimestamp() $lastTransaction = end($transactions); $this->assertEquals('2010-07-21', $lastTransaction->getEntryTimestamp('Y-m-d')); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('C', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(25.03, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php index 0d99763..a18ed47 100644 --- a/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Knab/ParseTest.php @@ -89,22 +89,4 @@ public function testEndPrice() { $price_f = $statements[0]->getEndPrice(); $this->assertSame(13057.49 , $price_f); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('D', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(15, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php index 40a58f2..4882d12 100644 --- a/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Penta/ParseTest.php @@ -52,22 +52,4 @@ public function testParseTransactionEntryTimestamp() $lastTransaction = end($transactions); $this->assertEquals('30-09-2020', $lastTransaction->getEntryTimestamp('d-m-Y')); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('D', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(20, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php index 2eb2bc2..56b217c 100644 --- a/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Rabo/ParseTest.php @@ -108,22 +108,4 @@ public function testHandlingOfPREF() { $statements = $this->engine->parse(); $this->assertSame('PmtInfId-20151208-987', $statements[0]->getTransactions()[1]->getDescription()); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = $statements[5]->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('C', $firstTransaction->getDebitCredit()); - } - - public function testParseTransactionPrice() - { - $statements = $this->engine->parse(); - $transactions = $statements[5]->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals(500, $firstTransaction->getPrice()); - } } diff --git a/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php b/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php index 68b0cce..0c494a8 100644 --- a/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php +++ b/test/Parser/Banking/Mt940/Engine/Spk/ParseTest.php @@ -51,13 +51,4 @@ public function testParsesAllFoundStatements() $this->assertEquals('18-02-2010', $last->getStartTimestamp('d-m-Y')); $this->assertEquals('18-02-2010', $last->getEndTimestamp('d-m-Y')); } - - public function testParseTransactionDebitCredit() - { - $statements = $this->engine->parse(); - $transactions = reset($statements)->getTransactions(); - $firstTransaction = reset($transactions); - - $this->assertEquals('C', $firstTransaction->getDebitCredit()); - } }