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

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

from requests.exceptions import HTTPError
from komtet_kassa_sdk import (
    Check, CorrectionCheck, Client, Intent, TaxSystem, VatRate, CorrectionType, PaymentMethod
)

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_18  # НДС 18%
# 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_118  # НДС 18/118
# Можно указать просто число:
# vat_rate = 18
# или строку:
# vat_rate = '10'
# или даже так:
# vat_rate = '18%'
# а ещё вот так:
# vat_rate = 0.18

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

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

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

# Отправка запроса
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 - состояние задачи


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

printer_number = 'серийный номер принтера'

intent = Intent.SELL_CORRECTION  # Направление коррекции
# intent = Intent.SELL_CORRECTION # Коррекция прихода
# intent = Intent.RETURN_CORRECTION # Коррекция расхода

check = CorrectionCheck(oid, printer_number, intent, tax_system)

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

# Установка суммы коррекции
check.set_payment(
  correction_sum=12, # Сумма
  vat_rate=vat_rate,
  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='Отключение электричества' # Описание коррекции
)

# Отправка запроса
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

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-0.2.2.tar.gz (8.1 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for komtet_kassa_sdk-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b5e99565043c33979bdd901bf26d55f2b81f448f72777d08a45d47b5282b342a
MD5 8f8b6de5cea7adf647eac81ec3ab38b5
BLAKE2b-256 495563ae460897b501ca76e08063dfc70d4a51797955180a68cf4bf0dd16644c

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