setType($type); } if ($rate !== null) { $this->setRate($rate); } if ($amount !== null) { $this->setAmount($amount); } } /** * @return string Способ расчёта НДС */ public function getType() { return $this->_type; } /** * Устанавливает способ расчёта НДС * @param string $value Способ расчёта НДС * * @throws InvalidPropertyValueException Выбрасывается если переданная строка не является валидным способом * @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка */ public function setType($value) { if (TypeCast::canCastToEnumString($value)) { if (!VatDataType::valueExists((string)$value)) { throw new InvalidPropertyValueException('Invalid B2bSberbankVatData.type value', 0, 'B2bSberbankVatData.type', $value); } $this->_type = (string)$value; } else { throw new InvalidPropertyValueTypeException( 'Invalid B2bSberbankVatData.type value type', 0, 'B2bSberbankVatData.type', $value ); } } /** * @return string Налоговая ставка НДС */ public function getRate() { return $this->_rate; } /** * Устанавливает налоговую ставку НДС * @param string $value Налоговая ставка НДС * * @throws InvalidPropertyValueException Выбрасывается если переданная строка не является валидной ставкой * @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка */ public function setRate($value) { if (TypeCast::canCastToString($value)) { if (!VatDataRate::valueExists((string)$value)) { throw new InvalidPropertyValueException('Invalid B2bSberbankVatData.rate value', 0, 'B2bSberbankVatData.rate', $value); } $this->_rate = (string)$value; } else { throw new InvalidPropertyValueTypeException( 'Invalid B2bSberbankVatData.rate value type', 0, 'B2bSberbankVatData.rate', $value ); } } /** * Возвращает сумму НДС * @return AmountInterface Сумма НДС */ public function getAmount() { return $this->_amount; } /** * Устанавливает сумму НДС * @param AmountInterface|array|null $value Сумма НДС */ public function setAmount($value) { if ($value === null) { $this->_amount = null; } elseif ($value instanceof AmountInterface) { $this->_amount = $value; } elseif (is_array($value)) { $this->_amount = new MonetaryAmount(); $this->_amount->fromArray($value); } else { throw new InvalidPropertyValueTypeException( 'Invalid B2bSberbankVatData.amount value type', 0, 'B2bSberbankVatData.amount', $value ); } } }