Skip to main content

Python SDK for KOMTET Kassa

Project description

Библиотека для интеграции вашего сайта с с облачным сервисом распределенной печати чеков КОМТЕТ Касса

https://img.shields.io/travis/Komtet/komtet-kassa-python-sdk.svg?style=flat-square

Установка

С помощью pip:

# pip install komtet_kassa_sdk

Вручную:

$ git clone https://github.com/Komtet/komtet-kassa-python-sdk
$ cd komtet-kassa-python-sdk
# python setup.py install

Использование v2

from requests.exceptions import HTTPError
from komtet_kassa_sdk.v2 import (
    Check, CorrectionCheck, Client, Intent, TaxSystem, VatRate, CorrectionType, PaymentMethod,
    Agent, AgentType, PaymentType, PaymentObject, MarkTypes,
)

shop_id = 'идентификатор магазина'
secret_key = 'секретный ключ'
client = Client(shop_id, secret_key)

oid = 'номер операции в вашем магазине'
intent = Intent.SELL  # Направление платежа
# Используйте Intent.RETURN для оформления возврата

check = Check(oid, intent)

email = 'client@client.ru'   # E-Mail пользователя для отправки электронного чека
phone = '+79992400041'       # Телефон пользователя
name = 'Иванов Иван'         # Имя пользователя
inn = '5834041042'           # Инн пользователя

check.set_client(email=email, phone=phone, name=name, inn=inn)

payment_address = 'www.shop.com'   # Платёжный адрес организации

# Система налогооблажения
tax_system = TaxSystem.COMMON  # ОСН
# tax_system = TaxSystem.SIMPLIFIED_IN  # УСН доход
# tax_system = TaxSystem.SIMPLIFIED_IN_OUT  # УСН доход - расход
# tax_system = TaxSystem.UTOII  # ЕНВД
# tax_system = TaxSystem.UST  # ЕСН
# tax_system = TaxSystem.PATENT  # Патент

check.set_company(payment_address=payment_address, tax_system=tax_system)

position_name = 'Наименование позиции'
position_price = 100  # Цена позиции

# Единицы измерений
measure = MesureTypes.PIECE
# measure = MesureTypes.PIECE
# measure = MesureTypes.GRAMM
# measure = MesureTypes.KILOGRAMM
# measure = MesureTypes.TON
# measure = MesureTypes.CENTIMETER
# measure = MesureTypes.DECIMETER
# measure = MesureTypes.METER
# measure = MesureTypes.SQUARE_CENTIMETER
# measure = MesureTypes.SQUARE_DECIMETER
# measure = MesureTypes.SQUARE_METER
# measure = MesureTypes.MILLILITER
# measure = MesureTypes.LITER
# measure = MesureTypes.CUBIC_METER
# measure = MesureTypes.KILOWATT_HOUR
# measure = MesureTypes.GIGA_CALORIE
# measure = MesureTypes.DAY
# measure = MesureTypes.HOUR
# measure = MesureTypes.MINUTE
# measure = MesureTypes.SECOND
# measure = MesureTypes.KILOBYTE
# measure = MesureTypes.MEGABYTE
# measure = MesureTypes.GIGABYTE
# measure = MesureTypes.TERABYTE
# measure = MesureTypes.OTHER_MEASURMENTS

# Налоговая ставка
vat_rate = VatRate.RATE_NO  # Без НДС
# vat_rate = VatRate.RATE_20  # НДС 20%
# vat_rate = VatRate.RATE_0  # НДС 0%
# vat_rate = VatRate.RATE_10  # НДС 10%
# vat_rate = VatRate.RATE_110  # НДС 10/110
# vat_rate = VatRate.RATE_120  # НДС 20/120

#Способ расчёта
payment_method = PaymentMethod.PRE_PAYMENT_FULL
# payment_method = PaymentMethod.PRE_PAYMENT_PART
# payment_method = PaymentMethod.FULL_PAYMENT
# payment_method = PaymentMethod.ADVANCE
# payment_method = PaymentMethod.CREDIT_PART
# payment_method = PaymentMethod.CREDIT_PAY
# payment_method = PaymentMethod.CREDIT


# Признак рассчета
payment_object = PaymentObject.PRODUCT
# payment_object = PaymentObject.PRODUCT_PRACTICAL
# payment_object = PaymentObject.WORK
# payment_object = PaymentObject.SERVICE
# payment_object = PaymentObject.GAMBLING_BET
# payment_object = PaymentObject.GAMBLING_WIN
# payment_object = PaymentObject.LOTTERY_BET
# payment_object = PaymentObject.LOTTERY_WIN
# payment_object = PaymentObject.RID
# payment_object = PaymentObject.PAYMENT
# payment_object = PaymentObject.COMMISSION
# payment_object = PaymentObject.COMPOSITE
# payment_object = PaymentObject.PAY
# payment_object = PaymentObject.OTHER
# payment_object = PaymentObject.PROPERTY_RIGHT
# payment_object = PaymentObject.NON_OPERATING
# payment_object = PaymentObject.INSURANCE
# payment_object = PaymentObject.SALES_TAX
# payment_object = PaymentObject.RESORT_FEE
# payment_object = PaymentObject.DEPOSIT
# payment_object = PaymentObject.CONSUMPTION
# payment_object = PaymentObject.SOLE_PROPRIETOR_CPI_CONTRIBUTINS
# payment_object = PaymentObject.CPI_CONTRIBUTINS
# payment_object = PaymentObject.SOLE_PROPRIETOR_CMI_CONTRIBUTINS
# payment_object = PaymentObject.CMI_CONTRIBUTINS
# payment_object = PaymentObject.CSI_CONTRIBUTINS
# payment_object = PaymentObject.CASINO_PAYMENT
# payment_object = PaymentObject.PAYMENT_OF_THE_MONEY
# payment_object = PaymentObject.ATHM
# payment_object = PaymentObject.ATM
# payment_object = PaymentObject.THM
# payment_object = PaymentObject.TM

# Создание позиции
position = Position(id=1,  # Идентификатор позиции в магазине
                    name='Наименование позиции',
                    price=10, # Цена за единицу
                    quantity=1,  # Количество единиц
                    total=10, # Общая стоимость позиции
                    excise=10, # Акциз
                    measure=measure, # Единица измерения
                    user_data='Дополнительный реквизит предмета расчета',
                    payment_method=payment_method, # Метод расчёта
                    vat=vat_rate,  # Тип налога
                    payment_object=payment_object # Объект расчёта
)

# Типы маркировок
mark_type = MarkTypes.EAN13
# mark_type = MarkTypes.UNKNOWN
# mark_type = MarkTypes.EAN8
# mark_type = MarkTypes.ITF14
# mark_type = MarkTypes.GS10
# mark_type = MarkTypes.GS1M
# mark_type = MarkTypes.GS10
# mark_type = MarkTypes.SHORT
# mark_type = MarkTypes.FUR
# mark_type = MarkTypes.EGAIS20
# mark_type = MarkTypes.EGAIS30

# Добавление кода маркировки в позицию
position.set_mark_code(type=mark_type, code='1234567890123')

# Установка дробности маркированного товара
position.set_mark_quantity(numerator=1, denominator=2)

# Если нужна информация о агенте

# Создание агента
agent_info = Agent(agent_type=AgentType.AGENT, phone='+79998887766',
                    name='Названиепоставщика', inn='287381373424')

# Если нужно, установка платёжного агента
agent_info.set_paying_agent(operation='Операция1', phones=['+79998887766'])

# Если нужно, установка оператора приёма платежей
agent_info.set_receive_payments_operator(phones=['+79998887766'])

# Если нужно, установка оператора перевода средств
agent_info.set_money_transfer_operator(phones=['+79998887766'], name='Операторперевода',
                                        address='г. Москва, ул. Складочная д.3',
                                        inn='8634330204')

# Добавление агента в позицию
position.set_agent(agent_info)

# Добавление позиции
check.add_position(position)

# Добавление суммы расчёта
check.add_payment(300)

# Если нужно распечатать чек (по умолчанию False)
check.set_print(True)

# Если нужно задать данные по кассиру, по умолчанию возьмутся с ФН
check.set_cashier('Иваров И.П.', '1234567890123')

# Если нужно установить дополнительные параметры чека
check.set_additional_check_props('445334544')

# Если нужно получитиь отчёт об успешной фискализации
check.set_callback_url('http://shop.pro/fiscal_check/callback')

# Отправка запроса
try:
    task = client.create_task(check, 'идентификатор очереди')
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task)
# Task(id=1, external_id=2, print_queue_id=3, state='new')
# id - идентификатор задачи
# external_id - идентификатор операции в магазине
# print_queue_id - идентификатор очереди
# state - состояние задачи


# Создание чека коррекции

intent = Intent.SELL_CORRECTION  # Коррекция прихода
# intent = Intent.BUY_CORRECTION # Коррекция расхода
# intent = Intent.SELL_RETURN_CORRECTION # Коррекция возврата прихода
# intent = Intent.BUY_RETURN_CORRECTION # Коррекция возврата расхода

check = CorrectionCheck(oid, intent)

# Установка данных компании
check.set_company(payment_address=payment_address, tax_system=tax_system)

payment_type = PaymentType.CARD # Тип оплаты, корректирующей суммы
# payment_method = PaymentType.CARD # электронные
# payment_method = PaymentType.CASH # наличные

# Установка суммы коррекции
check.add_payment(12, payment_type)

correction_type = CorrectionType.SELF # Тип коррекции
# correction_type = CorrectionType.SELF # Самостоятельно
# correction_type = CorrectionType.FORCED # По предписанию

# Установка данных коррекции
check.set_correction_info(correction_type,
                         '31.03.2022', # Дата документа коррекции в формате 'dd.mm.yyyy'
                         'K11',        # Номер документа коррекции
)

# Создаём позицию коррекции
position = Position(name='Товар', price=10, quantity=5, total=50,
                    measure=measure, payment_method=payment_method,
                    payment_object=payment_object, vat=vat_rate)

# Добавляем позицию коррекции
check.add_position(position)

# Указание уполномоченного лица
check.set_authorised_person(
    name='Иванов И.И',
    inn='123456789012'
)

# Если нужно получитиь отчёт об успешной фискализации
check.set_callback_url('http://shop.pro/fiscal_check/callback')

# Отправка запроса
try:
    task = client.create_task(check, 'идентификатор очереди')
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task)
# Task(id=1, external_id=2, print_queue_id=3, state='new')
# id - идентификатор задачи
# external_id - идентификатор операции в магазине
# print_queue_id - идентификатор очереди
# state - состояние задачи

# Получение информации о поставленной на фискализацию задаче:
try:
    task_info = client.get_task_info('идентификатор задачи')
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task_info)
# TaskInfo(id=234, external_id='4321', state='done', error_description=None,
#          fiscal_data={'i': '111',
#                       'fn': '2222222222222222',
#                       't': '3333333333333',
#                       'n': 4,
#                       'fp': '555555555',
#                       's': '6666.77'})
# id - идентификатор задачи
# external_id - идентификатор операции в магазине
# state - состояние задачи
# error_description - описание возникшей ошибки, когда state=='error'
# fiscal_data - фискальные данные



# Чтобы проверить, является ли очередь активной, выполните:
client.is_queue_active('идентификатор очереди')

# Вы можете указать идентификатор очереди по умолчанию с помощью:
client.set_default_queue('идентификатор очереди по умолчанию')
# В этом случае можно не указывать идентификатор очереди всякий раз,
# когда нужно распечатать чек или проверить состояние очереди:
assert client.is_queue_active() is True
try:
    task = client.create_task(check)
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task)

Использование v1

from requests.exceptions import HTTPError
from komtet_kassa_sdk.v1 import (
    Check, CorrectionCheck, Client, Intent, TaxSystem, VatRate, CorrectionType, PaymentMethod,
    Agent, AgentType, CalculationSubject, CalculationMethod
)

shop_id = 'идентификатор магазина'
secret_key = 'секретный ключ'
client = Client(shop_id, secret_key)

oid = 'номер операции в вашем магазине'
email = 'E-Mail пользователя для отправки электронного чека'

intent = Intent.SELL  # Направление платежа
# Используйте Intent.RETURN для оформления возврата

# Система налогооблажения
tax_system = TaxSystem.COMMON  # ОСН
# tax_system = TaxSystem.SIMPLIFIED_IN  # УСН доход
# tax_system = TaxSystem.SIMPLIFIED_IN_OUT  # УСН доход - расход
# tax_system = TaxSystem.UTOII  # ЕНВД
# tax_system = TaxSystem.UST  # ЕСН
# tax_system = TaxSystem.PATENT  # Патент

check = Check(oid, email, intent, tax_system)

position_name = 'Наименование позиции'
position_price = 100  # Цена позиции
check.add_position(position_name, position_price)

# Налоговая ставка
vat_rate = VatRate.RATE_20  # НДС 20%
# vat_rate = VatRate.RATE_NO  # Без НДС
# vat_rate = VatRate.RATE_0  # НДС 0%
# vat_rate = VatRate.RATE_10  # НДС 10%
# vat_rate = VatRate.RATE_110  # НДС 10/110
# vat_rate = VatRate.RATE_120  # НДС 20/120
# Можно указать просто число:
# vat_rate = 20
# или строку:
# vat_rate = '10'
# или даже так:
# vat_rate = '20%'
# а ещё вот так:
# vat_rate = 0.20

# Добавление позиции
check.add_position(
    'Наименование позиции',
    oid=123,  # Идентификатор позиции в магазине
    price=100,  # Цена за единицу
    quantity=2,  # Количество единиц (по умолчанию 1)
    total=200,  # Общая стоимость позиции (по умолчанию price * quantity)
    vat=vat_rate  # По умолчанию Без НДС (VatRate.RATE_NO),

    calculation_method=CalculationMethod.FULL_PAYMENT, # По умолчанию FULL_PAYMENT
    calculation_subject=CalculationSubject.PRODUCT, # По умолчанию PRODUCT

    # Необязательный атрибут, указывается только при продаже комиссионером собственных и
    # комиссионных товаров
    agent = Agent(AgentType.COMMISSIONAIRE, '+77777777777', 'ООО "Лютик"', '12345678901')
)

# Добавление суммы расчёта
check.add_payment(300)

# Если нужно распечатать чек (по умолчанию False)
check.set_print(True)

# Если нужно задать данные по кассиру, по умолчанию возьмутся с ФН
check.set_cashier('Иваров И.П.', '1234567890123')

# Если нужно нужно передать данные клиента для фискализации
check.set_client('Пупкин П.П.', '123412341234')

# Отправка запроса
try:
    task = client.create_task(check, 'идентификатор очереди')
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task)
# Task(id=1, external_id=2, print_queue_id=3, state='new')
# id - идентификатор задачи
# external_id - идентификатор операции в магазине
# print_queue_id - идентификатор очереди
# state - состояние задачи


# Создание чека коррекции

intent = Intent.SELL_CORRECTION  # Коррекция прихода
# intent = Intent.BUY_CORRECTION # Коррекция расхода
# intent = Intent.SELL_RETURN_CORRECTION # Коррекция возврата прихода
# intent = Intent.BUY_RETURN_CORRECTION # Коррекция возврата расхода

check = CorrectionCheck(oid, intent, sno)

payment_method = PaymentMethod.CARD # Метод оплаты, корректирующей суммы
# payment_method = PaymentMethod.CARD # электронные
# payment_method = PaymentMethod.CASH # наличные

# Установка суммы коррекции
check.add_payment(
  correction_sum=12, # Сумма
  payment_method=payment_method
)

correction_type = CorrectionType.SELF # Тип коррекции
# correction_type = CorrectionType.SELF # Самостоятельно
# correction_type = CorrectionType.FORCED # По предписанию

# Установка данных коррекции
check.set_correction_data(
    type=correction_type,
    data='2017-09-28', # Дата документа коррекции в формате 'yyyy-mm-dd'
    document='К111', # Номер документа коррекции
    description='Отключение электричества' # Описание коррекции
)
# Указание уполномоченного лица
check.set_authorised_person(
    name='Иванов И.И',
    inn='123456789012'
)

# Указание данных клиента
check.set_client(
    name='Иванов И.П.',
    inn='1231231231'
)

# Отправка запроса
try:
    task = client.create_task(check, 'идентификатор очереди')
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task)
# Task(id=1, external_id=2, print_queue_id=3, state='new')
# id - идентификатор задачи
# external_id - идентификатор операции в магазине
# print_queue_id - идентификатор очереди
# state - состояние задачи

# Получение информации о поставленной на фискализацию задаче:
try:
    task_info = client.get_task_info('идентификатор задачи')
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task_info)
# TaskInfo(id=234, external_id='4321', state='done', error_description=None,
#          fiscal_data={'i': '111',
#                       'fn': '2222222222222222',
#                       't': '3333333333333',
#                       'n': 4,
#                       'fp': '555555555',
#                       's': '6666.77'})
# id - идентификатор задачи
# external_id - идентификатор операции в магазине
# state - состояние задачи
# error_description - описание возникшей ошибки, когда state=='error'
# fiscal_data - фискальные данные



# Чтобы проверить, является ли очередь активной, выполните:
client.is_queue_active('идентификатор очереди')

# Вы можете указать идентификатор очереди по умолчанию с помощью:
client.set_default_queue('идентификатор очереди по умолчанию')
# В этом случае можно не указывать идентификатор очереди всякий раз,
# когда нужно распечатать чек или проверить состояние очереди:
assert client.is_queue_active() is True
try:
    task = client.create_task(check)
except HTTPError as exc:
    print(exc.response.text)
else:
    print(task)

Changelog

Unreleased

7.1.2 (30.12.2022)

  • Поддержка типа маркировки gs10 на v2

7.1.1 (09.12.2022)

  • Добавление в чек коррекции v2 метода set_print

7.1.0 (03.11.2022)

  • У чека коррекции v2 убран параметр base_name

  • Параметр base_number теперь является необязательным для чека коррекции v2

7.0.5 (19.10.2022)

  • Добавлена потерянная запятая в __init__ в v2

7.0.4 (21.06.2022)

  • Реквизиты покупателя вынесены в объект requisites

7.0.3 (06.05.2022)

  • Добавил метод set_client для чека коррекции в v1

7.0.2 (06.04.2022)

  • Параметр email для метода set_client в классах Check, CorrectionCheck является необязательным

7.0.1 (21.12.2021)

  • Поднята версия для pypi

  • Исправлен механизм публикации

7.0.0 (21.12.2021)

  • Тесты перенесены в докер

  • Плагин разбит на подмодули (v1, v2)

  • В версии v2 реализована новая схема постановки чеков

  • Вся кодовая база была покрыта тестами

  • Изменена схема чека коррекции для v1 структуры(Создан BaseCheck класс от которого наследуются Check/CorrectionCheck)

  • Исправлены направления платежей для чека коррекции

6.0.0 (02.03.2021)

  • Параметр sno для класса Order является обязательным

  • Изменен порядок передачи параметра sno в классе Order

5.3.2 (03.02.2021)

  • Указана кодировка для файла helpers.py

5.3.1 (03.02.2021)

  • Правка версии для pypi

5.3.0 (03.02.2021)

  • Правка типа ИНН в описании методов классов Check и CorrectionCheck

  • В класс Order в метод set_client добавлен параметр client_coordinate

  • Добавлен признак расчёта pay

5.2.0 (08.10.2020)

  • В классы Check и Client добавлен метод apply_correction_positions для устранения возможных несхождений в ценах позиций

5.1.0 (21.09.2020)

  • Для заказов добавлена поддержка nomenclature_code, is_need_nomenclature_code

5.0.0 (08.09.2020)

  • Добавлен класс Employee для создания, просмотра, редактирования сотрудников

  • В классе Client метод get_couriers заменен на get_employees

  • В класс Client добавлены методы create_employee, update_employee, get_employee_info, delete_employee

4.2.0 (10.07.2020)

  • Добавлена возможность передать дополнительный реквизит пользователя additional_user_props тег 1084

4.1.0 (25.06.2020)

  • Добавлена возможность передать код товарной номенклатуры в HEX виде

4.0.0 (19.06.2020)

  • Параметр task_id заменен на параметр external_id

3.1.1 (21.05.2020)

  • В класс Check добавлен метод apply_discount для применения скидок ко всему чеку

  • В класс Order добавлен метод apply_discount для применения скидок ко всему заказу

3.0.1 (19.05.2020)

  • Удален NomenclatureType

3.0.0 (19.05.2020)

  • Замена интерфейса класса Nomenclature: удален параметр nomenclature_type

2.4.0 (26.03.2020)

  • В класс Check добавлен метод set_additional_check_props для поддержки дополнительного реквизита чека

2.3.1 (19.03.2020)

  • Загрузка одного чека без мультизагрузки

2.3.0 (13.03.2020)

  • В класс Client добавлен метод create_tasks для множественной загрузки чеков

2.2.0 (02.03.2020)

  • Для заказов добавлена поддержка excise, country_code, declaration_number

2.1.0 (27.01.2020)

  • Добавлена поддержка кода номеклатуры в HEX представлении

2.0.0 (20.01.2020)

  • Заменены параметры gtin и serial класса Nomenclature на code

1.10.0 (16.12.2019)

  • В метод Order.add_position добавлен необязательный параметр agent.

1.9.0 (20.11.2019)

  • Добавлен метод set_agent в класс Check

1.8.0 (18.11.2019)

  • Параметр inn методов Check.set_client и CorrectionCheck.set_authorised_person необязателен для ввода

1.7.0 (13.09.2019)

  • Заменен базовый класс для OrderInfo, CouriersInfo на собственную реализацию

1.6.0 (12.08.2019)

  • Параметры функции Check.set_client необязательны для ввода

1.5.5 (18.07.2019)

  • Добавлены празнаки рассчета PROPERTY_RIGHT, NON_OPERATING, INSURANCE, SALES_TAX, RESORT_FEE в класс CalculationSubject

  • Добавлен классы Nomenclature и NomenclatureType для создания маркировок

  • В позицию на чек фискализации добавлены необязательные поля суммы акциза, цифровой код страны и номер таможенной декларации

1.5.4 (08.07.2019)

  • Параметры функции Check.set_client необязательны для ввода, но в случае использования функции inn обязательный параметр для передачи

1.5.3 (26.06.2019)

  • Исправлено преобразование RATE_118 в RATE_120 у класса VatRate

1.5.2 (26.06.2019)

  • Добавленно преобразование RATE_18 и RATE_118 в RATE_20 и RATE_120 у класса VatRate

1.5.1 (24.06.2019)

  • Расширен класс Response методом _asdict

1.5.0 (24.06.2019)

  • Заменен базовый класс для Task, TaskInfo на собственную реализацию

1.4.0 (13.06.2019)

  • В класс Order добавлена возможность передать предоплату и тип платежа

1.3.0 (04.06.2019)

  • Класс Check расширен методами set_client и set_cashier для передачи дополнительных данных по чеку

1.2.0 (16.05.2019)

  • Класс Order расширен методом add_callback_url для оповещения магазина

1.1.1 (16.04.2019)

  • Изменен идентификатор позиции заказа

1.1.0 (15.04.2019)

  • Добавлен класс Order для создания и обновления заявок.

  • Класс Client расширен методами get_orders, get_couriers, create_order, update_order, get_order_info, delete_order для работы с заявками.

1.0.0 (18.01.2019)

  • Убраны атрибуты RATE_18 и RATE_118 у класса VatRate.

0.7.0 (10.12.2018)

  • Класс VatRate расширен атрибутами RATE_20 и RATE_120.

0.6.0 (20.11.2018)

  • Класс Agent расширен методами set_paying_agent_info, set_receive_payments_operator_info и set_money_transfer_operator_info для передачи дополнительных атрибутов платежного агента, оператора по приему платежей и оператора перевода, соответственно.

  • В класс Check добавлен необязательный параметр payment_address и метод set_callback_url.

0.5.0 (14.08.2018)

  • Добавлены направления платежа BUY и BUY_RETURN в класс Intent

0.4.0 (09.04.2018)

  • Добавлен метод set_authorised_person в класс CorrectionCheck

0.3.0 (20.03.2018)

  • Добавлена поддержка ФФД 1.0.5 (Признак рассчета, способ рассчета, данные по кассиру, данные по агенту)

0.2.2 (10.11.2017)

  • Добавлен метод Client.get_task_info

  • Добавлен необязательный параметр oid в Check.add_position

0.2.1 (28.09.2017)

  • Добавлен чек коррекции.

  • Добавлена возможность указать вид оплаты.

  • В позицию на чек фискализации добавлено необязательное поле единицы измерения.

0.2.0 (11.08.2017)

  • Для отправки запросов теперь используется класс Client.

  • При отправке запроса на добавление задачи в очередь теперь возвращается namedtuple вместо словаря.

  • Удалены исключения. Вместо них используются исключения из requests.

  • Константы сгруппированы в классы.

  • Убрана валидация параметров при создании экземпляра чека и его элементов. Валидация уже осуществляется на сервере.

  • В налогах теперь указывается только ставка (высчитывается на сервере).

  • В позиции убран параметр discount (высчитывается на сервере).

  • 99.9% покрытие кода тестами.

  • Прочие небольшие изменения.

0.1.6 (31.07.2016)

  • print_out() теперь возвращает ответ от сервера.

0.1.5 (10.07.2017)

  • Исправлена возможность установки sno чека в ОСН.

0.1.4 (06.07.2017)

  • Добавлен новый параметр чека sno (система налогооблажения).

0.1.1 (26.06.2017)

  • Переезд на https.

0.1.0 (19.06.2017)

  • Первый релиз.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

komtet_kassa_sdk-7.1.2.tar.gz (43.8 kB view details)

Uploaded Source

Built Distributions

komtet_kassa_sdk-7.1.2-py3.6.egg (35.7 kB view details)

Uploaded Source

komtet_kassa_sdk-7.1.2-py2.7.egg (35.9 kB view details)

Uploaded Source

File details

Details for the file komtet_kassa_sdk-7.1.2.tar.gz.

File metadata

  • Download URL: komtet_kassa_sdk-7.1.2.tar.gz
  • Upload date:
  • Size: 43.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for komtet_kassa_sdk-7.1.2.tar.gz
Algorithm Hash digest
SHA256 50171da963bfad4470f2718daf2c3f475d13725e530cc8bf0f55b3dfc3a8e806
MD5 8fb3a1133d6b59ba4fe992abaa9daaa4
BLAKE2b-256 ed525e9a50a873d02ab55480240d0ed39fb413b6dc18e7c6ab8ffcc8d3cdc00e

See more details on using hashes here.

File details

Details for the file komtet_kassa_sdk-7.1.2-py3.6.egg.

File metadata

  • Download URL: komtet_kassa_sdk-7.1.2-py3.6.egg
  • Upload date:
  • Size: 35.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for komtet_kassa_sdk-7.1.2-py3.6.egg
Algorithm Hash digest
SHA256 8e8e0e7be2757819db3abc1e52d92581e6d5a1ae1a5f10688ed245d079e32fa8
MD5 9949568b94bf48db95ac01b1b621a7ec
BLAKE2b-256 aae0eaed5b7bfbd15a8dc7ccf412ad2044f5afe11556db1128f0d784beb50723

See more details on using hashes here.

File details

Details for the file komtet_kassa_sdk-7.1.2-py2.7.egg.

File metadata

  • Download URL: komtet_kassa_sdk-7.1.2-py2.7.egg
  • Upload date:
  • Size: 35.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10

File hashes

Hashes for komtet_kassa_sdk-7.1.2-py2.7.egg
Algorithm Hash digest
SHA256 877701a72942f6a33573b6a822e6641ecf64af6e7792a9af0d7755b8560672fb
MD5 d2e1e7ac4f37a256b283b751e0551dad
BLAKE2b-256 08966bfe76b186fedfddc11e44689756b02d14c08f7e1f2b88b13956da32d4e4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page