Skip to main content

Python SDK for KOMTET Kassa

Project description

komtet-kassa-python-sdk

    Библиотека для интеграции вашего сайта с с облачным сервисом
    распределенной печати чеков [КОМТЕТ Касса](http://kassa.komtet.ru)
    
    # Установка
    
    С помощью pip:
    
    ``` bash
    # pip install komtet_kassa_sdk
    ```
    
    Вручную:
    
    ``` bash
    $ git clone https://github.com/Komtet/komtet-kassa-python-sdk
    $ cd komtet-kassa-python-sdk
    # python setup.py install
    ```
    
    # Использование v2
    
    ``` python
    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 = MeasureTypes.PIECE
    # measure = MeasureTypes.PIECE
    # measure = MeasureTypes.GRAMM
    # measure = MeasureTypes.KILOGRAMM
    # measure = MeasureTypes.TON
    # measure = MeasureTypes.CENTIMETER
    # measure = MeasureTypes.DECIMETER
    # measure = MeasureTypes.METER
    # measure = MeasureTypes.SQUARE_CENTIMETER
    # measure = MeasureTypes.SQUARE_DECIMETER
    # measure = MeasureTypes.SQUARE_METER
    # measure = MeasureTypes.MILLILITER
    # measure = MeasureTypes.LITER
    # measure = MeasureTypes.CUBIC_METER
    # measure = MeasureTypes.KILOWATT_HOUR
    # measure = MeasureTypes.GIGA_CALORIE
    # measure = MeasureTypes.DAY
    # measure = MeasureTypes.HOUR
    # measure = MeasureTypes.MINUTE
    # measure = MeasureTypes.SECOND
    # measure = MeasureTypes.KILOBYTE
    # measure = MeasureTypes.MEGABYTE
    # measure = MeasureTypes.GIGABYTE
    # measure = MeasureTypes.TERABYTE
    # measure = MeasureTypes.OTHER_MEASURMENTS
    
    # Налоговая ставка
    vat_rate = VatRate.RATE_NO  # Без НДС
    # vat_rate = VatRate.RATE_0  # НДС 0%
    # vat_rate = VatRate.RATE_5  # НДС 5%
    # vat_rate = VatRate.RATE_7  # НДС 7%
    # vat_rate = VatRate.RATE_10  # НДС 10%
    # vat_rate = VatRate.RATE_20  # НДС 20%
    # vat_rate = VatRate.RATE_105  # НДС 5/105
    # vat_rate = VatRate.RATE_107  # НДС 7/107
    # 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
    
    # Часовая зона
    timezone = TimeZone.TIME_ZONE_1     # UTC+2
    # timezone = TimeZone.TIME_ZONE_2    # UTC+3
    # timezone = TimeZone.TIME_ZONE_3    # UTC+4
    # timezone = TimeZone.TIME_ZONE_4    # UTC+5
    # timezone = TimeZone.TIME_ZONE_5    # UTC+6
    # timezone = TimeZone.TIME_ZONE_6    # UTC+7
    # timezone = TimeZone.TIME_ZONE_7    # UTC+8
    # timezone = TimeZone.TIME_ZONE_8    # UTC+9
    # timezone = TimeZone.TIME_ZONE_9    # UTC+10
    # timezone = TimeZone.TIME_ZONE_10    # UTC+11
    # timezone = TimeZone.TIME_ZONE_11    # UTC+12
    
    # Планируемый статус товара
    planned_status=PlannedStatus.PLANNED_STATUS_1
    # planned_status=PlannedStatus.PLANNED_STATUS_2
    # planned_status=PlannedStatus.PLANNED_STATUS_3
    # planned_status=PlannedStatus.PLANNED_STATUS_4
    # planned_status=PlannedStatus.PLANNED_STATUS_5
    # planned_status=PlannedStatus.PLANNED_STATUS_6
    
    # Создание позиции
    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)
    
    # Если нужно установить планируемый статус товара
    position.set_planned_status(planned_status=PlannedStatus.PLANNED_STATUS_1)
    
    # Добавление позиции
    check.add_position(position)
    
    # Добавление суммы расчёта
    check.add_payment(300)
    
    # Если нужно распечатать чек (по умолчанию False)
    check.set_print(True)
    
    # Если нужно задать данные по кассиру, по умолчанию возьмутся с ФН
    check.set_cashier('Иваров И.П.', '1234567890123')
    
    # Если нужно установить дополнительные параметры чека
    check.set_additional_check_props('445334544')
    
    # Если нужно установить признак расчета в Интернет
    check.check.set_internet(True)
    
    # Если нужно установить сведения об оплате в безналичном порядке
    check.add_cashless_payment(sum=2000, method=2, id='transaction_1',
                                additional_info='Дополнительные сведения')
    
    # Если нужно установить часовую зону
    check.set_timezone(timezone=TimeZone.TIME_ZONE_2)
    
    # Если нужно получитиь отчёт об успешной фискализации
    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
    
    ``` python
    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_5  # НДС 5%
    # vat_rate = VatRate.RATE_7  # НДС 7%
    # vat_rate = VatRate.RATE_10  # НДС 10%
    # vat_rate = VatRate.RATE_105  # НДС 5/105
    # vat_rate = VatRate.RATE_107  # НДС 7/107
    # 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')
    
    # Если нужно установить признак расчета в Интернет
    check.check.set_internet(True)
    
    # Если нужно установить сведения об оплате в безналичном порядке
    check.add_cashless_payment(sum=2000, method=2, id='transaction_1',
                                additional_info='Дополнительные сведения')
    
    # Отправка запроса
    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
    ----------
    
    8.0.0 (20.11.2025)
    ------------------
      - Прекращена поддержка НДС 18% и НДС 18/118
      - Добавлена поддержка НДС 22% и НДС 22/122
    
    7.5.0 (06.11.2025)
    ------------------
      - Изменения по v1:
        - В классе `TaxSystem` удалена система налогообложения ЕНВД
      - Изменения по v2:
        - В классе `TaxSystem` удалена система налогообложения ЕНВД
    
    7.4.4 (08.09.2025)
    ------------------
      - Изменения по v1:
        - В методе `set_correction_data` параметр `document_number` стал необязательным
    
    7.4.3 (08.09.2025)
    ------------------
      - Изменения по v1:
        - В методе `set_correction_data` параметр `document_number` стал необязательным
    
    7.4.2 (15.08.2025)
    ------------------
      - Изменения по v1:
        - В класс `CorrectionCheck` добавлен метод `set_user` - email или телефон пользователя для отправки электронного чека
        - В методе `set_correction_data` параметр `description` стал необязательным (устарел и будет удален в будущих версиях)
    
    7.4.1 (12.08.2025)
    ------------------
      - Изменения по v2:
        - В класс `PlannedStatus` добавлен `PLANNED_STATUS_255` - cтатус товара, подлежащего обязательной маркировке, не изменился
    
    7.4.0 (05.08.2025)
    ------------------
      - Изменения по v1:
        - В классы `Check` и `CorrectionCheck` добавлен метод `set_internet` - признак расчета в "Интернет"
        - В класс `Check` добавлен метод  `add_cashless_payment` - сведения об оплате безналичными
    
      - Изменения по v2:
        - В классы `Check` и `CorrectionCheck` добавлен метод `set_internet` - признак расчета в "Интернет"
        - В классы `Check` и `CorrectionCheck` добавлен метод `set_timezone` - часовая зона
        - В класс `Check` добавлен метод  `add_cashless_payment` - сведения об оплате безналичными
        - В класс `Position` добавлен метод  `set_planned_status` - планируемый статус товара
    
    7.3.1 (27.05.2025)
    ------------------
    - Возможность установки флага признака использования ОСУ для позиции чека v2
    
    7.3.0 (10.04.2025)
    ------------------
    - Возможность не передавать операцию и телефоны в set_paying_agent_info()
    
    7.2.0 (06.11.2024)
    ------------------
    - Поддержка НДС 5%, НДС 7%, НДС 5/105 и НДС 7/107
    
    7.1.4 (16.11.2023)
    ------------------
    - Поддержка place_address. Правки названия
    
    7.1.3 (25.07.2023)
    ------------------
    - Тесты для подакцизного товара в позиции заказа
    
    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-8.0.0.tar.gz (48.4 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: komtet_kassa_sdk-8.0.0.tar.gz
  • Upload date:
  • Size: 48.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.10

File hashes

Hashes for komtet_kassa_sdk-8.0.0.tar.gz
Algorithm Hash digest
SHA256 a04b2f27bbb3bfed2095f39eab9768372bc48eb9f6cde0dac88b55797ce763ac
MD5 b383ba700c3677a7cf033ef60755e9c1
BLAKE2b-256 3c84cd046ddfc611ba822f3838af48f87b99928b79966d773e404bf896fa10fe

See more details on using hashes here.

Supported by

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