Перейти к содержимому

Интеграция Odoo 10 с ККТ Эвотор: очередь чеков и REST API для терминала

Что можно закрыть на стороне Odoo, а что требует отдельного приложения на самой кассе
9 июля 2026 г. от
Интеграция Odoo 10 с ККТ Эвотор: очередь чеков и REST API для терминала

Схема: настройки Эвотор в Точке продаж Odoo, постановка чека в очередь после оплаты, обмен по REST API

Ещё одному клиенту на Odoo 10 нужно было, чтобы Точка продаж (POS) умела пробивать фискальный чек и принимать оплату картой на физической смарт-кассе Эвотор — без ручного дублирования каждой продажи в отдельном приложении кассы.

Важное ограничение — сразу и честно

У Эвотора нет публичного облачного API, который позволял бы стороннему серверу (в данном случае Odoo) удалённо приказать конкретному физическому терминалу напечатать чек или запустить оплату картой на встроенном эквайринге. Печать и эквайринг на конкретной кассе доступны только приложению, установленному прямо на самом терминале — это отдельная Android-разработка на SDK «Эвотор.Терминал для партнёров», публикуемая через Эвотор.Маркет, а не то, что можно закрыть одним модулем Odoo.

Поэтому мы полностью реализовали ту половину интеграции, которую можно сделать средствами Odoo, и определили чёткий REST-контракт, под который позже можно написать приложение-компаньон на терминал.

Где искать в интерфейсе

Точка продаж → Конфигурация → <нужная точка> → вкладка «Эвотор»: включить «Пробивать чеки на Эвоторе», указать UUID магазина и терминала (берутся из личного кабинета Эвотора, раздел «Оборудование»), нажать «Сгенерировать» для токена доступа, выбрать журналы для наличных и оплаты картой.

Как это работает

  1. Кассир пробивает продажу в POS как обычно. Как только заказ оплачен, Odoo сам собирает JSON с позициями, ставками НДС и разбивкой суммы по наличным/карте — и ставит чек в очередь Эвотора. От кассира здесь ничего не требуется.
  2. Приложение на терминале (или пока его нет — сам кассир) забирает очередь через REST-эндпоинт GET /pos_evotor/v1/receipts/pending — до 50 чеков за раз, каждый переходит в статус «отправлен».
  3. После того как чек фактически пробит на кассе, эндпоинт POST /pos_evotor/v1/receipts/ack возвращает в Odoo фискальные данные — номера ФН/ФД/ФП и номер чека — либо текст ошибки.

Статус каждого чека, фискальные данные и текст ошибки видны прямо в карточке заказа POS — там же кнопка «Вернуть в очередь Эвотора» для чеков, зависших с ошибкой. Отдельный журнал в меню Точка продаж → Журнал обмена Эвотор собирает историю обмена для диагностики. Фоновая задача каждые 5 минут возвращает в очередь чеки, которые терминал забрал, но не подтвердил дольше заданного тайм-аута — на случай обрыва связи.

Что дальше

Код модуля закоммичен в репозиторий, версия 10.0.1.0.0. Дальше — на выбор: обрабатывать очередь чеков как есть (кассир сверяет чек по уникальному идентификатору вручную на терминале), либо довести дело до полной автоматизации и написать под SDK Эвотора отдельное Android-приложение-компаньон, которое будет опрашивать REST API этого модуля и печатать чек/запускать эквайринг без участия кассира.

Штрихкоды на приёмке товара в Odoo 10: сканер вместо клавиатуры и мыши
Как мы добавили сканирование в складские операции без покупки Enterprise-модуля

Похожая задача в вашей компании?

Напишите намСмотреть услуги