Набор Python-скриптов для управления онлайн-кассой через KKMServer (HTTP API для фискальных регистраторов) — на примере продажи и возврата билетов автовокзала.
Реквизиты организации и ФИО кассира в этой версии заменены на плейсхолдеры и вынесены в переменные окружения (см.
config.py) — в оригинале скрипты использовались с реальными данными действующей кассы.
shift.py— управление сменой и кассой: открытие/закрытие смены (с печатью Z-отчёта), X-отчёт без закрытия смены, получение текущего состояния кассы (баланс, номер смены), внесение и изъятие наличных. Интерактивное меню в консоли.sell.py— открывает смену (если не открыта) и печатает фискальный чек продажи билета: формирует фискальные позиции (обязательные для чека) и нефискальные строки (билетная информация — рейс, станция, пассажир, место).return.py— печатает фискальный чек возврата билета по номеру исходного фискального документа.vehicles.py— вспомогательный скрипт: разбирает текстовые реестры транспорта перевозчиков (по одному.TXT-файлу на перевозчика, форматМарка Модель (мест), госномер) в единую сводную Excel-таблицу через регулярные выражения и pandas.
Все команды идут HTTP POST-запросом на локальный KKMServer (Execute) в формате JSON: OpenShift, CloseShift, XReport, GetDataKKT, DepositingCash, PaymentCash, RegisterCheck (с флагом IsFiscalCheck для фискальных чеков продажи/возврата). Ответ проверяется по полю Status (0 — успех), обрабатываются типовые ошибки (например, «смена уже открыта»).
pip install -r requirements.txt
# реквизиты организации задаются через переменные окружения — см. config.py
export COMPANY_NAME='ООО "ВАША КОМПАНИЯ"'
export COMPANY_INN="1234567890"
export COMPANY_ADDRESS="г. Город, ул. Улица, д. 1"
export COMPANY_STATION_NAME='АС, "Название станции"'
export KKM_CASHIER_NAME="Фамилия И.О."
export KKM_URL="https://localhost:5893/Execute" # адрес вашего KKMServer
python shift.py # интерактивное меню управления кассой
python sell.py # тестовая продажа
python return.py # тестовый возвратДля vehicles.py положите свои .TXT-реестры в папку datas/ (пример формата — в sample_datas/) и запустите python vehicles.py.
Python, requests (HTTP-интеграция с KKMServer), pandas + openpyxl, регулярные выражения, uuid