Кучад доработок, главным образом вокруг Item
- `Item` почти готов и весь покрыт тестами. Пока остались нереализованными `nomenclature_code` и `excise` - `Client::setPhone()` теперь выбрасывает InvalidPhoneException - доработка и создание новых исключений (не буду все перечислять, смотри диффы) - мелочи по phpdoc и всяким текстовкам
This commit is contained in:
@@ -31,8 +31,9 @@ class AtolException extends Exception
|
||||
*/
|
||||
public function __construct(string $message = '', array $ffd_tags = [])
|
||||
{
|
||||
$tags = implode(', ', $ffd_tags ?: $this->ffd_tags);
|
||||
parent::__construct(
|
||||
($message ?: $this->message) . ' [Теги ФФД: ' . implode(', ', $ffd_tags ?: $this->ffd_tags) . ']'
|
||||
($message ?: $this->message) . ($tags ? ' [Теги ФФД: ' . $tags : '') . ']'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
25
src/Exceptions/EmptyItemNameException.php
Normal file
25
src/Exceptions/EmptyItemNameException.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при пустом наименовании предмета расчёта
|
||||
*
|
||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||
*/
|
||||
class EmptyItemNameException extends AtolException
|
||||
{
|
||||
protected $message = 'Наименование предмета расчёта не может быть пустым';
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_NAME];
|
||||
}
|
||||
32
src/Exceptions/InvalidDeclarationNumberException.php
Normal file
32
src/Exceptions/InvalidDeclarationNumberException.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при ошибке валидации кода таможенной декларации
|
||||
*/
|
||||
class InvalidDeclarationNumberException extends AtolException
|
||||
{
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_DECLARATION_NUMBER];
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $code
|
||||
*/
|
||||
public function __construct(string $code = '')
|
||||
{
|
||||
parent::__construct("Невалидный код таможенной декларации: '$code'");
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ namespace AtolOnline\Exceptions;
|
||||
use AtolOnline\Enums\Enum;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при ошибке валидации типа агента
|
||||
* Исключение, возникающее при ошибке валидации перечислимых значений
|
||||
*/
|
||||
class InvalidEnumValueException extends AtolException
|
||||
{
|
||||
@@ -29,10 +29,11 @@ class InvalidEnumValueException extends AtolException
|
||||
public function __construct(string $enum, mixed $value, string $message = '', array $ffd_tags = [])
|
||||
{
|
||||
/** @var $enum Enum */
|
||||
parent::__construct(
|
||||
($message ?: "Некорректное значение $enum::$value.") .
|
||||
" Допустимые значения: " . implode(', ', $enum::toArray()),
|
||||
$ffd_tags ?: $enum::getFfdTags()
|
||||
);
|
||||
$own_message = (
|
||||
empty($value)
|
||||
? "Значение из $enum не может быть пустым."
|
||||
: "Некорректное значение $enum::$value."
|
||||
) . " Допустимые значения: " . implode(', ', $enum::toArray());
|
||||
parent::__construct($message ?: $own_message, $ffd_tags ?: $enum::getFfdTags());
|
||||
}
|
||||
}
|
||||
|
||||
34
src/Exceptions/InvalidOKSMCodeException.php
Normal file
34
src/Exceptions/InvalidOKSMCodeException.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при ошибке валидации кода страны происхождения товара
|
||||
*
|
||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 29
|
||||
*/
|
||||
class InvalidOKSMCodeException extends AtolException
|
||||
{
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_COUNTRY_CODE];
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $code
|
||||
*/
|
||||
public function __construct(string $code)
|
||||
{
|
||||
parent::__construct('Невалидный код страны происхождения товара: ' . $code);
|
||||
}
|
||||
}
|
||||
33
src/Exceptions/NegativeItemPriceException.php
Normal file
33
src/Exceptions/NegativeItemPriceException.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при попытке указать предмету расчёта отрицательную цену
|
||||
*/
|
||||
class NegativeItemPriceException extends AtolException
|
||||
{
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_PRICE];
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $name
|
||||
* @param float $price
|
||||
*/
|
||||
public function __construct(string $name, float $price)
|
||||
{
|
||||
parent::__construct("Предмет расчёта '$name' не может иметь отрицательную цену $price");
|
||||
}
|
||||
}
|
||||
33
src/Exceptions/NegativeItemQuantityException.php
Normal file
33
src/Exceptions/NegativeItemQuantityException.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при попытке указать предмету расчёта отрицательное количество
|
||||
*/
|
||||
class NegativeItemQuantityException extends AtolException
|
||||
{
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_QUANTITY];
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $name
|
||||
* @param float $quantity
|
||||
*/
|
||||
public function __construct(string $name, float $quantity)
|
||||
{
|
||||
parent::__construct("Предмет расчёта '$name' не может иметь отрицательное количество $quantity");
|
||||
}
|
||||
}
|
||||
35
src/Exceptions/TooHighItemQuantityException.php
Normal file
35
src/Exceptions/TooHighItemQuantityException.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Constraints;
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при попытке добавить слишком большое количество предмета расчёта
|
||||
*/
|
||||
class TooHighItemQuantityException extends TooManyException
|
||||
{
|
||||
protected float $max = Constraints::MAX_COUNT_ITEM_QUANTITY;
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_QUANTITY];
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $name
|
||||
* @param float $quantity
|
||||
*/
|
||||
public function __construct(string $name, float $quantity)
|
||||
{
|
||||
parent::__construct($quantity, "Слишком большое количество предмета расчёта '$name'");
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,17 @@ use AtolOnline\Constants\Ffd105Tags;
|
||||
*/
|
||||
class TooHighPriceException extends TooManyException
|
||||
{
|
||||
protected $message = 'Слишком высокая цена';
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_PRICE];
|
||||
protected float $max = Constraints::MAX_COUNT_ITEM_PRICE;
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $name
|
||||
* @param float $price
|
||||
*/
|
||||
public function __construct(string $name, float $price)
|
||||
{
|
||||
parent::__construct($price, "Слишком высокая цена для предмета расчёта '$name'");
|
||||
}
|
||||
}
|
||||
|
||||
35
src/Exceptions/TooHighSumException.php
Normal file
35
src/Exceptions/TooHighSumException.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||
*
|
||||
* This code is licensed under MIT.
|
||||
* Этот код распространяется по лицензии MIT.
|
||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace AtolOnline\Exceptions;
|
||||
|
||||
use AtolOnline\Constants\Constraints;
|
||||
use AtolOnline\Constants\Ffd105Tags;
|
||||
|
||||
/**
|
||||
* Исключение, возникающее при попытке получеиня слишком высокой стоимости
|
||||
*/
|
||||
class TooHighSumException extends TooManyException
|
||||
{
|
||||
protected array $ffd_tags = [Ffd105Tags::ITEM_SUM];
|
||||
protected float $max = Constraints::MAX_COUNT_ITEM_PRICE;
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
*
|
||||
* @param string $name
|
||||
* @param float $sum
|
||||
*/
|
||||
public function __construct(string $name, float $sum)
|
||||
{
|
||||
parent::__construct($sum, "Слишком высокая стоимость предмета расчёта '$name'");
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ use AtolOnline\Constants\Ffd105Tags;
|
||||
/**
|
||||
* Исключение, возникающее при попытке указать слишком длинную единицу измерения предмета расчёта
|
||||
*/
|
||||
class TooLongUnitException extends TooLongException
|
||||
class TooLongMeasurementUnitException extends TooLongException
|
||||
{
|
||||
protected $message = 'Слишком длинная единица измерения предмета расчёта';
|
||||
protected float $max = Constraints::MAX_LENGTH_MEASUREMENT_UNIT;
|
||||
@@ -31,14 +31,13 @@ class TooManyException extends AtolException
|
||||
*
|
||||
* @param float $value
|
||||
* @param string $message
|
||||
* @param float $max
|
||||
* @param float|null $max
|
||||
*/
|
||||
public function __construct(float $value, string $message = '', float $max = 0)
|
||||
public function __construct(float $value, string $message = '', ?float $max = null)
|
||||
{
|
||||
$message = ($message ?: $this->message) . ': ' . $value;
|
||||
if ($max > 0 || $this->max > 0) {
|
||||
$message .= ' (макс. = ' . ($max ?? $this->max) . ', фактически = ' . $value . ')';
|
||||
}
|
||||
parent::__construct($message);
|
||||
parent::__construct(
|
||||
($message ?: $this->message) . (((float)$max > 0 || (float)$this->max > 0) ?
|
||||
' (макс = ' . ($max ?? $this->max) . ', фактически = ' . $value . ')' : '')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user