diff --git a/src/AtolOnline/Entities/ItemArray.php b/src/AtolOnline/Entities/ItemArray.php index 2fe3cfd..0b2eaa9 100644 --- a/src/AtolOnline/Entities/ItemArray.php +++ b/src/AtolOnline/Entities/ItemArray.php @@ -28,17 +28,18 @@ class ItemArray extends Entity public const MAX_COUNT = 100; /** - * @var \AtolOnline\Entities\Item[] Массив предметов расчёта + * @var Item[] Массив предметов расчёта */ private $items = []; /** * ItemArray constructor. * - * @param \AtolOnline\Entities\Item[]|null $items Массив предметов расчёта - * @throws \AtolOnline\Exceptions\AtolTooManyItemsException Слишком много предметов расчёта + * @param Item[]|null $items Массив предметов расчёта + * @throws AtolTooFewItemsException Слишком мало предметов расчёта + * @throws AtolTooManyItemsException Слишком много предметов расчёта */ - public function __construct(array $items = null) + public function __construct(?array $items = null) { if ($items) { $this->set($items); @@ -48,9 +49,10 @@ class ItemArray extends Entity /** * Устанавливает массив предметов расчёта * - * @param \AtolOnline\Entities\Item[] $items Массив предметов расчёта + * @param Item[] $items Массив предметов расчёта * @return $this - * @throws \AtolOnline\Exceptions\AtolTooManyItemsException Слишком много предметов расчёта + * @throws AtolTooFewItemsException Слишком мало предметов расчёта + * @throws AtolTooManyItemsException Слишком много предметов расчёта */ public function set(array $items) { @@ -63,9 +65,10 @@ class ItemArray extends Entity /** * Добавляет предмет расчёта в массив * - * @param \AtolOnline\Entities\Item $item Объект предмета расчёта + * @param Item $item Объект предмета расчёта * @return $this - * @throws \AtolOnline\Exceptions\AtolTooManyItemsException Слишком много предметов расчёта + * @throws AtolTooFewItemsException Слишком мало предметов расчёта + * @throws AtolTooManyItemsException Слишком много предметов расчёта */ public function add(Item $item) { @@ -78,7 +81,7 @@ class ItemArray extends Entity /** * Возвращает массив предметов расчёта * - * @return \AtolOnline\Entities\Item[] + * @return Item[] */ public function get() { @@ -100,13 +103,13 @@ class ItemArray extends Entity /** * Проверяет количество предметов расчёта * - * @param array|null $items Если передать массив, то проверит количество его элементов. - * Иначе проверит количество уже присвоенных элементов. + * @param Item[]|null $items Если передать массив, то проверит количество его элементов. + * Иначе проверит количество уже присвоенных элементов. * @return bool true если всё хорошо, иначе выбрасывает исключение - * @throws \AtolOnline\Exceptions\AtolTooFewItemsException Слишком мало предметов расчёта - * @throws \AtolOnline\Exceptions\AtolTooManyItemsException Слишком много предметов расчёта + * @throws AtolTooFewItemsException Слишком мало предметов расчёта + * @throws AtolTooManyItemsException Слишком много предметов расчёта */ - protected function validateCount(array $items = null) + protected function validateCount(?array $items = null) { return empty($items) ? $this->checkCount($this->items) @@ -116,18 +119,18 @@ class ItemArray extends Entity /** * Проверяет количество элементов в указанном массиве * - * @param array|null $items + * @param array|null $elements * @return bool true если всё хорошо, иначе выбрасывает исключение - * @throws \AtolOnline\Exceptions\AtolTooFewItemsException Слишком мало предметов расчёта - * @throws \AtolOnline\Exceptions\AtolTooManyItemsException Слишком много предметов расчёта + * @throws AtolTooFewItemsException Слишком мало предметов расчёта + * @throws AtolTooManyItemsException Слишком много предметов расчёта */ - protected function checkCount(?array $items = null) + protected function checkCount(?array $elements = null) { $min_count = SellSchema::get()->receipt->properties->items->minItems; - $max_count = self::MAX_COUNT; // maxItems отстутствует в схеме sell - if (empty($items) || count($items) < $min_count) { + $max_count = self::MAX_COUNT; // maxItems отсутствует в схеме sell + if (empty($elements) || count($elements) < $min_count) { throw new AtolTooFewItemsException($min_count); - } elseif (count($items) >= $max_count) { + } elseif (count($elements) >= $max_count) { throw new AtolTooManyItemsException($max_count); } else { return true; diff --git a/src/AtolOnline/Entities/PaymentArray.php b/src/AtolOnline/Entities/PaymentArray.php index 7d77188..6d71bb8 100644 --- a/src/AtolOnline/Entities/PaymentArray.php +++ b/src/AtolOnline/Entities/PaymentArray.php @@ -9,6 +9,8 @@ namespace AtolOnline\Entities; +use AtolOnline\Api\SellSchema; +use AtolOnline\Exceptions\AtolTooFewPaymentsException; use AtolOnline\Exceptions\AtolTooManyPaymentsException; /** @@ -18,11 +20,6 @@ use AtolOnline\Exceptions\AtolTooManyPaymentsException; */ class PaymentArray extends Entity { - /** - * Максимальное количество элементов в массиве - */ - const MAX_COUNT = 10; - /** * @var Payment[] Массив оплат */ @@ -32,9 +29,10 @@ class PaymentArray extends Entity * ItemArray constructor. * * @param Payment[]|null $payments Массив оплат + * @throws AtolTooFewPaymentsException Слишком мало оплат * @throws AtolTooManyPaymentsException Слишком много оплат */ - public function __construct(array $payments = null) + public function __construct(?array $payments = null) { if ($payments) { $this->set($payments); @@ -46,6 +44,7 @@ class PaymentArray extends Entity * * @param Payment[] $payments * @return $this + * @throws AtolTooFewPaymentsException Слишком мало оплат * @throws AtolTooManyPaymentsException Слишком много оплат */ public function set(array $payments) @@ -61,6 +60,7 @@ class PaymentArray extends Entity * * @param Payment $payment Объект оплаты * @return $this + * @throws AtolTooFewPaymentsException Слишком мало оплат * @throws AtolTooManyPaymentsException Слишком много оплат */ public function add(Payment $payment) @@ -94,18 +94,39 @@ class PaymentArray extends Entity } /** - * Проверяет количество элементов в массиве + * Проверяет количество налоговых ставок * * @param Payment[]|null $payments Если передать массив, то проверит количество его элементов. * Иначе проверит количество уже присвоенных элементов. - * @return bool + * @return bool true если всё хорошо, иначе выбрасывает исключение + * @throws AtolTooFewPaymentsException Слишком мало оплат * @throws AtolTooManyPaymentsException Слишком много оплат */ - protected function validateCount(array $payments = null) + protected function validateCount(?array $payments = null) { - if (($payments && is_array($payments) && count($payments) >= self::MAX_COUNT) || count($this->payments) == self::MAX_COUNT) { - throw new AtolTooManyPaymentsException(self::MAX_COUNT); + return empty($payments) + ? $this->checkCount($this->payments) + : $this->checkCount($payments); + } + + /** + * Проверяет количество элементов в указанном массиве + * + * @param array $elements + * @return bool true если всё хорошо, иначе выбрасывает исключение + * @throws AtolTooFewPaymentsException Слишком мало оплат + * @throws AtolTooManyPaymentsException Слишком много оплат + */ + protected function checkCount(?array $elements = null) + { + $min_count = SellSchema::get()->receipt->properties->payments->minItems; + $max_count = SellSchema::get()->receipt->properties->payments->maxItems; + if (empty($elements) || count($elements) < $min_count) { + throw new AtolTooFewPaymentsException($min_count); + } elseif (count($elements) >= $max_count) { + throw new AtolTooManyPaymentsException($max_count); + } else { + return true; } - return true; } } \ No newline at end of file diff --git a/src/AtolOnline/Entities/VatArray.php b/src/AtolOnline/Entities/VatArray.php index a790993..2b15f48 100644 --- a/src/AtolOnline/Entities/VatArray.php +++ b/src/AtolOnline/Entities/VatArray.php @@ -32,7 +32,7 @@ class VatArray extends Entity * @throws AtolTooFewVatsException Слишком мало ставок НДС * @throws AtolTooManyVatsException Слишком много ставок НДС */ - public function __construct(array $vats = null) + public function __construct(?array $vats = null) { if ($vats) { $this->set($vats); @@ -112,18 +112,18 @@ class VatArray extends Entity /** * Проверяет количество элементов в указанном массиве * - * @param Vat[]|null $vats + * @param array|null $elements * @return bool true если всё хорошо, иначе выбрасывает исключение * @throws AtolTooFewVatsException Слишком мало ставок НДС * @throws AtolTooManyVatsException Слишком много ставок НДС */ - protected function checkCount(?array $vats = null) + protected function checkCount(?array $elements = null) { $min_count = SellSchema::get()->receipt->properties->vats->minItems; $max_count = SellSchema::get()->receipt->properties->vats->maxItems; - if (empty($vats) || count($vats) < $min_count) { + if (empty($elements) || count($elements) < $min_count) { throw new AtolTooFewVatsException($min_count); - } elseif (count($vats) >= $max_count) { + } elseif (count($elements) >= $max_count) { throw new AtolTooManyVatsException($max_count); } else { return true; diff --git a/src/AtolOnline/Exceptions/AtolTooFewPaymentsException.php b/src/AtolOnline/Exceptions/AtolTooFewPaymentsException.php new file mode 100644 index 0000000..bea61e5 --- /dev/null +++ b/src/AtolOnline/Exceptions/AtolTooFewPaymentsException.php @@ -0,0 +1,34 @@ +