mirror of
https://github.com/anthonyaxenov/atol-online.git
synced 2024-12-22 11:44:56 +00:00
commit
268134d47f
8
.github/FUNDING.yml
vendored
8
.github/FUNDING.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
#github: anthonyaxenov
|
custom: [
|
||||||
patreon: anthonyaxenov
|
'https://www.buymeacoffee.com/axenov',
|
||||||
liberapay: anthonyaxenov
|
'https://yoomoney.ru/to/41001685237530'
|
||||||
custom: [ 'https://yoomoney.ru/to/41001685237530' ]
|
]
|
||||||
|
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
@ -16,7 +16,6 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
php-version:
|
php-version:
|
||||||
- 8.0
|
|
||||||
- 8.1
|
- 8.1
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
25
.php-cs-fixer.php
Normal file
25
.php-cs-fixer.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);
|
||||||
|
|
||||||
|
$finder = PhpCsFixer\Finder::create()
|
||||||
|
->in(__DIR__)
|
||||||
|
->exclude('docs')
|
||||||
|
->notPath('test.php');
|
||||||
|
|
||||||
|
return (new PhpCsFixer\Config())
|
||||||
|
->setFinder($finder)
|
||||||
|
->setIndent(' ')
|
||||||
|
->setRules([
|
||||||
|
'@PSR12' => true,
|
||||||
|
'array_syntax' => ['syntax' => 'short'],
|
||||||
|
'group_to_single_imports' => false,
|
||||||
|
]);
|
54
README.md
54
README.md
@ -6,19 +6,19 @@
|
|||||||
[![codecov](https://codecov.io/gh/anthonyaxenov/atol-online/branch/master/graph/badge.svg?token=WR2IV7FTF0)](https://codecov.io/gh/anthonyaxenov/atol-online)
|
[![codecov](https://codecov.io/gh/anthonyaxenov/atol-online/branch/master/graph/badge.svg?token=WR2IV7FTF0)](https://codecov.io/gh/anthonyaxenov/atol-online)
|
||||||
[![Stable Version](https://img.shields.io/packagist/v/axenov/atol-online?label=stable)](https://packagist.org/packages/axenov/atol-online)
|
[![Stable Version](https://img.shields.io/packagist/v/axenov/atol-online?label=stable)](https://packagist.org/packages/axenov/atol-online)
|
||||||
[![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/axenov/atol-online?color=%23787cb4)](https://packagist.org/packages/axenov/atol-online)
|
[![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/axenov/atol-online?color=%23787cb4)](https://packagist.org/packages/axenov/atol-online)
|
||||||
[![Liberapay](https://img.shields.io/liberapay/patrons/AnthonyAxenov.svg?logo=liberapay)](https://liberapay.com/AnthonyAxenov/donate)
|
|
||||||
[![License](https://img.shields.io/packagist/l/axenov/atol-online?color=%23369883)](LICENSE)
|
[![License](https://img.shields.io/packagist/l/axenov/atol-online?color=%23369883)](LICENSE)
|
||||||
|
[![buymeacoffee](https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee)](https://www.buymeacoffee.com/axenov)
|
||||||
|
|
||||||
**[Документация](/docs/readme.md)**
|
**[Документация](/docs/readme.md)**
|
||||||
|
|
||||||
Текущие поддерживаемые версии АТОЛ Онлайн:
|
Текущие поддерживаемые версии АТОЛ Онлайн:
|
||||||
|
|
||||||
| Протокол | API | ФФД | Статус |
|
| Протокол | API | ФФД | Статус |
|
||||||
|----------|-----|------|----------------|
|
|----------|------|------|----------------|
|
||||||
| v4 | 5.8 | 1.05 | Поддерживается |
|
| v4 | 5.10 | 1.05 | Поддерживается |
|
||||||
| v5 | 2.0 | 1.2 | В планах |
|
| v5 | 3.0 | 1.2 | В планах |
|
||||||
|
|
||||||
## Плюшечки
|
Поддерживаемые возможности:
|
||||||
|
|
||||||
* Мониторинг ККТ и ФН
|
* Мониторинг ККТ и ФН
|
||||||
* Фискализация документов на облачной ККТ
|
* Фискализация документов на облачной ККТ
|
||||||
@ -28,13 +28,13 @@
|
|||||||
|
|
||||||
## Системные требования
|
## Системные требования
|
||||||
|
|
||||||
* `php v8.0` и выше
|
* `php v8.1` и выше
|
||||||
* `php-json`
|
* `php-json`
|
||||||
* `php-curl`
|
|
||||||
* `php-mbstring`
|
* `php-mbstring`
|
||||||
* `php-tokenizer`
|
|
||||||
* [composer](https://getcomposer.org/)
|
* [composer](https://getcomposer.org/)
|
||||||
|
|
||||||
|
> Для использования на php8.0 используйте версии библиотеки до 1.0.2 включительно.
|
||||||
|
|
||||||
## Начало работы
|
## Начало работы
|
||||||
|
|
||||||
### Подключение библиотеки
|
### Подключение библиотеки
|
||||||
@ -50,6 +50,17 @@
|
|||||||
где `$project_root` — абсолютный путь к корневой директории вашего проекта.
|
где `$project_root` — абсолютный путь к корневой директории вашего проекта.
|
||||||
> При использовании фреймворков это обычно не требуется.
|
> При использовании фреймворков это обычно не требуется.
|
||||||
|
|
||||||
|
### Использование библиотеки
|
||||||
|
|
||||||
|
Вы имеете право использовать и распространять код на условиях **[лицензии MIT](LICENSE)**.
|
||||||
|
|
||||||
|
Дополнительная информация может быть найдена здесь:
|
||||||
|
|
||||||
|
1. [Документации к библиотеке](/docs)
|
||||||
|
2. [Документация АТОЛ Онлайн](https://online.atol.ru/lib/)
|
||||||
|
3. [Исходный код](/src), докблоки
|
||||||
|
4. [Тесты](/tests/AtolOnline/Tests)
|
||||||
|
|
||||||
### Тестирование кода библиотеки
|
### Тестирование кода библиотеки
|
||||||
|
|
||||||
Файлы тестов находятся в директории `/tests` корня репозитория.
|
Файлы тестов находятся в директории `/tests` корня репозитория.
|
||||||
@ -57,24 +68,11 @@
|
|||||||
Для запуска тестов необходимо перейти в корень репозитория и выполнить одну из команд:
|
Для запуска тестов необходимо перейти в корень репозитория и выполнить одну из команд:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer test # обычное тестирование
|
composer psalm # статический анализ
|
||||||
composer coverage # тестирование с покрытием
|
composer phpcs # синтаксический анализ
|
||||||
|
composer test # полное тестирование без покрытия
|
||||||
|
composer coverage # полное тестирование с покрытием
|
||||||
```
|
```
|
||||||
|
|
||||||
После тестирования с покрытием создаётся отчёт в директории `.coverage` в корне репозитория.
|
После тестирования с покрытием в корне репозитория создаётся отчёт, который сохраняется в директории `.coverage`.
|
||||||
|
Для тестирования с покрытием необходим `php-xdebug` с параметром `xdebug.mode = coverage,...`.
|
||||||
### Использование библиотеки
|
|
||||||
|
|
||||||
Весь исходный код находится в директории [`/src`](/src).
|
|
||||||
Вы имеете право использовать и распространять его на условиях **[лицензии MIT](LICENSE)**.
|
|
||||||
|
|
||||||
1. Обращайтесь к [документации библиотеки](/docs)
|
|
||||||
2. Обращайтесь к [исходному коду](/src) и описанным докблокам
|
|
||||||
3. Обращайтесь к [тестам](/tests/AtolOnline/Tests)
|
|
||||||
4. Используйте нормальную IDE
|
|
||||||
|
|
||||||
## Дополнительные ресурсы
|
|
||||||
|
|
||||||
* [Документация АТОЛ Онлайн](https://online.atol.ru/lib/)
|
|
||||||
|
|
||||||
[![Donate using Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/AnthonyAxenov/donate)
|
|
||||||
|
@ -5,22 +5,18 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"api",
|
"api",
|
||||||
"e-commerce",
|
"чек",
|
||||||
"54-fz",
|
|
||||||
"54-фз",
|
|
||||||
"kkt",
|
|
||||||
"ккт",
|
|
||||||
"cash",
|
|
||||||
"cash register",
|
|
||||||
"payment",
|
|
||||||
"payment system",
|
|
||||||
"atol",
|
"atol",
|
||||||
"атол",
|
"атол",
|
||||||
|
"payment",
|
||||||
|
"e-commerce",
|
||||||
"atol online",
|
"atol online",
|
||||||
"атол онлайн",
|
"атол онлайн",
|
||||||
"fiscalization",
|
"atol-online",
|
||||||
|
"атол-онлайн",
|
||||||
"фискализация",
|
"фискализация",
|
||||||
"чек"
|
"fiscalization",
|
||||||
|
"payment system"
|
||||||
],
|
],
|
||||||
"homepage": "https://github.com/anthonyaxenov/atol-online",
|
"homepage": "https://github.com/anthonyaxenov/atol-online",
|
||||||
"readme": "https://github.com/anthonyaxenov/atol-online/blob/master/README.md",
|
"readme": "https://github.com/anthonyaxenov/atol-online/blob/master/README.md",
|
||||||
@ -39,28 +35,31 @@
|
|||||||
"docs": "https://github.com/anthonyaxenov/atol-online/blob/master/docs/readme.md"
|
"docs": "https://github.com/anthonyaxenov/atol-online/blob/master/docs/readme.md"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
|
||||||
"type": "Patreon",
|
|
||||||
"url": "https://www.patreon.com/anthonyaxenov"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "Yoomoney",
|
"type": "Yoomoney",
|
||||||
"url": "https://yoomoney.ru/to/41001685237530"
|
"url": "https://yoomoney.ru/to/41001685237530"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "Buy Me a Coffee",
|
||||||
|
"url": "https://www.buymeacoffee.com/axenov"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.0",
|
"php": ">=8.1",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"guzzlehttp/guzzle": "^7.4",
|
"guzzlehttp/guzzle": "^7.5",
|
||||||
"psr/log": "^3",
|
"psr/log": "^3",
|
||||||
"ramsey/uuid": "^4.2",
|
"ramsey/uuid": "^4.6",
|
||||||
"myclabs/php-enum": "^1.8",
|
"illuminate/collections": "^v9.43",
|
||||||
"illuminate/collections": "^8.70",
|
|
||||||
"jetbrains/phpstorm-attributes": "^1.0"
|
"jetbrains/phpstorm-attributes": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.5"
|
"friendsofphp/php-cs-fixer": "^3.13",
|
||||||
|
"phpunit/phpunit": "^9.5",
|
||||||
|
"psalm/plugin-phpunit": "^0.18",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7",
|
||||||
|
"vimeo/psalm": "^4.30"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@ -73,6 +72,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"phpcs": "vendor/bin/phpcs",
|
||||||
|
"psalm": "vendor/bin/psalm",
|
||||||
"test": "vendor/bin/phpunit --colors=always",
|
"test": "vendor/bin/phpunit --colors=always",
|
||||||
"coverage": "php -dxdebug.mode=coverage vendor/bin/phpunit --coverage-html .coverage"
|
"coverage": "php -dxdebug.mode=coverage vendor/bin/phpunit --coverage-html .coverage"
|
||||||
},
|
},
|
||||||
|
3014
composer.lock
generated
3014
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Коллекциями являются объекты, способные хранить в себе [сущности](entity.md). Они унаследованы
|
Коллекциями являются объекты, способные хранить в себе [сущности](entity.md).
|
||||||
от `Illuminate/Support/Collection` и полностью поддерживают все
|
Они унаследованы от `Illuminate/Support/Collection` и полностью поддерживают все
|
||||||
[стандартные методы коллекций Laravel](https://laravel.com/docs/master/collections).
|
[стандартные методы](https://laravel.com/docs/master/collections) коллекций Laravel.
|
||||||
|
|
||||||
Помимо этого, они валидируют количество и вид сущностей, которые могут хранить в себе, согласно схеме АТОЛ Онлайн API.
|
Помимо этого, они валидируют количество и вид сущностей, которые могут хранить в себе, согласно схеме API АТОЛ Онлайн.
|
||||||
|
|
||||||
Коллекции ведут себя аналогично самим сущностям в части приведения к массивам и json-ификации.
|
Коллекции ведут себя аналогично самим сущностям в части приведения к массивам и json-ификации.
|
||||||
|
|
||||||
|
@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Сущностями являются все классы, которые необходимы для взаимодействия с API. Они находятся в директори `src/Entities` и
|
Сущностями являются все классы, которые необходимы для взаимодействия с API.
|
||||||
расширяют абстрактный класс `AtolOnline\Entities\Entity`.
|
Они находятся в директори `src/Entities` и расширяют абстрактный класс `AtolOnline\Entities\Entity`.
|
||||||
|
|
||||||
Каждая сущность содержит в себе только те данные, которые необходимы согласно схемы АТОЛ Онлайн API.
|
Каждая сущность содержит в себе только те данные, которые необходимы согласно схемы API АТОЛ Онлайн.
|
||||||
|
|
||||||
Ниже перечислены возможности сущностей.
|
Ниже перечислены возможности сущностей.
|
||||||
|
|
||||||
|
@ -48,7 +48,8 @@ $monitor->setTestMode(false);
|
|||||||
$kkts = $monitor->getAll();
|
$kkts = $monitor->getAll();
|
||||||
```
|
```
|
||||||
|
|
||||||
В ответе будет итерируемая коллекция объектов `AtolOnline\Entities\Kkt`. Каждый из этих объектов содержит атрибуты:
|
В ответе будет итерируемая коллекция объектов `AtolOnline\Entities\Kkt`.
|
||||||
|
Каждый из этих объектов содержит атрибуты:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
// для примера получим первую ККТ из всех
|
// для примера получим первую ККТ из всех
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# Документация к библиотеке
|
# Документация к библиотеке
|
||||||
|
|
||||||
<a id="toc"></a>
|
<a id="toc"></a>
|
||||||
|
|
||||||
## Содержание
|
## Содержание
|
||||||
|
|
||||||
* [Общий алгоритм](#getstarted)
|
* [Общий алгоритм](#getstarted)
|
||||||
@ -14,11 +13,10 @@
|
|||||||
Если вы нашли опечатку или какое-то несоответствие — делайте pull-request.
|
Если вы нашли опечатку или какое-то несоответствие — делайте pull-request.
|
||||||
|
|
||||||
<a id="getstarted"></a>
|
<a id="getstarted"></a>
|
||||||
|
|
||||||
## Общий алгоритм
|
## Общий алгоритм
|
||||||
|
|
||||||
1. Создать документ `AtolOnline\Entities\Receipt` или `AtolOnline\Entities\Correction`, добавив в него все необходимые
|
1. Создать документ `AtolOnline\Entities\Receipt` или `AtolOnline\Entities\Correction`,
|
||||||
данные
|
добавив в него все необходимые данные
|
||||||
2. Отправить документ на регистрацию:
|
2. Отправить документ на регистрацию:
|
||||||
2.1. *Необязательно:* при отправке задать `callback_url`, на который АТОЛ отправит HTTP POST о состоянии документа;
|
2.1. *Необязательно:* при отправке задать `callback_url`, на который АТОЛ отправит HTTP POST о состоянии документа;
|
||||||
2.2. *Необязательно:* при отправке задать `external_id`, чтобы присвоить свой уникальный идентификатор документа;
|
2.2. *Необязательно:* при отправке задать `external_id`, чтобы присвоить свой уникальный идентификатор документа;
|
||||||
@ -26,8 +24,8 @@
|
|||||||
> Если с документом был передан `callback_url`, то ответ придёт на этот самый URL.
|
> Если с документом был передан `callback_url`, то ответ придёт на этот самый URL.
|
||||||
> Он должен быть обработан вашим сервисом в соответствии с бизнес-процессом.
|
> Он должен быть обработан вашим сервисом в соответствии с бизнес-процессом.
|
||||||
|
|
||||||
> Если с документом **не был** передан `callback_url` **либо** callback от АТОЛа не пришёл в течение 300 секунд
|
> Если с документом **не был** передан `callback_url` **либо** callback от АТОЛа не был получен/обработан в течение
|
||||||
> (5 минут), нужно запрашивать вручную по `uuid`, пришедшему от АТОЛа в ответ на регистрацию документа.
|
> 300 секунд (5 минут), нужно запрашивать вручную по `uuid`, пришедшему от АТОЛа в ответ на регистрацию документа.
|
||||||
4. Проверить состояние документа:
|
4. Проверить состояние документа:
|
||||||
4.1. взять `uuid` ответа, полученного на запрос фискализации;
|
4.1. взять `uuid` ответа, полученного на запрос фискализации;
|
||||||
4.2. отправить его в запросе состояния документа.
|
4.2. отправить его в запросе состояния документа.
|
||||||
|
26
phpcs.xml
Normal file
26
phpcs.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
|
~
|
||||||
|
~ This code is licensed under MIT.
|
||||||
|
~ Этот код распространяется по лицензии MIT.
|
||||||
|
~ https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
|
-->
|
||||||
|
|
||||||
|
<ruleset name="atol-online standards">
|
||||||
|
<description>atol-online coding standards</description>
|
||||||
|
|
||||||
|
<file>src</file>
|
||||||
|
<file>tests</file>
|
||||||
|
|
||||||
|
<exclude-pattern>*/docs/*</exclude-pattern>
|
||||||
|
<exclude-pattern>*/vendor/*</exclude-pattern>
|
||||||
|
|
||||||
|
<arg name="extensions" value="php"/>
|
||||||
|
<arg name="colors"/>
|
||||||
|
<arg value="p"/>
|
||||||
|
|
||||||
|
<rule ref="PSR12">
|
||||||
|
<exclude name="PSR12.Files.FileHeader.SpacingInsideBlock"/>
|
||||||
|
</rule>
|
||||||
|
</ruleset>
|
62
psalm.xml
Normal file
62
psalm.xml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
|
~
|
||||||
|
~ This code is licensed under MIT.
|
||||||
|
~ Этот код распространяется по лицензии MIT.
|
||||||
|
~ https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
|
-->
|
||||||
|
|
||||||
|
<psalm
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="https://getpsalm.org/schema/config"
|
||||||
|
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
||||||
|
|
||||||
|
errorLevel="7"
|
||||||
|
addParamDefaultToDocblockType="true"
|
||||||
|
allowStringToStandInForClass="true"
|
||||||
|
disableSuppressAll="true"
|
||||||
|
ensureArrayIntOffsetsExist="true"
|
||||||
|
ensureArrayStringOffsetsExist="true"
|
||||||
|
findUnusedCode="true"
|
||||||
|
findUnusedPsalmSuppress="true"
|
||||||
|
findUnusedVariablesAndParams="true"
|
||||||
|
runTaintAnalysis="true"
|
||||||
|
sealAllMethods="true"
|
||||||
|
sealAllProperties="true"
|
||||||
|
strictBinaryOperands="true"
|
||||||
|
>
|
||||||
|
<!-- Default values:
|
||||||
|
allowNamedArgumentCalls="true"
|
||||||
|
checkForThrowsDocblock="false"
|
||||||
|
checkForThrowsInGlobalScope="false"
|
||||||
|
hideExternalErrors="false"
|
||||||
|
hoistConstants="false"
|
||||||
|
ignoreInternalFunctionFalseReturn="true"
|
||||||
|
ignoreInternalFunctionNullReturn="true"
|
||||||
|
inferPropertyTypesFromConstructor="true"
|
||||||
|
memoizeMethodCallResults="false"
|
||||||
|
rememberPropertyAssignmentsAfterCall="true"
|
||||||
|
reportInfo="true"
|
||||||
|
reportMixedIssues="true" - when errorLevel>=3
|
||||||
|
resolveFromConfigFile="true"
|
||||||
|
skipChecksOnUnresolvableIncludes="false"
|
||||||
|
throwExceptionOnError="false"
|
||||||
|
useDocblockPropertyTypes="false"
|
||||||
|
useDocblockTypes="true"
|
||||||
|
usePhpDocMethodsWithoutMagicCall="false"
|
||||||
|
usePhpDocPropertiesWithoutMagicCall="false"
|
||||||
|
-->
|
||||||
|
|
||||||
|
<projectFiles>
|
||||||
|
<directory name="src"/>
|
||||||
|
<directory name="tests"/>
|
||||||
|
<ignoreFiles>
|
||||||
|
<directory name="vendor"/>
|
||||||
|
</ignoreFiles>
|
||||||
|
</projectFiles>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
|
||||||
|
</plugins>
|
||||||
|
</psalm>
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Api;
|
namespace AtolOnline\Api;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
AuthFailedException,
|
AuthFailedException,
|
||||||
EmptyLoginException,
|
EmptyLoginException,
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
/** @noinspection PhpMultipleClassDeclarationsInspection */
|
/** @noinspection PhpMultipleClassDeclarationsInspection */
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Api;
|
namespace AtolOnline\Api;
|
||||||
|
|
||||||
@ -36,7 +37,7 @@ final class AtolResponse implements JsonSerializable, Stringable
|
|||||||
/**
|
/**
|
||||||
* @var object|array|null Содержимое ответа сервера
|
* @var object|array|null Содержимое ответа сервера
|
||||||
*/
|
*/
|
||||||
protected object|array|null $content;
|
protected object | array | null $content;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var array Заголовки ответа
|
* @var array Заголовки ответа
|
||||||
@ -122,7 +123,8 @@ final class AtolResponse implements JsonSerializable, Stringable
|
|||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
#[ArrayShape([
|
#[ArrayShape(
|
||||||
|
[
|
||||||
'code' => 'int',
|
'code' => 'int',
|
||||||
'headers' => 'array|\string[][]',
|
'headers' => 'array|\string[][]',
|
||||||
'body' => 'mixed',
|
'body' => 'mixed',
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Api;
|
namespace AtolOnline\Api;
|
||||||
|
|
||||||
use AtolOnline\{
|
use AtolOnline\{
|
||||||
Constants\Constraints,
|
Constraints,
|
||||||
TestEnvParams};
|
TestEnvParams};
|
||||||
use AtolOnline\Entities\{
|
use AtolOnline\Entities\{
|
||||||
Correction,
|
Correction,
|
||||||
@ -320,7 +321,7 @@ final class Fiscalizer extends AtolClient
|
|||||||
*/
|
*/
|
||||||
protected function registerDocument(
|
protected function registerDocument(
|
||||||
string $api_method,
|
string $api_method,
|
||||||
Receipt|Correction $document,
|
Receipt | Correction $document,
|
||||||
?string $external_id = null
|
?string $external_id = null
|
||||||
): ?AtolResponse {
|
): ?AtolResponse {
|
||||||
$this->isTestMode() && $document->getCompany()
|
$this->isTestMode() && $document->getCompany()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Api;
|
namespace AtolOnline\Api;
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ final class Monitor extends AtolClient
|
|||||||
public function getAll(?int $limit = null, ?int $offset = null): Collection
|
public function getAll(?int $limit = null, ?int $offset = null): Collection
|
||||||
{
|
{
|
||||||
$collection = collect($this->fetchAll($limit, $offset)->getContent());
|
$collection = collect($this->fetchAll($limit, $offset)->getContent());
|
||||||
return $collection->map(fn($data) => new Kkt($data));
|
return $collection->map(fn ($data) => new Kkt($data));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Collections;
|
namespace AtolOnline\Collections;
|
||||||
|
|
||||||
@ -33,36 +34,38 @@ abstract class EntityCollection extends Collection
|
|||||||
/**
|
/**
|
||||||
* Проверяет количество элементов коллекции
|
* Проверяет количество элементов коллекции
|
||||||
*
|
*
|
||||||
* @return void
|
* @return static
|
||||||
*/
|
*/
|
||||||
public function checkCount(): void
|
public function checkCount(): static
|
||||||
{
|
{
|
||||||
$this->isEmpty() && throw new (static::EMPTY_EXCEPTION_CLASS)();
|
$this->isEmpty() && throw new (static::EMPTY_EXCEPTION_CLASS)();
|
||||||
$this->count() > static::MAX_COUNT && throw new (static::TOO_MANY_EXCEPTION_CLASS)(static::MAX_COUNT);
|
$this->count() > static::MAX_COUNT && throw new (static::TOO_MANY_EXCEPTION_CLASS)(static::MAX_COUNT);
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверяет корректность класса элемента коллекции
|
* Проверяет корректность класса элемента коллекции
|
||||||
*
|
*
|
||||||
* @param mixed $item
|
* @param mixed $item
|
||||||
* @return void
|
* @return static
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function checkItemClass(mixed $item): void
|
public function checkItemClass(mixed $item): static
|
||||||
{
|
{
|
||||||
if (!is_object($item) || $item::class !== static::ENTITY_CLASS) {
|
if (!is_object($item) || $item::class !== static::ENTITY_CLASS) {
|
||||||
throw new InvalidEntityInCollectionException(static::class, static::ENTITY_CLASS, $item);
|
throw new InvalidEntityInCollectionException(static::class, static::ENTITY_CLASS, $item);
|
||||||
}
|
}
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Проверяет корректность классов элементов коллекции
|
* Проверяет корректность классов элементов коллекции
|
||||||
*
|
*
|
||||||
* @return $this
|
* @return static
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
*/
|
*/
|
||||||
public function checkItemsClasses(): self
|
public function checkItemsClasses(): static
|
||||||
{
|
{
|
||||||
return $this->each(fn($item) => $this->checkItemClass($item));
|
return $this->each(fn ($item) => $this->checkItemClass($item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
namespace AtolOnline\Collections;
|
namespace AtolOnline\Collections;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Entities\Item;
|
use AtolOnline\Entities\Item;
|
||||||
use AtolOnline\Exceptions\EmptyItemsException;
|
use AtolOnline\Exceptions\EmptyItemsException;
|
||||||
use AtolOnline\Exceptions\TooManyItemsException;
|
use AtolOnline\Exceptions\TooManyItemsException;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
namespace AtolOnline\Collections;
|
namespace AtolOnline\Collections;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Entities\Payment;
|
use AtolOnline\Entities\Payment;
|
||||||
use AtolOnline\Exceptions\EmptyPaymentsException;
|
use AtolOnline\Exceptions\EmptyPaymentsException;
|
||||||
use AtolOnline\Exceptions\TooManyPaymentsException;
|
use AtolOnline\Exceptions\TooManyPaymentsException;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
namespace AtolOnline\Collections;
|
namespace AtolOnline\Collections;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Entities\Vat;
|
use AtolOnline\Entities\Vat;
|
||||||
use AtolOnline\Exceptions\EmptyVatsException;
|
use AtolOnline\Exceptions\EmptyVatsException;
|
||||||
use AtolOnline\Exceptions\TooManyVatsException;
|
use AtolOnline\Exceptions\TooManyVatsException;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,9 +8,9 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Constants;
|
namespace AtolOnline;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс с константами ограничений
|
* Класс с константами ограничений
|
||||||
@ -19,55 +20,55 @@ final class Constraints
|
|||||||
/**
|
/**
|
||||||
* Максимальная длина Callback URL
|
* Максимальная длина Callback URL
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_CALLBACK_URL = 256;
|
public const MAX_LENGTH_CALLBACK_URL = 256;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина email
|
* Максимальная длина email
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_EMAIL = 64;
|
public const MAX_LENGTH_EMAIL = 64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина логина ККТ
|
* Максимальная длина логина ККТ
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_LOGIN = 100;
|
public const MAX_LENGTH_LOGIN = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина пароля ККТ
|
* Максимальная длина пароля ККТ
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_PASSWORD = 100;
|
public const MAX_LENGTH_PASSWORD = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина адреса места расчётов
|
* Максимальная длина адреса места расчётов
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_PAYMENT_ADDRESS = 256;
|
public const MAX_LENGTH_PAYMENT_ADDRESS = 256;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина наименования покупателя (1227)
|
* Максимальная длина наименования покупателя (1227)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_CLIENT_NAME = 256;
|
public const MAX_LENGTH_CLIENT_NAME = 256;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина наименования предмета расчёта (1030)
|
* Максимальная длина наименования предмета расчёта (1030)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_ITEM_NAME = 128;
|
public const MAX_LENGTH_ITEM_NAME = 128;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная цена за единицу предмета расчёта (1079)
|
* Максимальная цена за единицу предмета расчёта (1079)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_ITEM_PRICE = 42949672.95;
|
public const MAX_COUNT_ITEM_PRICE = 42949672.95;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальное количество (вес) единицы предмета расчёта (1023)
|
* Максимальное количество (вес) единицы предмета расчёта (1023)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_ITEM_QUANTITY = 99999.999;
|
public const MAX_COUNT_ITEM_QUANTITY = 99999.999;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная стоимость всех предметов расчёта в документе прихода, расхода,
|
* Максимальная стоимость всех предметов расчёта в документе прихода, расхода,
|
||||||
@ -75,122 +76,122 @@ final class Constraints
|
|||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_ITEM_SUM = 42949672.95;
|
public const MAX_COUNT_ITEM_SUM = 42949672.95;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина телефона или email покупателя (1008)
|
* Максимальная длина телефона или email покупателя (1008)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_CLIENT_CONTACT = 64;
|
public const MAX_LENGTH_CLIENT_CONTACT = 64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Длина операции для платёжного агента (1044)
|
* Длина операции для платёжного агента (1044)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 19
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 19
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_PAYING_AGENT_OPERATION = 24;
|
public const MAX_LENGTH_PAYING_AGENT_OPERATION = 24;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальное количество предметов расчёта в документе прихода, расхода, возврата прихода, возврата расхода
|
* Максимальное количество предметов расчёта в документе прихода, расхода, возврата прихода, возврата расхода
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_DOC_ITEMS = 100;
|
public const MAX_COUNT_DOC_ITEMS = 100;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина единицы измерения предмета расчётов
|
* Максимальная длина единицы измерения предмета расчётов
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_MEASUREMENT_UNIT = 16;
|
public const MAX_LENGTH_MEASUREMENT_UNIT = 16;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина пользовательских данных для предмета расчётов (1191)
|
* Максимальная длина пользовательских данных для предмета расчётов (1191)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 29
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 29
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_USER_DATA = 64;
|
public const MAX_LENGTH_USER_DATA = 64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Минимальная длина кода таможенной декларации (1231)
|
* Минимальная длина кода таможенной декларации (1231)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/receipt/items/declaration_number"
|
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/receipt/items/declaration_number"
|
||||||
*/
|
*/
|
||||||
const MIN_LENGTH_DECLARATION_NUMBER = 1;
|
public const MIN_LENGTH_DECLARATION_NUMBER = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина кода таможенной декларации (1231)
|
* Максимальная длина кода таможенной декларации (1231)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 30
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 30
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_DECLARATION_NUMBER = 32;
|
public const MAX_LENGTH_DECLARATION_NUMBER = 32;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальное количество платежей в любом документе
|
* Максимальное количество платежей в любом документе
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 30 и 35
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 30 и 35
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_DOC_PAYMENTS = 10;
|
public const MAX_COUNT_DOC_PAYMENTS = 10;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальное количество ставок НДС в любом документе
|
* Максимальное количество ставок НДС в любом документе
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 31 и 36
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 31 и 36
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_DOC_VATS = 6;
|
public const MAX_COUNT_DOC_VATS = 6;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная сумма одной оплаты
|
* Максимальная сумма одной оплаты
|
||||||
*/
|
*/
|
||||||
const MAX_COUNT_PAYMENT_SUM = 99999.999;
|
public const MAX_COUNT_PAYMENT_SUM = 99999.999;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина имени кассира (1021)
|
* Максимальная длина имени кассира (1021)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_CASHIER_NAME = 64;
|
public const MAX_LENGTH_CASHIER_NAME = 64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина кода товара в байтах (1162)
|
* Максимальная длина кода товара в байтах (1162)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_ITEM_CODE = 32;
|
public const MAX_LENGTH_ITEM_CODE = 32;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина значения дополнительного реквизита чека (1192)
|
* Максимальная длина значения дополнительного реквизита чека (1192)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_ADD_CHECK_PROP = 16;
|
public const MAX_LENGTH_ADD_CHECK_PROP = 16;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина наименования дополнительного реквизита пользователя (1085)
|
* Максимальная длина наименования дополнительного реквизита пользователя (1085)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_ADD_USER_PROP_NAME = 64;
|
public const MAX_LENGTH_ADD_USER_PROP_NAME = 64;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Максимальная длина значения дополнительного реквизита пользователя (1086)
|
* Максимальная длина значения дополнительного реквизита пользователя (1086)
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
|
||||||
*/
|
*/
|
||||||
const MAX_LENGTH_ADD_USER_PROP_VALUE = 256;
|
public const MAX_LENGTH_ADD_USER_PROP_VALUE = 256;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Формат даты документа коррекции
|
* Формат даты документа коррекции
|
||||||
*/
|
*/
|
||||||
const CORRECTION_DATE_FORMAT = 'd.m.Y';
|
public const CORRECTION_DATE_FORMAT = 'd.m.Y';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Регулярное выражение для валидации строки ИНН
|
* Регулярное выражение для валидации строки ИНН
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/receipt/client/inn"
|
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/receipt/client/inn"
|
||||||
*/
|
*/
|
||||||
const PATTERN_INN
|
public const PATTERN_INN
|
||||||
= /* @lang PhpRegExp */
|
= /* @lang PhpRegExp */
|
||||||
'/(^[\d]{10}$)|(^[\d]{12}$)/';
|
'/(^[\d]{10}$)|(^[\d]{12}$)/';
|
||||||
|
|
||||||
@ -199,14 +200,14 @@ final class Constraints
|
|||||||
*
|
*
|
||||||
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/definitions/phone_number"
|
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/definitions/phone_number"
|
||||||
*/
|
*/
|
||||||
const PATTERN_PHONE
|
public const PATTERN_PHONE
|
||||||
= /* @lang PhpRegExp */
|
= /* @lang PhpRegExp */
|
||||||
'/^([^\s\\\]{0,17}|\+[^\s\\\]{1,18})$/';
|
'/^([^\s\\\]{0,17}|\+[^\s\\\]{1,18})$/';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Регулярное выражение для валидации строки Callback URL
|
* Регулярное выражение для валидации строки Callback URL
|
||||||
*/
|
*/
|
||||||
const PATTERN_CALLBACK_URL
|
public const PATTERN_CALLBACK_URL
|
||||||
= /* @lang PhpRegExp */
|
= /* @lang PhpRegExp */
|
||||||
'/^http(s?):\/\/[0-9a-zA-Zа-яА-Я]' .
|
'/^http(s?):\/\/[0-9a-zA-Zа-яА-Я]' .
|
||||||
'([-.\w]*[0-9a-zA-Zа-яА-Я])*(:(0-9)*)*(\/?)([a-zAZ0-9а-яА-Я\-.?,\'\/\\\+&=%\$#_]*)?$/';
|
'([-.\w]*[0-9a-zA-Zа-яА-Я])*(:(0-9)*)*(\/?)([a-zAZ0-9а-яА-Я\-.?,\'\/\\\+&=%\$#_]*)?$/';
|
||||||
@ -214,7 +215,7 @@ final class Constraints
|
|||||||
/**
|
/**
|
||||||
* Регулярное выражение для валидации кода страны происхождения товара
|
* Регулярное выражение для валидации кода страны происхождения товара
|
||||||
*/
|
*/
|
||||||
const PATTERN_OKSM_CODE
|
public const PATTERN_OKSM_CODE
|
||||||
= /* @lang PhpRegExp */
|
= /* @lang PhpRegExp */
|
||||||
'/^[\d]{3}$/';
|
'/^[\d]{3}$/';
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,21 +8,19 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
EmptyAddUserPropNameException,
|
EmptyAddUserPropNameException,
|
||||||
EmptyAddUserPropValueException,
|
EmptyAddUserPropValueException,
|
||||||
TooLongAddUserPropNameException,
|
TooLongAddUserPropNameException,
|
||||||
TooLongAddUserPropValueException
|
TooLongAddUserPropValueException};
|
||||||
};
|
|
||||||
use JetBrains\PhpStorm\{
|
use JetBrains\PhpStorm\{
|
||||||
ArrayShape,
|
ArrayShape,
|
||||||
Pure
|
Pure};
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс, описывающий дополнительный реквизит пользователя
|
* Класс, описывающий дополнительный реквизит пользователя
|
||||||
@ -30,16 +29,6 @@ use JetBrains\PhpStorm\{
|
|||||||
*/
|
*/
|
||||||
final class AdditionalUserProps extends Entity
|
final class AdditionalUserProps extends Entity
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var string Наименование (1085)
|
|
||||||
*/
|
|
||||||
protected string $name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string Значение (1086)
|
|
||||||
*/
|
|
||||||
protected string $value;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор объекта покупателя
|
* Конструктор объекта покупателя
|
||||||
*
|
*
|
||||||
@ -50,8 +39,10 @@ final class AdditionalUserProps extends Entity
|
|||||||
* @throws TooLongAddUserPropNameException
|
* @throws TooLongAddUserPropNameException
|
||||||
* @throws TooLongAddUserPropValueException
|
* @throws TooLongAddUserPropValueException
|
||||||
*/
|
*/
|
||||||
public function __construct(string $name, string $value)
|
public function __construct(
|
||||||
{
|
protected string $name,
|
||||||
|
protected string $value,
|
||||||
|
) {
|
||||||
$this->setName($name)->setValue($value);
|
$this->setName($name)->setValue($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Enums\AgentTypes;
|
use AtolOnline\Enums\AgentType;
|
||||||
use AtolOnline\Exceptions\InvalidEnumValueException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс, описывающий данные агента
|
* Класс, описывающий данные агента
|
||||||
@ -21,53 +21,29 @@ use AtolOnline\Exceptions\InvalidEnumValueException;
|
|||||||
*/
|
*/
|
||||||
final class AgentInfo extends Entity
|
final class AgentInfo extends Entity
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var string|null Признак агента (1057)
|
|
||||||
*/
|
|
||||||
protected ?string $type = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var PayingAgent|null Платёжный агент
|
|
||||||
*/
|
|
||||||
protected ?PayingAgent $paying_agent = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var ReceivePaymentsOperator|null Оператор по приёму платежей
|
|
||||||
*/
|
|
||||||
protected ?ReceivePaymentsOperator $receive_payments_operator = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var MoneyTransferOperator|null Оператор перевода
|
|
||||||
*/
|
|
||||||
protected ?MoneyTransferOperator $money_transfer_operator = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param string|null $type Признак агента (1057)
|
* @param AgentType|null $type Признак агента (1057)
|
||||||
* @param PayingAgent|null $pagent Платёжный агент
|
* @param PayingAgent|null $payingAgent Платёжный агент
|
||||||
* @param ReceivePaymentsOperator|null $rp_operator Оператор по приёму платежей
|
* @param ReceivePaymentsOperator|null $receivePaymentsOperator Оператор по приёму платежей
|
||||||
* @param MoneyTransferOperator|null $mt_operator Оператор перевода
|
* @param MoneyTransferOperator|null $moneyTransferOperator Оператор перевода
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
?string $type = null,
|
protected ?AgentType $type = null,
|
||||||
?PayingAgent $pagent = null,
|
protected ?PayingAgent $payingAgent = null,
|
||||||
?ReceivePaymentsOperator $rp_operator = null,
|
protected ?ReceivePaymentsOperator $receivePaymentsOperator = null,
|
||||||
?MoneyTransferOperator $mt_operator = null,
|
protected ?MoneyTransferOperator $moneyTransferOperator = null,
|
||||||
) {
|
) {
|
||||||
!is_null($type) && $this->setType($type);
|
$this->setType($type);
|
||||||
!is_null($pagent) && $this->setPayingAgent($pagent);
|
|
||||||
!is_null($rp_operator) && $this->setReceivePaymentsOperator($rp_operator);
|
|
||||||
!is_null($mt_operator) && $this->setMoneyTransferOperator($mt_operator);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает установленный признак оператора
|
* Возвращает установленный признак оператора
|
||||||
*
|
*
|
||||||
* @return string|null
|
* @return AgentType|null
|
||||||
*/
|
*/
|
||||||
public function getType(): ?string
|
public function getType(): ?AgentType
|
||||||
{
|
{
|
||||||
return $this->type;
|
return $this->type;
|
||||||
}
|
}
|
||||||
@ -75,24 +51,23 @@ final class AgentInfo extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанавливает признак оператора
|
* Устанавливает признак оператора
|
||||||
*
|
*
|
||||||
* @param string|null $type
|
* @param AgentType|null $type
|
||||||
* @return AgentInfo
|
* @return AgentInfo
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setType(?string $type): self
|
public function setType(?AgentType $type): self
|
||||||
{
|
{
|
||||||
AgentTypes::isValid($type) && $this->type = $type;
|
$this->type = $type;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взвращает установленного платёжного агента
|
* Возвращает установленного платёжного агента
|
||||||
*
|
*
|
||||||
* @return PayingAgent|null
|
* @return PayingAgent|null
|
||||||
*/
|
*/
|
||||||
public function getPayingAgent(): ?PayingAgent
|
public function getPayingAgent(): ?PayingAgent
|
||||||
{
|
{
|
||||||
return $this->paying_agent;
|
return $this->payingAgent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -103,7 +78,7 @@ final class AgentInfo extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setPayingAgent(?PayingAgent $agent): self
|
public function setPayingAgent(?PayingAgent $agent): self
|
||||||
{
|
{
|
||||||
$this->paying_agent = $agent;
|
$this->payingAgent = $agent;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +89,7 @@ final class AgentInfo extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getReceivePaymentsOperator(): ?ReceivePaymentsOperator
|
public function getReceivePaymentsOperator(): ?ReceivePaymentsOperator
|
||||||
{
|
{
|
||||||
return $this->receive_payments_operator;
|
return $this->receivePaymentsOperator;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -125,7 +100,7 @@ final class AgentInfo extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setReceivePaymentsOperator(?ReceivePaymentsOperator $operator): self
|
public function setReceivePaymentsOperator(?ReceivePaymentsOperator $operator): self
|
||||||
{
|
{
|
||||||
$this->receive_payments_operator = $operator;
|
$this->receivePaymentsOperator = $operator;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,7 +111,7 @@ final class AgentInfo extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getMoneyTransferOperator(): ?MoneyTransferOperator
|
public function getMoneyTransferOperator(): ?MoneyTransferOperator
|
||||||
{
|
{
|
||||||
return $this->money_transfer_operator;
|
return $this->moneyTransferOperator;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -147,7 +122,7 @@ final class AgentInfo extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setMoneyTransferOperator(?MoneyTransferOperator $operator): self
|
public function setMoneyTransferOperator(?MoneyTransferOperator $operator): self
|
||||||
{
|
{
|
||||||
$this->money_transfer_operator = $operator;
|
$this->moneyTransferOperator = $operator;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,13 +132,18 @@ final class AgentInfo extends Entity
|
|||||||
public function jsonSerialize(): array
|
public function jsonSerialize(): array
|
||||||
{
|
{
|
||||||
$json = [];
|
$json = [];
|
||||||
$this->getType() && $json['type'] = $this->getType();
|
if ($this?->type) {
|
||||||
$this->getPayingAgent()?->jsonSerialize() && $json['paying_agent'] = $this
|
$json['type'] = $this->getType();
|
||||||
->getPayingAgent()->jsonSerialize();
|
}
|
||||||
$this->getReceivePaymentsOperator()?->jsonSerialize() && $json['receive_payments_operator'] = $this
|
if ($this->payingAgent?->jsonSerialize()) {
|
||||||
->getReceivePaymentsOperator()->jsonSerialize();
|
$json['paying_agent'] = $this->payingAgent->jsonSerialize();
|
||||||
$this->getMoneyTransferOperator()?->jsonSerialize() && $json['money_transfer_operator'] = $this
|
}
|
||||||
->getMoneyTransferOperator()->jsonSerialize();
|
if ($this->receivePaymentsOperator?->jsonSerialize()) {
|
||||||
|
$json['receive_payments_operator'] = $this->receivePaymentsOperator->jsonSerialize();
|
||||||
|
}
|
||||||
|
if ($this->moneyTransferOperator?->jsonSerialize()) {
|
||||||
|
$json['money_transfer_operator'] = $this->moneyTransferOperator->jsonSerialize();
|
||||||
|
}
|
||||||
return $json;
|
return $json;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
InvalidEmailException,
|
InvalidEmailException,
|
||||||
InvalidInnLengthException,
|
InvalidInnLengthException,
|
||||||
@ -30,17 +31,8 @@ use JetBrains\PhpStorm\Pure;
|
|||||||
*/
|
*/
|
||||||
final class Client extends Entity
|
final class Client extends Entity
|
||||||
{
|
{
|
||||||
use HasEmail, HasInn;
|
use HasEmail;
|
||||||
|
use HasInn;
|
||||||
/**
|
|
||||||
* @var string|null Наименование (1227)
|
|
||||||
*/
|
|
||||||
protected ?string $name = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string|null Телефон (1008)
|
|
||||||
*/
|
|
||||||
protected ?string $phone = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор объекта покупателя
|
* Конструктор объекта покупателя
|
||||||
@ -56,9 +48,9 @@ final class Client extends Entity
|
|||||||
* @throws TooLongEmailException
|
* @throws TooLongEmailException
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
?string $name = null,
|
protected ?string $name = null,
|
||||||
|
protected ?string $phone = null,
|
||||||
?string $email = null,
|
?string $email = null,
|
||||||
?string $phone = null,
|
|
||||||
?string $inn = null
|
?string $inn = null
|
||||||
) {
|
) {
|
||||||
!is_null($name) && $this->setName($name);
|
!is_null($name) && $this->setName($name);
|
||||||
@ -116,8 +108,8 @@ final class Client extends Entity
|
|||||||
public function setPhone(?string $phone): self
|
public function setPhone(?string $phone): self
|
||||||
{
|
{
|
||||||
if (is_string($phone)) {
|
if (is_string($phone)) {
|
||||||
$phone = preg_replace('/[^\d]/', '', trim($phone));
|
$phone = preg_replace('/\D/', '', trim($phone));
|
||||||
if (preg_match(Constraints::PATTERN_PHONE, $phone) != 1) {
|
if (preg_match(Constraints::PATTERN_PHONE, $phone) !== 1) {
|
||||||
throw new InvalidPhoneException($phone);
|
throw new InvalidPhoneException($phone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,8 +125,8 @@ final class Client extends Entity
|
|||||||
{
|
{
|
||||||
$json = [];
|
$json = [];
|
||||||
!is_null($this->getName()) && $json['name'] = $this->getName();
|
!is_null($this->getName()) && $json['name'] = $this->getName();
|
||||||
!is_null($this->getEmail()) && $json['email'] = $this->getEmail();
|
|
||||||
!is_null($this->getPhone()) && $json['phone'] = $this->getPhone();
|
!is_null($this->getPhone()) && $json['phone'] = $this->getPhone();
|
||||||
|
!is_null($this->getEmail()) && $json['email'] = $this->getEmail();
|
||||||
!is_null($this->getInn()) && $json['inn'] = $this->getInn();
|
!is_null($this->getInn()) && $json['inn'] = $this->getInn();
|
||||||
return $json;
|
return $json;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,24 +8,21 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\{
|
use AtolOnline\{
|
||||||
Constants\Constraints,
|
Constraints,
|
||||||
Enums\SnoTypes,
|
Enums\SnoType,
|
||||||
Traits\HasEmail,
|
Traits\HasEmail,
|
||||||
Traits\HasInn
|
Traits\HasInn};
|
||||||
};
|
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
InvalidEmailException,
|
InvalidEmailException,
|
||||||
InvalidEnumValueException,
|
|
||||||
InvalidInnLengthException,
|
InvalidInnLengthException,
|
||||||
InvalidPaymentAddressException,
|
InvalidPaymentAddressException,
|
||||||
TooLongEmailException,
|
TooLongEmailException,
|
||||||
TooLongPaymentAddressException
|
TooLongPaymentAddressException};
|
||||||
};
|
|
||||||
use JetBrains\PhpStorm\ArrayShape;
|
use JetBrains\PhpStorm\ArrayShape;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -34,47 +32,39 @@ use JetBrains\PhpStorm\ArrayShape;
|
|||||||
*/
|
*/
|
||||||
final class Company extends Entity
|
final class Company extends Entity
|
||||||
{
|
{
|
||||||
use HasEmail, HasInn;
|
use HasEmail;
|
||||||
|
use HasInn;
|
||||||
/**
|
|
||||||
* @var string|null Система налогообложения продавца (1055)
|
|
||||||
*/
|
|
||||||
protected ?string $sno;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string|null Место расчётов (адрес интернет-магазина) (1187)
|
|
||||||
*/
|
|
||||||
protected ?string $payment_address;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param string $sno Система налогообложения продавца (1055)
|
|
||||||
* @param string $inn ИНН (1018)
|
* @param string $inn ИНН (1018)
|
||||||
* @param string $payment_address Место расчётов (адрес интернет-магазина) (1187)
|
* @param SnoType $sno Система налогообложения продавца (1055)
|
||||||
|
* @param string $paymentAddress Место расчётов (адрес интернет-магазина) (1187)
|
||||||
* @param string $email Почта (1117)
|
* @param string $email Почта (1117)
|
||||||
* @throws InvalidEmailException
|
* @throws InvalidEmailException
|
||||||
* @throws InvalidInnLengthException
|
* @throws InvalidInnLengthException
|
||||||
* @throws InvalidPaymentAddressException
|
* @throws InvalidPaymentAddressException
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws TooLongEmailException
|
* @throws TooLongEmailException
|
||||||
* @throws TooLongPaymentAddressException
|
* @throws TooLongPaymentAddressException
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
string $email, //TODO сделать необязательным здесь
|
|
||||||
string $sno, //TODO сделать необязательным здесь
|
|
||||||
string $inn,
|
string $inn,
|
||||||
string $payment_address,
|
protected SnoType $sno,
|
||||||
|
protected string $paymentAddress,
|
||||||
|
string $email,
|
||||||
) {
|
) {
|
||||||
$this->setEmail($email)->setSno($sno)->setInn($inn)->setPaymentAddress($payment_address);
|
$this->setInn($inn)
|
||||||
|
->setPaymentAddress($paymentAddress)
|
||||||
|
->setEmail($email);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает установленный тип налогообложения
|
* Возвращает установленный тип налогообложения
|
||||||
*
|
*
|
||||||
* @return string
|
* @return SnoType
|
||||||
*/
|
*/
|
||||||
public function getSno(): string
|
public function getSno(): SnoType
|
||||||
{
|
{
|
||||||
return $this->sno;
|
return $this->sno;
|
||||||
}
|
}
|
||||||
@ -82,14 +72,12 @@ final class Company extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанавливает тип налогообложения
|
* Устанавливает тип налогообложения
|
||||||
*
|
*
|
||||||
* @param string $sno
|
* @param SnoType $sno
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setSno(string $sno): self
|
public function setSno(SnoType $sno): self
|
||||||
{
|
{
|
||||||
$sno = trim($sno);
|
$this->sno = $sno;
|
||||||
SnoTypes::isValid($sno) && $this->sno = $sno;
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,57 +88,45 @@ final class Company extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getPaymentAddress(): string
|
public function getPaymentAddress(): string
|
||||||
{
|
{
|
||||||
return $this->payment_address;
|
return $this->paymentAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает адрес места расчётов
|
* Устанавливает адрес места расчётов
|
||||||
*
|
*
|
||||||
* @param string $payment_address
|
* @param string $paymentAddress
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws TooLongPaymentAddressException
|
* @throws TooLongPaymentAddressException
|
||||||
* @throws InvalidPaymentAddressException
|
* @throws InvalidPaymentAddressException
|
||||||
*/
|
*/
|
||||||
public function setPaymentAddress(string $payment_address): self
|
public function setPaymentAddress(string $paymentAddress): self
|
||||||
{
|
{
|
||||||
$payment_address = trim($payment_address);
|
$paymentAddress = trim($paymentAddress);
|
||||||
if (empty($payment_address)) {
|
if (empty($paymentAddress)) {
|
||||||
throw new InvalidPaymentAddressException();
|
throw new InvalidPaymentAddressException();
|
||||||
} elseif (mb_strlen($payment_address) > Constraints::MAX_LENGTH_PAYMENT_ADDRESS) {
|
} elseif (mb_strlen($paymentAddress) > Constraints::MAX_LENGTH_PAYMENT_ADDRESS) {
|
||||||
throw new TooLongPaymentAddressException($payment_address);
|
throw new TooLongPaymentAddressException($paymentAddress);
|
||||||
}
|
}
|
||||||
$this->payment_address = $payment_address;
|
$this->paymentAddress = $paymentAddress;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
* @throws InvalidEmailException
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidInnLengthException
|
|
||||||
* @throws InvalidPaymentAddressException
|
|
||||||
*/
|
*/
|
||||||
#[ArrayShape([
|
#[ArrayShape([
|
||||||
'email' => 'string',
|
|
||||||
'sno' => 'string',
|
'sno' => 'string',
|
||||||
|
'email' => 'string',
|
||||||
'inn' => 'string',
|
'inn' => 'string',
|
||||||
'payment_address' => 'string',
|
'payment_address' => 'string',
|
||||||
])]
|
])]
|
||||||
public function jsonSerialize(): array
|
public function jsonSerialize(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => $this->email
|
'inn' => $this->getInn(),
|
||||||
? $this->getEmail()
|
'sno' => $this->getSno(),
|
||||||
: throw new InvalidEmailException(),
|
'payment_address' => $this->getPaymentAddress(),
|
||||||
'sno' => $this->sno
|
'email' => $this->getEmail(),
|
||||||
? $this->getSno()
|
|
||||||
: throw new InvalidEnumValueException(SnoTypes::class, 'null'),
|
|
||||||
'inn' => $this->inn
|
|
||||||
? $this->getInn()
|
|
||||||
: throw new InvalidInnLengthException(),
|
|
||||||
'payment_address' => $this->payment_address
|
|
||||||
? $this->getPaymentAddress()
|
|
||||||
: throw new InvalidPaymentAddressException(),
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -14,7 +15,7 @@ use AtolOnline\{
|
|||||||
Api\Fiscalizer,
|
Api\Fiscalizer,
|
||||||
Collections\Payments,
|
Collections\Payments,
|
||||||
Collections\Vats,
|
Collections\Vats,
|
||||||
Constants\Constraints};
|
Constraints};
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
AuthFailedException,
|
AuthFailedException,
|
||||||
EmptyLoginException,
|
EmptyLoginException,
|
||||||
@ -40,49 +41,29 @@ final class Correction extends Entity
|
|||||||
*/
|
*/
|
||||||
public const DOC_TYPE = 'correction';
|
public const DOC_TYPE = 'correction';
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Company Продавец
|
|
||||||
*/
|
|
||||||
protected Company $company;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo вынести в трейт?
|
* @todo вынести в трейт?
|
||||||
* @var string|null ФИО кассира
|
* @var string|null ФИО кассира
|
||||||
*/
|
*/
|
||||||
protected ?string $cashier = null;
|
protected ?string $cashier = null;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var CorrectionInfo Данные коррекции
|
|
||||||
*/
|
|
||||||
protected CorrectionInfo $correction_info;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Payments Коллекция оплат
|
|
||||||
*/
|
|
||||||
protected Payments $payments;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var Vats Коллекция ставок НДС
|
|
||||||
*/
|
|
||||||
protected Vats $vats;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param Company $company
|
* @param Company $company Продавец
|
||||||
* @param CorrectionInfo $correction_info
|
* @param CorrectionInfo $correctionInfo Данные коррекции
|
||||||
* @param Payments $payments
|
* @param Payments $payments Коллекция оплат
|
||||||
* @param Vats $vats
|
* @param Vats $vats Коллекция ставок НДС
|
||||||
* @throws InvalidEntityInCollectionException
|
* @throws InvalidEntityInCollectionException
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Company $company,
|
protected Company $company,
|
||||||
CorrectionInfo $correction_info,
|
protected CorrectionInfo $correctionInfo,
|
||||||
Payments $payments,
|
protected Payments $payments,
|
||||||
Vats $vats,
|
protected Vats $vats,
|
||||||
) {
|
) {
|
||||||
$this->setCompany($company)->setCorrectionInfo($correction_info)->setPayments($payments)->setVats($vats);
|
$this->setCompany($company)->setCorrectionInfo($correctionInfo)->setPayments($payments)->setVats($vats);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -143,18 +124,18 @@ final class Correction extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getCorrectionInfo(): CorrectionInfo
|
public function getCorrectionInfo(): CorrectionInfo
|
||||||
{
|
{
|
||||||
return $this->correction_info;
|
return $this->correctionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает данные коррекции
|
* Устанавливает данные коррекции
|
||||||
*
|
*
|
||||||
* @param CorrectionInfo $correction_info
|
* @param CorrectionInfo $correctionInfo
|
||||||
* @return Correction
|
* @return Correction
|
||||||
*/
|
*/
|
||||||
public function setCorrectionInfo(CorrectionInfo $correction_info): Correction
|
public function setCorrectionInfo(CorrectionInfo $correctionInfo): Correction
|
||||||
{
|
{
|
||||||
$this->correction_info = $correction_info;
|
$this->correctionInfo = $correctionInfo;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,8 +158,7 @@ final class Correction extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setPayments(Payments $payments): self
|
public function setPayments(Payments $payments): self
|
||||||
{
|
{
|
||||||
$payments->checkCount();
|
$payments->checkCount()->checkItemsClasses();
|
||||||
$payments->checkItemsClasses();
|
|
||||||
$this->payments = $payments;
|
$this->payments = $payments;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@ -186,7 +166,7 @@ final class Correction extends Entity
|
|||||||
/**
|
/**
|
||||||
* Возвращает установленную коллекцию ставок НДС
|
* Возвращает установленную коллекцию ставок НДС
|
||||||
*
|
*
|
||||||
* @return Vats|null
|
* @return Vats
|
||||||
*/
|
*/
|
||||||
public function getVats(): Vats
|
public function getVats(): Vats
|
||||||
{
|
{
|
||||||
@ -196,14 +176,13 @@ final class Correction extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанаваливает коллекцию ставок НДС
|
* Устанаваливает коллекцию ставок НДС
|
||||||
*
|
*
|
||||||
* @param Vats|null $vats
|
* @param Vats $vats
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function setVats(Vats $vats): self
|
public function setVats(Vats $vats): self
|
||||||
{
|
{
|
||||||
$vats->checkCount();
|
$vats->checkCount()->checkItemsClasses();
|
||||||
$vats->checkItemsClasses();
|
|
||||||
$this->vats = $vats;
|
$this->vats = $vats;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,21 +8,21 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Enums\CorrectionTypes;
|
use AtolOnline\Enums\CorrectionType;
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
EmptyCorrectionNumberException,
|
EmptyCorrectionNumberException,
|
||||||
InvalidCorrectionDateException,
|
InvalidCorrectionDateException,};
|
||||||
InvalidEnumValueException};
|
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
use DateTimeImmutable;
|
||||||
|
use DateTimeInterface;
|
||||||
use Exception;
|
use Exception;
|
||||||
use JetBrains\PhpStorm\{
|
use JetBrains\PhpStorm\{
|
||||||
ArrayShape,
|
ArrayShape};
|
||||||
Pure};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс, описывающий данные коррекции
|
* Класс, описывающий данные коррекции
|
||||||
@ -31,41 +32,35 @@ use JetBrains\PhpStorm\{
|
|||||||
final class CorrectionInfo extends Entity
|
final class CorrectionInfo extends Entity
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var string|null Тип коррекции (1173)
|
* @var DateTimeImmutable Дата документа основания для коррекции (1178)
|
||||||
*/
|
*/
|
||||||
protected ?string $type = null;
|
protected DateTimeImmutable $date;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string|null Дата документа основания для коррекции (1178)
|
|
||||||
*/
|
|
||||||
protected ?string $date = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string|null Номер документа основания для коррекции (1179)
|
|
||||||
*/
|
|
||||||
protected ?string $number = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param string $type Тип коррекции
|
* @param CorrectionType $type Тип коррекции (1173)
|
||||||
* @param string $date Дата документа
|
* @param DateTimeInterface|string $date Дата документа основания для коррекции (1178)
|
||||||
* @param string $number Номер документа
|
* @param string $number Номер документа основания для коррекции (1179)
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
* @throws InvalidCorrectionDateException
|
* @throws InvalidCorrectionDateException
|
||||||
* @throws EmptyCorrectionNumberException
|
* @throws EmptyCorrectionNumberException
|
||||||
*/
|
*/
|
||||||
public function __construct(string $type, string $date, string $number)
|
public function __construct(
|
||||||
{
|
protected CorrectionType $type,
|
||||||
$this->setType($type)->setDate($date)->setNumber($number);
|
DateTimeInterface | string $date,
|
||||||
|
protected string $number,
|
||||||
|
) {
|
||||||
|
$this->setType($type)
|
||||||
|
->setDate($date)
|
||||||
|
->setNumber($number);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает тип коррекции
|
* Возвращает тип коррекции
|
||||||
*
|
*
|
||||||
* @return string|null
|
* @return CorrectionType|null
|
||||||
*/
|
*/
|
||||||
public function getType(): ?string
|
public function getType(): ?CorrectionType
|
||||||
{
|
{
|
||||||
return $this->type;
|
return $this->type;
|
||||||
}
|
}
|
||||||
@ -73,23 +68,21 @@ final class CorrectionInfo extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанавливает тип коррекции
|
* Устанавливает тип коррекции
|
||||||
*
|
*
|
||||||
* @param string $type
|
* @param CorrectionType $type
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setType(string $type): self
|
public function setType(CorrectionType $type): self
|
||||||
{
|
{
|
||||||
$type = trim($type);
|
$this->type = $type;
|
||||||
CorrectionTypes::isValid($type) && $this->type = $type;
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает дату документа основания для коррекции
|
* Возвращает дату документа основания для коррекции
|
||||||
*
|
*
|
||||||
* @return string|null
|
* @return DateTimeImmutable
|
||||||
*/
|
*/
|
||||||
public function getDate(): ?string
|
public function getDate(): DateTimeImmutable
|
||||||
{
|
{
|
||||||
return $this->date;
|
return $this->date;
|
||||||
}
|
}
|
||||||
@ -97,17 +90,20 @@ final class CorrectionInfo extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанавливает дату документа основания для коррекции
|
* Устанавливает дату документа основания для коррекции
|
||||||
*
|
*
|
||||||
* @param DateTime|string $date Строковая дата в формате d.m.Y либо объект DateTime с датой
|
* @param DateTimeInterface|string $date Строковая дата в формате d.m.Y либо объект DateTime с датой
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidCorrectionDateException
|
* @throws InvalidCorrectionDateException
|
||||||
*/
|
*/
|
||||||
public function setDate(DateTime|string $date): self
|
public function setDate(DateTimeInterface | string $date): self
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if (is_string($date)) {
|
if (is_string($date)) {
|
||||||
$date = new DateTime(trim($date));
|
$this->date = new DateTimeImmutable(trim($date));
|
||||||
|
} elseif ($date instanceof DateTime) {
|
||||||
|
$this->date = DateTimeImmutable::createFromMutable($date);
|
||||||
|
} elseif ($date instanceof DateTimeImmutable) {
|
||||||
|
$this->date = $date;
|
||||||
}
|
}
|
||||||
$this->date = $date->format(Constraints::CORRECTION_DATE_FORMAT);
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
throw new InvalidCorrectionDateException($date, $e->getMessage());
|
throw new InvalidCorrectionDateException($date, $e->getMessage());
|
||||||
}
|
}
|
||||||
@ -142,13 +138,16 @@ final class CorrectionInfo extends Entity
|
|||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
#[Pure]
|
#[ArrayShape([
|
||||||
#[ArrayShape(['type' => 'string', 'base_date' => 'string', 'base_number' => 'string'])]
|
'type' => 'string',
|
||||||
|
'base_date' => 'string',
|
||||||
|
'base_number' => 'string',
|
||||||
|
])]
|
||||||
public function jsonSerialize(): array
|
public function jsonSerialize(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'type' => $this->getType(),
|
'type' => $this->getType(),
|
||||||
'base_date' => $this->getDate(),
|
'base_date' => $this->getDate()->format(Constraints::CORRECTION_DATE_FORMAT),
|
||||||
'base_number' => $this->getNumber(),
|
'base_number' => $this->getNumber(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -9,7 +10,7 @@
|
|||||||
|
|
||||||
/** @noinspection PhpMultipleClassDeclarationsInspection */
|
/** @noinspection PhpMultipleClassDeclarationsInspection */
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
@ -74,7 +75,7 @@ abstract class Entity implements JsonSerializable, Stringable, Arrayable, ArrayA
|
|||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
public function offsetSet(mixed $offset, mixed $value)
|
public function offsetSet(mixed $offset, mixed $value): void
|
||||||
{
|
{
|
||||||
throw new BadMethodCallException(
|
throw new BadMethodCallException(
|
||||||
'Объект ' . static::class . ' нельзя изменять как массив. Следует использовать сеттеры.'
|
'Объект ' . static::class . ' нельзя изменять как массив. Следует использовать сеттеры.'
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,20 +8,18 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Enums\{
|
use AtolOnline\Enums\{
|
||||||
PaymentMethods,
|
PaymentMethod,
|
||||||
PaymentObjects,
|
PaymentObject,
|
||||||
VatTypes
|
VatType};
|
||||||
};
|
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
EmptyItemNameException,
|
EmptyItemNameException,
|
||||||
InvalidDeclarationNumberException,
|
InvalidDeclarationNumberException,
|
||||||
InvalidEnumValueException,
|
|
||||||
InvalidOKSMCodeException,
|
InvalidOKSMCodeException,
|
||||||
NegativeItemExciseException,
|
NegativeItemExciseException,
|
||||||
NegativeItemPriceException,
|
NegativeItemPriceException,
|
||||||
@ -32,8 +31,7 @@ use AtolOnline\Exceptions\{
|
|||||||
TooLongItemNameException,
|
TooLongItemNameException,
|
||||||
TooLongMeasurementUnitException,
|
TooLongMeasurementUnitException,
|
||||||
TooLongUserdataException,
|
TooLongUserdataException,
|
||||||
TooManyException
|
TooManyException};
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Предмет расчёта (товар, услуга)
|
* Предмет расчёта (товар, услуга)
|
||||||
@ -42,21 +40,6 @@ use AtolOnline\Exceptions\{
|
|||||||
*/
|
*/
|
||||||
final class Item extends Entity
|
final class Item extends Entity
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var string Наименование (1030)
|
|
||||||
*/
|
|
||||||
protected string $name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var float Цена в рублях (с учётом скидок и наценок) (1079)
|
|
||||||
*/
|
|
||||||
protected float $price;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var float Количество/вес (1023)
|
|
||||||
*/
|
|
||||||
protected float $quantity;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null Единица измерения (1197)
|
* @var string|null Единица измерения (1197)
|
||||||
*/
|
*/
|
||||||
@ -70,22 +53,22 @@ final class Item extends Entity
|
|||||||
/**
|
/**
|
||||||
* @var string|null Код товара (1162) в форматированной шестнадцатиричной форме
|
* @var string|null Код товара (1162) в форматированной шестнадцатиричной форме
|
||||||
*/
|
*/
|
||||||
protected ?string $code_hex = null;
|
protected ?string $codeHex = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null Признак способа расчёта (1214)
|
* @var PaymentMethod|null Признак способа расчёта (1214)
|
||||||
*/
|
*/
|
||||||
protected ?string $payment_method = null;
|
protected ?PaymentMethod $paymentMethod = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null Признак предмета расчёта (1212)
|
* @var PaymentObject|null Признак предмета расчёта (1212)
|
||||||
*/
|
*/
|
||||||
protected ?string $payment_object = null;
|
protected ?PaymentObject $paymentObject = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null Номер таможенной декларации (1321)
|
* @var string|null Номер таможенной декларации (1321)
|
||||||
*/
|
*/
|
||||||
protected ?string $declaration_number = null;
|
protected ?string $declarationNumber = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Vat|null Ставка НДС
|
* @var Vat|null Ставка НДС
|
||||||
@ -95,7 +78,7 @@ final class Item extends Entity
|
|||||||
/**
|
/**
|
||||||
* @var AgentInfo|null Атрибуты агента
|
* @var AgentInfo|null Атрибуты агента
|
||||||
*/
|
*/
|
||||||
protected ?AgentInfo $agent_info = null;
|
protected ?AgentInfo $agentInfo = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Supplier|null Атрибуты поставшика
|
* @var Supplier|null Атрибуты поставшика
|
||||||
@ -105,7 +88,7 @@ final class Item extends Entity
|
|||||||
/**
|
/**
|
||||||
* @var string|null Дополнительный реквизит (1191)
|
* @var string|null Дополнительный реквизит (1191)
|
||||||
*/
|
*/
|
||||||
protected ?string $user_data = null;
|
protected ?string $userData = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var float|null Сумма акциза, включенная в стоимость (1229)
|
* @var float|null Сумма акциза, включенная в стоимость (1229)
|
||||||
@ -115,14 +98,14 @@ final class Item extends Entity
|
|||||||
/**
|
/**
|
||||||
* @var string|null Цифровой код страны происхождения товара (1230)
|
* @var string|null Цифровой код страны происхождения товара (1230)
|
||||||
*/
|
*/
|
||||||
protected ?string $country_code = null;
|
protected ?string $countryCode = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param string|null $name Наименование
|
* @param string|null $name Наименование (1030)
|
||||||
* @param float|null $price Цена за одну единицу
|
* @param float|null $price Цена в рублях (с учётом скидок и наценок) (1079)
|
||||||
* @param float|null $quantity Количество
|
* @param float|null $quantity Количество/вес (1023)
|
||||||
* @throws TooLongItemNameException
|
* @throws TooLongItemNameException
|
||||||
* @throws TooHighItemPriceException
|
* @throws TooHighItemPriceException
|
||||||
* @throws TooManyException
|
* @throws TooManyException
|
||||||
@ -131,9 +114,9 @@ final class Item extends Entity
|
|||||||
* @throws NegativeItemQuantityException
|
* @throws NegativeItemQuantityException
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
string $name = null,
|
protected ?string $name = null,
|
||||||
float $price = null,
|
protected ?float $price = null,
|
||||||
float $quantity = null,
|
protected ?float $quantity = null,
|
||||||
) {
|
) {
|
||||||
!is_null($name) && $this->setName($name);
|
!is_null($name) && $this->setName($name);
|
||||||
!is_null($price) && $this->setPrice($price);
|
!is_null($price) && $this->setPrice($price);
|
||||||
@ -160,13 +143,10 @@ final class Item extends Entity
|
|||||||
*/
|
*/
|
||||||
public function setName(string $name): self
|
public function setName(string $name): self
|
||||||
{
|
{
|
||||||
$name = trim($name);
|
if (mb_strlen($name = trim($name)) > Constraints::MAX_LENGTH_ITEM_NAME) {
|
||||||
if (mb_strlen($name) > Constraints::MAX_LENGTH_ITEM_NAME) {
|
|
||||||
throw new TooLongItemNameException($name);
|
throw new TooLongItemNameException($name);
|
||||||
}
|
}
|
||||||
if (empty($name)) {
|
empty($name) && throw new EmptyItemNameException();
|
||||||
throw new EmptyItemNameException();
|
|
||||||
}
|
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@ -193,12 +173,8 @@ final class Item extends Entity
|
|||||||
public function setPrice(float $price): self
|
public function setPrice(float $price): self
|
||||||
{
|
{
|
||||||
$price = round($price, 2);
|
$price = round($price, 2);
|
||||||
if ($price > Constraints::MAX_COUNT_ITEM_PRICE) {
|
$price > Constraints::MAX_COUNT_ITEM_PRICE && throw new TooHighItemPriceException($this->getName(), $price);
|
||||||
throw new TooHighItemPriceException($this->getName(), $price);
|
$price < 0 && throw new NegativeItemPriceException($this->getName(), $price);
|
||||||
}
|
|
||||||
if ($price < 0) {
|
|
||||||
throw new NegativeItemPriceException($this->getName(), $price);
|
|
||||||
}
|
|
||||||
$this->price = $price;
|
$this->price = $price;
|
||||||
$this->getVat()?->setSum($this->getSum());
|
$this->getVat()?->setSum($this->getSum());
|
||||||
return $this;
|
return $this;
|
||||||
@ -229,9 +205,7 @@ final class Item extends Entity
|
|||||||
if ($quantity > Constraints::MAX_COUNT_ITEM_QUANTITY) {
|
if ($quantity > Constraints::MAX_COUNT_ITEM_QUANTITY) {
|
||||||
throw new TooHighItemQuantityException($this->getName(), $quantity);
|
throw new TooHighItemQuantityException($this->getName(), $quantity);
|
||||||
}
|
}
|
||||||
if ($quantity < 0) {
|
$quantity < 0 && throw new NegativeItemQuantityException($this->getName(), $quantity);
|
||||||
throw new NegativeItemQuantityException($this->getName(), $quantity);
|
|
||||||
}
|
|
||||||
$this->quantity = $quantity;
|
$this->quantity = $quantity;
|
||||||
$this->getVat()?->setSum($this->getSum());
|
$this->getVat()?->setSum($this->getSum());
|
||||||
return $this;
|
return $this;
|
||||||
@ -296,7 +270,7 @@ final class Item extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getCodeHex(): ?string
|
public function getCodeHex(): ?string
|
||||||
{
|
{
|
||||||
return $this->code_hex;
|
return $this->codeHex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -318,57 +292,51 @@ final class Item extends Entity
|
|||||||
$hex_string = trim(preg_replace('/([\dA-Fa-f]{2})/', '$1 ', $hex));
|
$hex_string = trim(preg_replace('/([\dA-Fa-f]{2})/', '$1 ', $hex));
|
||||||
}
|
}
|
||||||
$this->code = $code ?: null;
|
$this->code = $code ?: null;
|
||||||
$this->code_hex = $hex_string ?: null;
|
$this->codeHex = $hex_string ?: null;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает признак способа оплаты
|
* Возвращает признак способа оплаты
|
||||||
*
|
*
|
||||||
* @return string|null
|
* @return PaymentMethod|null
|
||||||
*/
|
*/
|
||||||
public function getPaymentMethod(): ?string
|
public function getPaymentMethod(): ?PaymentMethod
|
||||||
{
|
{
|
||||||
return $this->payment_method;
|
return $this->paymentMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает признак способа оплаты
|
* Устанавливает признак способа оплаты
|
||||||
*
|
*
|
||||||
* @param string|null $payment_method Признак способа оплаты
|
* @param PaymentMethod|null $paymentMethod Признак способа оплаты
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setPaymentMethod(?string $payment_method): self
|
public function setPaymentMethod(?PaymentMethod $paymentMethod): self
|
||||||
{
|
{
|
||||||
$payment_method = trim((string)$payment_method);
|
$this->paymentMethod = $paymentMethod;
|
||||||
PaymentMethods::isValid($payment_method);
|
|
||||||
$this->payment_method = $payment_method ?: null;
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает признак предмета расчёта
|
* Возвращает признак предмета расчёта
|
||||||
*
|
*
|
||||||
* @return string|null
|
* @return PaymentObject|null
|
||||||
*/
|
*/
|
||||||
public function getPaymentObject(): ?string
|
public function getPaymentObject(): ?PaymentObject
|
||||||
{
|
{
|
||||||
return $this->payment_object;
|
return $this->paymentObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает признак предмета расчёта
|
* Устанавливает признак предмета расчёта
|
||||||
*
|
*
|
||||||
* @param string|null $payment_object Признак предмета расчёта
|
* @param PaymentObject|null $paymentObject Признак предмета расчёта
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setPaymentObject(?string $payment_object): self
|
public function setPaymentObject(?PaymentObject $paymentObject): self
|
||||||
{
|
{
|
||||||
$payment_object = trim((string)$payment_object);
|
$this->paymentObject = $paymentObject;
|
||||||
PaymentObjects::isValid($payment_object);
|
|
||||||
$this->payment_object = $payment_object ?: null;
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,21 +353,19 @@ final class Item extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанавливает ставку НДС
|
* Устанавливает ставку НДС
|
||||||
*
|
*
|
||||||
* @param Vat|string|null $vat Объект ставки, одно из значений VatTypes или null для удаления ставки
|
* @param Vat | VatType | null $vat Объект ставки, одно из значений VatTypes или null для удаления ставки
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws TooHighItemSumException
|
* @throws TooHighItemSumException
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setVat(Vat|string|null $vat): self
|
public function setVat(Vat | VatType | null $vat): self
|
||||||
{
|
{
|
||||||
if (is_string($vat)) {
|
if (is_null($vat)) {
|
||||||
$vat = trim($vat);
|
$this->vat = null;
|
||||||
empty($vat)
|
|
||||||
? $this->vat = null
|
|
||||||
: VatTypes::isValid($vat) && $this->vat = new Vat($vat, $this->getSum());
|
|
||||||
} elseif ($vat instanceof Vat) {
|
} elseif ($vat instanceof Vat) {
|
||||||
$vat->setSum($this->getSum());
|
$vat->setSum($this->getSum());
|
||||||
$this->vat = $vat;
|
$this->vat = $vat;
|
||||||
|
} else {
|
||||||
|
$this->vat = new Vat($vat, $this->getSum());
|
||||||
}
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@ -411,18 +377,18 @@ final class Item extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getAgentInfo(): ?AgentInfo
|
public function getAgentInfo(): ?AgentInfo
|
||||||
{
|
{
|
||||||
return $this->agent_info;
|
return $this->agentInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает атрибуты агента
|
* Устанавливает атрибуты агента
|
||||||
*
|
*
|
||||||
* @param AgentInfo|null $agent_info
|
* @param AgentInfo|null $agentInfo
|
||||||
* @return Item
|
* @return Item
|
||||||
*/
|
*/
|
||||||
public function setAgentInfo(?AgentInfo $agent_info): self
|
public function setAgentInfo(?AgentInfo $agentInfo): self
|
||||||
{
|
{
|
||||||
$this->agent_info = $agent_info;
|
$this->agentInfo = $agentInfo;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,23 +421,23 @@ final class Item extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getUserData(): ?string
|
public function getUserData(): ?string
|
||||||
{
|
{
|
||||||
return $this->user_data;
|
return $this->userData;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает дополнительный реквизит
|
* Устанавливает дополнительный реквизит
|
||||||
*
|
*
|
||||||
* @param string|null $user_data Дополнительный реквизит
|
* @param string|null $userData Дополнительный реквизит
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws TooLongUserdataException
|
* @throws TooLongUserdataException
|
||||||
*/
|
*/
|
||||||
public function setUserData(?string $user_data): self
|
public function setUserData(?string $userData): self
|
||||||
{
|
{
|
||||||
$user_data = trim((string)$user_data);
|
$userData = trim((string)$userData);
|
||||||
if (mb_strlen($user_data) > Constraints::MAX_LENGTH_USER_DATA) {
|
if (mb_strlen($userData) > Constraints::MAX_LENGTH_USER_DATA) {
|
||||||
throw new TooLongUserdataException($user_data);
|
throw new TooLongUserdataException($userData);
|
||||||
}
|
}
|
||||||
$this->user_data = $user_data ?: null;
|
$this->userData = $userData ?: null;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,25 +478,25 @@ final class Item extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getCountryCode(): ?string
|
public function getCountryCode(): ?string
|
||||||
{
|
{
|
||||||
return $this->country_code;
|
return $this->countryCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает код страны происхождения товара
|
* Устанавливает код страны происхождения товара
|
||||||
*
|
*
|
||||||
* @param string|null $country_code
|
* @param string|null $countryCode
|
||||||
* @return Item
|
* @return Item
|
||||||
* @throws InvalidOKSMCodeException
|
* @throws InvalidOKSMCodeException
|
||||||
* @see https://classifikators.ru/oksm
|
* @see https://classifikators.ru/oksm
|
||||||
* @see https://ru.wikipedia.org/wiki/Общероссийский_классификатор_стран_мира
|
* @see https://ru.wikipedia.org/wiki/Общероссийский_классификатор_стран_мира
|
||||||
*/
|
*/
|
||||||
public function setCountryCode(?string $country_code): self
|
public function setCountryCode(?string $countryCode): self
|
||||||
{
|
{
|
||||||
$country_code = trim((string)$country_code);
|
$countryCode = trim((string)$countryCode);
|
||||||
if (preg_match(Constraints::PATTERN_OKSM_CODE, $country_code) != 1) {
|
if (preg_match(Constraints::PATTERN_OKSM_CODE, $countryCode) != 1) {
|
||||||
throw new InvalidOKSMCodeException($country_code);
|
throw new InvalidOKSMCodeException($countryCode);
|
||||||
}
|
}
|
||||||
$this->country_code = $country_code ?: null;
|
$this->countryCode = $countryCode ?: null;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,28 +507,27 @@ final class Item extends Entity
|
|||||||
*/
|
*/
|
||||||
public function getDeclarationNumber(): ?string
|
public function getDeclarationNumber(): ?string
|
||||||
{
|
{
|
||||||
return $this->declaration_number;
|
return $this->declarationNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает код таможенной декларации
|
* Устанавливает код таможенной декларации
|
||||||
*
|
*
|
||||||
* @param string|null $declaration_number
|
* @param string|null $declarationNumber
|
||||||
* @return Item
|
* @return Item
|
||||||
* @throws InvalidDeclarationNumberException
|
* @throws InvalidDeclarationNumberException
|
||||||
*/
|
*/
|
||||||
public function setDeclarationNumber(?string $declaration_number): self
|
public function setDeclarationNumber(?string $declarationNumber): self
|
||||||
{
|
{
|
||||||
if (is_string($declaration_number)) {
|
if (is_string($declarationNumber)) {
|
||||||
$declaration_number = trim($declaration_number);
|
$declarationNumber = trim($declarationNumber);
|
||||||
if (
|
$is_short = mb_strlen($declarationNumber) < Constraints::MIN_LENGTH_DECLARATION_NUMBER;
|
||||||
mb_strlen($declaration_number) < Constraints::MIN_LENGTH_DECLARATION_NUMBER
|
$is_long = mb_strlen($declarationNumber) > Constraints::MAX_LENGTH_DECLARATION_NUMBER;
|
||||||
|| mb_strlen($declaration_number) > Constraints::MAX_LENGTH_DECLARATION_NUMBER
|
if ($is_short || $is_long) {
|
||||||
) {
|
throw new InvalidDeclarationNumberException($declarationNumber);
|
||||||
throw new InvalidDeclarationNumberException($declaration_number);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$this->declaration_number = $declaration_number;
|
$this->declarationNumber = $declarationNumber;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,18 +8,16 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
InvalidInnLengthException,
|
InvalidInnLengthException,
|
||||||
InvalidPhoneException
|
InvalidPhoneException};
|
||||||
};
|
|
||||||
use AtolOnline\Traits\{
|
use AtolOnline\Traits\{
|
||||||
HasInn,
|
HasInn,
|
||||||
HasPhones
|
HasPhones};
|
||||||
};
|
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,7 +27,8 @@ use Illuminate\Support\Collection;
|
|||||||
*/
|
*/
|
||||||
final class MoneyTransferOperator extends Entity
|
final class MoneyTransferOperator extends Entity
|
||||||
{
|
{
|
||||||
use HasInn, HasPhones;
|
use HasInn;
|
||||||
|
use HasPhones;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null Наименование (1026)
|
* @var string|null Наименование (1026)
|
||||||
@ -64,7 +64,7 @@ final class MoneyTransferOperator extends Entity
|
|||||||
?string $name = null,
|
?string $name = null,
|
||||||
?string $inn = null,
|
?string $inn = null,
|
||||||
?string $address = null,
|
?string $address = null,
|
||||||
array|Collection|null $phones = null,
|
array | Collection | null $phones = null,
|
||||||
) {
|
) {
|
||||||
$this->setName($name);
|
$this->setName($name);
|
||||||
$this->setInn($inn);
|
$this->setInn($inn);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
InvalidPhoneException,
|
InvalidPhoneException,
|
||||||
TooLongPayingAgentOperationException};
|
TooLongPayingAgentOperationException};
|
||||||
@ -42,7 +43,7 @@ final class PayingAgent extends Entity
|
|||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
?string $operation = null,
|
?string $operation = null,
|
||||||
array|Collection|null $phones = null,
|
array | Collection | null $phones = null,
|
||||||
) {
|
) {
|
||||||
!is_null($operation) && $this->setOperation($operation);
|
!is_null($operation) && $this->setOperation($operation);
|
||||||
$this->setPhones($phones);
|
$this->setPhones($phones);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,23 +8,19 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\{
|
use AtolOnline\{
|
||||||
Constants\Constraints,
|
Constraints,
|
||||||
Enums\PaymentTypes,
|
Enums\PaymentType,};
|
||||||
};
|
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
InvalidEnumValueException,
|
|
||||||
NegativePaymentSumException,
|
NegativePaymentSumException,
|
||||||
TooHighPaymentSumException,
|
TooHighPaymentSumException,};
|
||||||
};
|
|
||||||
use JetBrains\PhpStorm\{
|
use JetBrains\PhpStorm\{
|
||||||
ArrayShape,
|
ArrayShape,
|
||||||
Pure
|
Pure};
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Класс, описывающий оплату
|
* Класс, описывающий оплату
|
||||||
@ -32,36 +29,27 @@ use JetBrains\PhpStorm\{
|
|||||||
*/
|
*/
|
||||||
final class Payment extends Entity
|
final class Payment extends Entity
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var int Тип оплаты
|
|
||||||
*/
|
|
||||||
protected int $type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var float Сумма оплаты (1031, 1081, 1215, 1216, 1217)
|
|
||||||
*/
|
|
||||||
protected float $sum;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param int $type Тип оплаты
|
* @param PaymentType $type Тип оплаты
|
||||||
* @param float $sum Сумма оплаты
|
* @param float $sum Сумма оплаты (1031, 1081, 1215, 1216, 1217)
|
||||||
* @throws NegativePaymentSumException
|
* @throws NegativePaymentSumException
|
||||||
* @throws TooHighPaymentSumException
|
* @throws TooHighPaymentSumException
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function __construct(int $type, float $sum)
|
public function __construct(
|
||||||
{
|
protected PaymentType $type,
|
||||||
|
protected float $sum,
|
||||||
|
) {
|
||||||
$this->setType($type)->setSum($sum);
|
$this->setType($type)->setSum($sum);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает установленный тип оплаты
|
* Возвращает установленный тип оплаты
|
||||||
*
|
*
|
||||||
* @return int
|
* @return PaymentType
|
||||||
*/
|
*/
|
||||||
public function getType(): int
|
public function getType(): PaymentType
|
||||||
{
|
{
|
||||||
return $this->type;
|
return $this->type;
|
||||||
}
|
}
|
||||||
@ -69,13 +57,12 @@ final class Payment extends Entity
|
|||||||
/**
|
/**
|
||||||
* Устанавливает тип оплаты
|
* Устанавливает тип оплаты
|
||||||
*
|
*
|
||||||
* @param int $type
|
* @param PaymentType $type
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setType(int $type): self
|
public function setType(PaymentType $type): self
|
||||||
{
|
{
|
||||||
PaymentTypes::isValid($type) && $this->type = $type;
|
$this->type = $type;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,12 +87,8 @@ final class Payment extends Entity
|
|||||||
public function setSum(float $sum): self
|
public function setSum(float $sum): self
|
||||||
{
|
{
|
||||||
$sum = round($sum, 2);
|
$sum = round($sum, 2);
|
||||||
if ($sum > Constraints::MAX_COUNT_PAYMENT_SUM) {
|
$sum > Constraints::MAX_COUNT_PAYMENT_SUM && throw new TooHighPaymentSumException($sum);
|
||||||
throw new TooHighPaymentSumException($sum);
|
$sum < 0 && throw new NegativePaymentSumException($sum);
|
||||||
}
|
|
||||||
if ($sum < 0) {
|
|
||||||
throw new NegativePaymentSumException($sum);
|
|
||||||
}
|
|
||||||
$this->sum = $sum;
|
$this->sum = $sum;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
@ -16,7 +17,7 @@ use AtolOnline\Api\Fiscalizer;
|
|||||||
use AtolOnline\Collections\Items;
|
use AtolOnline\Collections\Items;
|
||||||
use AtolOnline\Collections\Payments;
|
use AtolOnline\Collections\Payments;
|
||||||
use AtolOnline\Collections\Vats;
|
use AtolOnline\Collections\Vats;
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Exceptions\AuthFailedException;
|
use AtolOnline\Exceptions\AuthFailedException;
|
||||||
use AtolOnline\Exceptions\EmptyItemsException;
|
use AtolOnline\Exceptions\EmptyItemsException;
|
||||||
use AtolOnline\Exceptions\EmptyLoginException;
|
use AtolOnline\Exceptions\EmptyLoginException;
|
||||||
@ -227,7 +228,7 @@ final class Receipt extends Entity
|
|||||||
$items->checkCount();
|
$items->checkCount();
|
||||||
$items->checkItemsClasses();
|
$items->checkItemsClasses();
|
||||||
$this->items = $items;
|
$this->items = $items;
|
||||||
$this->getItems()->each(fn($item) => $this->total += $item->getSum());
|
$this->getItems()->each(fn ($item) => $this->total += $item->getSum());
|
||||||
$this->total = round($this->total, 2);
|
$this->total = round($this->total, 2);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@ -280,7 +281,7 @@ final class Receipt extends Entity
|
|||||||
$vats->checkItemsClasses();
|
$vats->checkItemsClasses();
|
||||||
$this->vats = $vats;
|
$this->vats = $vats;
|
||||||
/** @var Vat $vat */
|
/** @var Vat $vat */
|
||||||
$this->getVats()->each(fn($vat) => $vat->setSum($this->getTotal()));
|
$this->getVats()->each(fn ($vat) => $vat->setSum($this->getTotal()));
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
@ -30,7 +31,7 @@ final class ReceivePaymentsOperator extends Entity
|
|||||||
* @param array|Collection|null $phones Телефоны оператора по приёму платежей (1074)
|
* @param array|Collection|null $phones Телефоны оператора по приёму платежей (1074)
|
||||||
* @throws InvalidPhoneException
|
* @throws InvalidPhoneException
|
||||||
*/
|
*/
|
||||||
public function __construct(array|Collection|null $phones = null)
|
public function __construct(array | Collection | null $phones = null)
|
||||||
{
|
{
|
||||||
$this->setPhones($phones);
|
$this->setPhones($phones);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,18 +8,16 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Exceptions\{
|
use AtolOnline\Exceptions\{
|
||||||
InvalidInnLengthException,
|
InvalidInnLengthException,
|
||||||
InvalidPhoneException
|
InvalidPhoneException};
|
||||||
};
|
|
||||||
use AtolOnline\Traits\{
|
use AtolOnline\Traits\{
|
||||||
HasInn,
|
HasInn,
|
||||||
HasPhones
|
HasPhones};
|
||||||
};
|
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,7 +27,8 @@ use Illuminate\Support\Collection;
|
|||||||
*/
|
*/
|
||||||
final class Supplier extends Entity
|
final class Supplier extends Entity
|
||||||
{
|
{
|
||||||
use HasPhones, HasInn;
|
use HasPhones;
|
||||||
|
use HasInn;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null Наименование (1225)
|
* @var string|null Наименование (1225)
|
||||||
@ -47,7 +47,7 @@ final class Supplier extends Entity
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
?string $name = null,
|
?string $name = null,
|
||||||
?string $inn = null,
|
?string $inn = null,
|
||||||
array|Collection|null $phones = null,
|
array | Collection | null $phones = null,
|
||||||
) {
|
) {
|
||||||
!is_null($name) && $this->setName($name);
|
!is_null($name) && $this->setName($name);
|
||||||
!is_null($inn) && $this->setInn($inn);
|
!is_null($inn) && $this->setInn($inn);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Entities;
|
namespace AtolOnline\Entities;
|
||||||
|
|
||||||
use AtolOnline\Enums\VatTypes;
|
use AtolOnline\Enums\VatType;
|
||||||
use AtolOnline\Exceptions\InvalidEnumValueException;
|
|
||||||
use AtolOnline\Helpers;
|
use AtolOnline\Helpers;
|
||||||
use JetBrains\PhpStorm\{
|
use JetBrains\PhpStorm\{
|
||||||
ArrayShape,
|
ArrayShape,
|
||||||
@ -25,49 +25,38 @@ use JetBrains\PhpStorm\{
|
|||||||
*/
|
*/
|
||||||
final class Vat extends Entity
|
final class Vat extends Entity
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @var string Тип ставки НДС (1199, 1105, 1104, 1103, 1102, 1107, 1106)
|
|
||||||
*/
|
|
||||||
private string $type;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var float Сумма в рублях, от которой пересчитывается размер НДС
|
|
||||||
*/
|
|
||||||
private float $sum;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param string $type Тип ставки НДС (1199, 1105, 1104, 1103, 1102, 1107, 1106)
|
* @param VatType $type Тип ставки НДС (1199, 1105, 1104, 1103, 1102, 1107, 1106)
|
||||||
* @param float $rubles Исходная сумма в рублях, от которой нужно расчитать размер НДС
|
* @param float $sum Исходная сумма в рублях, от которой нужно расчитать размер НДС
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function __construct(string $type, float $rubles)
|
public function __construct(
|
||||||
{
|
protected VatType $type,
|
||||||
$this->setType($type)->setSum($rubles);
|
protected float $sum,
|
||||||
|
) {
|
||||||
|
$this->setType($type)->setSum($sum);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Устанавливает тип ставки НДС
|
* Устанавливает тип ставки НДС
|
||||||
* Автоматически пересчитывает итоговый размер НДС от исходной суммы.
|
* Автоматически пересчитывает итоговый размер НДС от исходной суммы.
|
||||||
*
|
*
|
||||||
* @param string $type Тип ставки НДС
|
* @param VatType $type Тип ставки НДС
|
||||||
* @return $this
|
* @return $this
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
*/
|
||||||
public function setType(string $type): self
|
public function setType(VatType $type): self
|
||||||
{
|
{
|
||||||
$type = trim($type);
|
$this->type = $type;
|
||||||
VatTypes::isValid($type) && $this->type = $type;
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает тип ставки НДС
|
* Возвращает тип ставки НДС
|
||||||
*
|
*
|
||||||
* @return string
|
* @return VatType
|
||||||
*/
|
*/
|
||||||
public function getType(): string
|
public function getType(): VatType
|
||||||
{
|
{
|
||||||
return $this->type;
|
return $this->type;
|
||||||
}
|
}
|
||||||
@ -108,12 +97,12 @@ final class Vat extends Entity
|
|||||||
{
|
{
|
||||||
return Helpers::toRub(
|
return Helpers::toRub(
|
||||||
match ($this->getType()) {
|
match ($this->getType()) {
|
||||||
VatTypes::VAT10 => Helpers::toKop($this->sum) * 10 / 100,
|
VatType::VAT10 => Helpers::toKop($this->sum) * 10 / 100,
|
||||||
VatTypes::VAT18 => Helpers::toKop($this->sum) * 18 / 100,
|
VatType::VAT18 => Helpers::toKop($this->sum) * 18 / 100,
|
||||||
VatTypes::VAT20 => Helpers::toKop($this->sum) * 20 / 100,
|
VatType::VAT20 => Helpers::toKop($this->sum) * 20 / 100,
|
||||||
VatTypes::VAT110 => Helpers::toKop($this->sum) * 10 / 110,
|
VatType::VAT110 => Helpers::toKop($this->sum) * 10 / 110,
|
||||||
VatTypes::VAT118 => Helpers::toKop($this->sum) * 18 / 118,
|
VatType::VAT118 => Helpers::toKop($this->sum) * 18 / 118,
|
||||||
VatTypes::VAT120 => Helpers::toKop($this->sum) * 20 / 120,
|
VatType::VAT120 => Helpers::toKop($this->sum) * 20 / 120,
|
||||||
default => 0,
|
default => 0,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,59 +8,49 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие типы агента
|
* Константы, определяющие типы агента
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 18, 26
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 18, 26
|
||||||
*/
|
*/
|
||||||
final class AgentTypes extends Enum
|
enum AgentType: string
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Банковский платёжный агент
|
* Банковский платёжный агент
|
||||||
*/
|
*/
|
||||||
const BANK_PAYING_AGENT = 'bank_paying_agent';
|
case BANK_PAYING_AGENT = 'bank_paying_agent';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Банковский платёжный субагент
|
* Банковский платёжный субагент
|
||||||
*/
|
*/
|
||||||
const BANK_PAYING_SUBAGENT = 'bank_paying_subagent';
|
case BANK_PAYING_SUBAGENT = 'bank_paying_subagent';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Платёжный агент
|
* Платёжный агент
|
||||||
*/
|
*/
|
||||||
const PAYING_AGENT = 'paying_agent';
|
case PAYING_AGENT = 'payingAgent';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Платёжный субагент
|
* Платёжный субагент
|
||||||
*/
|
*/
|
||||||
const PAYING_SUBAGENT = 'paying_subagent';
|
case PAYING_SUBAGENT = 'paying_subagent';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Поверенный
|
* Поверенный
|
||||||
*/
|
*/
|
||||||
const ATTRONEY = 'attorney';
|
case ATTRONEY = 'attorney';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Комиссионер
|
* Комиссионер
|
||||||
*/
|
*/
|
||||||
const COMMISSION_AGENT = 'commission_agent';
|
case COMMISSION_AGENT = 'commission_agent';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Другой тип агента
|
* Другой тип агента
|
||||||
*/
|
*/
|
||||||
const ANOTHER = 'another';
|
case ANOTHER = 'another';
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [Ffd105Tags::AGENT_TYPE];
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,34 +8,24 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие типы документов коррекции
|
* Константы, определяющие типы документов коррекции
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 35
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 35
|
||||||
*/
|
*/
|
||||||
final class CorrectionTypes extends Enum
|
enum CorrectionType: string
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Самостоятельно
|
* Самостоятельно
|
||||||
*/
|
*/
|
||||||
const SELF = 'self';
|
case SELF = 'self';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* По предписанию
|
* По предписанию
|
||||||
*/
|
*/
|
||||||
const INSTRUCTION = 'instruction';
|
case INSTRUCTION = 'instruction';
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [Ffd105Tags::CORRECTION_TYPE];
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,36 +0,0 @@
|
|||||||
<?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\Enums;
|
|
||||||
|
|
||||||
use AtolOnline\Exceptions\InvalidEnumValueException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Расширение класса перечисления
|
|
||||||
*/
|
|
||||||
abstract class Enum extends \MyCLabs\Enum\Enum
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
* @throws InvalidEnumValueException
|
|
||||||
*/
|
|
||||||
public static function isValid($value)
|
|
||||||
{
|
|
||||||
return parent::isValid($value) ?: throw new InvalidEnumValueException(static::class, $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Возвращает массив тегов ФФД
|
|
||||||
*
|
|
||||||
* @return int[]
|
|
||||||
*/
|
|
||||||
abstract public static function getFfdTags(): array;
|
|
||||||
}
|
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,59 +8,49 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие признаки способов расчёта
|
* Константы, определяющие признаки способов расчёта
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 22
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 22
|
||||||
*/
|
*/
|
||||||
final class PaymentMethods extends Enum
|
enum PaymentMethod: string
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Предоплата 100% до передачи предмета расчёта
|
* Предоплата 100% до передачи предмета расчёта
|
||||||
*/
|
*/
|
||||||
const FULL_PREPAYMENT = 'full_prepayment';
|
case FULL_PREPAYMENT = 'full_prepayment';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Частичная предоплата до передачи предмета расчёта
|
* Частичная предоплата до передачи предмета расчёта
|
||||||
*/
|
*/
|
||||||
const PREPAYMENT = 'prepayment';
|
case PREPAYMENT = 'prepayment';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Аванс
|
* Аванс
|
||||||
*/
|
*/
|
||||||
const ADVANCE = 'advance';
|
case ADVANCE = 'advance';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Полная оплата с учётом аванса/предоплаты в момент передачи предмета расчёта
|
* Полная оплата с учётом аванса/предоплаты в момент передачи предмета расчёта
|
||||||
*/
|
*/
|
||||||
const FULL_PAYMENT = 'full_payment';
|
case FULL_PAYMENT = 'full_payment';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Частичный расчёт в момент передачи предмета расчёта (дальнейшая оплата в кредит)
|
* Частичный расчёт в момент передачи предмета расчёта (дальнейшая оплата в кредит)
|
||||||
*/
|
*/
|
||||||
const PARTIAL_PAYMENT = 'partial_payment';
|
case PARTIAL_PAYMENT = 'partial_payment';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Передача предмета расчёта в кредит
|
* Передача предмета расчёта в кредит
|
||||||
*/
|
*/
|
||||||
const CREDIT = 'credit';
|
case CREDIT = 'credit';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Оплата кредита
|
* Оплата кредита
|
||||||
*/
|
*/
|
||||||
const CREDIT_PAYMENT = 'credit_payment';
|
case CREDIT_PAYMENT = 'credit_payment';
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [Ffd105Tags::ITEM_PAYMENT_METHOD];
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,73 +8,71 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие признаки предметов расчёта
|
* Константы, определяющие признаки предметов расчёта
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 23
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 23
|
||||||
*/
|
*/
|
||||||
final class PaymentObjects extends Enum
|
enum PaymentObject: string
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Товар, кроме подакцизного
|
* Товар, кроме подакцизного
|
||||||
*/
|
*/
|
||||||
const COMMODITY = 'commodity';
|
case COMMODITY = 'commodity';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Товар подакцизный
|
* Товар подакцизный
|
||||||
*/
|
*/
|
||||||
const EXCISE = 'excise';
|
case EXCISE = 'excise';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Работа
|
* Работа
|
||||||
*/
|
*/
|
||||||
const JOB = 'job';
|
case JOB = 'job';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Услуга
|
* Услуга
|
||||||
*/
|
*/
|
||||||
const SERVICE = 'service';
|
case SERVICE = 'service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ставка азартной игры
|
* Ставка азартной игры
|
||||||
*/
|
*/
|
||||||
const GAMBLING_BET = 'gambling_bet';
|
case GAMBLING_BET = 'gambling_bet';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Выигрыш азартной игры
|
* Выигрыш азартной игры
|
||||||
*/
|
*/
|
||||||
const GAMBLING_PRIZE = 'gambling_prize';
|
case GAMBLING_PRIZE = 'gambling_prize';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Лотерея
|
* Лотерея
|
||||||
*/
|
*/
|
||||||
const LOTTERY = 'lottery';
|
case LOTTERY = 'lottery';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Выигрыш лотереи
|
* Выигрыш лотереи
|
||||||
*/
|
*/
|
||||||
const LOTTERY_PRIZE = 'lottery_prize';
|
case LOTTERY_PRIZE = 'lottery_prize';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Предоставление результатов интеллектуальной деятельности
|
* Предоставление результатов интеллектуальной деятельности
|
||||||
*/
|
*/
|
||||||
const INTELLECTUAL_ACTIVITY = 'intellectual_activity';
|
case INTELLECTUAL_ACTIVITY = 'intellectual_activity';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Платёж (задаток, кредит, аванс, предоплата, пеня, штраф, бонус и пр.)
|
* Платёж (задаток, кредит, аванс, предоплата, пеня, штраф, бонус и пр.)
|
||||||
*/
|
*/
|
||||||
const PAYMENT = 'payment';
|
case PAYMENT = 'payment';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Агентское вознаграждение
|
* Агентское вознаграждение
|
||||||
*/
|
*/
|
||||||
const AGENT_COMMISSION = 'agent_commission';
|
case AGENT_COMMISSION = 'agent_commission';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Составной предмет расчёта
|
* Составной предмет расчёта
|
||||||
@ -81,88 +80,80 @@ final class PaymentObjects extends Enum
|
|||||||
* @deprecated Более не используется согласно ФФД 1.05
|
* @deprecated Более не используется согласно ФФД 1.05
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 25 (payment_object)
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 25 (payment_object)
|
||||||
*/
|
*/
|
||||||
const COMPOSITE = 'composite';
|
case COMPOSITE = 'composite';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Другой предмет расчёта
|
* Другой предмет расчёта
|
||||||
*/
|
*/
|
||||||
const ANOTHER = 'another';
|
case ANOTHER = 'another';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Имущественное право
|
* Имущественное право
|
||||||
*/
|
*/
|
||||||
const PROPERTY_RIGHT = 'property_right';
|
case PROPERTY_RIGHT = 'property_right';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Внереализационный доход
|
* Внереализационный доход
|
||||||
*/
|
*/
|
||||||
const NON_OPERATING_GAIN = 'non-operating_gain';
|
case NON_OPERATING_GAIN = 'non-operating_gain';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Страховые взносы
|
* Страховые взносы
|
||||||
*/
|
*/
|
||||||
const INSURANCE_PREMIUM = 'insurance_premium';
|
case INSURANCE_PREMIUM = 'insurance_premium';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Торговый сбор
|
* Торговый сбор
|
||||||
*/
|
*/
|
||||||
const SALES_TAX = 'sales_tax';
|
case SALES_TAX = 'sales_tax';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Курортный сбор
|
* Курортный сбор
|
||||||
*/
|
*/
|
||||||
const RESORT_FEE = 'resort_fee';
|
case RESORT_FEE = 'resort_fee';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взнос в счёт оплаты пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчёта
|
* Взнос в счёт оплаты пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчёта
|
||||||
*/
|
*/
|
||||||
const AWARD = 'award';
|
case AWARD = 'award';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Залог
|
* Залог
|
||||||
*/
|
*/
|
||||||
const DEPOSIT = 'deposit';
|
case DEPOSIT = 'deposit';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расход, уменьшающий доход (в соответствии со статьей 346.16 НК РФ)
|
* Расход, уменьшающий доход (в соответствии со статьей 346.16 НК РФ)
|
||||||
*/
|
*/
|
||||||
const EXPENSE = 'expense';
|
case EXPENSE = 'expense';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взнос на ОПС ИП
|
* Взнос на ОПС ИП
|
||||||
*/
|
*/
|
||||||
const PEN_INSURANCE_IP = 'pension_insurance_ip';
|
case PEN_INSURANCE_IP = 'pension_insurance_ip';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взнос на ОПС
|
* Взнос на ОПС
|
||||||
*/
|
*/
|
||||||
const PEN_INSURANCE = 'pension_insurance';
|
case PEN_INSURANCE = 'pension_insurance';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взнос на ОМС ИП
|
* Взнос на ОМС ИП
|
||||||
*/
|
*/
|
||||||
const MED_INSURANCE_IP = 'medical_insurance_ip';
|
case MED_INSURANCE_IP = 'medical_insurance_ip';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взнос на ОМС
|
* Взнос на ОМС
|
||||||
*/
|
*/
|
||||||
const MED_INSURANCE = 'medical_insurance';
|
case MED_INSURANCE = 'medical_insurance';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Взнос на ОСС
|
* Взнос на ОСС
|
||||||
*/
|
*/
|
||||||
const SOC_INSURANCE = 'social_insurance';
|
case SOC_INSURANCE = 'social_insurance';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Платёж казино
|
* Платёж казино
|
||||||
*/
|
*/
|
||||||
const CASINO_PAYMENT = 'casino_payment';
|
case CASINO_PAYMENT = 'casino_payment';
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [Ffd105Tags::ITEM_PAYMENT_OBJECT];
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,85 +8,69 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие виды оплат
|
* Константы, определяющие виды оплат
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 35
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 35
|
||||||
*/
|
*/
|
||||||
final class PaymentTypes extends Enum
|
enum PaymentType: int
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Расчёт наличными
|
* Расчёт наличными
|
||||||
*/
|
*/
|
||||||
const CASH = 0;
|
case CASH = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расчёт безналичными
|
* Расчёт безналичными
|
||||||
*/
|
*/
|
||||||
const ELECTRON = 1;
|
case ELECTRON = 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Предварительная оплата (зачёт аванса)
|
* Предварительная оплата (зачёт аванса)
|
||||||
*/
|
*/
|
||||||
const PREPAID = 2;
|
case PREPAID = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Предварительная оплата (кредит)
|
* Предварительная оплата (кредит)
|
||||||
*/
|
*/
|
||||||
const CREDIT = 3;
|
case CREDIT = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Иная форма оплаты (встречное предоставление)
|
* Иная форма оплаты (встречное предоставление)
|
||||||
*/
|
*/
|
||||||
const OTHER = 4;
|
case OTHER = 4;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расширенный типы оплаты (5)
|
* Расширенный типы оплаты (5)
|
||||||
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
||||||
*/
|
*/
|
||||||
const ADD_5 = 5;
|
case ADD_5 = 5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расширенный типы оплаты (6)
|
* Расширенный типы оплаты (6)
|
||||||
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
||||||
*/
|
*/
|
||||||
const ADD_6 = 6;
|
case ADD_6 = 6;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расширенный типы оплаты (7)
|
* Расширенный типы оплаты (7)
|
||||||
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
||||||
*/
|
*/
|
||||||
const ADD_7 = 7;
|
case ADD_7 = 7;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расширенный типы оплаты (8)
|
* Расширенный типы оплаты (8)
|
||||||
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
||||||
*/
|
*/
|
||||||
const ADD_8 = 8;
|
case ADD_8 = 8;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расширенный типы оплаты (9)
|
* Расширенный типы оплаты (9)
|
||||||
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
|
||||||
*/
|
*/
|
||||||
const ADD_9 = 9;
|
case ADD_9 = 9;
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
Ffd105Tags::PAYMENT_TYPE_CASH,
|
|
||||||
Ffd105Tags::PAYMENT_TYPE_ELECTRON,
|
|
||||||
Ffd105Tags::PAYMENT_TYPE_PREPAID,
|
|
||||||
Ffd105Tags::PAYMENT_TYPE_CREDIT,
|
|
||||||
Ffd105Tags::PAYMENT_TYPE_OTHER,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,44 +8,42 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use MyCLabs\Enum\Enum;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие типы операций (чеков)
|
* Константы, определяющие типы операций (чеков)
|
||||||
*/
|
*/
|
||||||
final class ReceiptOperationTypes extends Enum
|
enum ReceiptOperationType: string
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Приход (мы продали)
|
* Приход (мы продали)
|
||||||
*/
|
*/
|
||||||
const SELL = 'sell';
|
case SELL = 'sell';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возврат прихода (нам вернули предмет расчёта, мы вернули средства)
|
* Возврат прихода (нам вернули предмет расчёта, мы вернули средства)
|
||||||
*/
|
*/
|
||||||
const SELL_REFUND = 'sell_refund';
|
case SELL_REFUND = 'sell_refund';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Коррекция прихода
|
* Коррекция прихода
|
||||||
*/
|
*/
|
||||||
const SELL_CORRECTION = 'sell_correction';
|
case SELL_CORRECTION = 'sell_correction';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расход (мы купили)
|
* Расход (мы купили)
|
||||||
*/
|
*/
|
||||||
const BUY = 'buy';
|
case BUY = 'buy';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возврат расхода (мы вернули предмет расчёта, нам вернули средства)
|
* Возврат расхода (мы вернули предмет расчёта, нам вернули средства)
|
||||||
*/
|
*/
|
||||||
const BUY_REFUND = 'buy_refund';
|
case BUY_REFUND = 'buy_refund';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Коррекция прихода (догоняем неучтённые средства)
|
* Коррекция прихода (догоняем неучтённые средства)
|
||||||
*/
|
*/
|
||||||
const BUY_CORRECTION = 'buy_correction';
|
case BUY_CORRECTION = 'buy_correction';
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,54 +8,44 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Enums;
|
namespace AtolOnline\Enums;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Константы, определяющие типы налогообложения
|
* Константы, определяющие типы налогообложения
|
||||||
*
|
*
|
||||||
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 35
|
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 35
|
||||||
*/
|
*/
|
||||||
final class SnoTypes extends Enum
|
enum SnoType: string
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Общая СН
|
* Общая СН
|
||||||
*/
|
*/
|
||||||
const OSN = 'osn';
|
case OSN = 'osn';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Упрощенная СН (доходы)
|
* Упрощенная СН (доходы)
|
||||||
*/
|
*/
|
||||||
const USN_INCOME = 'usn_income';
|
case USN_INCOME = 'usn_income';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Упрощенная СН (доходы минус расходы)
|
* Упрощенная СН (доходы минус расходы)
|
||||||
*/
|
*/
|
||||||
const USN_INCOME_OUTCOME = 'usn_income_outcome';
|
case USN_INCOME_OUTCOME = 'usn_income_outcome';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Единый налог на вмененный доход
|
* Единый налог на вмененный доход
|
||||||
*/
|
*/
|
||||||
const ENDV = 'envd';
|
case ENDV = 'envd';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Единый сельскохозяйственный налог
|
* Единый сельскохозяйственный налог
|
||||||
*/
|
*/
|
||||||
const ESN = 'esn';
|
case ESN = 'esn';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Патентная СН
|
* Патентная СН
|
||||||
*/
|
*/
|
||||||
const PATENT = 'patent';
|
case PATENT = 'patent';
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [Ffd105Tags::COMPANY_SNO];
|
|
||||||
}
|
|
||||||
}
|
}
|
59
src/Enums/VatType.php
Normal file
59
src/Enums/VatType.php
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<?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\Enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Константы, определяющие типы ставок НДС
|
||||||
|
*/
|
||||||
|
enum VatType: string
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Без НДС
|
||||||
|
*/
|
||||||
|
case NONE = 'none';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 0%
|
||||||
|
*/
|
||||||
|
case VAT0 = 'vat0';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 10%
|
||||||
|
*/
|
||||||
|
case VAT10 = 'vat10';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 18%
|
||||||
|
*/
|
||||||
|
case VAT18 = 'vat18';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 20%
|
||||||
|
*/
|
||||||
|
case VAT20 = 'vat20';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 10/110%
|
||||||
|
*/
|
||||||
|
case VAT110 = 'vat110';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 18/118%
|
||||||
|
*/
|
||||||
|
case VAT118 = 'vat118';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* НДС 20/120%
|
||||||
|
*/
|
||||||
|
case VAT120 = 'vat120';
|
||||||
|
}
|
@ -1,76 +0,0 @@
|
|||||||
<?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\Enums;
|
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Константы, определяющие типы ставок НДС
|
|
||||||
*/
|
|
||||||
final class VatTypes extends Enum
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Без НДС
|
|
||||||
*/
|
|
||||||
const NONE = 'none';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 0%
|
|
||||||
*/
|
|
||||||
const VAT0 = 'vat0';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 10%
|
|
||||||
*/
|
|
||||||
const VAT10 = 'vat10';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 18%
|
|
||||||
*/
|
|
||||||
const VAT18 = 'vat18';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 20%
|
|
||||||
*/
|
|
||||||
const VAT20 = 'vat20';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 10/110%
|
|
||||||
*/
|
|
||||||
const VAT110 = 'vat110';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 18/118%
|
|
||||||
*/
|
|
||||||
const VAT118 = 'vat118';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* НДС 20/120%
|
|
||||||
*/
|
|
||||||
const VAT120 = 'vat120';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @inheritDoc
|
|
||||||
*/
|
|
||||||
public static function getFfdTags(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
Ffd105Tags::ITEM_VAT_TYPE,
|
|
||||||
Ffd105Tags::DOC_VAT_TYPE_NONE,
|
|
||||||
Ffd105Tags::DOC_VAT_TYPE_VAT0,
|
|
||||||
Ffd105Tags::DOC_VAT_TYPE_VAT10,
|
|
||||||
Ffd105Tags::DOC_VAT_TYPE_VAT20,
|
|
||||||
Ffd105Tags::DOC_VAT_TYPE_VAT110,
|
|
||||||
Ffd105Tags::DOC_VAT_TYPE_VAT120,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при пустом наименовании дополнительного реквизита пользователя
|
* Исключение, возникающее при пустом наименовании дополнительного реквизита пользователя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при пустом наименовании дополнительного реквизита пользователя
|
* Исключение, возникающее при пустом наименовании дополнительного реквизита пользователя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при пустом номере документа коррекции
|
* Исключение, возникающее при пустом номере документа коррекции
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать пустой email
|
* Исключение, возникающее при попытке указать пустой email
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при пустом наименовании предмета расчёта
|
* Исключение, возникающее при пустом наименовании предмета расчёта
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,10 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при наличии некорректных объектов в коллекции
|
* Исключение, возникающее при наличии некорректных объектов в коллекции
|
||||||
*/
|
*/
|
||||||
@ -23,6 +26,7 @@ class InvalidEntityInCollectionException extends AtolException
|
|||||||
* @param string $expected_class
|
* @param string $expected_class
|
||||||
* @param mixed $actual
|
* @param mixed $actual
|
||||||
*/
|
*/
|
||||||
|
#[Pure]
|
||||||
public function __construct(string $collection_class, string $expected_class, mixed $actual)
|
public function __construct(string $collection_class, string $expected_class, mixed $actual)
|
||||||
{
|
{
|
||||||
if (is_object($actual)) {
|
if (is_object($actual)) {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Enums\Enum;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при ошибке валидации перечислимых значений
|
* Исключение, возникающее при ошибке валидации перечислимых значений
|
||||||
@ -26,14 +27,12 @@ class InvalidEnumValueException extends AtolException
|
|||||||
* @param string $message
|
* @param string $message
|
||||||
* @param array $ffd_tags
|
* @param array $ffd_tags
|
||||||
*/
|
*/
|
||||||
|
#[Pure]
|
||||||
public function __construct(string $enum, mixed $value, string $message = '', array $ffd_tags = [])
|
public function __construct(string $enum, mixed $value, string $message = '', array $ffd_tags = [])
|
||||||
{
|
{
|
||||||
/** @var $enum Enum */
|
$own_message = empty($value)
|
||||||
$own_message = (
|
? "Значение $enum не может быть пустым."
|
||||||
empty($value)
|
: "Некорректное значение $enum::$value.";
|
||||||
? "Значение из $enum не может быть пустым."
|
parent::__construct($message ?: $own_message, $ffd_tags /*?: static::$ffd_tags*/);
|
||||||
: "Некорректное значение $enum::$value."
|
|
||||||
) . " Допустимые значения: " . implode(', ', $enum::toArray());
|
|
||||||
parent::__construct($message ?: $own_message, $ffd_tags ?: $enum::getFfdTags());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
use JetBrains\PhpStorm\Pure;
|
use JetBrains\PhpStorm\Pure;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке установки слишком большой суммы оплаты
|
* Исключение, возникающее при попытке установки слишком большой суммы оплаты
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,13 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\{
|
use AtolOnline\Constraints;
|
||||||
Constraints,
|
use AtolOnline\Ffd105Tags;
|
||||||
Ffd105Tags};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинное наименование дополнительного реквизита чека
|
* Исключение, возникающее при попытке указать слишком длинное наименование дополнительного реквизита чека
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,13 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\{
|
use AtolOnline\Constraints;
|
||||||
Constraints,
|
use AtolOnline\Ffd105Tags;
|
||||||
Ffd105Tags};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинное наименование дополнительного реквизита пользователя
|
* Исключение, возникающее при попытке указать слишком длинное наименование дополнительного реквизита пользователя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,13 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\{
|
use AtolOnline\Constraints;
|
||||||
Constraints,
|
use AtolOnline\Ffd105Tags;
|
||||||
Ffd105Tags};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинное значение дополнительного реквизита пользователя
|
* Исключение, возникающее при попытке указать слишком длинное значение дополнительного реквизита пользователя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный callback_url
|
* Исключение, возникающее при попытке указать слишком длинный callback_url
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинное имя кассира
|
* Исключение, возникающее при попытке указать слишком длинное имя кассира
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный телефон или email покупателя
|
* Исключение, возникающее при попытке указать слишком длинный телефон или email покупателя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинное наименование покупателя
|
* Исключение, возникающее при попытке указать слишком длинное наименование покупателя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный email
|
* Исключение, возникающее при попытке указать слишком длинный email
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,7 +8,7 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,13 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
|
||||||
use JetBrains\PhpStorm\Pure;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный код товара
|
* Исключение, возникающее при попытке указать слишком длинный код товара
|
||||||
@ -21,7 +20,6 @@ use JetBrains\PhpStorm\Pure;
|
|||||||
class TooLongItemCodeException extends TooLongException
|
class TooLongItemCodeException extends TooLongException
|
||||||
{
|
{
|
||||||
protected float $max = Constraints::MAX_LENGTH_ITEM_CODE;
|
protected float $max = Constraints::MAX_LENGTH_ITEM_CODE;
|
||||||
protected array $ffd_tags = [Ffd105Tags::ITEM_NOMENCLATURE_CODE];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
@ -29,7 +27,6 @@ class TooLongItemCodeException extends TooLongException
|
|||||||
* @param string $name
|
* @param string $name
|
||||||
* @param string $code
|
* @param string $code
|
||||||
*/
|
*/
|
||||||
#[Pure]
|
|
||||||
public function __construct(string $name, string $code)
|
public function __construct(string $name, string $code)
|
||||||
{
|
{
|
||||||
parent::__construct($code, "Слишком длинный код товара '$name'");
|
parent::__construct($code, "Слишком длинный код товара '$name'");
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,14 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\{
|
use AtolOnline\Constraints;
|
||||||
Constraints,
|
use AtolOnline\Ffd105Tags;
|
||||||
Ffd105Tags
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинное имя
|
* Исключение, возникающее при попытке указать слишком длинное имя
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный логин ККТ
|
* Исключение, возникающее при попытке указать слишком длинный логин ККТ
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинную единицу измерения предмета расчёта
|
* Исключение, возникающее при попытке указать слишком длинную единицу измерения предмета расчёта
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,11 +8,11 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный пароль ККТ
|
* Исключение, возникающее при попытке указать слишком длинный пароль ККТ
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,14 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\{
|
use AtolOnline\Constraints;
|
||||||
Constraints,
|
use AtolOnline\Ffd105Tags;
|
||||||
Ffd105Tags
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинную операцию для платёжного агента
|
* Исключение, возникающее при попытке указать слишком длинную операцию для платёжного агента
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный адрес места расчётов
|
* Исключение, возникающее при попытке указать слишком длинный адрес места расчётов
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
|
||||||
*
|
*
|
||||||
@ -7,12 +8,12 @@
|
|||||||
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types = 1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace AtolOnline\Exceptions;
|
namespace AtolOnline\Exceptions;
|
||||||
|
|
||||||
use AtolOnline\Constants\Constraints;
|
use AtolOnline\Constraints;
|
||||||
use AtolOnline\Constants\Ffd105Tags;
|
use AtolOnline\Ffd105Tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Исключение, возникающее при попытке указать слишком длинный дополнительный реквизит
|
* Исключение, возникающее при попытке указать слишком длинный дополнительный реквизит
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user