diff --git a/src/Constants/Ffd105Tags.php b/src/Constants/Ffd105Tags.php index 734cca4..e7ed2b0 100644 --- a/src/Constants/Ffd105Tags.php +++ b/src/Constants/Ffd105Tags.php @@ -39,11 +39,21 @@ final class Ffd105Tags */ const COMPANY_INN = 1008; + /** + * Применяемая система налогообложения + */ + const COMPANY_SNO = 1055; + /** * Место расчётов */ const COMPANY_PADDRESS = 1187; + /** + * Признак агента по предмету расчёта + */ + const AGENT_TYPE = 1222; + /** * Телефон оператора по приёму платежей */ @@ -132,7 +142,7 @@ final class Ffd105Tags /** * Сумма акциза с учётом копеек, включённая в стоимость предмета расчёта */ - const ITEM_PAYMENT_EXSICE = 1229; + const ITEM_EXCISE = 1229; /** * Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира @@ -146,4 +156,69 @@ final class Ffd105Tags * Номер таможенной декларации (в соотв. с приказом ФНС России от 24.03.2016 N ММВ-7-15/155) */ const ITEM_DECLARATION_NUMBER = 1231; + + /** + * Тип коррекции + */ + const CORRECTION_TYPE = 1173; + + /** + * Сумма по чеку (БСО) наличными + */ + const PAYMENT_TYPE_CASH = 1031; + + /** + * Сумма по чеку безналичными + */ + const PAYMENT_TYPE_ELECTRON = 1081; + + /** + * Сумма по чеку предоплатой + */ + const PAYMENT_TYPE_PREPAID = 1215; + + /** + * Сумма по чеку постоплатой + */ + const PAYMENT_TYPE_CREDIT = 1216; + + /** + * Сумма по чеку встречным представлением + */ + const PAYMENT_TYPE_OTHER = 1217; + + /** + * Ставка НДС + */ + const ITEM_VAT_TYPE = 1199; + + /** + * Сумма расчета по чеку без НДС + */ + const DOC_VAT_TYPE_NONE = 1105; + + /** + * Сумма расчета по чеку с НДС по ставке 0% + */ + const DOC_VAT_TYPE_VAT0 = 1104; + + /** + * Сумма НДС чека по ставке 10% + */ + const DOC_VAT_TYPE_VAT10 = 1103; + + /** + * Сумма НДС чека по ставке 20% + */ + const DOC_VAT_TYPE_VAT20 = 1102; + + /** + * Сумма НДС чека по расч. ставке 10/110 + */ + const DOC_VAT_TYPE_VAT110 = 1107; + + /** + * Сумма НДС чека по расч. ставке 20/120 + */ + const DOC_VAT_TYPE_VAT120 = 1106; } diff --git a/src/Entities/Vat.php b/src/Entities/Vat.php index e133fea..a4438db 100644 --- a/src/Entities/Vat.php +++ b/src/Entities/Vat.php @@ -12,6 +12,7 @@ declare(strict_types = 1); namespace AtolOnline\Entities; use AtolOnline\Enums\VatTypes; +use AtolOnline\Exceptions\InvalidEnumValueException; use AtolOnline\Helpers; /** @@ -48,6 +49,7 @@ class Vat extends Entity * * @param string $type Тип ставки НДС * @return $this + * @throws InvalidEnumValueException */ public function setType(string $type): self { diff --git a/src/Enums/AgentTypes.php b/src/Enums/AgentTypes.php index ec87b45..8d906dc 100644 --- a/src/Enums/AgentTypes.php +++ b/src/Enums/AgentTypes.php @@ -11,10 +11,12 @@ declare(strict_types = 1); namespace AtolOnline\Enums; +use AtolOnline\Constants\Ffd105Tags; + /** * Константы, определяющие типы агента * - * @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 18 + * @see https://online.atol.ru/files/API_atol_online_v4.pdf Документация, стр 18, 26 */ final class AgentTypes extends Enum { @@ -58,6 +60,6 @@ final class AgentTypes extends Enum */ public static function getFfdTags(): array { - return [1057]; + return [Ffd105Tags::AGENT_TYPE]; } } diff --git a/src/Enums/CorrectionTypes.php b/src/Enums/CorrectionTypes.php index c975898..5c7d19c 100644 --- a/src/Enums/CorrectionTypes.php +++ b/src/Enums/CorrectionTypes.php @@ -11,6 +11,8 @@ declare(strict_types = 1); namespace AtolOnline\Enums; +use AtolOnline\Constants\Ffd105Tags; + /** * Константы, определяющие типы документов коррекции * @@ -33,6 +35,6 @@ final class CorrectionTypes extends Enum */ public static function getFfdTags(): array { - return [1173]; + return [Ffd105Tags::CORRECTION_TYPE]; } } diff --git a/src/Enums/PaymentMethods.php b/src/Enums/PaymentMethods.php index 5511c86..7ebc2f2 100644 --- a/src/Enums/PaymentMethods.php +++ b/src/Enums/PaymentMethods.php @@ -11,6 +11,8 @@ declare(strict_types = 1); namespace AtolOnline\Enums; +use AtolOnline\Constants\Ffd105Tags; + /** * Константы, определяющие признаки способов расчёта * @@ -58,6 +60,6 @@ final class PaymentMethods extends Enum */ public static function getFfdTags(): array { - return [1214]; + return [Ffd105Tags::ITEM_PAYMENT_METHOD]; } } diff --git a/src/Enums/PaymentObjects.php b/src/Enums/PaymentObjects.php index 9ef16e8..eee6f8c 100644 --- a/src/Enums/PaymentObjects.php +++ b/src/Enums/PaymentObjects.php @@ -11,6 +11,8 @@ declare(strict_types = 1); namespace AtolOnline\Enums; +use AtolOnline\Constants\Ffd105Tags; + /** * Константы, определяющие признаки предметов расчёта * @@ -160,6 +162,6 @@ final class PaymentObjects extends Enum */ public static function getFfdTags(): array { - return [1212]; + return [Ffd105Tags::ITEM_PAYMENT_OBJECT]; } } diff --git a/src/Enums/PaymentTypes.php b/src/Enums/PaymentTypes.php index 350baf3..2e658ad 100644 --- a/src/Enums/PaymentTypes.php +++ b/src/Enums/PaymentTypes.php @@ -11,6 +11,8 @@ declare(strict_types = 1); namespace AtolOnline\Enums; +use AtolOnline\Constants\Ffd105Tags; + /** * Константы, определяющие виды оплат * @@ -31,7 +33,7 @@ final class PaymentTypes extends Enum /** * Предварительная оплата (зачёт аванса) */ - const PRE_PAID = 2; + const PREPAID = 2; /** * Предварительная оплата (кредит) @@ -78,6 +80,12 @@ final class PaymentTypes extends Enum */ public static function getFfdTags(): array { - return [1031, 1081, 1215, 1216, 1217]; + return [ + Ffd105Tags::PAYMENT_TYPE_CASH, + Ffd105Tags::PAYMENT_TYPE_ELECTRON, + Ffd105Tags::PAYMENT_TYPE_PREPAID, + Ffd105Tags::PAYMENT_TYPE_CREDIT, + Ffd105Tags::PAYMENT_TYPE_OTHER, + ]; } } diff --git a/src/Enums/SnoTypes.php b/src/Enums/SnoTypes.php index 0e551ed..231bf6e 100644 --- a/src/Enums/SnoTypes.php +++ b/src/Enums/SnoTypes.php @@ -11,6 +11,8 @@ declare(strict_types = 1); namespace AtolOnline\Enums; +use AtolOnline\Constants\Ffd105Tags; + /** * Константы, определяющие типы налогообложения * @@ -53,6 +55,6 @@ final class SnoTypes extends Enum */ public static function getFfdTags(): array { - return [1055]; + return [Ffd105Tags::COMPANY_SNO]; } } diff --git a/src/Enums/VatTypes.php b/src/Enums/VatTypes.php index f8e377e..27aa2df 100644 --- a/src/Enums/VatTypes.php +++ b/src/Enums/VatTypes.php @@ -11,12 +11,10 @@ declare(strict_types = 1); namespace AtolOnline\Enums; -use MyCLabs\Enum\Enum; +use AtolOnline\Constants\Ffd105Tags; /** * Константы, определяющие типы ставок НДС - * - * Теги ФФД: 1199, 1105, 1104, 1103, 1102, 1107, 1106 */ final class VatTypes extends Enum { @@ -59,4 +57,20 @@ final class VatTypes extends Enum * НДС 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, + ]; + } }