directDebitType = $directDebitType; $result->seqType = $seqType; $result->singleDirectDebit = $singleDirectDebit; return $result; } public static function getHixxesSegmentName(string $directDebitType, bool $singleDirectDebit): string { switch ($directDebitType) { case 'CORE': case 'COR1': return $singleDirectDebit ? 'HIDSES' : 'HIDMES'; case 'B2B': return $singleDirectDebit ? 'HIBSES' : 'HIBMES'; default: 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->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 Direct Debit Type */ public function getMinimalLeadTime(): ?MinimaleVorlaufzeitSEPALastschrift { $parsed = $this->hidxes->getParameter()->getMinimalLeadTime($this->seqType); if ($parsed instanceof MinimaleVorlaufzeitSEPALastschrift) { return $parsed; } return $parsed[$this->directDebitType] ?? null; } }