mirror of
https://github.com/anthonyaxenov/atol-online.git
synced 2024-12-22 08:14:53 +00:00
Округление цены и количества в сетьерах Item
до 2 и 3 зн после запятой соответственно
Также переименованы исключения о слишком высоких цене и сумме предмета расчёта, чтобы избежать конфликтов с другими
This commit is contained in:
parent
d533164d1b
commit
65ec639014
@ -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
|
||||
{
|
||||
|
@ -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;
|
@ -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;
|
||||
|
||||
/**
|
||||
* Конструктор
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user