Большие доработки по фискилизации

- у `AtolClient` теперь возможно получить последний отправленный запрос `getLastRequest()`
- у `AtolClient::auth()` удалены аргументы за ненадобностью
- улучшен `Client::jsonSerialize()`
- исправлен `Receipt::jsonSerialize()`
- у `Receipt` и `Correction` появились методы фискализации, вкусный сахарок
- удалён енам `DocumentTypes` за ненадобностью
- исправлены тесты монитора и документов
- рабочий фискализатор с получением результатов и покрытием
This commit is contained in:
2021-12-18 14:45:00 +08:00
parent b4cc0fec53
commit 71d1f2900c
33 changed files with 969 additions and 336 deletions

View File

@@ -0,0 +1,20 @@
<?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;
/**
* Исключение, возникающее при попытке указать пустую группу ККТ
*/
class EmptyGroupException extends AtolException
{
protected $message = 'Группа ККТ должна быть указана';
}

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать некорректную дату коррекции
@@ -26,6 +27,7 @@ class InvalidCorrectionDateException extends AtolException
* @param string $date
* @param string $message
*/
#[Pure]
public function __construct(string $date = '', string $message = '')
{
parent::__construct("Ошибка даты документа коррекции '$date': " . $message);

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при ошибке валидации кода таможенной декларации
@@ -25,6 +26,7 @@ class InvalidDeclarationNumberException extends AtolException
*
* @param string $code
*/
#[Pure]
public function __construct(string $code = '')
{
parent::__construct("Невалидный код таможенной декларации: '$code'");

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при ошибке валидации email
@@ -30,6 +31,7 @@ class InvalidEmailException extends AtolException
*
* @param string $email
*/
#[Pure]
public function __construct(string $email = '')
{
parent::__construct("Невалидный email: '$email'");

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать ИНН некорректной длины
@@ -31,6 +32,7 @@ class InvalidInnLengthException extends AtolException
* @param string $inn
* @param string $message
*/
#[Pure]
public function __construct(string $inn = '', string $message = '')
{
parent::__construct(

View File

@@ -11,6 +11,8 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при работе с невалидным JSON
*/
@@ -19,6 +21,7 @@ class InvalidJsonException extends AtolException
/**
* Конструктор
*/
#[Pure]
public function __construct()
{
parent::__construct('[' . json_last_error() . '] ' . json_last_error_msg());

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при ошибке валидации кода страны происхождения товара
@@ -27,6 +28,7 @@ class InvalidOKSMCodeException extends AtolException
*
* @param string $code
*/
#[Pure]
public function __construct(string $code)
{
parent::__construct('Невалидный код страны происхождения товара: ' . $code);

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при ошибке валидации номера телефона
@@ -31,6 +32,7 @@ class InvalidPhoneException extends AtolException
*
* @param string $phone
*/
#[Pure]
public function __construct(string $phone = '')
{
parent::__construct("Невалидный номер телефона: '$phone'");

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать предмету расчёта отрицательный акциз
@@ -26,6 +27,7 @@ class NegativeItemExciseException extends AtolException
* @param string $name
* @param float $excise
*/
#[Pure]
public function __construct(string $name, float $excise)
{
parent::__construct("Предмет расчёта '$name' не может иметь отрицательный акциз $excise");

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать предмету расчёта отрицательную цену
@@ -26,6 +27,7 @@ class NegativeItemPriceException extends AtolException
* @param string $name
* @param float $price
*/
#[Pure]
public function __construct(string $name, float $price)
{
parent::__construct("Предмет расчёта '$name' не может иметь отрицательную цену $price");

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать предмету расчёта отрицательное количество
@@ -26,6 +27,7 @@ class NegativeItemQuantityException extends AtolException
* @param string $name
* @param float $quantity
*/
#[Pure]
public function __construct(string $name, float $quantity)
{
parent::__construct("Предмет расчёта '$name' не может иметь отрицательное количество $quantity");

View File

@@ -12,6 +12,7 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать оплате отрицательную сумму
@@ -31,6 +32,7 @@ class NegativePaymentSumException extends AtolException
*
* @param float $sum
*/
#[Pure]
public function __construct(float $sum)
{
parent::__construct('Размер оплаты не может быть отрицательным: ' . $sum);

View File

@@ -11,6 +11,8 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке создать объект ККТ с неполными данными от монитора
*/
@@ -27,6 +29,7 @@ class NotEnoughMonitorDataException extends AtolException
* @param array $props_diff
* @param string $message
*/
#[Pure]
public function __construct(array $props_diff, string $message = '')
{
parent::__construct($message ?: $this->message . implode(', ', $props_diff));

View File

@@ -13,6 +13,7 @@ namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Constraints;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать слишком высокую цену (сумму) предмета расчёта
@@ -28,6 +29,7 @@ class TooHighItemPriceException extends TooManyException
* @param string $name
* @param float $price
*/
#[Pure]
public function __construct(string $name, float $price)
{
parent::__construct($price, "Слишком высокая цена для предмета расчёта '$name'");

View File

@@ -13,6 +13,7 @@ namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Constraints;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке добавить слишком большое количество предмета расчёта
@@ -28,6 +29,7 @@ class TooHighItemQuantityException extends TooManyException
* @param string $name
* @param float $quantity
*/
#[Pure]
public function __construct(string $name, float $quantity)
{
parent::__construct($quantity, "Слишком большое количество предмета расчёта '$name'");

View File

@@ -13,6 +13,7 @@ namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Constraints;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке получеиня слишком высокой стоимости предмета расчёта
@@ -28,6 +29,7 @@ class TooHighItemSumException extends TooManyException
* @param string $name
* @param float $sum
*/
#[Pure]
public function __construct(string $name, float $sum)
{
parent::__construct($sum, "Слишком высокая стоимость предмета расчёта '$name'");

View File

@@ -18,6 +18,6 @@ use AtolOnline\Constants\Constraints;
*/
class TooLongCallbackUrlException extends TooLongException
{
protected $message = 'Слишком длинный адрес колбека';
protected $message = 'Слишком длинный callback_url';
protected float $max = Constraints::MAX_LENGTH_CALLBACK_URL;
}

View File

@@ -11,6 +11,8 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать слишком длинное что-либо
*/
@@ -33,6 +35,7 @@ class TooLongException extends AtolException
* @param string $message
* @param float $max
*/
#[Pure]
public function __construct(string $value, string $message = '', float $max = 0)
{
parent::__construct(

View File

@@ -13,6 +13,7 @@ namespace AtolOnline\Exceptions;
use AtolOnline\Constants\Constraints;
use AtolOnline\Constants\Ffd105Tags;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать слишком длинный код товара
@@ -28,6 +29,7 @@ class TooLongItemCodeException extends TooLongException
* @param string $name
* @param string $code
*/
#[Pure]
public function __construct(string $name, string $code)
{
parent::__construct($code, "Слишком длинный код товара '$name'");

View File

@@ -11,6 +11,8 @@ declare(strict_types = 1);
namespace AtolOnline\Exceptions;
use JetBrains\PhpStorm\Pure;
/**
* Исключение, возникающее при попытке указать слишком большое количество чего-либо
*/
@@ -33,6 +35,7 @@ class TooManyException extends AtolException
* @param string $message
* @param float|null $max
*/
#[Pure]
public function __construct(float $value, string $message = '', ?float $max = null)
{
parent::__construct(