atol-online/src/Constraints.php

222 lines
7.9 KiB
PHP
Raw Permalink Normal View History

2020-06-07 11:23:37 +00:00
<?php
Начало работы по #5 и #6 - строгая типизация - переработан класс `TestEnvParams`:     - вынесен на уровень выше из под `AtolOnline\Constants`     - вместо констант - две функции для получения актуальных параметров подключения по ФФД1.05 и ФФД1.2 - актуализированы `PaymentObjects` согласно #5 - исходники вынесены не уровень выше в `src` - константы теперь enum через `myclabs/php-enum` - новые константы `DocumentTypes` - классы констант финализированы - все исключения переименованы, а многие так или иначе отрефакторены (не полностью) - новые исключения `InvalidSnoException`, `InvalidPaymentAddressException` - `helpers.php` стал полноценным классом `Helpers` - удалены трейты `HasEmail`, `HasInn`, `RublesKopeksConverter` (конвертация перенесена в `Helpers`) - удалён хелпер `valid_strlen()`, вместо него теперь везде `mb_strlen()` - сущности `Client` и `Company` получили свои имплементации для `email` и `inn` - доработки в `BasicTestCase` - полное покрытие тестами: `Client`, `Company`, `Helpers` - поправлен `phpunit.xml` - везде обновлены копирайты - актуализированы и исправлены phpdoc, return types - начато введение `strict_types=1` - минимальный php теперь 8.0 - обновлены все зависимости - подключен пакет коллекций laravel для будущего использования - теперь можно `composer test` и `composer test-cov`
2021-11-18 04:24:30 +00:00
/*
* 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);
2020-06-07 11:23:37 +00:00
namespace AtolOnline;
2020-06-07 11:23:37 +00:00
/**
Начало работы по #5 и #6 - строгая типизация - переработан класс `TestEnvParams`:     - вынесен на уровень выше из под `AtolOnline\Constants`     - вместо констант - две функции для получения актуальных параметров подключения по ФФД1.05 и ФФД1.2 - актуализированы `PaymentObjects` согласно #5 - исходники вынесены не уровень выше в `src` - константы теперь enum через `myclabs/php-enum` - новые константы `DocumentTypes` - классы констант финализированы - все исключения переименованы, а многие так или иначе отрефакторены (не полностью) - новые исключения `InvalidSnoException`, `InvalidPaymentAddressException` - `helpers.php` стал полноценным классом `Helpers` - удалены трейты `HasEmail`, `HasInn`, `RublesKopeksConverter` (конвертация перенесена в `Helpers`) - удалён хелпер `valid_strlen()`, вместо него теперь везде `mb_strlen()` - сущности `Client` и `Company` получили свои имплементации для `email` и `inn` - доработки в `BasicTestCase` - полное покрытие тестами: `Client`, `Company`, `Helpers` - поправлен `phpunit.xml` - везде обновлены копирайты - актуализированы и исправлены phpdoc, return types - начато введение `strict_types=1` - минимальный php теперь 8.0 - обновлены все зависимости - подключен пакет коллекций laravel для будущего использования - теперь можно `composer test` и `composer test-cov`
2021-11-18 04:24:30 +00:00
* Класс с константами ограничений
2020-06-07 11:23:37 +00:00
*/
Начало работы по #5 и #6 - строгая типизация - переработан класс `TestEnvParams`:     - вынесен на уровень выше из под `AtolOnline\Constants`     - вместо констант - две функции для получения актуальных параметров подключения по ФФД1.05 и ФФД1.2 - актуализированы `PaymentObjects` согласно #5 - исходники вынесены не уровень выше в `src` - константы теперь enum через `myclabs/php-enum` - новые константы `DocumentTypes` - классы констант финализированы - все исключения переименованы, а многие так или иначе отрефакторены (не полностью) - новые исключения `InvalidSnoException`, `InvalidPaymentAddressException` - `helpers.php` стал полноценным классом `Helpers` - удалены трейты `HasEmail`, `HasInn`, `RublesKopeksConverter` (конвертация перенесена в `Helpers`) - удалён хелпер `valid_strlen()`, вместо него теперь везде `mb_strlen()` - сущности `Client` и `Company` получили свои имплементации для `email` и `inn` - доработки в `BasicTestCase` - полное покрытие тестами: `Client`, `Company`, `Helpers` - поправлен `phpunit.xml` - везде обновлены копирайты - актуализированы и исправлены phpdoc, return types - начато введение `strict_types=1` - минимальный php теперь 8.0 - обновлены все зависимости - подключен пакет коллекций laravel для будущего использования - теперь можно `composer test` и `composer test-cov`
2021-11-18 04:24:30 +00:00
final class Constraints
2020-06-07 11:23:37 +00:00
{
/**
* Максимальная длина Callback URL
*/
public const MAX_LENGTH_CALLBACK_URL = 256;
Начало работы по #5 и #6 - строгая типизация - переработан класс `TestEnvParams`:     - вынесен на уровень выше из под `AtolOnline\Constants`     - вместо констант - две функции для получения актуальных параметров подключения по ФФД1.05 и ФФД1.2 - актуализированы `PaymentObjects` согласно #5 - исходники вынесены не уровень выше в `src` - константы теперь enum через `myclabs/php-enum` - новые константы `DocumentTypes` - классы констант финализированы - все исключения переименованы, а многие так или иначе отрефакторены (не полностью) - новые исключения `InvalidSnoException`, `InvalidPaymentAddressException` - `helpers.php` стал полноценным классом `Helpers` - удалены трейты `HasEmail`, `HasInn`, `RublesKopeksConverter` (конвертация перенесена в `Helpers`) - удалён хелпер `valid_strlen()`, вместо него теперь везде `mb_strlen()` - сущности `Client` и `Company` получили свои имплементации для `email` и `inn` - доработки в `BasicTestCase` - полное покрытие тестами: `Client`, `Company`, `Helpers` - поправлен `phpunit.xml` - везде обновлены копирайты - актуализированы и исправлены phpdoc, return types - начато введение `strict_types=1` - минимальный php теперь 8.0 - обновлены все зависимости - подключен пакет коллекций laravel для будущего использования - теперь можно `composer test` и `composer test-cov`
2021-11-18 04:24:30 +00:00
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина email
*/
public const MAX_LENGTH_EMAIL = 64;
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина логина ККТ
*/
public const MAX_LENGTH_LOGIN = 100;
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина пароля ККТ
*/
public const MAX_LENGTH_PASSWORD = 100;
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина адреса места расчётов
*/
public const MAX_LENGTH_PAYMENT_ADDRESS = 256;
/**
* Максимальная длина наименования покупателя (1227)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
2020-06-07 11:23:37 +00:00
*/
public const MAX_LENGTH_CLIENT_NAME = 256;
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина наименования предмета расчёта (1030)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
2020-06-07 11:23:37 +00:00
*/
public const MAX_LENGTH_ITEM_NAME = 128;
2020-06-07 11:23:37 +00:00
/**
* Максимальная цена за единицу предмета расчёта (1079)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
2020-06-07 11:23:37 +00:00
*/
public const MAX_COUNT_ITEM_PRICE = 42949672.95;
2020-06-07 11:23:37 +00:00
/**
* Максимальное количество (вес) единицы предмета расчёта (1023)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
2020-06-07 11:23:37 +00:00
*/
public const MAX_COUNT_ITEM_QUANTITY = 99999.999;
2020-06-07 11:23:37 +00:00
/**
* Максимальная стоимость всех предметов расчёта в документе прихода, расхода,
* возврата прихода, возврата расхода (1043)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
2020-06-07 11:23:37 +00:00
*/
public const MAX_COUNT_ITEM_SUM = 42949672.95;
/**
* Максимальная длина телефона или email покупателя (1008)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 17
*/
public const MAX_LENGTH_CLIENT_CONTACT = 64;
/**
* Длина операции для платёжного агента (1044)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 19
*/
public const MAX_LENGTH_PAYING_AGENT_OPERATION = 24;
/**
* Максимальное количество предметов расчёта в документе прихода, расхода, возврата прихода, возврата расхода
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
*/
public const MAX_COUNT_DOC_ITEMS = 100;
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина единицы измерения предмета расчётов
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
2020-06-07 11:23:37 +00:00
*/
public const MAX_LENGTH_MEASUREMENT_UNIT = 16;
2020-06-07 11:23:37 +00:00
/**
* Максимальная длина пользовательских данных для предмета расчётов (1191)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 29
2020-06-07 11:23:37 +00:00
*/
public const MAX_LENGTH_USER_DATA = 64;
/**
* Минимальная длина кода таможенной декларации (1231)
*
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/receipt/items/declaration_number"
*/
public const MIN_LENGTH_DECLARATION_NUMBER = 1;
/**
* Максимальная длина кода таможенной декларации (1231)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 30
*/
public const MAX_LENGTH_DECLARATION_NUMBER = 32;
/**
* Максимальное количество платежей в любом документе
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 30 и 35
*/
public const MAX_COUNT_DOC_PAYMENTS = 10;
/**
* Максимальное количество ставок НДС в любом документе
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 31 и 36
*/
public const MAX_COUNT_DOC_VATS = 6;
/**
* Максимальная сумма одной оплаты
*/
public const MAX_COUNT_PAYMENT_SUM = 99999.999;
/**
* Максимальная длина имени кассира (1021)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
*/
public const MAX_LENGTH_CASHIER_NAME = 64;
/**
* Максимальная длина кода товара в байтах (1162)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 21
*/
public const MAX_LENGTH_ITEM_CODE = 32;
2021-12-03 12:09:14 +00:00
/**
* Максимальная длина значения дополнительного реквизита чека (1192)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
*/
public const MAX_LENGTH_ADD_CHECK_PROP = 16;
/**
* Максимальная длина наименования дополнительного реквизита пользователя (1085)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
2021-12-03 12:09:14 +00:00
*/
public const MAX_LENGTH_ADD_USER_PROP_NAME = 64;
2021-12-03 12:09:14 +00:00
/**
* Максимальная длина значения дополнительного реквизита пользователя (1086)
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 32
*/
public const MAX_LENGTH_ADD_USER_PROP_VALUE = 256;
/**
* Формат даты документа коррекции
*/
public const CORRECTION_DATE_FORMAT = 'd.m.Y';
2020-06-07 11:23:37 +00:00
/**
* Регулярное выражение для валидации строки ИНН
*
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/receipt/client/inn"
2020-06-07 11:23:37 +00:00
*/
public const PATTERN_INN
= /* @lang PhpRegExp */
'/(^[\d]{10}$)|(^[\d]{12}$)/';
/**
* Регулярное выражение для валидации номера телефона
*
* @see https://online.atol.ru/possystem/v4/schema/sell Схема "#/definitions/phone_number"
*/
public const PATTERN_PHONE
= /* @lang PhpRegExp */
'/^([^\s\\\]{0,17}|\+[^\s\\\]{1,18})$/';
2020-06-07 11:23:37 +00:00
/**
* Регулярное выражение для валидации строки Callback URL
2020-06-07 11:23:37 +00:00
*/
public const PATTERN_CALLBACK_URL
= /* @lang PhpRegExp */
'/^http(s?):\/\/[0-9a-zA-Zа-яА-Я]' .
'([-.\w]*[0-9a-zA-Zа-яА-Я])*(:(0-9)*)*(\/?)([a-zAZ0-9а-яА-Я\-.?,\'\/\\\+&=%\$#_]*)?$/';
/**
* Регулярное выражение для валидации кода страны происхождения товара
*/
public const PATTERN_OKSM_CODE
= /* @lang PhpRegExp */
'/^[\d]{3}$/';
}