From 3fca94c90f9133732a4203036e031b355bd66573 Mon Sep 17 00:00:00 2001 From: Danny van der Sluijs Date: Thu, 1 Aug 2024 14:33:21 +0200 Subject: [PATCH] feat: Add FWAV, INFO, ITAV, ITBD and XPCD balance types --- src/DTO/Balance.php | 35 +++++++++++++++++++++++++++++++++++ src/Decoder/Record.php | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/src/DTO/Balance.php b/src/DTO/Balance.php index d068de1..86dd2d2 100644 --- a/src/DTO/Balance.php +++ b/src/DTO/Balance.php @@ -17,6 +17,16 @@ class Balance public const TYPE_CLOSING_AVAILABLE = 'closing_available'; + public const TYPE_FORWARD_AVAILABLE = 'forward_available'; + + public const TYPE_INFORMATION = 'information'; + + public const TYPE_INTERIM = 'interim'; + + public const TYPE_INTERIM_AVAILABLE = 'interim_available'; + + public const TYPE_EXPECTED_CREDIT = 'expected_credit'; + private Money $amount; private string $type; @@ -64,4 +74,29 @@ public static function closingAvailable(Money $amount, DateTimeImmutable $date): { return new self(self::TYPE_CLOSING_AVAILABLE, $amount, $date); } + + public static function forwardAvailable(Money $amount, DateTimeImmutable $date): self + { + return new self(self::TYPE_FORWARD_AVAILABLE, $amount, $date); + } + + public static function information(Money $amount, DateTimeImmutable $date): self + { + return new self(self::TYPE_INFORMATION, $amount, $date); + } + + public static function interim(Money $amount, DateTimeImmutable $date): self + { + return new self(self::TYPE_INTERIM, $amount, $date); + } + + public static function interimAvailable(Money $amount, DateTimeImmutable $date): self + { + return new self(self::TYPE_INTERIM_AVAILABLE, $amount, $date); + } + + public static function expectedCredit(Money $amount, DateTimeImmutable $date): self + { + return new self(self::TYPE_EXPECTED_CREDIT, $amount, $date); + } } diff --git a/src/Decoder/Record.php b/src/Decoder/Record.php index b468aa4..ff66924 100644 --- a/src/Decoder/Record.php +++ b/src/Decoder/Record.php @@ -68,6 +68,42 @@ public function addBalances(RecordWithBalances $record, SimpleXMLElement $xmlRec $date )); + break; + case 'FWAV': + $record->addBalance(DTO\Balance::forwardAvailable( + $money, + $date + )); + + break; + case 'INFO': + $record->addBalance(DTO\Balance::information( + $money, + $date + )); + + break; + case 'ITAV': + $record->addBalance(DTO\Balance::interimAvailable( + $money, + $date + )); + + break; + case 'ITDB': + $record->addBalance(DTO\Balance::interim( + $money, + $date + )); + + break; + + case 'XPCD': + $record->addBalance(DTO\Balance::expectedCredit( + $money, + $date + )); + break; default: break;