From db4b7776487c808a4f090b36a789d3aa10e2ca08 Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Wed, 15 Apr 2020 21:39:23 +0800 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B5=D0=B4=D0=BC=D0=B5=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=20=D1=80=D0=B0=D1=81=D1=87=D1=91=D1=82=D0=B0=20=D0=B2=20=D0=BC?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=B5=20=D0=B2=20=D1=81=D0=BE?= =?UTF-8?q?=D0=BE=D1=82=D0=B2.=20=D1=81=D0=BE=20=D1=81=D1=85=D0=B5=D0=BC?= =?UTF-8?q?=D0=BE=D0=B9=20(=D0=BD=D0=B5=20=D1=82=D0=B5=D1=81=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=D0=BE=D1=81=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/AtolOnline/Entities/ItemArray.php | 17 ++++++++-- .../Exceptions/AtolTooFewItemsException.php | 34 +++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 src/AtolOnline/Exceptions/AtolTooFewItemsException.php diff --git a/src/AtolOnline/Entities/ItemArray.php b/src/AtolOnline/Entities/ItemArray.php index 6951fb8..151ec79 100644 --- a/src/AtolOnline/Entities/ItemArray.php +++ b/src/AtolOnline/Entities/ItemArray.php @@ -9,6 +9,8 @@ namespace AtolOnline\Entities; +use AtolOnline\Api\SellSchema; +use AtolOnline\Exceptions\AtolTooFewItemsException; use AtolOnline\Exceptions\AtolTooManyItemsException; /** @@ -20,8 +22,10 @@ class ItemArray extends AtolEntity { /** * Максимальное количество элементов в массиве + * По документации ограничение по количеству предметов расчёта = от 1 до 100, + * однако в схеме sell не указан receipt.properties.items.maxItems */ - const MAX_COUNT = 100; + public const MAX_COUNT = 100; /** * @var \AtolOnline\Entities\Item[] Массив предметов расчёта @@ -99,13 +103,20 @@ class ItemArray extends AtolEntity * @param array|null $items Если передать массив, то проверит количество его элементов. * Иначе проверит количество уже присвоенных элементов. * @return bool + * @throws \AtolOnline\Exceptions\AtolTooFewItemsException Слишком мало предметов расчёта * @throws \AtolOnline\Exceptions\AtolTooManyItemsException Слишком много предметов расчёта */ protected function validateCount(array $items = null) { - if (($items && is_array($items) && count($items) >= self::MAX_COUNT) || count($this->items) == self::MAX_COUNT) { + if (!empty($is_items) && is_array($items)) { + if (count($items) < SellSchema::get()->receipt->properties->items->minItems) { + throw new AtolTooFewItemsException(SellSchema::get()->receipt->properties->items->minItems); + } elseif (count($items) <= self::MAX_COUNT) { // maxItems отстутствует в схеме sell + return true; + } + } elseif (count($this->items) > self::MAX_COUNT) { throw new AtolTooManyItemsException(self::MAX_COUNT); } - return true; + return false; } } \ No newline at end of file diff --git a/src/AtolOnline/Exceptions/AtolTooFewItemsException.php b/src/AtolOnline/Exceptions/AtolTooFewItemsException.php new file mode 100644 index 0000000..eb6e6a3 --- /dev/null +++ b/src/AtolOnline/Exceptions/AtolTooFewItemsException.php @@ -0,0 +1,34 @@ +