_type; } /** * Устанавливает вид оплаты в чеке. * * @param string|null $type Тип расчета. * * @return self */ public function setType(?string $type = null): self { $this->_type = $this->validatePropertyValue('_type', $type); return $this; } /** * Возвращает размер оплаты. * * @return AmountInterface Размер оплаты */ public function getAmount(): ?AmountInterface { return $this->_amount; } /** * Устанавливает сумму платежа. * * @param AmountInterface|array|null $value Сумма платежа */ public function setAmount(mixed $value): void { if (null === $value || '' === $value) { throw new EmptyPropertyValueException( 'Empty value for "amount" parameter in Settlement', 0, 'settlement.amount' ); } if (is_array($value)) { $this->_amount = $this->factoryAmount($value); } elseif ($value instanceof AmountInterface) { $this->_amount = $value; } else { throw new InvalidPropertyValueTypeException( 'Invalid value type for "amount" parameter in Settlement', 0, 'settlement.amount', $value ); } } /** * Фабричный метод создания суммы. * * @param array $options Сумма в виде ассоциативного массива * * @return AmountInterface Созданный инстанс суммы */ private function factoryAmount(array $options): AmountInterface { $amount = new MonetaryAmount(null, $options['currency']); if ($options['value'] > 0) { $amount->setValue($options['value']); } return $amount; } }