/
zerobyte
/
T-kassa-example
Обзор
Документация
Войти
/
zerobyte
/
T-kassa-example
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
models.py
82 строки
3 KB
zerobyte
upload files
04 мар 2025, 22:00
04 мар 2025, 22:00
68a1cdf
Код
Авторство
О чём код?
from typing import Optional from typing import Literal from dataclasses import dataclass # Taxation: Система налогообложения # `osn` — общая СН # `usn_income` — упрощенная СН (доходы) # `usn_income_outcome` — упрощенная СН (доходы минус расходы) # `envd` — единый налог на вмененный доход # `esn` — единый сельскохозяйственный налог # `patent` — патентная СН Taxation = Literal["osn", "usn_income", "usn_income_outcome", "envd", "esn", "patent"] # Tax: Ставка НДС # `none` — без НДС, # `vat0` — НДС по ставке 0%, # `vat5` — НДС по ставке 5%, # `vat7` — НДС по ставке 7%, # `vat10` — НДС по ставке 10%, # `vat20` — НДС по ставке 20%, # `vat105` — НДС чека по расчетной ставке 5/105, # `vat107` — НДС чека по расчетной ставке 7/107, # `vat110` — НДС чека по расчетной ставке 10/110, # `vat120` — НДС чека по расчетной ставке 20/120. Tax = Literal["none", "vat0", "vat5", "vat7", "vat10", "vat20", "vat105", "vat107", "vat110", "vat120"] @dataclass class Item: name: str # Наименование товара price: int # Цена в копейках за единицу позиции quantity: int # Количество или вес товара amount: int # Стоимость товара в копейках. Произведение quantity и price tax: Tax # Ставка НДС @dataclass class Receipt: """ Обязателен, если подключена онлайн-касса. """ items: list[Item] # Массив позиций чека с информацией о товарах taxation: Taxation # Система налогообложения email: Optional[str] = None # Обязателен, если не передано значение phone phone: Optional[str] = None # Обязателен, если не передано значение email def __post_init__(self): if self.email is None and self.phone is None: raise ValueError("Укажите почту и/или номер телефона клиента") @dataclass class InitResponse: terminal_key: str amount: int order_id: str success: bool status: str payment_id: str error_code: str payment_url: Optional[str] = None message: Optional[str] = None details: Optional[str] = None @dataclass class ItemsParams: key: Literal["Route", "Source", "CreditAmount"] value: Literal[ "ACQ", "BNPL", "TCB", "SBER", "BNPL", "cards", "qrsbp", "MirPay", "YandexPay", "Installment", "SberPay", "TinkoffPay", ] @dataclass class GetStateResponse: terminal_key: str amount: int order_id: str success: bool status: str payment_id: str error_code: str message: Optional[str] = None details: Optional[str] = None params: Optional[list[ItemsParams]] = None