Миграция на php8.1

* enum-ы теперь enum-ы, а не говно -- теперь всё переведено на них, где это было возможно
* некоторые свойства классов объявлены в конструкторе
* некоторые классы перемещены в корневой неймспейс
* исправлен код-стайл, вычищен некоторый мусор, выправлены тесты... работы над этим продолжаются
This commit is contained in:
2022-12-15 00:19:55 +08:00
parent 692ae43f9f
commit 4157ab68f5
120 changed files with 1098 additions and 1401 deletions

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,59 +8,49 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace AtolOnline\Enums;
use AtolOnline\Constants\Ffd105Tags;
/**
* Константы, определяющие типы агента
*
* @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';
/**
* @inheritDoc
*/
public static function getFfdTags(): array
{
return [Ffd105Tags::AGENT_TYPE];
}
case ANOTHER = 'another';
}

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,34 +8,24 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace AtolOnline\Enums;
use AtolOnline\Constants\Ffd105Tags;
/**
* Константы, определяющие типы документов коррекции
*
* @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';
/**
* @inheritDoc
*/
public static function getFfdTags(): array
{
return [Ffd105Tags::CORRECTION_TYPE];
}
case INSTRUCTION = 'instruction';
}

View File

@@ -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;
}

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,59 +8,49 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace AtolOnline\Enums;
use AtolOnline\Constants\Ffd105Tags;
/**
* Константы, определяющие признаки способов расчёта
*
* @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 22
*/
final class PaymentMethods extends Enum
enum PaymentMethod: string
{
/**
* Предоплата 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';
/**
* @inheritDoc
*/
public static function getFfdTags(): array
{
return [Ffd105Tags::ITEM_PAYMENT_METHOD];
}
case CREDIT_PAYMENT = 'credit_payment';
}

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,73 +8,71 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace AtolOnline\Enums;
use AtolOnline\Constants\Ffd105Tags;
/**
* Константы, определяющие признаки предметов расчёта
*
* @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
* @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 НК РФ)
*/
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';
/**
* @inheritDoc
*/
public static function getFfdTags(): array
{
return [Ffd105Tags::ITEM_PAYMENT_OBJECT];
}
case CASINO_PAYMENT = 'casino_payment';
}

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,85 +8,69 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace AtolOnline\Enums;
use AtolOnline\Constants\Ffd105Tags;
/**
* Константы, определяющие виды оплат
*
* @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)
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
*/
const ADD_5 = 5;
case ADD_5 = 5;
/**
* Расширенный типы оплаты (6)
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
*/
const ADD_6 = 6;
case ADD_6 = 6;
/**
* Расширенный типы оплаты (7)
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
*/
const ADD_7 = 7;
case ADD_7 = 7;
/**
* Расширенный типы оплаты (8)
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
*/
const ADD_8 = 8;
case ADD_8 = 8;
/**
* Расширенный типы оплаты (9)
* Для каждого фискального типа оплаты можно указать расширенный тип оплаты
*/
const 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,
];
}
case ADD_9 = 9;
}

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,44 +8,42 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
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';
}

View File

@@ -1,4 +1,5 @@
<?php
/*
* Copyright (c) 2020-2021 Антон Аксенов (Anthony Axenov)
*
@@ -7,54 +8,44 @@
* https://github.com/anthonyaxenov/atol-online/blob/master/LICENSE
*/
declare(strict_types = 1);
declare(strict_types=1);
namespace AtolOnline\Enums;
use AtolOnline\Constants\Ffd105Tags;
/**
* Константы, определяющие типы налогообложения
*
* @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';
/**
* @inheritDoc
*/
public static function getFfdTags(): array
{
return [Ffd105Tags::COMPANY_SNO];
}
case PATENT = 'patent';
}

59
src/Enums/VatType.php Normal file
View 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';
}

View File

@@ -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,
];
}
}