setInn($inn) ->setPaymentAddress($paymentAddress) ->setEmail($email); } /** * Возвращает установленный тип налогообложения * * @return SnoType */ public function getSno(): SnoType { return $this->sno; } /** * Устанавливает тип налогообложения * * @param SnoType $sno * @return $this */ public function setSno(SnoType $sno): self { $this->sno = $sno; return $this; } /** * Возвращает установленный адрес места расчётов * * @return string */ public function getPaymentAddress(): string { return $this->paymentAddress; } /** * Устанавливает адрес места расчётов * * @param string $paymentAddress * @return $this * @throws TooLongPaymentAddressException * @throws InvalidPaymentAddressException */ public function setPaymentAddress(string $paymentAddress): self { $paymentAddress = trim($paymentAddress); if (empty($paymentAddress)) { throw new InvalidPaymentAddressException(); } elseif (mb_strlen($paymentAddress) > Constraints::MAX_LENGTH_PAYMENT_ADDRESS) { throw new TooLongPaymentAddressException($paymentAddress); } $this->paymentAddress = $paymentAddress; return $this; } /** * @inheritDoc */ #[ArrayShape([ 'sno' => 'string', 'email' => 'string', 'inn' => 'string', 'payment_address' => 'string', ])] public function jsonSerialize(): array { return [ 'inn' => $this->getInn(), 'sno' => $this->getSno(), 'payment_address' => $this->getPaymentAddress(), 'email' => $this->getEmail(), ]; } }