diff --git a/lib/Fhp/Action/GetSEPADirectDebitParameters.php b/lib/Fhp/Action/GetSEPADirectDebitParameters.php index 386204d7..c953b504 100644 --- a/lib/Fhp/Action/GetSEPADirectDebitParameters.php +++ b/lib/Fhp/Action/GetSEPADirectDebitParameters.php @@ -14,10 +14,10 @@ class GetSEPADirectDebitParameters extends BaseAction { const SEQUENCE_TYPES = ['FRST', 'OOFF', 'FNAL', 'RCUR']; - const CORE_TYPES = ['CORE', 'COR1', 'B2B']; + const DIRECT_DEBIT_TYPES = ['CORE', 'COR1', 'B2B']; /** @var string */ - private $coreType; + private $directDebitType; /** @var string */ private $seqType; @@ -28,49 +28,51 @@ class GetSEPADirectDebitParameters extends BaseAction /** @var HIDXES */ private $hidxes; - public static function create(string $seqType, bool $singleDirectDebit, string $coreType = 'CORE') + public static function create(string $seqType, bool $singleDirectDebit, string $directDebitType = 'CORE') { - if (!in_array($coreType, self::CORE_TYPES)) { - throw new \InvalidArgumentException('Unknown CORE type, possible values are ' . implode(', ', self::CORE_TYPES)); + if (!in_array($directDebitType, self::DIRECT_DEBIT_TYPES)) { + throw new \InvalidArgumentException('Unknown CORE type, possible values are ' . implode(', ', self::DIRECT_DEBIT_TYPES)); } if (!in_array($seqType, self::SEQUENCE_TYPES)) { throw new \InvalidArgumentException('Unknown SEPA sequence type, possible values are ' . implode(', ', self::SEQUENCE_TYPES)); } $result = new GetSEPADirectDebitParameters(); - $result->coreType = $coreType; + $result->directDebitType = $directDebitType; $result->seqType = $seqType; $result->singleDirectDebit = $singleDirectDebit; return $result; } - public static function getHixxesSegmentName(string $coreType, bool $singleDirectDebit): string + public static function getHixxesSegmentName(string $directDebitType, bool $singleDirectDebit): string { - switch ($coreType) { + switch ($directDebitType) { case 'CORE': case 'COR1': return $singleDirectDebit ? 'HIDSES' : 'HIDMES'; case 'B2B': return $singleDirectDebit ? 'HIBSES' : 'HIBMES'; default: - throw new \InvalidArgumentException('Unknown CORE type, possible values are ' . implode(', ', self::CORE_TYPES)); + throw new \InvalidArgumentException('Unknown DirectDebitTypes type, possible values are ' . implode(', ', self::DIRECT_DEBIT_TYPES)); } } /** {@inheritdoc} */ protected function createRequest(BPD $bpd, ?UPD $upd) { - $this->hidxes = $bpd->requireLatestSupportedParameters(static::getHixxesSegmentName($this->coreType, $this->singleDirectDebit)); - + $this->hidxes = $bpd->requireLatestSupportedParameters(static::getHixxesSegmentName($this->directDebitType, $this->singleDirectDebit)); $this->isDone = true; - return []; // No request to the bank required } /** - * @return MinimaleVorlaufzeitSEPALastschrift|null The information about the lead time for the given Sequence Type and Core Type + * @return MinimaleVorlaufzeitSEPALastschrift|null The information about the lead time for the given Sequence Type and Direct Debit Type */ public function getMinimalLeadTime(): ?MinimaleVorlaufzeitSEPALastschrift { - return $this->hidxes->getParameter()->getMinimalLeadTime($this->seqType, $this->coreType); + $parsed = $this->hidxes->getParameter()->getMinimalLeadTime($this->seqType); + if ($parsed instanceof MinimaleVorlaufzeitSEPALastschrift) { + return $parsed; + } + return $parsed[$this->directDebitType] ?? null; } } diff --git a/lib/Fhp/Segment/BME/ParameterTerminierteSEPASammellastschriftEinreichenV1.php b/lib/Fhp/Segment/BME/ParameterTerminierteSEPASammellastschriftEinreichenV1.php deleted file mode 100755 index eb497406..00000000 --- a/lib/Fhp/Segment/BME/ParameterTerminierteSEPASammellastschriftEinreichenV1.php +++ /dev/null @@ -1,17 +0,0 @@ -minimaleVorlaufzeitFRSTOOFF : $this->minimaleVorlaufzeitFNALRCUR; return MinimaleVorlaufzeitSEPALastschrift::create($leadTime, '235959'); diff --git a/lib/Fhp/Segment/BSE/ParameterTerminierteSEPAFirmenLastschriftEinreichenV2.php b/lib/Fhp/Segment/BSE/ParameterTerminierteSEPAFirmenLastschriftEinreichenV2.php index 79c4f7bc..022c1754 100755 --- a/lib/Fhp/Segment/BSE/ParameterTerminierteSEPAFirmenLastschriftEinreichenV2.php +++ b/lib/Fhp/Segment/BSE/ParameterTerminierteSEPAFirmenLastschriftEinreichenV2.php @@ -14,9 +14,11 @@ abstract class ParameterTerminierteSEPAFirmenLastschriftEinreichenV2 extends Bas /** @var string */ public $maximaleVorlaufzeitCodiert; - public function getMinimalLeadTime(string $seqType, string $coreType = 'CORE'): ?MinimaleVorlaufzeitSEPALastschrift + /** @return MinimaleVorlaufzeitSEPALastschrift[] */ + public function getMinimalLeadTime(string $seqType) { - $parsed = MinimaleVorlaufzeitSEPALastschrift::parseCodedB2B($this->minimaleVorlaufzeitCodiert); - return $parsed[$seqType] ?? null; + return array_map(function ($value) use ($seqType) { + return $value[$seqType] ?? null; + }, MinimaleVorlaufzeitSEPALastschrift::parseCodedB2B($this->minimaleVorlaufzeitCodiert)); } } diff --git a/lib/Fhp/Segment/DSE/MinimaleVorlaufzeitSEPALastschrift.php b/lib/Fhp/Segment/DSE/MinimaleVorlaufzeitSEPALastschrift.php index f33277d1..1a673a4b 100644 --- a/lib/Fhp/Segment/DSE/MinimaleVorlaufzeitSEPALastschrift.php +++ b/lib/Fhp/Segment/DSE/MinimaleVorlaufzeitSEPALastschrift.php @@ -64,14 +64,14 @@ public static function parseCoded(string $coded): array return $result; } - /** @return MinimaleVorlaufzeitSEPALastschrift[]|array */ + /** @return MinimaleVorlaufzeitSEPALastschrift[][]|array */ public static function parseCodedB2B(string $coded): array { $result = []; foreach (array_chunk(explode(';', $coded), 3) as list($sequenceTypeCodiert, $minimaleSEPAVorlaufzeit, $cutOffZeit)) { $seqTypes = self::SEQUENCE_TYPE_CODIERT[$sequenceTypeCodiert] ?? []; foreach ($seqTypes as $seqType) { - $result[$seqType] = MinimaleVorlaufzeitSEPALastschrift::create($minimaleSEPAVorlaufzeit, $cutOffZeit, null, $sequenceTypeCodiert); + $result['B2B'][$seqType] = MinimaleVorlaufzeitSEPALastschrift::create($minimaleSEPAVorlaufzeit, $cutOffZeit, null, $sequenceTypeCodiert); } } return $result; diff --git a/lib/Fhp/Segment/DSE/ParameterTerminierteSEPAEinzellastschriftEinreichenV1.php b/lib/Fhp/Segment/DSE/ParameterTerminierteSEPAEinzellastschriftEinreichenV1.php index e205ad04..b03bfb84 100644 --- a/lib/Fhp/Segment/DSE/ParameterTerminierteSEPAEinzellastschriftEinreichenV1.php +++ b/lib/Fhp/Segment/DSE/ParameterTerminierteSEPAEinzellastschriftEinreichenV1.php @@ -18,7 +18,7 @@ class ParameterTerminierteSEPAEinzellastschriftEinreichenV1 extends BaseDeg impl /** @var int */ public $maximaleVorlaufzeitFRSTOOFF; - public function getMinimalLeadTime(string $seqType, string $coreType = 'CORE'): ?MinimaleVorlaufzeitSEPALastschrift + public function getMinimalLeadTime(string $seqType): ?MinimaleVorlaufzeitSEPALastschrift { $leadTime = in_array($seqType, ['FRST', 'OOFF']) ? $this->minimaleVorlaufzeitFRSTOOFF : $this->minimaleVorlaufzeitFNALRCUR; return MinimaleVorlaufzeitSEPALastschrift::create($leadTime, '235959'); diff --git a/lib/Fhp/Segment/DSE/ParameterTerminierteSEPALastschriftEinreichenV2.php b/lib/Fhp/Segment/DSE/ParameterTerminierteSEPALastschriftEinreichenV2.php index 66f535b6..fc982cc5 100755 --- a/lib/Fhp/Segment/DSE/ParameterTerminierteSEPALastschriftEinreichenV2.php +++ b/lib/Fhp/Segment/DSE/ParameterTerminierteSEPALastschriftEinreichenV2.php @@ -12,9 +12,10 @@ abstract class ParameterTerminierteSEPALastschriftEinreichenV2 extends BaseDeg i /** @var string */ public $maximaleVorlaufzeitCodiert; - public function getMinimalLeadTime(string $seqType, string $coreType = 'CORE'): ?MinimaleVorlaufzeitSEPALastschrift + public function getMinimalLeadTime(string $seqType) { - $parsed = MinimaleVorlaufzeitSEPALastschrift::parseCoded($this->minimaleVorlaufzeitCodiert); - return $parsed[$coreType][$seqType] ?? null; + return array_map(function ($value) use ($seqType) { + return $value[$seqType] ?? null; + }, MinimaleVorlaufzeitSEPALastschrift::parseCoded($this->minimaleVorlaufzeitCodiert)); } } diff --git a/lib/Fhp/Segment/DSE/SEPADirectDebitMinimalLeadTimeProvider.php b/lib/Fhp/Segment/DSE/SEPADirectDebitMinimalLeadTimeProvider.php index 81be43e8..00c82dc6 100644 --- a/lib/Fhp/Segment/DSE/SEPADirectDebitMinimalLeadTimeProvider.php +++ b/lib/Fhp/Segment/DSE/SEPADirectDebitMinimalLeadTimeProvider.php @@ -4,5 +4,6 @@ interface SEPADirectDebitMinimalLeadTimeProvider { - public function getMinimalLeadTime(string $seqType, string $coreType = 'CORE'): ?MinimaleVorlaufzeitSEPALastschrift; + /** @return MinimaleVorlaufzeitSEPALastschrift|MinimaleVorlaufzeitSEPALastschrift[]*/ + public function getMinimalLeadTime(string $seqType); }