From 65ec6390149a14086e532a4ec49f70ce547a45ba Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Fri, 3 Dec 2021 23:52:41 +0800 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BA=D1=80=D1=83=D0=B3=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=86=D0=B5=D0=BD=D1=8B=20=D0=B8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=B0=20=D0=B2?= =?UTF-8?q?=20=D1=81=D0=B5=D1=82=D1=8C=D0=B5=D1=80=D0=B0=D1=85=20`Item`=20?= =?UTF-8?q?=D0=B4=D0=BE=202=20=D0=B8=203=20=D0=B7=D0=BD=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=8F=D1=82=D0=BE=D0=B9?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Также переименованы исключения о слишком высоких цене и сумме предмета расчёта, чтобы избежать конфликтов с другими --- src/Entities/Item.php | 37 +++++----- ...tion.php => TooHighItemPriceException.php} | 4 +- ...eption.php => TooHighItemSumException.php} | 6 +- tests/AtolOnline/Tests/Entities/ItemTest.php | 74 +++++++++---------- 4 files changed, 61 insertions(+), 60 deletions(-) rename src/Exceptions/{TooHighPriceException.php => TooHighItemPriceException.php} (90%) rename src/Exceptions/{TooHighSumException.php => TooHighItemSumException.php} (85%) diff --git a/src/Entities/Item.php b/src/Entities/Item.php index 0372fc3..e82bd7c 100644 --- a/src/Entities/Item.php +++ b/src/Entities/Item.php @@ -25,9 +25,9 @@ use AtolOnline\Exceptions\{ NegativeItemExciseException, NegativeItemPriceException, NegativeItemQuantityException, + TooHighItemPriceException, TooHighItemQuantityException, - TooHighPriceException, - TooHighSumException, + TooHighItemSumException, TooLongItemCodeException, TooLongItemNameException, TooLongMeasurementUnitException, @@ -124,7 +124,7 @@ final class Item extends Entity * @param float|null $price Цена за одну единицу * @param float|null $quantity Количество * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -184,21 +184,22 @@ final class Item extends Entity /** * Устанавливает цену в рублях * - * @param float $rubles + * @param float $price * @return $this * @throws NegativeItemPriceException - * @throws TooHighPriceException - * @throws TooHighSumException + * @throws TooHighItemPriceException + * @throws TooHighItemSumException */ - public function setPrice(float $rubles): self + public function setPrice(float $price): self { - if ($rubles > Constraints::MAX_COUNT_ITEM_PRICE) { - throw new TooHighPriceException($this->getName(), $rubles); + $price = round($price, 2); + if ($price > Constraints::MAX_COUNT_ITEM_PRICE) { + throw new TooHighItemPriceException($this->getName(), $price); } - if ($rubles < 0) { - throw new NegativeItemPriceException($this->getName(), $rubles); + if ($price < 0) { + throw new NegativeItemPriceException($this->getName(), $price); } - $this->price = $rubles; + $this->price = $price; $this->getVat()?->setSum($this->getSum()); return $this; } @@ -220,7 +221,7 @@ final class Item extends Entity * @return $this * @throws TooHighItemQuantityException * @throws NegativeItemQuantityException - * @throws TooHighSumException + * @throws TooHighItemSumException */ public function setQuantity(float $quantity): self { @@ -240,13 +241,13 @@ final class Item extends Entity * Возвращает стоимость (цена * количество + акциз) * * @return float - * @throws TooHighSumException + * @throws TooHighItemSumException */ public function getSum(): float { $sum = $this->getPrice() * $this->getQuantity() + (float)$this->getExcise(); if ($sum > Constraints::MAX_COUNT_ITEM_SUM) { - throw new TooHighSumException($this->getName(), $sum); + throw new TooHighItemSumException($this->getName(), $sum); } return $sum; } @@ -386,7 +387,7 @@ final class Item extends Entity * * @param Vat|string|null $vat Объект ставки, одно из значений VatTypes или null для удаления ставки * @return $this - * @throws TooHighSumException + * @throws TooHighItemSumException * @throws InvalidEnumValueException */ public function setVat(Vat|string|null $vat): self @@ -490,7 +491,7 @@ final class Item extends Entity * @param float|null $excise * @return Item * @throws NegativeItemExciseException - * @throws TooHighSumException + * @throws TooHighItemSumException */ public function setExcise(?float $excise): self { @@ -567,7 +568,7 @@ final class Item extends Entity /** * @inheritDoc - * @throws TooHighSumException + * @throws TooHighItemSumException */ public function jsonSerialize(): array { diff --git a/src/Exceptions/TooHighPriceException.php b/src/Exceptions/TooHighItemPriceException.php similarity index 90% rename from src/Exceptions/TooHighPriceException.php rename to src/Exceptions/TooHighItemPriceException.php index 2e2d286..61a813d 100644 --- a/src/Exceptions/TooHighPriceException.php +++ b/src/Exceptions/TooHighItemPriceException.php @@ -15,9 +15,9 @@ use AtolOnline\Constants\Constraints; use AtolOnline\Constants\Ffd105Tags; /** - * Исключение, возникающее при попытке указать слишком высокую цену (сумму) + * Исключение, возникающее при попытке указать слишком высокую цену (сумму) предмета расчёта */ -class TooHighPriceException extends TooManyException +class TooHighItemPriceException extends TooManyException { protected array $ffd_tags = [Ffd105Tags::ITEM_PRICE]; protected float $max = Constraints::MAX_COUNT_ITEM_PRICE; diff --git a/src/Exceptions/TooHighSumException.php b/src/Exceptions/TooHighItemSumException.php similarity index 85% rename from src/Exceptions/TooHighSumException.php rename to src/Exceptions/TooHighItemSumException.php index 9fd4073..b296bee 100644 --- a/src/Exceptions/TooHighSumException.php +++ b/src/Exceptions/TooHighItemSumException.php @@ -15,12 +15,12 @@ use AtolOnline\Constants\Constraints; use AtolOnline\Constants\Ffd105Tags; /** - * Исключение, возникающее при попытке получеиня слишком высокой стоимости + * Исключение, возникающее при попытке получеиня слишком высокой стоимости предмета расчёта */ -class TooHighSumException extends TooManyException +class TooHighItemSumException extends TooManyException { protected array $ffd_tags = [Ffd105Tags::ITEM_SUM]; - protected float $max = Constraints::MAX_COUNT_ITEM_PRICE; + protected float $max = Constraints::MAX_COUNT_ITEM_SUM; /** * Конструктор diff --git a/tests/AtolOnline/Tests/Entities/ItemTest.php b/tests/AtolOnline/Tests/Entities/ItemTest.php index 58a2a86..f55aa2e 100644 --- a/tests/AtolOnline/Tests/Entities/ItemTest.php +++ b/tests/AtolOnline/Tests/Entities/ItemTest.php @@ -31,9 +31,9 @@ use AtolOnline\{ Exceptions\NegativeItemExciseException, Exceptions\NegativeItemPriceException, Exceptions\NegativeItemQuantityException, + Exceptions\TooHighItemPriceException, Exceptions\TooHighItemQuantityException, - Exceptions\TooHighPriceException, - Exceptions\TooHighSumException, + Exceptions\TooHighItemSumException, Exceptions\TooLongItemCodeException, Exceptions\TooLongItemNameException, Exceptions\TooLongMeasurementUnitException, @@ -62,7 +62,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::getSum * @covers \AtolOnline\Entities\Item::jsonSerialize * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -88,7 +88,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setName * @covers \AtolOnline\Exceptions\TooLongItemNameException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -107,7 +107,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setName * @covers \AtolOnline\Exceptions\EmptyItemNameException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -124,9 +124,9 @@ class ItemTest extends BasicTestCase * * @covers \AtolOnline\Entities\Item * @covers \AtolOnline\Entities\Item::setPrice - * @covers \AtolOnline\Exceptions\TooHighPriceException + * @covers \AtolOnline\Exceptions\TooHighItemPriceException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -134,7 +134,7 @@ class ItemTest extends BasicTestCase */ public function testTooHighPriceException(): void { - $this->expectException(TooHighPriceException::class); + $this->expectException(TooHighItemPriceException::class); new Item('test', Constraints::MAX_COUNT_ITEM_PRICE + 0.1, 3); } @@ -143,12 +143,12 @@ class ItemTest extends BasicTestCase * * @covers \AtolOnline\Entities\Item * @covers \AtolOnline\Entities\Item::setPrice - * @covers \AtolOnline\Exceptions\TooHighSumException - * @throws TooHighSumException + * @covers \AtolOnline\Exceptions\TooHighItemSumException + * @throws TooHighItemSumException */ public function testTooHighSumException(): void { - $this->expectException(TooHighSumException::class); + $this->expectException(TooHighItemSumException::class); (new Item('test', Constraints::MAX_COUNT_ITEM_PRICE, Constraints::MAX_COUNT_ITEM_QUANTITY))->getSum(); } @@ -159,7 +159,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setPrice * @covers \AtolOnline\Exceptions\NegativeItemPriceException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -178,7 +178,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setQuantity * @covers \AtolOnline\Exceptions\TooHighItemQuantityException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -197,7 +197,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setQuantity * @covers \AtolOnline\Exceptions\NegativeItemQuantityException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -217,7 +217,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::getMeasurementUnit * @throws EmptyItemNameException * @throws NegativeItemPriceException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooLongMeasurementUnitException * @throws TooManyException @@ -236,7 +236,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooLongMeasurementUnitException * @throws TooManyException @@ -260,7 +260,7 @@ class ItemTest extends BasicTestCase * @throws InvalidEnumValueException * @throws TooManyException * @throws NegativeItemPriceException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws NegativeItemQuantityException * @throws TooLongItemNameException */ @@ -294,7 +294,7 @@ class ItemTest extends BasicTestCase * @throws InvalidEnumValueException * @throws TooManyException * @throws NegativeItemPriceException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws NegativeItemQuantityException * @throws TooLongItemNameException */ @@ -314,7 +314,7 @@ class ItemTest extends BasicTestCase * @throws InvalidEnumValueException * @throws TooManyException * @throws NegativeItemPriceException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws NegativeItemQuantityException * @throws TooLongItemNameException */ @@ -334,7 +334,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException */ @@ -365,7 +365,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException */ @@ -399,7 +399,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException * @throws InvalidEnumValueException @@ -422,7 +422,7 @@ class ItemTest extends BasicTestCase * @throws InvalidPhoneException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooLongPayingAgentOperationException * @throws TooManyException @@ -450,7 +450,7 @@ class ItemTest extends BasicTestCase * @throws InvalidPhoneException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException */ @@ -485,7 +485,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooLongUserdataException * @throws TooManyException @@ -514,7 +514,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::getUserData * @throws EmptyItemNameException * @throws NegativeItemPriceException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException * @throws NegativeItemQuantityException @@ -534,7 +534,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooLongUserdataException * @throws TooManyException @@ -555,7 +555,7 @@ class ItemTest extends BasicTestCase * @throws InvalidOKSMCodeException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException */ @@ -582,7 +582,7 @@ class ItemTest extends BasicTestCase * @throws InvalidOKSMCodeException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException */ @@ -601,7 +601,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException * @throws InvalidDeclarationNumberException @@ -629,7 +629,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws InvalidDeclarationNumberException * @throws TooManyException @@ -649,7 +649,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws InvalidDeclarationNumberException * @throws TooManyException @@ -669,7 +669,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::getSum * @covers \AtolOnline\Entities\Item::jsonSerialize * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -696,7 +696,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setExcise * @covers \AtolOnline\Exceptions\NegativeItemExciseException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException @@ -719,7 +719,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemNameException * @throws TooManyException * @throws TooLongItemCodeException @@ -756,7 +756,7 @@ class ItemTest extends BasicTestCase * @throws EmptyItemNameException * @throws NegativeItemPriceException * @throws NegativeItemQuantityException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooLongItemCodeException * @throws TooLongItemNameException * @throws TooManyException @@ -774,7 +774,7 @@ class ItemTest extends BasicTestCase * @covers \AtolOnline\Entities\Item::setCode * @covers \AtolOnline\Exceptions\TooLongItemCodeException * @throws TooLongItemNameException - * @throws TooHighPriceException + * @throws TooHighItemPriceException * @throws TooManyException * @throws NegativeItemPriceException * @throws EmptyItemNameException