Улучшены исключения

- добавлены теги ФФД для удобства
- тексты исключений переведены на англ. язык во избежание проблем с кодировками
- новые исключения TooMany и TooLong для удобства, подходящие по смыслу исключения унаследованы от них
This commit is contained in:
Anthony Axenov 2020-05-27 23:10:30 +08:00
parent aee25a993b
commit 0bb194b1f8
26 changed files with 262 additions and 260 deletions

View File

@ -271,8 +271,8 @@ class Document extends Entity
public function setCashier(?string $cashier) public function setCashier(?string $cashier)
{ {
$cashier = trim($cashier); $cashier = trim($cashier);
if (strlen($cashier) > 64) { if ((function_exists('mb_strlen') ? mb_strlen($cashier) : strlen($cashier)) > 64) {
throw new AtolCashierTooLongException($cashier); throw new AtolCashierTooLongException($cashier, 64);
} }
$this->cashier = $cashier; $this->cashier = $cashier;
return $this; return $this;

View File

@ -11,11 +11,10 @@ namespace AtolOnline\Entities;
use AtolOnline\{Exceptions\AtolNameTooLongException, use AtolOnline\{Exceptions\AtolNameTooLongException,
Exceptions\AtolPriceTooHighException, Exceptions\AtolPriceTooHighException,
Exceptions\AtolQuantityTooHighException, Exceptions\AtolTooManyException,
Exceptions\AtolUnitTooLongException, Exceptions\AtolUnitTooLongException,
Exceptions\AtolUserdataTooLongException, Exceptions\AtolUserdataTooLongException,
Traits\RublesKopeksConverter Traits\RublesKopeksConverter};
};
/** /**
* Предмет расчёта (товар, услуга) * Предмет расчёта (товар, услуга)
@ -83,7 +82,7 @@ class Item extends Entity
* @param string|null $payment_method Способ расчёта * @param string|null $payment_method Способ расчёта
* @throws AtolNameTooLongException Слишком длинное наименование * @throws AtolNameTooLongException Слишком длинное наименование
* @throws AtolPriceTooHighException Слишком высокая цена за одну единицу * @throws AtolPriceTooHighException Слишком высокая цена за одну единицу
* @throws AtolQuantityTooHighException Слишком большое количество * @throws AtolTooManyException Слишком большое количество
* @throws AtolUnitTooLongException Слишком длинное название единицы измерения * @throws AtolUnitTooLongException Слишком длинное название единицы измерения
*/ */
public function __construct( public function __construct(
@ -188,7 +187,7 @@ class Item extends Entity
* @param float $quantity Количество * @param float $quantity Количество
* @param string|null $measurement_unit Единица измерения количества * @param string|null $measurement_unit Единица измерения количества
* @return $this * @return $this
* @throws AtolQuantityTooHighException Слишком большое количество * @throws AtolTooManyException Слишком большое количество
* @throws AtolPriceTooHighException Слишком высокая общая стоимость * @throws AtolPriceTooHighException Слишком высокая общая стоимость
* @throws AtolUnitTooLongException Слишком длинное название единицы измерения * @throws AtolUnitTooLongException Слишком длинное название единицы измерения
*/ */
@ -196,7 +195,7 @@ class Item extends Entity
{ {
$quantity = round($quantity, 3); $quantity = round($quantity, 3);
if ($quantity > 99999.999) { if ($quantity > 99999.999) {
throw new AtolQuantityTooHighException($quantity, 99999.999); throw new AtolTooManyException($quantity, 99999.999);
} }
$this->quantity = $quantity; $this->quantity = $quantity;
$this->calcSum(); $this->calcSum();

View File

@ -9,26 +9,22 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинное имя кассира * Исключение, возникающее при попытке указать слишком длинное имя кассира
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolCashierTooLongException extends AtolException class AtolCashierTooLongException extends AtolTooLongException
{ {
/** /**
* AtolCashierTooLongException constructor. * @inheritDoc
*
* @param $name
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($name, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1021,
$message = $message ?: 'Слишком длинное имя кассира (макс. длина 64, фактически '.strlen($name).'): '.$name; ];
parent::__construct($message, $code, $previous);
} /**
* @var string Сообщение об ошибке
*/
protected $message = 'Cashier name is too long';
} }

View File

@ -9,8 +9,6 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке зарегистрировать документ без данных коррекции * Исключение, возникающее при попытке зарегистрировать документ без данных коррекции
* *
@ -19,15 +17,7 @@ use Throwable;
class AtolCorrectionInfoException extends AtolException class AtolCorrectionInfoException extends AtolException
{ {
/** /**
* AtolNoCorrectionInfoException constructor. * @var string Сообщение об ошибке
*
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($message = "", $code = 0, Throwable $previous = null) protected $message = 'Document must have correction info';
{
$message = $message ?: 'В документе отсутствуют данные коррекции';
parent::__construct($message, $code, $previous);
}
} }

View File

@ -9,8 +9,6 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать пустой email * Исключение, возникающее при попытке указать пустой email
* *
@ -19,15 +17,15 @@ use Throwable;
class AtolEmailEmptyException extends AtolException class AtolEmailEmptyException extends AtolException
{ {
/** /**
* AtolEmailEmptyException constructor. * @inheritDoc
*
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1008,
$message = $message ?: 'Email не может быть пустым'; 1117,
parent::__construct($message, $code, $previous); ];
}
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Email cannot be empty';
} }

View File

@ -9,27 +9,23 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинный email * Исключение, возникающее при попытке указать слишком длинный email
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolEmailTooLongException extends AtolException class AtolEmailTooLongException extends AtolTooLongException
{ {
/** /**
* AtolEmailTooLongException constructor. * @inheritDoc
*
* @param $email
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($email, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1008,
$message = $message ?: 'Слишком длинный email (макс. длина '.$max.', фактически '.strlen($email).'): '.$email; 1117,
parent::__construct($message, $code, $previous); ];
}
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Email is is too long';
} }

View File

@ -18,6 +18,14 @@ use Throwable;
*/ */
class AtolEmailValidateException extends AtolException class AtolEmailValidateException extends AtolException
{ {
/**
* @inheritDoc
*/
protected $ffd_tags = [
1008,
1117,
];
/** /**
* AtolEmailValidateException constructor. * AtolEmailValidateException constructor.
* *
@ -28,7 +36,6 @@ class AtolEmailValidateException extends AtolException
*/ */
public function __construct($email, $message = "", $code = 0, Throwable $previous = null) public function __construct($email, $message = "", $code = 0, Throwable $previous = null)
{ {
$message = $message ?: 'Некорректный email: '.$email; parent::__construct($message ?: 'Invalid email: '.$email, $code, $previous);
parent::__construct($message, $code, $previous);
} }
} }

View File

@ -10,6 +10,7 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Exception; use Exception;
use Throwable;
/** /**
* Исключение, возникающее при работе с АТОЛ Онлайн * Исключение, возникающее при работе с АТОЛ Онлайн
@ -18,5 +19,33 @@ use Exception;
*/ */
class AtolException extends Exception class AtolException extends Exception
{ {
/**
* @var int[] Теги ФФД
*/
protected $ffd_tags = null;
/**
* AtolException constructor.
*
* @param string $message
* @param int $code
* @param \Throwable|null $previous
*/
public function __construct($message = "", $code = 0, Throwable $previous = null)
{
if ($this->getFfdTags()) {
$message .= ' [FFD tags: '.implode(', ', $this->getFfdTags()).']';
}
parent::__construct($message, $code, $previous);
}
/**
* Возвращает теги ФФД, с которыми связано исключение
*
* @return array|null
*/
protected function getFfdTags(): ?array
{
return $this->ffd_tags;
}
} }

View File

@ -18,6 +18,16 @@ use Throwable;
*/ */
class AtolInnWrongLengthException extends AtolException class AtolInnWrongLengthException extends AtolException
{ {
/**
* @inheritDoc
*/
protected $ffd_tags = [
1016,
1018,
1226,
1228,
];
/** /**
* AtolInnWrongLengthException constructor. * AtolInnWrongLengthException constructor.
* *
@ -28,7 +38,7 @@ class AtolInnWrongLengthException extends AtolException
*/ */
public function __construct($inn, $message = "", $code = 0, Throwable $previous = null) public function __construct($inn, $message = "", $code = 0, Throwable $previous = null)
{ {
$message = $message ?: 'Длина ИНН должна быть 10 или 12 цифр, фактически '.strlen($inn).': '.$inn; parent::__construct($message ?: 'INN length must be 10 or 12 digits only, but actual is '.
parent::__construct($message, $code, $previous); (function_exists('mb_strlen') ? mb_strlen($inn) : strlen($inn)).')', $code, $previous);
} }
} }

View File

@ -16,10 +16,10 @@ use Throwable;
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolUuidValidateException extends AtolException class AtolInvalidUuidException extends AtolException
{ {
/** /**
* AtolUuidValidateException constructor. * AtolInvalidUuidException constructor.
* *
* @param $uuid * @param $uuid
* @param string $message * @param string $message
@ -28,7 +28,6 @@ class AtolUuidValidateException extends AtolException
*/ */
public function __construct($uuid, $message = "", $code = 0, Throwable $previous = null) public function __construct($uuid, $message = "", $code = 0, Throwable $previous = null)
{ {
$message = $message ?: 'Некорректный UUID: '.$uuid; parent::__construct($message ?: 'Invalid UUID: '.$uuid, $code, $previous);
parent::__construct($message, $code, $previous);
} }
} }

View File

@ -9,8 +9,6 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать пустой логин ККТ * Исключение, возникающее при попытке указать пустой логин ККТ
* *
@ -19,15 +17,7 @@ use Throwable;
class AtolKktLoginEmptyException extends AtolException class AtolKktLoginEmptyException extends AtolException
{ {
/** /**
* AtolKktLoginEmptyException constructor. * @var string Сообщение об ошибке
*
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($message = "", $code = 0, Throwable $previous = null) protected $message = 'KKT login cannot be empty';
{
$message = $message ?: 'Логин ККТ не может быть пустым';
parent::__construct($message, $code, $previous);
}
} }

View File

@ -9,27 +9,15 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинный логин ККТ * Исключение, возникающее при попытке указать слишком длинный логин ККТ
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolKktLoginTooLongException extends AtolException class AtolKktLoginTooLongException extends AtolTooLongException
{ {
/** /**
* AtolKktLoginTooLongException constructor. * @var string Сообщение об ошибке
*
* @param $login
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($login, $max, $message = "", $code = 0, Throwable $previous = null) protected $message = 'KKT login is too long';
{
$message = $message ?: 'Слишком длинный логин ККТ (макс. длина '.$max.', фактически '.strlen($login).'): '.$login;
parent::__construct($message, $code, $previous);
}
} }

View File

@ -9,8 +9,6 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать пустой пароль ККТ * Исключение, возникающее при попытке указать пустой пароль ККТ
* *
@ -19,15 +17,7 @@ use Throwable;
class AtolKktPasswordEmptyException extends AtolException class AtolKktPasswordEmptyException extends AtolException
{ {
/** /**
* AtolKktPasswordEmptyException constructor. * @var string Сообщение об ошибке
*
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($message = "", $code = 0, Throwable $previous = null) protected $message = 'KKT password cannot be empty';
{
$message = $message ?: 'Пароль ККТ не может быть пустым';
parent::__construct($message, $code, $previous);
}
} }

View File

@ -9,27 +9,26 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинное имя * Исключение, возникающее при попытке указать слишком длинное имя
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolNameTooLongException extends AtolException class AtolNameTooLongException extends AtolTooLongException
{ {
/** /**
* AtolNameTooLongException constructor. * @inheritDoc
*
* @param $name
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($name, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1026,
$message = $message ?: 'Слишком длинное имя/наименование (макс. длина '.$max.', фактически '.strlen($name).'): '.$name; 1030,
parent::__construct($message, $code, $previous); 1085,
} 1225,
1227,
];
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Name is too long';
} }

View File

@ -9,8 +9,6 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинный платёжный адрес * Исключение, возникающее при попытке указать слишком длинный платёжный адрес
* *
@ -19,17 +17,14 @@ use Throwable;
class AtolPaymentAddressTooLongException extends AtolException class AtolPaymentAddressTooLongException extends AtolException
{ {
/** /**
* AtolPaymentAddressTooLongException constructor. * @inheritDoc
*
* @param $address
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($address, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1187,
$message = $message ?: 'Слишком длинный адрес (макс. длина '.$max.', фактически '.strlen($address).'): '.$address; ];
parent::__construct($message, $code, $previous);
} /**
* @var string Сообщение об ошибке
*/
protected $message = 'Payment address is too long';
} }

View File

@ -9,27 +9,26 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинный телефон * Исключение, возникающее при попытке указать слишком длинный телефон
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolPhoneTooLongException extends AtolException class AtolPhoneTooLongException extends AtolTooLongException
{ {
/** /**
* AtolPhoneTooLongException constructor. * @inheritDoc
*
* @param $phone
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($phone, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1008,
$message = $message ?: 'Слишком длинный телефон (макс. длина '.$max.', фактически '.strlen($phone).'): '.$phone; 1073,
parent::__construct($message, $code, $previous); 1074,
} 1075,
1171,
];
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Phone is too long';
} }

View File

@ -9,27 +9,22 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком высокую цену (сумму) * Исключение, возникающее при попытке указать слишком высокую цену (сумму)
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolPriceTooHighException extends AtolException class AtolPriceTooHighException extends AtolTooManyException
{ {
/** /**
* AtolPriceTooHighException constructor. * @inheritDoc
*
* @param $price
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($price, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1079,
$message = $message ?: 'Слишком большая сумма (макс. '.$max.'): '.$price; ];
parent::__construct($message, $code, $previous);
} /**
* @var string Сообщение об ошибке
*/
protected $message = 'Price is too high';
} }

View File

@ -0,0 +1,40 @@
<?php
/**
* Copyright (c) Антон Аксенов (aka Anthony Axenov)
*
* This code is licensed under MIT.
* Этот код распространяется по лицензии MIT.
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
namespace AtolOnline\Exceptions;
use Throwable;
/**
* Исключение, возникающее при попытке указать слишком длинное что-либо
*
* @package AtolOnline\Exceptions
*/
class AtolTooLongException extends AtolException
{
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Parameter is too long';
/**
* AtolTooLongException constructor.
*
* @param $string
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/
public function __construct($string, $max, $message = "", $code = 0, Throwable $previous = null)
{
parent::__construct($message ?: $this->message.' (max length - '.$max.', actual length - '.
(function_exists('mb_strlen') ? mb_strlen($string) : strlen($string)).')', $code, $previous);
}
}

View File

@ -12,14 +12,19 @@ namespace AtolOnline\Exceptions;
use Throwable; use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком большое количество * Исключение, возникающее при попытке указать слишком большое количество чего-либо
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolQuantityTooHighException extends AtolException class AtolTooManyException extends AtolException
{ {
/** /**
* AtolQuantityTooHighException constructor. * @var string Сообщение об ошибке
*/
protected $message = 'Quantity is too high';
/**
* AtolTooManyException constructor.
* *
* @param $quantity * @param $quantity
* @param $max * @param $max
@ -29,7 +34,7 @@ class AtolQuantityTooHighException extends AtolException
*/ */
public function __construct($quantity, $max, $message = "", $code = 0, Throwable $previous = null) public function __construct($quantity, $max, $message = "", $code = 0, Throwable $previous = null)
{ {
$message = $message ?: 'Слишком большое количество (макс. '.$max.'): '.$quantity; $message = $message ?: $this->message.' (max - '.$max.', actual - '.$quantity.')';
parent::__construct($message, $code, $previous); parent::__construct($message, $code, $previous);
} }
} }

View File

@ -9,26 +9,15 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке добавить слишком много предметов расчёта в массив * Исключение, возникающее при попытке добавить слишком много предметов расчёта в массив
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolTooManyItemsException extends AtolException class AtolTooManyItemsException extends AtolTooManyException
{ {
/** /**
* AtolTooManyItemsException constructor. * @var string Сообщение об ошибке
*
* @param int $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($max, $message = "", $code = 0, Throwable $previous = null) protected $message = 'Too many items';
{
$message = $message ?: 'Слишком много предметов расчёта (макс. '.$max.')';
parent::__construct($message, $code, $previous);
}
} }

View File

@ -9,26 +9,25 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке добавить слишком много ставок НДС в массив * Исключение, возникающее при попытке добавить слишком много платежей в массив
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolTooManyPaymentsException extends AtolException class AtolTooManyPaymentsException extends AtolTooManyException
{ {
/** /**
* AtolTooManyPaymentsException constructor. * @inheritDoc
*
* @param int $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1031,
$message = $message ?: 'Слишком много платежей (макс. '.$max.')'; 1081,
parent::__construct($message, $code, $previous); 1215,
} 1217,
];
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Too many payments';
} }

View File

@ -9,26 +9,27 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке добавить слишком много ставок НДС в массив * Исключение, возникающее при попытке добавить слишком много ставок НДС в массив
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolTooManyVatsException extends AtolException class AtolTooManyVatsException extends AtolTooManyException
{ {
/** /**
* AtolTooManyVatsException constructor. * @inheritDoc
*
* @param int $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1102,
$message = $message ?: 'Слишком много ставок НДС (макс. '.$max.')'; 1103,
parent::__construct($message, $code, $previous); 1104,
} 1105,
1106,
1107,
];
/**
* @var string Сообщение об ошибке
*/
protected $message = 'Too many vats';
} }

View File

@ -9,27 +9,22 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинный телефон * Исключение, возникающее при попытке указать слишком длинный телефон
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolUnitTooLongException extends AtolException class AtolUnitTooLongException extends AtolTooLongException
{ {
/** /**
* AtolUnitTooLongException constructor. * @inheritDoc
*
* @param $unit
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($unit, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1197,
$message = $message ?: 'Слишком длинное название единицы измерения (макс. длина '.$max.', фактически '.strlen($unit).'): '.$unit; ];
parent::__construct($message, $code, $previous);
} /**
* @var string Сообщение об ошибке
*/
protected $message = 'Measurement unit is too long';
} }

View File

@ -9,27 +9,22 @@
namespace AtolOnline\Exceptions; namespace AtolOnline\Exceptions;
use Throwable;
/** /**
* Исключение, возникающее при попытке указать слишком длинный телефон * Исключение, возникающее при попытке указать слишком длинный дополнительный реквизит
* *
* @package AtolOnline\Exceptions * @package AtolOnline\Exceptions
*/ */
class AtolUserdataTooLongException extends AtolException class AtolUserdataTooLongException extends AtolTooLongException
{ {
/** /**
* AtolUserdataTooLongException constructor. * @inheritDoc
*
* @param $data
* @param $max
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/ */
public function __construct($data, $max, $message = "", $code = 0, Throwable $previous = null) protected $ffd_tags = [
{ 1191,
$message = $message ?: 'Слишком длинный дополнительный реквизит (макс. длина '.$max.', фактически '.strlen($data).'): '.$data; ];
parent::__construct($message, $code, $previous);
} /**
* @var string Сообщение об ошибке
*/
protected $message = 'User data is too long';
} }

View File

@ -28,7 +28,6 @@ class AtolWrongDocumentTypeException extends AtolException
*/ */
public function __construct($type, $message = "", $code = 0, Throwable $previous = null) public function __construct($type, $message = "", $code = 0, Throwable $previous = null)
{ {
$message = $message ?: 'Некорректный тип документа: ожидался \'receipt\' или \'correction\', указан \''.$type.'\''; parent::__construct($message ?: "Wrong document type: 'receipt' or 'correction' expected, but '$type' provided", $code, $previous);
parent::__construct($message, $code, $previous);
} }
} }

View File

@ -13,10 +13,9 @@ use AtolOnline\{Constants\PaymentMethods,
Entities\Item, Entities\Item,
Exceptions\AtolNameTooLongException, Exceptions\AtolNameTooLongException,
Exceptions\AtolPriceTooHighException, Exceptions\AtolPriceTooHighException,
Exceptions\AtolQuantityTooHighException, Exceptions\AtolTooManyException,
Exceptions\AtolUnitTooLongException, Exceptions\AtolUnitTooLongException,
Exceptions\AtolUserdataTooLongException Exceptions\AtolUserdataTooLongException};
};
/** /**
* Class ItemTest * Class ItemTest
@ -28,7 +27,7 @@ class ItemTest extends BasicTestCase
* *
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testConstructor() public function testConstructor()
@ -57,7 +56,7 @@ class ItemTest extends BasicTestCase
* *
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
* @throws AtolOnline\Exceptions\AtolUserdataTooLongException * @throws AtolOnline\Exceptions\AtolUserdataTooLongException
*/ */
@ -88,7 +87,7 @@ class ItemTest extends BasicTestCase
* *
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testSetVat() public function testSetVat()
@ -105,7 +104,7 @@ class ItemTest extends BasicTestCase
* *
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testAtolNameTooLongException() public function testAtolNameTooLongException()
@ -119,14 +118,14 @@ class ItemTest extends BasicTestCase
* Тестирует исключение о слишком высоком количестве * Тестирует исключение о слишком высоком количестве
* *
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testAtolQuantityTooHighException() public function testAtolQuantityTooHighException()
{ {
$item = new Item(); $item = new Item();
$this->expectException(AtolQuantityTooHighException::class); $this->expectException(AtolTooManyException::class);
$item->setQuantity(100000.1); $item->setQuantity(100000.1);
} }
@ -135,7 +134,7 @@ class ItemTest extends BasicTestCase
* *
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testAtolPriceTooHighException() public function testAtolPriceTooHighException()
@ -151,7 +150,7 @@ class ItemTest extends BasicTestCase
* @throws AtolOnline\Exceptions\AtolUserdataTooLongException * @throws AtolOnline\Exceptions\AtolUserdataTooLongException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testAtolUserdataTooLongException() public function testAtolUserdataTooLongException()
@ -166,7 +165,7 @@ class ItemTest extends BasicTestCase
* *
* @throws AtolOnline\Exceptions\AtolNameTooLongException * @throws AtolOnline\Exceptions\AtolNameTooLongException
* @throws AtolOnline\Exceptions\AtolPriceTooHighException * @throws AtolOnline\Exceptions\AtolPriceTooHighException
* @throws AtolOnline\Exceptions\AtolQuantityTooHighException * @throws AtolOnline\Exceptions\AtolTooManyException
* @throws AtolOnline\Exceptions\AtolUnitTooLongException * @throws AtolOnline\Exceptions\AtolUnitTooLongException
*/ */
public function testAtolUnitTooLongException() public function testAtolUnitTooLongException()