Руководство HorecaPOS
Это руководство состоит из трёх частей: сначала для персонала (официантов), затем для менеджера и в конце для администратора. Каждая часть дополняет предыдущую: менеджер может всё, что могут официанты, а администратор может всё.
Что именно разрешено вашей роли, администратор настраивает в разделе Настройки → Права. Если вы не видите какую-то кнопку, у вашей роли (пока) нет на это прав.
Это руководство есть и в самой кассе: нажмите кнопку © в правом нижнем углу любого экрана и выберите Руководство или откройте http://<kassa-pc>:3000/handleiding. См. также введение и документацию API.
Часть 1 · Персонал
Начало работы
Вход. Откройте кассу на кассовом компьютере, планшете или телефоне и введите свой PIN-код (от 4 до 8 цифр). После этого вы увидите план зала.
Открыть столик. Нажмите на столик. Для свободного столика создаётся новый заказ; у занятого вы продолжаете уже открытый заказ. Вверху можно переключаться между залами (например, Зал и Терраса). Для продаж у стойки используйте Быстрая продажа, для заказов навынос — Навынос.
Заказ. Выберите группу товаров и нажимайте на товары. Они появятся в чеке слева. При необходимости сначала выберите подачу (1 = сразу, 2 и 3 ждут, пока вы их не вызовете). Нажмите Заказать: заказы уйдут на кухню и в бар. Пока вы не нажали «Заказать», строки можно просто удалить.
Оплата. Нажмите Оплатить, выберите Карта / Bancontact, Наличные или Подарочная карта, при желании чаевые, и подтвердите. При оплате картой платёж автоматически начнётся на терминале. Чек печатается; его также можно отправить по e-mail.
Выход. Выйдите из системы, когда закончите, чтобы никто другой не работал под вашим именем. Через 8 ч выход произойдёт автоматически.
Нет интернета? Касса продолжает работать. Если вверху написано Нет интернета · оплата картой вручную, введите сумму прямо на платёжном терминале и выберите на экране оплаты Уже оплачено на терминале.
Несколько компаний за одним столиком
За одним столом могут сидеть несколько групп, у каждой свой счёт и свой чек.
- Нажмите на стол: свободен = новый заказ; одна группа = сразу эта группа; несколько групп = сначала выберите группу или нажмите + Новая группа (имя можно не указывать).
- Вверху экрана заказа находится панель групп: переключение между группами, + Группа, Имя группы (напр. "Янсен") и Разделить / перенести.
- Разделить / перенести: выберите для каждой строки, сколько штук переносится (напр. 1 из 3× Pils) и в какую группу, или создайте новую группу. Так можно перенести позицию с неправильного счёта или потом разделить счёт "каждый платит за себя". Если группа становится пустой, она удаляется.
- Несколько частей сразу: с помощью + Ещё одна часть вы готовите одну часть и выбираете следующую (напр., рыбу и Dry Martini на стол 2, остальное на стол 35). Часть можно отправить и на + Другой стол (там как новую группу). С Переместить всё переносится за один раз. ½ делит позицию пополам, в том числе полбутылки (0,667 становится 2 × 0,3335).
- Объединить: всё с одного или нескольких других столов (или групп за этим столом) на этот счёт, за один раз.
- Бельгия: разделение или объединение за один раз в чёрном ящике — это одна смена стола, как требует ФГС Финансов (UC242, UC251, UC252, UC4119bis). Если после заказа что-то удаляют или на уже заказанную позицию дают скидку, это уходит со следующим сообщением этого стола (заказ, предварительный счёт, смена стола), а иначе с продажей: старая позиция отрицательной, новая положительной (UC226, UC4102, UC4104, UC4107, UC4110).
- На экране столов оранжевый кружок показывает количество групп; сумма — это итог всех групп.
- Кассовый чек и кухонный заказ показывают "Стол 5 - группа 2" или "Стол 5 - Янсен".
Разделение счёта при расчёте
Оплата работает как обычно: Всё сразу. Теперь на экране оплаты счёт можно также разделить, с помощью кнопок под Назад и Оплатить (так они всегда остаются на виду, без прокрутки):
- Разделить поровну: кнопками − и + выберите, на сколько человек (по умолчанию — число гостей или 2, если касса не учитывает гостей). На экране показана сумма на человека; каждый оплачивает свою долю картой, наличными или подарочной картой (при желании с чаевыми). После каждой доли идёт обратный отсчёт ("осталось 3 чел."); последний платит ровно остаток.
- Своя сумма: кто-то платит фиксированную сумму (напр. € 20); остаток остаётся открытым.
- По товарам…: открывает Разделить / перенести, чтобы перенести товары на отдельный счёт и оплатить его отдельно (как описано выше).
Частичная оплата проводит только платёж; счёт остаётся открытым, а на экране заказа написано "уже оплачено … · осталось …". Чек (со всеми платежами) печатается при последнем платеже, как при обычной оплате. Оплата картой через интеграцию проходит ровно на сумму части. Если часть уже оплачена, строки больше нельзя переносить в другую группу и нельзя добавлять скидки; удалить можно, только если открытой суммы достаточно. Каждая частичная оплата записывается в журнал.
Быстрая продажа и навынос (без столика)
В правом верхнем углу экрана столов находятся Быстрая продажа и С собой. Обе кнопки сразу открывают заказ без стола. Быстрая продажа — это продажа у стойки (НДС на месте); «С собой» использует для каждого товара ставку НДС на вынос. Через "Имя клиента" можно добавить имя; оно будет на чеке ("С собой – Янсен") и вверху кухонного заказа. Открытые заказы без стола показаны под кнопками залов ("Без стола: С собой #12 – Янсен"), чтобы их можно было найти. Если вы вернётесь, ничего не продав, пустой заказ исчезнет сам.
Обе кнопки можно включить или выключить для каждого заведения в Настройки → Заведение, сразу под светлой/тёмной темой (по умолчанию включено). Выкл. = кнопка скрыта; уже открытые заказы без стола остаются видны.
Доставка и временные интервалы
Заказы, которые вы принимаете на кассе сами, например по телефону или у стойки, по тем же правилам, что и в интернет-магазине: зоны доставки и максимальное число заказов на временной интервал. Включается в Настройки → Заведение → Доставка и временные интервалы, сразу под кнопками Быстрая продажа и Самовывоз (по умолчанию выключено).
- Кнопка Доставка на экране столов (рядом с Самовывоз): введите имя, телефон и адрес (при включённом Быстрый ввод адреса: поиск по почтовому индексу и номеру дома). Касса находит зону доставки и показывает стоимость доставки, минимум и "бесплатно от". Если адрес вне зон, доставка невозможна.
- Зоны доставки: по почтовому индексу (диапазоны и отдельные индексы, напр.
5000-5049, 5051, 5052 AB), в пределах радиуса в км от заведения (по прямой) или как область на карте, которую вы рисуете сами. Радиус и область работают только с адресами в Нидерландах (местоположение через PDOK). Для каждой зоны: стоимость доставки, минимум, бесплатно от и дополнительные минуты; действует первая подходящая зона сверху, поэтому типы можно сочетать (напр. сначала несколько индексов, затем область, затем радиус для остального). Зоны не заданы = доставка везде, без стоимости и минимума. Зоны интернет-магазина настраиваются отдельно (управление интернет-магазином). - Область на карте: у зоны доставки выберите тип Область на карте, затем Нарисовать на карте. Нажимайте на карту, чтобы ставить точки (не менее 3); перетащите точку, чтобы переместить её, нажмите на точку, чтобы удалить её, и перетащите кружок в середине стороны, чтобы добавить точку между ними. На карте также показаны зоны по радиусу и заведение. Фрагменты карты загружаются из OpenStreetMap, поэтому для карты нужен интернет; для самой доставки — нет (кроме поиска адреса). Если адрес не удаётся найти, касса сообщает об этом вместо "вне зон доставки".
- Стоимость доставки добавляется в заказ строкой "Стоимость доставки" и пересчитывается после каждого изменения (бесплатно от, нет товаров = нет стоимости), пока ничего не оплачено. Ниже минимума рассчитаться нельзя; экран заказа показывает, сколько ещё не хватает, с кнопкой Всё же самовывоз (стоимость доставки и минимум отменяются).
- Время: Как можно скорее (сейчас + время доставки, плюс дополнительные минуты зоны) или временной интервал на сегодня. Если заданы часы работы для Thuisbezorgd, они действуют и здесь.
- Максимум на интервал (0 = без максимума; интервал от 5 до 60 минут): для самовывоза и доставки вместе; заказы интернет-магазина в кассе тоже учитываются. Если максимум задан, то и Самовывоз запрашивает время, а заполненные интервалы выбрать нельзя. Две кассы одновременно берут последнее место: получит его одна.
- На кухонном чеке указаны адрес, имя, телефон и время; в "Без стола" и вверху кухонного чека, напр. "Доставка – 18:30 Jansen".
Расширения (всё по умолчанию выключено; без этих настроек всё работает точно так, как описано выше):
- Собственные часы работы для самовывоза и доставки (по дням недели, напр.
16:00-21:00или11:30-14:00, 17:00-22:00; после полуночи можно:17:00-01:00; пусто = в этот день закрыто). Выкл. = как раньше (время у Thuisbezorgd, если есть, иначе весь день). - Нерабочие дни (напр.
25-12-2026, 26-12-2026): в эти дни нет самовывоза и доставки. - Заказ заранее: от 0 (только сегодня, как раньше) до 14 дней. В окне Доставка/Самовывоз сначала выбирается день; более поздний день печатается на кухонном чеке перед временем.
- Загруженность: столько минут дополнительно к "как можно скорее" (касса и интернет-магазин). Также быстро задаётся кнопкой Интернет-магазин на верхней панели.
- Бельгийские адреса (почтовый индекс из 4 цифр): при радиусе или зоне на карте касса определяет местоположение через OpenStreetMap (Nominatim; нужны улица и город).
- Интернет-магазин следует за кассой: касса главная. Тогда интернет-магазин использует зоны доставки, время доставки и самовывоза, временной интервал, максимум на интервал, часы работы (если они заданы здесь), нерабочие дни и дни вперёд из кассы и учитывает в интервале заказы, принятые на кассе. Выкл. = у интернет-магазина свои настройки (управление интернет-магазином), как раньше. Включение и выключение самовывоза/доставки остаётся за интернет-магазином.
Код: lib/bezorgen.ts, routes/bezorgen.ts, BezorgDialoog.tsx, BezorgInstellingen.tsx, BezorgKaart.tsx и lib/kaart.ts (карта, без дополнительного пакета; тот же код находится в интернет-магазине как public/kaart.js).
Телефония: распознавание клиента при заказе по телефону
Настройки → Телефония (по умолчанию выключено; при выключении всё сохраняется). Два отдельных переключателя:
- Поиск клиента по номеру телефона при доставке и самовывозе: если ввести номер на экране доставки, касса покажет клиента с адресом и прошлыми заказами; Перенести данные заполняет имя, e-mail и адрес. Работает и без АТС.
- Определитель номера: когда звонит клиент, АТС (или аппарат, FRITZ!Box, модем или Android-смартфон) передаёт номер. На экранах появляется уведомление о том, кто звонит: имя, адрес, последние заказы (с блюдами и суммой, в том числе из интернет-магазина, Thuisbezorgd и платформ доставки), итог и бронь. Кнопкой Принять доставку или Принять самовывоз открывается экран доставки со всеми заполненными данными (при включённых Доставке и временных интервалах); заказ привязывается к звонку, а уведомление исчезает со всех экранов. Кнопка 📞 на верхней панели: звонки за последние 24 ч. Можно отключить для отдельного экрана (Показывать уведомления на этом экране).
Поиск ведётся по карте лояльности, заказам на доставку и самовывоз в кассе, интернет-магазину, Thuisbezorgd, платформам доставки и броням. Номера приводятся к одному виду (+31 6 1234 5678, 0031612345678 и 06-12345678 — один и тот же номер; также бельгийские номера).
Как поступает номер (можно несколько способов одновременно; один и тот же звонок учитывается один раз):
| Источник | Для | Настройка |
|---|---|---|
| Webhook / action URL | 3CX (CRM-интеграция), Aircall, Voys / VoIPGRID, Yeastar серии P, аппараты с action URL при входящем звонке (Fanvil, Grandstream, Mitel 6800/6900, Snom, Yealink: работает с любой АТС и оператором), сервисы интеграции (Zapier, Make, n8n, Power Automate) | адрес из Настройки → Телефония (/api/telefonie/oproep?sleutel=...&nummer=...), GET или POST, JSON, форма или query; также через портал: https://<portaal>/telefonie/<kassa-id>/oproep?sleutel=... |
| Asterisk (AMI) | Asterisk, FreePBX, Issabel, VitalPBX, Grandstream UCM | адрес, порт (5038; Grandstream UCM 7777), пользователь AMI и пароль (права call) |
| FRITZ!Box | FRITZ!Box с телефонией | адрес (fritz.box) и порт 1012; один раз включить callmonitor с помощью #96*5* |
| USB-caller-ID-модем | аналоговая стационарная линия с определителем номера | последовательный порт (COM3, /dev/ttyACM0), baud и команда инициализации (по умолчанию AT+VCID=1) |
| Android-смартфон | встроенный телефон Android-смартфона заведения | приложение HorecaPOS на этом телефоне, Настройки → Телефония → Привязать этот телефон (Android 10+: выбрать приложение как приложение для определения номера) |
Ответ содержит звонящего, также как contact (firstname, lastname, phone, email, address) для CRM-шаблона 3CX. Исходящие и внутренние звонки не показываются; Только эти линии ограничивает определёнными линиями или аппаратами. Звонки удаляются по истечении срока хранения (по умолчанию 30 дней, GDPR). Тестовый звонок имитирует звонок с номера.
Код: apps/pos-server/src/lib/telefonie.ts, routes/telefonie.ts, packages/shared/src/telefonie.ts; экраны Telefonie.tsx, BezorgDialoog.tsx; Android android-app/native/java/Beller*.java. Журнал: Телефония.
Свои курьеры: рейсы, сдача выручки и track & trace
Для заведений со своими курьерами. Включите в Настройки → Заведение → Доставка → Свои курьеры (по умолчанию выключено). Приложение для курьера не нужно: курьер пользуется страницей в браузере своего телефона (по желанию — приложением Optimum Bezorger: см. Приложение для курьеров ниже).
Создание рейса. В кассе есть кнопка Рейсы (с числом доставок, которые ещё нужно отправить, плюс рейсы в пути).
- В разделе Готово к доставке отметьте заказы, которые поедут. Это заказы на доставку из кассы, интернет-магазина и Thuisbezorgd (только собственная доставка; заказы с курьером Thuisbezorgd — нет).
- Выберите курьера (сотрудника) и размен, который он берёт с собой (по умолчанию сумма из настройки), и нажмите Создать рейс.
- Появится QR-код. Курьер сканирует его своим телефоном и видит по каждому адресу имя, адрес с кнопкой Маршрут (навигация), Позвонить, комментарий, желаемое время и сумму к получению. Есть калькулятор сдачи (клиент даёт € 50 → сдача € 31,50). Входить в систему не нужно. Делитесь ссылкой только с курьером: у кого она есть, тот видит адреса этого рейса. Кнопкой QR-код для курьера создаётся новая ссылка; старая перестаёт работать.
- Нажмите Отправить, когда курьер уезжает. Размен выдаётся из денежного ящика (выдача денег с указанием причины). Клиент получает сообщение, что заказ в пути:
- для заказа из кассы — по SMS и/или e-mail, если включены Сообщения клиенту (см. «Доставка и временные интервалы»);
- для интернет-магазина — как настроено в интернет-магазине (почта, SMS или push-уведомление);
- для Thuisbezorgd — через Thuisbezorgd.
Пока рейс не выехал, его ещё можно отменить.
- В пути курьер по каждому адресу нажимает Доставлено, наличные, Доставлено, карта (собственный платёжный терминал) или Доставлено (уже оплачено). Касса видит это сразу. Если курьер не может отметить, это можно сделать в кассе. Вернувшись в заведение, курьер нажимает Я вернулся в заведение.
Сдача выручки. После рейса нажмите Расчёт (право Управление денежным ящиком):
- По каждому заказу выберите наличные, карта у двери, уже оплачено или не доставлено (возврат). То, что отметил курьер, уже заполнено.
- Касса рассчитывает каждый заказ с неоплаченной суммой без нового кассового чека (у клиента чек уже есть; повторно распечатать можно в разделе Чеки). Недоставленный заказ снимается с рейса и остаётся открытым, чтобы его можно было отправить следующим рейсом.
- Вы видите ожидаемую сумму: размен плюс полученные наличные. Введите, что сдаёт курьер, или посчитайте по купюрам и монетам (Посчитать по купюрам и монетам). Касса покажет, сходится ли сумма или сколько лишних либо не хватает.
- Размен возвращается в денежный ящик (внесение денег). Разница сохраняется в рейсе и в журнале, а также отражается как расхождение в кассе в Z-отчёте.
Track & trace (включается отдельно в настройке). Когда заказ в пути, клиент получает ссылку на страницу отслеживания на портале. Ссылка есть в SMS или e-mail, а в интернет-магазине — на странице статуса (Следите за курьером). На странице отслеживания показано:
- готовится ли заказ, в пути или доставлен;
- ожидаемое время: от местоположения курьера через адреса, которые идут раньше, иначе — желаемое время;
- сколько адресов ещё впереди (другие адреса не показываются);
- с опцией Курьер на карте в реальном времени — также курьер, заведение и собственный адрес на карте (OpenStreetMap). Курьер сам включает передачу местоположения на телефоне (Поделиться местоположением). Местоположение передаётся, только пока страница открыта; страница не даёт экрану погаснуть.
Страницы отображаются на языке телефона (все языки портала). В кассе у рейса видно, когда местоположение передавалось последний раз (со ссылкой на карту).
Конфиденциальность. Портал хранит данные рейса (имена, адреса, номера телефонов, местоположение) только пока рейс идёт. При расчёте всё удаляется, иначе — через 24 ч. Клиент видит только свой заказ. Местоположение курьера видно только во время рейса и перестаёт быть видимым, как только курьер вернулся.
Планирование рейсов (необязательно)
Включите в Настройки → Заведение → Доставка → Планирование рейсов (по умолчанию выключено; работает со своими курьерами). Тогда в окне Рейсы появится кнопка Предложить рейсы. Касса объединяет заказы, которые ещё нужно доставить, в рейсы:
- заказы, которые находятся близко друг к другу и чьё желаемое время попадает во временное окно (по умолчанию 30 минут), объединяются;
- до максимального числа адресов на рейс (по умолчанию 4), пока рейс (дорога туда, все адреса и возврат в заведение) не длится дольше максимума (по умолчанию 45 минут);
- для каждого рейса — лучший порядок, расстояние (км), время в пути туда и обратно, а для каждого адреса — ожидаемое прибытие при выезде сейчас. Если оно позже желаемого времени, рядом стоит позже запрошенного.
Кнопкой Использовать этот рейс вы отмечаете эти заказы в этом порядке; выберите курьера и нажмите Создать рейс. Для рейса, который ещё не выехал, Лучший порядок расставляет адреса в самом быстром порядке (также на телефоне курьера). У каждого рейса указаны расстояние и время в пути.
Настройки: адресов на рейс, сколько может длиться рейс, временное окно, скорость курьера (велосипед ~15, скутер ~25, автомобиль ~35 км/ч в городе) и минут на адрес (парковка, звонок в дверь, расчёт; по умолчанию 2). Эти значения может настраивать и менеджер: в окне Рейсы кнопкой Настроить планирование рейсов (право Настроить планирование рейсов, по умолчанию включено для менеджера; меняется в Настройки → Права). Включение или выключение планирования рейсов и сервис маршрутов (адрес, API-ключ) остаются за администратором.
Расстояние и время в пути, на выбор администратора:
- Оценка (по умолчанию): расстояние по прямой, умноженное на 1,35 (коэффициент объезда), со скоростью курьера. Работает без интернета и без учётной записи.
- OSRM: маршруты по дорогам через сервер OSRM. Укажите адрес (
https://илиhttp://в своей сети). Публичный демо-сервер (https://router.project-osrm.org) — только для редкого использования; для ежедневной работы установите свой сервер OSRM или выберите провайдера. - OpenRouteService: маршруты по дорогам со своим API-ключом (бесплатно создаётся на openrouteservice.org, с дневным лимитом). По умолчанию адрес —
https://api.openrouteservice.org, его можно сменить на свой сервер. Ключ остаётся на кассе; экраны показывают только, что он указан.
Кнопкой Проверить вы проверяете сервис. Если сервис не работает, планирование переходит на оценку и сообщает об этом. Адрес с неизвестным местоположением (нет действительного почтового индекса и номера дома) попадает в предложении в раздел без известного местоположения и не планируется. Экспорт конфигурации включает настройки, но не ключ.
Код: lib/ritplanning.ts.
Приложение для курьеров (необязательно)
Включите в Настройки → Заведение → Доставка → Приложение для курьеров (по умолчанию выключено; работает со своими курьерами и порталом управления). Тогда каждый курьер привязывает свой телефон один раз, вместо того чтобы сканировать QR-код на каждый рейс:
- В Привязанные телефоны выберите курьера (сотрудника), при желании название телефона, и нажмите Привязать телефон.
- Появится QR-код. Курьер сканирует его в приложении Optimum Bezorger (кнопка Привязать) или камерой телефона: тогда страница откроется в браузере. Она работает и без приложения, её можно добавить на главный экран.
- Привязка действует, пока вы её не отзовёте; телефон сразу перестанет что-либо видеть. Новая привязка для того же сотрудника заменяет старую (например, при новом телефоне).
В приложении или на странице показаны все свои рейсы (каждый рейс, который касса создаёт для этого курьера), с теми же кнопками, что и в рейсе: Маршрут, Позвонить, сумма к получению с калькулятором сдачи, Доставлено и Я вернулся в заведение. Отдельно можно включить:
- Самостоятельно брать заказы: курьер видит доставки, которые ещё должны попасть в рейс, отмечает, что берёт, и нажимает Взять. Касса создаёт рейс (или добавляет их, если у этого курьера уже есть рейс, который ещё не уехал); стандартный размен идёт с ним. То, что уже взял другой, взять нельзя.
- Самостоятельно отправляться: Отправиться в приложении делает то же, что и в кассе (размен из ящика, клиенты получают уведомление).
- Живая карта: в Рейсы есть кнопка Карта с заведением, всеми курьерами на смене и адресами, куда ещё нужно доставить. Курьер сам включает и выключает На смене. Приложение передаёт местоположение и при выключенном экране (Android: уведомление в строке состояния, пока передача включена); веб-страница — только пока она открыта. Без этой настройки местоположение передаётся только во время рейса с track & trace.
Приложение для Android есть в Google Play и на странице загрузки портала (/download/). Версия для iPhone готова, но выйдет только когда появится аккаунт разработчика Apple; до тех пор на iPhone используется веб-страница. У рейса, который курьер взял сам, указано взято самостоятельно в приложении.
Код: lib/bezorgersapp.ts, в портале src/volgen.mjs, а приложение — в репозитории horecapos-bezorger.
В журнале записано, кто создал рейс, отправил его, отметил доставку и провёл расчёт, с суммами. Выключение: кнопки «Рейсы» нет; рейсы и настройки сохраняются.
На портале: /bezorger/<sleutel> и /volg/<code>. Код: lib/bezorgers.ts, routes/bezorgers.ts, Bezorgers.tsx и в портале src/volgen.mjs.
Уведомление о долгом времени выполнения
Заказ на самовывоз или доставку готов позже обещанного: касса замечает это, уведомляет и может сразу отправить клиенту извинение, при желании с купоном. Включается в Настройки → Заведение → Доставка → Уведомление о долгом времени выполнения (по умолчанию выключено).
- Какие заказы: самовывоз и доставка с обещанным временем — из кассы (доставка и временные интервалы), интернет-магазина и Thuisbezorgd.nl / Takeaway.com.
- Опоздание: через указанное число минут (по умолчанию 10) после обещанного времени заказ ещё не готов и не в пути. Готов или в пути означает: всё готово на кухонном экране, статус «готово» или «в пути» в интернет-магазине или в Thuisbezorgd, клиенту отправлено сообщение ✉ Готово / ✉ В пути, или заказ оплачен. Касса проверяет каждую минуту.
- Уведомление: кнопка Опоздание в верхней панели с количеством (со звуком при новом), для каждого заказа — обещанное время и на сколько минут опоздание. Заказ исчезает сам, когда он готов или в пути, или по кнопке Решено; ниже показаны заказы за последние 24 ч с временем готовности. Всё записывается в журнал.
- Интернет-магазин: на странице статуса гость видит, что заказ задерживается, и новое ожидаемое время.
- Для Thuisbezorgd это невозможно (клиент принадлежит Thuisbezorgd): там только уведомление. Можно задать свой текст;
{naam},{zaak},{code},{korting}и{geldig}подставляются автоматически. - Купон (только при включённых Промокоды): к извинению прилагается персональный промокод на следующий заказ (напр.
SORRY-7K4Q2M) — сумма или процент, одноразовый, действует заданное число дней, на кассе и в интернет-магазине. Эти коды не показываются в списке Промокоды. Если отправка не удалась, код аннулируется. Кнопкой в кассе — только с правом Дать скидку. - Выкл.: уведомления и выданные коды сохраняются (в том числе в резервной копии); настройка входит в экспорт конфигурации.
Код: lib/telaat.ts, routes/telaat.ts, TeLaat.tsx и packages/shared/src/telaat.ts.
Кнопка «Заказать»: что она делает и когда она нужна
Нажать на товар и нажать Заказать — это два разных шага:
- Нажатие на товар сразу добавляет его в счёт (слева в списке) со статусом новый. Видите его только вы: кухня и бар пока ничего о нём не знают. Новая позиция — это черновик: удалить её, изменить количество или опции можно без проблем, без сторно.
- Заказать отправляет все новые позиции разом: бегунки уходят на кухонные и барные принтеры (и на кухонный экран), после этого позиции получают статус заказано. Удалить их тогда можно только через Сторно (право сторно). На кнопке видно, сколько новых позиций ждут отправки, напр. Заказать (3); если новых позиций нет, кнопка серая.
Зачем два шага? У стола вы принимаете весь заказ (напитки, закуска, основное блюдо), что-то меняете, если гость передумал, и затем отправляете всё сразу на кухню — один бегунок на каждую станцию, а не на каждый товар. Так кухня может начать готовить задолго до оплаты.
Что ещё происходит при нажатии Заказать:
- Подачи: подача 1 сразу уходит на кухню; подачи 2, 3 и 4 отправляются со статусом ОЖИДАНИЕ, и кухня начинает готовить только тогда, когда вы вызовете эту подачу (см. Подачи).
- Раунды: каждое нажатие «Заказать» — это один раунд; на этом основана кнопка ↻ Ещё раунд.
- Остатки на складе списываются, а дозирующий кран разблокируется.
- All-you-can-eat: если заказ слишком большой, слишком ранний или слишком поздний для тарифа, касса сначала спросит, разрешить ли его всё равно.
- Бельгия (GKS 2.0): позиции сначала отправляются как проформа в «чёрный ящик»; если это не удалось, на кухню ничего не уходит и позиции остаются новыми.
- Нет связи: заказ сохраняется и уйдёт на кухню, как только связь восстановится. Принтер выключен: заказ всё равно проходит, бегунок попадает в очередь печати (см. Кухонный принтер выключен или нет кухонного экрана).
Можно сразу перейти к расчёту. Если вы нажмёте Расчёт, когда в счёте ещё есть новые позиции, касса сначала автоматически их закажет, чтобы кухня и бар всегда получили свой бегунок. За стойкой бара или при заказе навынос не нужно сначала нажимать «Заказать»: добавьте товар и сразу нажмите «Расчёт». Если автоматический заказ не удался (нет связи, ограничение all-you-can-eat, чёрный ящик), экран расчёта не откроется, и вы увидите причину.
Не нужен чек для бара, когда вы рассчитываете сразу? В Настройки → Заведение → Заказ и расчёт поставьте галочку Расчёт сразу без сервис-чека. Тогда на кухню и в бар уходит только то, что вы отправляете кнопкой Заказать; то, что вы рассчитываете сразу, не получает сервис-чека.
Большая или маленькая кнопка Расчёт
С галочкой Большая кнопка "Расчёт" на экране заказа сразу под заказанными товарами есть большая кнопка Расчёт: широкая, высокая и с суммой, чтобы быстро попадать. Если часть счёта уже оплачена, на кнопке показана оставшаяся сумма. Маленькая кнопка внизу рядом с Заказать тогда исчезает.
С большой кнопкой кнопки на экране расчёта тоже большие: Расчёт (при оплате Картой, Подарочной картой и другими способами оплаты), а при оплате Наличными Без сдачи и Расчёт широкие и высокие, по ним легко попасть даже грязными пальцами (например, в мясной лавке). Способы оплаты немного крупнее, а кнопки чаевых немного меньше, чтобы всё помещалось на экране.
При новой установке галочка снята: тогда маленькая кнопка внизу рядом с Заказать и экран расчёта с обычными кнопками. Хотите крупно? В Настройки → Заведение, сразу под светлой/тёмной темой, поставьте галочку Большая кнопка "Расчёт". Касса, которая уже использовалась, сохраняет прежнюю настройку. Выбор действует для всех касс и планшетов заведения.
Отметка товара "нет в наличии" (распродано)
Любой сотрудник может на экране заказа долго нажать на товар (или щёлкнуть правой кнопкой мыши) и выбрать Закончился. Товар станет серым, и его нельзя будет заказать ни на одной кассе. Так же его можно вернуть кнопкой Снова в наличии. Каждое изменение записывается в журнал. Администратор по-прежнему может сделать это в Настройки → Товары. Кассовый сервер тоже отклоняет товар, который "закончился" ("Cola" закончилась), в том числе с планшета, который ещё не получил изменение, или заказы, сохранённые офлайн; такой планшет покажет "Не удалось отправить".
Кухонный экран (KDS)
Помимо принтеров заказов (а не вместо них) кухня или бар может использовать экран. Откройте на планшете/ПК на кухне http://<kassaserver>:3000/keuken, войдите с PIN-кодом и выберите станцию: это те же названия, что и у принтеров (кухня, бар, ...), поэтому на экране будет ровно то, что попало бы в этот заказ. "Все" показывает все станции.
- Один чек на заказ, старые сначала, со столом/«с собой», номером и временем ожидания (оранжевый через 10, красный через 20 минут).
- Подачи показаны отдельно; подача, которую ещё не вызвали, серая с надписью "ЖДЁТ вызова". Сторно показаны зачёркнутыми.
- Нажмите на строку, чтобы отметить её готовой, или на Готово для всего чека. Официант увидит в верхней панели "Кухня: Стол 5 готов". С настройкой Настройки → Заведение → Кухонный экран → Звук для официантов (по умолчанию выключено) касса также издаст сигнал ("динь-дон", без звукового файла). Браузер разрешает звук только после первого касания экрана; включите звук на планшете.
- Вернуть показывает, что было отмечено готовым за последний час; случайно убранное можно так вернуть.
Экран обновляется сам сразу. Заказы по-прежнему печатаются; кто не пользуется экраном, ничего не заметит.
Кухонный экран: передача, порядок и подача
Настройки → Принтеры → Кухонный экран. Каждая часть включается отдельно, по умолчанию выключена; при выключении всё сохраняется.
- Передача между станциями, например холодный → горячий → раздача. Для каждой станции вы задаёте постоянную следующую станцию; тогда на заказе есть кнопка → горячий (и всегда Передать на…, чтобы выбрать другую станцию). Передаются только открытые позиции этой станции. Станции не нужен принтер: впишите станции, например раздача, в Станции без принтера. Готово (и уведомление официанту) появляется только на последней станции. В разделе "Все" у переданной позиции видно, где она сейчас. Каждый шаг виден у позиции и в журнале.
- Изменение порядка: перетаскивайте заказы (мышью) или перемещайте их с помощью ◀ ▶ (сенсорный экран). Порядок действует для станции и для всех экранов этой станции; новые заказы встают в конец.
- Следующая подача с кухонного экрана: у заказа с ожидающей подачей есть Запросить подачу 2. Официант тогда получает "Кухня запрашивает подачу 2 для Стол 5" (со звуком) и вызывает как обычно; на кухонном экране видно "Подача 2 запрошена · n мин", пока подачу не вызовут. Или выберите Вызвать: тогда кухонный экран сам вызывает подачу с рабочим чеком "ВЫЗОВ ПОДАЧИ 2", так же как кнопка на кассе.
Кухонный принтер выключен или нет кухонного экрана
Касса всегда продолжает работать, даже если принтер кухни или бара выключен (или закончилась бумага, или отошёл кабель), а также без кухонного экрана:
- Заказ проходит всегда. Строки сразу получают статус заказано, счёт верный, и оплатить можно как обычно. Принтеры опрашиваются одновременно, и каждому принтеру даётся не более примерно 4 секунд: выключенный принтер не заставляет долго ждать остальные (и официанта).
- Очередь печати. Заказ, который не удалось напечатать, попадает в очередь печати. Кассовый сервер повторяет попытку каждые 30 секунд в течение 15 минут; как только принтер снова заработает, заказ печатается с надписью вверху LATER GEPRINT. Если следующий чек на этом принтере снова печатается, ожидающие чеки печатаются сразу за ним.
- Через 15 минут повторные попытки прекращаются; кнопка Напечатать снова сейчас по-прежнему доступна.
- Кухонный экран. Если заказ есть на кухонном экране, кухня увидит его там, даже если принтер выключен. Кто не пользуется кухонным экраном, ничего не теряет: касса нигде не ждёт "Готово" от кухни.
- Очередь хранится только в памяти кассового сервера (после перезапуска она пуста).
- Кассовый чек тоже: если он не напечатался, оплата всё равно проведена (касса сообщит "печать не удалась"), и позже можно напечатать копию в разделе Чеки.
Подачи (закуска, основное блюдо ...)
Кнопки подач показываются только тогда, когда они нужны: как только в заказе есть меню (составной товар) или когда что-то уже есть в подаче с 2 по 4. С обычными товарами, например колой, вы их не видите, и всё сразу уходит на кухню. Ничего настраивать не нужно.
Под списком заказа находится Подача 1 2 3 4. По умолчанию выбрана подача 1, и всё работает как обычно: "Заказать" сразу отправляет всё на кухню, без заголовков подач в заказе. Если выбрать подачу 2 (или выше) перед добавлением товаров, то они:
- при "Заказать" уже уходят на кухню под заголовком "-- Подача 2 · ЖДЁТ вызова --", чтобы кухня могла подготовиться;
- в списке заказа показывается "Подача 2 · ждёт" с кнопкой Вызвать;
- при вызове кухня получает чек " ВЫЗОВ ПОДАЧИ 2 " с тем, что нужно готовить сейчас.
Подача 1 всегда уходит сразу. Если подача 2 уже вызвана, блюдо, дозаказанное позже в подачу 2, тоже уходит сразу.
Аллергены для каждого товара
По умолчанию выкл.: тогда аллергены нигде не показываются. Включение: Настройки → Заведение → Указывать и показывать аллергены для товаров.
- Настройки → Товары: для каждого товара отметьте 14 аллергенов ЕС (глютен, ракообразные, яйца, рыба, арахис, соя, молоко, орехи, сельдерей, горчица, кунжут, сульфиты, люпин, моллюски). В списке товаров сокращения указаны после названия.
- Экран заказа: на каждой кнопке товара мелко указаны сокращения (напр.
Gl Me), а кнопка ⚠ Аллергены на панели групп показывает для каждого товара выбранной группы аллергены полностью, с расшифровкой сокращений. - Изменения аллергенов записываются в журнал (было → стало). Если настройка выключена, ранее указанные аллергены сохраняются.
All-you-can-eat
По умолчанию выкл. Вы создаёте одно или несколько предложений, напр. Включается в Настройки → Заведение → All-you-can-eat (только администратор). Рыба, Мясо и Суши, у каждого есть:
- название (печатается на чеке: "Рыба взрослый", "Рыба детский");
- цена за взрослого и за ребёнка (с НДС) и ставка НДС (по умолчанию NL
LAAG, BEB); - входящие блюда (€ 0): целые группы товаров и/или отдельные товары (в том числе из других групп, напр. картофель фри к Рыбе и к Мясу);
- ограничение по времени в минутах (0 = нет);
- раунды: не более стольких блюд на человека за раунд (0 = без ограничений) и не менее стольких минут между раундами (0 = нет);
- доплата за остатки за штуку (0 = нет).
Кнопками ↑ ↓ задаётся порядок. Он важен, если блюдо входит в несколько предложений: тогда оно относится к верхнему из выбранных группой. Удалить убирает предложение для новых столов; у текущих столов строки цен сохраняются (уменьшить число человек там ещё можно, увеличить — нет).
За столом:
- На экране заказа над чеком есть + All-you-can-eat. Для каждого тарифа выберите количество взрослых и детей; можно смешивать (напр. 2× Рыба и 2× Мясо). Цена добавляется строками в счёт; на кухню они не отправляются. Количество гостей группы становится общим числом участников (если касса учитывает гостей).
- Панель показывает для каждого предложения: число человек, оставшееся время (красным, если время вышло), какой сейчас раунд и максимум, и сколько осталось до следующего раунда. Входящие блюда отмечены на кнопках как AYCE, а в чеке — меткой AYCE за € 0. Всё, что не входит ни в одно выбранное предложение (напитки, десерты ...), оплачивается как обычно.
- Заказать: каждое нажатие "Заказать" с бесплатными блюдами — это раунд, отдельно по каждому предложению (только по тем, из которых есть блюда). Добавленное офлайн и отправленное позже не блокируется.
- Изменить: изменить количество по каждому предложению. Уменьшение числа человек считается сторно (право "storno"). Поставить предложение на 0 (или нажать Остановить для всех) можно, пока в счёте нет блюд из этого предложения.
- Доплата (только если у выбранного предложения есть доплата за остатки): выберите количество (и предложение, если их несколько); в счёт добавится "Доплата за остатки × количество".
- Оплата, разделение счёта, скидки и чек работают как обычно: цены предложений, доплата и напитки — это обычные строки со своим НДС.
- Если администратор выключит all-you-can-eat, пока группы ещё едят, новые добавленные блюда снова будут стоить обычную цену; то, что уже в счёте, остаётся.
- В интернет-магазине (необязательно, по умолчанию выключено): с Также при заказе за столом по QR-коду (интернет-магазин) гость, который заказывает за столом с предложением, видит входящие в него блюда как Включено за € 0, а вверху — текущее состояние (гости, раунд, время). Один заказ — это один раунд, с теми же правилами, что и Заказать; слишком много, слишком рано или слишком поздно интернет-магазин сразу отклоняет. Напитки и другие блюда гость оплачивает как обычно; всё идёт на счёт стола. Выключено = интернет-магазин берёт обычные цены, как раньше.
Подарочные сертификаты
Два переключателя в Настройки → Заведение → Подарочные карты:
- Подарочная карта как способ оплаты: по умолчанию вкл., как всегда. Выкл. = кнопки Подарочная карта нет при оплате (и в вернуть деньги через при возврате), а кассовый сервер отклоняет оплату подарочной картой.
- Продажа подарочных карт с балансом: по умолчанию выкл. Если включено:
- На экране заказа есть кнопка Подарочная карта: выберите сумму (€ 10, 25, 50, 100 или другую сумму) и дайте кассе создать код или отсканируйте код с готовой карты. Карта добавляется строкой в счёт (код НДС BON: не выручка, без НДС, не уходит на кухню). Там же можно проверить баланс для клиента.
- После оплаты карта активна, и принтер чеков печатает подарочную карту с суммой, кодом и QR-кодом.
- Погашение: при оплате выберите Подарочная карта и отсканируйте или введите код (кнопка Баланс показывает баланс). Сумма списывается с баланса. Если баланс меньше счёта, весь баланс списывается как частичная оплата, а остаток оплачивается картой или наличными. Баланс можно тратить частями.
- Оставить код пустым = подарочная карта без кода, как раньше (напр. старый бумажный сертификат).
- Отчёт → Подарочные карты (право Управлять подарочными картами, по умолчанию у менеджера и администратора): поиск по коду, остаток на счету, история по каждой карте, блокировка (утеряна/украдена) и корректировка баланса с указанием причины. Это записывается в журнал.
- Отчёты: проданные подарочные карты не считаются выручкой и показаны отдельно (Продано подарочных карт); полученные деньги указаны в способах оплаты. То, что оплачено подарочной картой, — обычная выручка (с НДС) по способу оплаты Подарочная карта.
- Бухгалтерия: проданные карты идут в кредит, а погашенные — в дебет счёта Подарочные карты (средства клиентов).
- Проданную подарочную карту можно вернуть через Чеки → Возврат, пока она ещё не использована (баланс = номинал). После возврата карта аннулирована (баланс 0, заблокирована; это видно в истории карты). Если она уже (частично) использована, установите баланс 0 в Отчёт → Подарочные карты и верните остаток отдельно. Скидка на подарочную карту невозможна.
Пополняемый баланс (необязательно)
Для клубов, спортивных столовых, молодёжных центров и мероприятий: подарочная карта с балансом становится пополняемой картой. Включается в Настройки → Заведение → Пополняемый баланс, под подарочными картами (по умолчанию выкл.; работает, только если включено Продавать подарочные карты с балансом).
- Карта или браслет: продайте подарочную карту с Предварительно напечатанная карта и отсканируйте карту (NFC/RFID-считыватель, работающий как клавиатура, или штрихкод). Номер карты тогда служит кодом; им гость платит, как подарочной картой.
- Пополнение: экран заказа → Подарочная карта → Пополнить баланс: отсканируйте карту и введите сумму. Она добавляется строкой в счёт (код НДС BON: без выручки, без НДС, как проданная подарочная карта) и после расчёта зачисляется на баланс. В истории карты отображается Пополнено.
- Максимальный баланс на карту (по умолчанию € 500, можно задать до € 5.000).
- Вернуть остаток (галочка, по умолчанию выкл.; право Управлять денежным ящиком): после Проверить баланс появляется Вернуть остаток. Баланс становится € 0, а сумма отображается как изъятие из ящика в X- и Z-отчёте (Баланс возвращён …).
- Пополнение можно отменить через Чеки → Возврат, пока баланс не меньше этой суммы; карта остаётся действительной.
- Пополнение в киоске (необязательно): см. Киоск самообслуживания.
Талоны на питание
Только для заведений в Бельгии, по умолчанию выключено: Настройки → Заведение → Расчёт → Талоны на питание. Талоны на питание — это льгота к зарплате: работодатель зачисляет их на карту сотрудника (Edenred, Monizze или Pluxee). Гость платит ею на обычном платёжном терминале; интеграция с эмитентами не нужна.
- Включено: при расчёте есть кнопка Талон на питание. Выберите эмитента (только тех, кого принимает заведение) и попросите гостя приложить карту к платёжному терминалу, как при оплате картой. Без интеграции с терминалом: гость платит на самом платёжном терминале, а вы нажимаете Расчёт.
- Без чаевых и без сдачи при оплате талонами на питание. Если баланса не хватает, гость оплачивает остаток другим способом (счёт остаётся открытым, пока всё не будет оплачено).
- Только для определённых групп товаров (по желанию, напр. еда, но не алкоголь): тогда талонами на питание можно оплатить не более суммы этих товаров в счёте. Экран расчёта показывает, сколько; остаток гость оплачивает другим способом.
- На кассовом чеке: Талон на питание Pluxee (с эмитентом после него).
- Z-отчёт и X-отчёт: отдельная строка для каждого эмитента (Талон на питание Edenred, … Monizze, … Pluxee).
- Бухгалтерия: отдельный счёт главной книги для каждого эмитента (Талоны на питание Pluxee (к получению) и т. д., по умолчанию 416100, 416200 и 416300), потому что деньги приходят от эмитента, а не от банка платёжного терминала.
- Нужно: договор с каждым эмитентом, чьи талоны вы принимаете, и платёжный терминал, который принимает эти карты (уточните у поставщика платёжного терминала).
Иностранная валюта
Оплата наличными в другой валюте, напр. для британских или американских туристов или в приграничье со швейцарским франком. По умолчанию выключено: Настройки → Заведение → Расчёт → Иностранная валюта. Добавьте валюты (CHF, CZK, DKK, GBP, HUF, NOK, PLN, SEK, TRY, USD) и для каждой валюты курс: сколько евро вы берёте за 1 единицу (напр. 1 GBP = € 1,15).
- Введён вручную: фиксированный курс; меняйте его сами, когда он изменится.
- Онлайн (ЕЦБ): дневной курс Европейского центрального банка (справочные курсы, каждый рабочий день около 16:00; бесплатно, учётная запись не нужна). С наценкой в процентах (0-20) курс становится на столько же ниже, чтобы заведение не оплачивало обмен само. Касса сама загружает курсы, если они старше 6 часов; Обновить сейчас загружает их сразу. Без интернета остаётся последний курс.
- Вкл.: при расчёте есть кнопка Иностранная валюта. Выберите валюту; касса показывает сумму в этой валюте. Введите, сколько даёт гость: касса пересчитывает и выдаёт сдачу в евро. Если гость не хочет сдачи, отметьте Сдача — чаевые: сдача идёт в чек как чаевые, в Бельгии в этой валюте (GKS 2.0, UC296).
- Если гость даёт меньше всей суммы, это часть; остаток он оплачивает другим способом.
- На чеке: валюта, сумма и курс, а также сдача в евро.
- X- и Z-отчёт: отдельная строка для каждой валюты (Иностранная валюта GBP, в евро), а в разделе денежного ящика — сколько этой валюты в ящике. Сдача в евро вычитается из ожидаемой суммы в ящике; саму валюту вы считаете отдельно.
- Бухгалтерия: учитывается как наличные (касса), в евро.
Дополнительные кнопки при заказе и расчёте
Кнопки для того, что нужно не каждому заведению. Всё по умолчанию выключено; включается для каждой кнопки в Настройки → Заведение → Заказ и расчёт (право Настройка заведения, оплаты и принтеров). Выключено = кнопки нигде в кассе нет, и кассовый сервер отклоняет действие. В Нидерландах всё работает без чёрного ящика; в Бельгии кнопка работает только тогда, когда эта функция протестирована с чёрным ящиком (у кнопки это указано, если ещё нет).
При открытии стола:
- Учитывать количество гостей: вопрос "Сколько человек?" при свободном столе, гости на плане зала и на экране заказа, а также гости в отчётах. См. Количество гостей.
При заказе (экран заказа, для того, что вы нажмёте потом):
- Суммирование одинаковых товаров (без кнопки, по умолчанию включено): если снова нажать на тот же товар (те же опции, ещё не заказан), количество увеличится вместо новой строки: 4 Cola в одной строке с ценой, умноженной на 4. Кнопкой − один снова убирается, даже если уже заказан (сторно одного). С комментарием, местом или навынос это остаётся отдельной строкой; то, что уже заказано, остаётся отдельной строкой (новый раунд).
- − и + (перед ценой в каждой строке): − убирает один, + добавляет один (тот же товар, опции и комментарий; если Суммирование одинаковых товаров выключено, то новая строка). Ещё не заказан и на 0: строка исчезает. Уже заказан: на один меньше — это сторно, строка остаётся зачёркнутой (для кухни и отчётов); на один больше — новая строка, которую ещё нужно заказать. Нажатие на саму цену больше ничего не удаляет. У меню только −.
- С собой (только в заведении): гость берёт этот товар с собой, напр. бутылочку воды или десерт. Эта позиция получает НДС на вынос (в Бельгии метка C), остальной счёт — НДС в заведении. В чеке у позиции написано с собой.
- Место (за столом): нажимайте дальше для места 1, 2, 3 ...; позиции получают этот номер места (и в кухонном чеке). В Бельгии каждая позиция идёт с центром затрат места (CHAIR, UC4123) в чёрный ящик. Ещё раз после места 12 = снова без места.
- Принять возврат: следующий товар добавляется с -1, напр. пустая бутылка или стакан (залог). Это возможно только для товаров с Можно вернуть (залог) (Настройки → Товары). Если весь счёт отрицательный (только возвращённый залог, без продажи), Расчёт становится возвратом средств: наличными обратно или картой (возвращено на самом терминале). В Бельгии как возврат средств (REFUND, UC4108 и UC4114).
- Погасить SPV: гость оплачивает товар или меню single purpose voucher (ваучером именно на этот товар, напр. "1 menu all-in"). Нажмите Погасить SPV, а затем товар в чеке: он добавляется с -1 (та же цена и НДС, для меню с составом), с пометкой SPV. Не идёт на кухню; убрать можно как обычно. Товар-ваучер продаётся заранее как обычный товар; отметьте в Настройки → Товары SPV (ваучер). В Бельгии позиция при продаже идёт как VOUCHER в чёрный ящик (UC271).
- Зачесть аванс: см. ниже.
- Свободная цена (без кнопки, для товара): для товара со Свободная цена касса запрашивает цену, напр. блюдо дня или аванс.
При расчёте:
- Расчёт сразу без сервис-чека (не кнопка): по умолчанию Расчёт сначала заказывает то, что ещё не заказано, чтобы кухня и бар всегда получали свой чек (см. Кнопка «Заказать»). Вкл.: то, что вы рассчитываете сразу, не нажав сначала Заказать, не получает сервис-чека, например у бара, где вы берёте сами. То, что уже заказано, не меняется.
- Отдельный расчёт (за столом, в Разделить счёт): выберите, что один гость платит сейчас, и часть позиции (½ для полбутылки). Это становится отдельной частью, которую вы сразу рассчитываете; остальное остаётся на счёте, без предварительного разделения счёта или переноса в другую группу. Процентная скидка на весь чек переносится пропорционально. Назад без оплаты = всё снова на счёте. В Бельгии продажа остаётся на месте стола, без смены стола (UC4103bis, UC4104).
- Гость ушёл, не заплатив (право Закрытие без оплаты, по умолчанию только менеджер и администратор): счёт закрывается как продажа без оплаты, с причиной в журнале. В X- и Z-отчёте и в дневном отчёте это Не оплачено (гость ушёл); в бухгалтерском журнале на безнадёжный долг (по умолчанию 4985 / 643000). В Бельгии продажа без оплаты (UC4109).
Позже (Чеки):
- Исправить цену (право Исправление цены чека, по умолчанию только менеджер и администратор): цена рассчитанного чека была неверной, напр. скидка 50% вместо 5%. Касса создаёт новый чек без стола с позициями старого чека обратно (отрицательными, по тому, что тогда заплачено) и теми же товарами заново по обычной цене. Дайте там правильную скидку и рассчитайте разницу (или верните деньги, если новая цена ниже). Старый чек остаётся как был; один раз на чек и не тогда, когда что-то уже возвращено. В Бельгии старые позиции идут как CORRECTION (UC4116).
Код: apps/pos-server/src/lib/kassaopties.ts, routes/kassaopties.ts; экран KassaOpties.tsx. Журнал: Настройка изменена, SPV погашен, Исправление чека, Не оплачено.
Зачесть аванс
Аванс (предоплату, напр. за праздник или бронирование) вы продаёте как обычный товар с включённым Аванс (Настройки → Товары; всегда со свободной ценой). Создайте по одному на каждую ставку НДС, если аванс должен быть по ставкам (напр. Аванс еда и Аванс напитки), или один товар, если это часть предложения. Гость платит аванс заранее и получает чек.
Включение: Настройки → Заведение → Заказ и расчёт → Зачесть аванс (по умолчанию выключено). При окончательном расчёте нажмите на экране заказа Зачесть аванс и введите номер чека аванса. Касса добавляет позиции аванса из этого чека с отрицательным количеством на счёт (тот же товар, цена и НДС). То, что уже зачтено, нельзя зачесть ещё раз. Если аванс больше счёта, гость получает разницу обратно (возврат средств). В Бельгии зачтённые позиции идут как возврат средств (REFUND) в чёрный ящик (UC4110, UC4111, UC4113). Журнал: Аванс зачтён.
Чек по e-mail
По умолчанию выкл. Включение: Настройки → Заведение → Чек также по e-mail.
SMTP_HOST=smtp.voorbeeld.nl
SMTP_PORT=587
SMTP_GEBRUIKER=kassa@voorbeeld.nl
SMTP_WACHTWOORD=...
SMTP_AFZENDER=bon@voorbeeld.nl
После заполнения перезапустите кассу. Затем в окне Оплата появится поле Также отправить чек (необязательно): оставить пустым = только печать, как всегда; ввести e-mail = тот же чек (с расшифровкой НДС и фискальными строками) уйдёт гостю и по e-mail, с названием заведения в качестве отправителя.
- E-mail не сохраняется; в журнале записывается только "чек N отправлен на a***@domein.nl" и успешно ли это прошло.
- Если отправить письмо не удалось (напр. неверные данные входа), чек всё равно оплачен и напечатан; сообщение подскажет, что пошло не так.
- Не при частичной оплате (разделение счёта): чек формируется при последнем платеже, поэтому адрес вводится там.
- Отправить позже: в разделе Чеки у чека есть кнопка Отправить (право Печать копии чека). Она отправляет чек с пометкой KOPIE, как и напечатанная копия (в Бельгии регистрируется как копия).
- Дополнительные пакеты не нужны: касса сама подключается к почтовому серверу (STARTTLS на 587, TLS на 465).
Бронирования
Включение: Настройки → Заведение → Бронирования (по умолчанию выключено). Там же задаётся, за сколько минут до начала забронированный стол отображается на плане зала (по умолчанию 60), и стандартная длительность бронирования (по умолчанию 120 минут).
- Кнопка Бронирования в верхней панели: обзор по дням (◀ ▶) с числом бронирований, гостей и неявок. + Новое бронирование: имя, телефон, e-mail, число гостей, дата, время, длительность, стол (можно позже) и комментарий. Бронирование оформляет персонал; онлайн-бронирования (пока) нет.
- Если на этот стол в это время уже есть бронирование, касса сообщит об этом; можно нажать "Всё равно сохранить".
- Подтверждение по e-mail (галочка или позже "Отправить"), если указан e-mail и есть почтовый сервер (
SMTP_HOST, см. «Чек по e-mail»). - На плане зала свободный забронированный стол показан фиолетовым с надписью "R 19:30 Янсен (4)". Если нажать на него: "Янсен пришли" открывает стол на 4 чел. с именем группы "Янсен"; "Другие гости" просто открывает стол.
- В обзоре: Пришли (открывает стол; если стол не задан, сначала выберите его), Изменить, Неявка, Отменить и Вернуть. Всё записывается в журнал.
- Бронирования с онлайн-платформ: см. Платформы бронирования ниже.
Кассовая интеграция TheFork: стол открывается при прибытии, счёт возвращается
Через POS-API TheFork касса работает вместе с TheFork Manager (по умолчанию выключено), в дополнение к получению бронирований, описанному выше. Включение: Настройки → Платформы бронирования → Кассовая интеграция TheFork; работает через портал управления.
- Если в TheFork Manager вы ставите гостю статус Прибыл или За столом, в кассе открывается стол с тем же названием, с количеством гостей и примечанием: имя, аллергии и диета, предоплата, предложение/скидка и бонусные баллы (Yums). Если на этом столе уже есть открытый заказ, он привязывается. Нет стола с таким названием: появляется сообщение, и в Платформы вы выбираете стол.
- После оплаты счёт отправляется в TheFork (итог и строки с названием, группой товаров, количеством и суммой); затем TheFork ставит бронированию статус Ушёл. При раздельной оплате — один счёт на общую сумму. Если не получилось, касса пробует снова каждые четверть часа (в течение двух дней), или нажмите Отправить снова в Платформы.
- Подключение: касса показывает код подключения; введите его в TheFork Manager (Интеграции → касса). ID ресторана в TheFork (Customer-id) вводит администратор, или он приходит автоматически с первым заказом.
- Флажки: автоматически открывать стол, имя, аллергии и предоплата как примечание, счёт в TheFork.
- Условие: у Pin Voordeel есть API-ключ TheFork (только для партнёров) и касса зарегистрирована там как POS (кнопка в портале управления); TheFork запускает интеграцию после тестовой сессии.
Документация TheFork: https://docs.thefork.io/POS-API/introduction
Лист ожидания для гостей без брони
Для гостей без брони, которые ждут свободный стол. Включение: Настройки → Заведение → Лист ожидания (walk-ins) (по умолчанию выключено). Доступно, только если настроены SMS через CM.com; иначе листа ожидания в кассе нигде нет (даже в настройках). Работает независимо от бронирований, даже если они выключены. Там же задаётся текст SMS (пусто = "Здравствуйте, {naam}! Ваш стол в {zaak} готов. Пожалуйста, подойдите к персоналу."; {naam}, {zaak} и {personen} подставляются автоматически).
- Кнопка Лист ожидания в верхней панели с числом ожидающих (оранжевая, если кто-то ждёт). + В лист ожидания: имя, телефон (для SMS), число гостей, названное время ожидания и пожелание (терраса, детский стульчик).
- Список упорядочен по времени записи, с указанием, сколько человек уже ждёт (красным, если дольше названного), а вверху — число ожидающих, гостей и среднее время ожидания за сегодня.
- Если SMS не отправилось, рядом указана причина. Можно нажать SMS ещё раз.
- Посадить: выберите стол; касса откроет его с количеством гостей (если касса учитывает гостей) и именем в качестве названия группы (как при прибытии гостей по брони).
- Ушли (ушли или отказались) и Вернуть. Под списком показано, кого сегодня посадили или кто ушёл, и сколько они ждали.
- Конфиденциальность: номера телефонов удаляются через сутки; кто остаётся в списке дольше 12 ч, удаляется автоматически. Запись, вызов (только с последними 3 цифрами номера) и посадка записываются в журнал.
- Почему не в бронированиях? Бронирование — на будущее (дата, время, стол заранее); лист ожидания — на сейчас (очередь, время ожидания, SMS, когда стол свободен). Поэтому у него свой переключатель и кнопка, с тем же "открыть стол", что и при бронировании.
- Онлайн в лист ожидания (необязательно, по умолчанию выключено; только с интернет-магазином): с Гости могут записаться и сами через интернет-магазин в интернет-магазине появляется Лист ожидания (и для него есть QR-код у входа, в управлении интернет-магазином в разделе Столы и QR). Гость вводит имя, телефон, число гостей и пожелание и в реальном времени видит своё место. В кассе он стоит в списке с пометкой онлайн; вызов, посадка и уход работают как всегда, а гость видит это и на своём телефоне (там же можно и отказаться).
Карта лояльности / бонусные баллы
Включение: Настройки → Заведение → Карта клиента / бонусные баллы (по умолчанию выключено, тогда этого нигде не видно). Там же задаётся: баллов за евро (0 = только карты со штампами), после скольких баллов даётся награда и сколько евро скидки она составляет.
- На кассе над чеком есть кнопка "+ Карта клиента": найдите клиента по имени или номеру телефона или создайте нового (имя, при желании телефон и e-mail). После этого имя и баланс баллов показаны на чеке.
- Обменять: при достаточном количестве баллов "Обменять 100 баллов: скидка € 5"; при заполненной карте со штампами "Бесплатный кофе" (этот кофе должен быть в чеке). Это становится строкой скидки; удалить её может любой.
- Баллы и штампы начисляются и списываются только при оплате: баллы — с суммы после скидки (без проданных подарочных карт), штампы — за каждую штуку товара с картой штампов (бесплатный товар не считается).
- На кассовом чеке: накоплено, обменяно, баланс и состояние карт со штампами.
- Отчёт → Клиенты (право Управлять картами клиентов): поиск клиентов, изменение данных, корректировка баллов (с причиной), история и удаление (GDPR: имя, телефон и e-mail удаляются; история остаётся анонимной). Внизу — карты со штампами по товарам (напр. 10 кофе = 1 бесплатно).
- Возврат не отменяет накопленные баллы автоматически; при необходимости скорректируйте их в Отчёт → Клиенты.
- Карта лояльности с номером (необязательно): в разделе Отчёт → Клиенты → (клиент) укажите номер карты (или отсканируйте карту в это поле). Со сканером штрихкодов сканирование этой карты привязывает клиента к чеку — на кассе и на киоске. Искать по номеру карты можно также через + Карта клиента.
Профиль гостя: VIP, особенности питания и предпочтения (необязательно)
Включается в Настройки → Заведение → Профиль гостя, под картой лояльности (по умолчанию выключено; работает, только если карта лояльности включена). Затем:
- На экране заказа под привязанным клиентом есть "+ Профиль гостя": отметьте VIP, выберите особенности питания (вегетарианское, веганское, пескетарианское, халяль, кошерное) и аллергии (14 аллергенов) и введите предпочтения (напр. "постоянный столик у окна", не более 300 символов). После этого они видны у клиента на экране заказа, аллергии — красным. Изменить их можно также в Отчёт → Клиенты → (клиент) → Профиль гостя.
- Если вы нажмёте на товар с аллергеном гостя (см. Аллергены для каждого товара), касса сначала спросит, добавить ли его всё равно. Учитывается только то, что указано у товара; при сомнении всегда спрашивайте кухню.
- VIP-гость получает ★ на плане зала: при открытом счёте и при показанном бронировании этого клиента. Когда гости по бронированию приходят, касса привязывает клиента из бронирования к счёту.
- Особенности питания и аллергии (и VIP) печатаются на кухонном чеке для кухни и бара:
GAST: VIP · Vegetarisch · allergie: Noten. - Особенности питания и аллергии — это данные о здоровье: заполняйте их только с согласия гостя. В журнале записывается только то, что профиль был изменён, а не сами пожелания. Удаление клиента удаляет и профиль гостя.
Избранное / быстрые кнопки
По умолчанию выкл. Настройки → Заведение → Избранное / быстрые кнопки:
- Самые продаваемые: в начале панели групп кнопка ★ Избранное с 12 товарами, которые больше всего продавались за последние 14 дней (обновляется автоматически). Экран заказа открывается на избранном.
- Выбрать самому: на экране заказа долго нажмите на товар (или щёлкните правой кнопкой) и выберите ★ Избранное (быстрая кнопка); повторно = убрать. Право Управлять товарами. Все кассы видят изменение сразу.
- Добавление, опции, меню, happy hour и "закончился" работают в избранном точно так же, как в обычных группах.
Ещё по одной
На экране заказа есть кнопка ↻ Ещё раунд (как только что-то есть в счёте, даже если это ещё не заказано). Одно нажатие ещё раз добавляет последний раунд (всё, что ушло одним нажатием "Заказать", или то, что вы только что выбрали) новыми строками; затем просто нажмите Заказать. Цены — текущие (в том числе happy hour).
- Долгое нажатие (или правый клик): выбрать самому. Кнопками ◀ ▶ можно листать к предыдущим раундам, каждый товар можно включить/выключить (напр. снять галочку с еды) и изменить количество кнопками − / +. Опции и комментарии переносятся.
- Закончившиеся товары и меню не переносятся (меню добавляются отдельно). Работает и без подключения.
- Строки добавляются так, как они указаны в счёте: с включённым Суммирование одинаковых товаров — одна строка на товар (2 Cola), с выключенным — каждая строка отдельно (2 раза по 1 Cola).
Время за столиком на плане зала
На каждом занятом столе показано ⏱ 45m · 12m: сколько стол уже занят и сколько времени прошло с последнего добавления (нажмите и удерживайте стол или наведите мышь, чтобы увидеть точное время). Если какое-то время ничего не заказывали, стол получает оранжевую рамку: стоит подойти. Число минут задаётся в Настройки → Заведение → Время за столом (по умолчанию 20, 0 = без оранжевой рамки). Если ещё ничего не добавлено, время считается с открытия стола.
Если за одним столом сидят несколько групп (отдельные счета), для каждой группы показана строка, напр. G1 ⏱ 50m · 12m и Янсен ⏱ 10m (имя группы, иначе номер группы). Группа, которая слишком долго без заказов, получает оранжевую метку, а стол — оранжевую рамку.
Перенос всего столика
На экране заказа есть кнопка Переместить стол. Выберите зал (напр., Терраса) и стол: все группы стола переносятся, каждая со своим счётом. Если выбрать занятый стол, столы объединяются (группы добавляются). Если нужно перенести только часть, используйте, как и раньше, Разделить / перенести. Если всё должно быть на одном счёте, используйте Объединить.
Работа офлайн (планшет без Wi-Fi)
Если связь между планшетом и кассовым сервером пропадает (Wi-Fi на террасе, сервер ненадолго выключен), появляется жёлтая панель, и планшет продолжает работать с последними сохранёнными столами, товарами и открытыми заказами:
- открытие столов, добавление товаров и Заказать сохраняются на планшете (даже после его перезапуска) и показываются в списке заказа с пунктирной рамкой ("ещё не отправлено");
- как только связь восстанавливается, всё уходит на сервер по порядку, и только потом заказ уходит на кухню. У каждого пакета есть ключ, поэтому ничего не придёт дважды. Если кто-то другой тем временем открыл стол, товары добавятся к этому заказу;
- оплата, скидки, разделение счёта и т. п. возможны только при наличии связи; "Оплатить" ждёт, пока всё по этому столу не будет отправлено.
Количество гостей
Опционально, по умолчанию выключено: Настройки → Заведение → Заказ и оплата → Учитывать количество гостей. Выкл. = минимум нажатий: свободный стол открывается одним касанием, количество гостей нигде не показывается, а отчёт, панель мониторинга и итоги дня не показывают ни гостей, ни расходов на гостя.
Вкл.: при нажатии на свободный стол касса спрашивает, сколько человек (большие кнопки 1-8 или ввод вручную; "Пропустить" = 1). На плане зала у занятого стола показано "3/4 чел." (гости/места, жёлтым, если гостей больше, чем мест). На экране заказа количество меняется кнопкой "3 чел." в панели групп; при нескольких группах стол суммирует все группы.
Без учёта гостей всё работает: Разделить поровну при оплате начинается с 2, all-you-can-eat сам спрашивает количество взрослых и детей, а брони и лист ожидания сохраняют своё количество гостей (стол тогда открывается без количества гостей).
Регистрация HACCP
Каждое заведение общепита обязано контролировать и документировать безопасность пищевых продуктов: в Нидерландах согласно Hygiënecode voor de Horeca (Гигиенический кодекс для общепита, контроль NVWA), в Бельгии согласно самоконтролю FAVV (руководство G-023). Включи Регистрация HACCP в Настройки → Законы и правила (по умолчанию выключено).
- Точки измерения (администратор): напр. холодильная камера, морозильник, поддержание в тепле, температура в центре продукта после термообработки, быстрое охлаждение и приёмка товаров, с минимумом и/или максимумом в °C и частотой (ежедневно, дважды в день, еженедельно или при использовании). Добавить стандартный список создаёт основу (охлаждение до 7 °C, в Бельгии до 4 °C; морозильник до -18 °C; поддержание в тепле от 60 °C; термообработка от 75 °C).
- Уборка и контроль: задачи на день, неделю (при желании в определённый день) или месяц, с помещением и инструкцией, напр. дезинфекция разделочных досок, жировые фильтры, контроль вредителей, проверка термометра.
- Регистрация (каждый, кто вошёл в систему): кнопка HACCP в верхней панели с числом того, что сегодня ещё не выполнено. Введи температуру или отметь задачу (Выполнено или Не удалось). Если температура выходит за границу, нужно добавить корректирующее действие (напр. "закрыл дверь, выбросил продукт"). Записи нельзя изменить; ошибку исправляют новой записью.
- Отчёт (право Выручка за период): за каждый период все записи, количество отклонений и пропущенные записи по дням; как CSV (Excel) или для печати / сохранения в PDF для проверки.
Разливная система и расходомеры
Каждый налив, о котором сообщает разливной компьютер или расходомер, попадает в счёт, поэтому ничего не "утекает". Включите это в Настройки → Разливная система (по умолчанию выключено).
- Источники (администратор): разливной компьютер или система расходомеров. Выберите марку; касса заполнит предустановку. Из Нидерландов и Бельгии: Van Duijnen Horeca (автоматизация розлива, Dashbar), Beconet (Multi-Tap), TapSystems, Horecatechniek Nederland, Heineken SmartDispense, WeissBeerger / AB InBev и BarTrack; а также Gruber, Addimat, WMF / Hogatron (E-Protokoll), Drinkotec (ex-Hartec), , Berg, Easybar, Azbar, Scanabar, PourMyBeer, iPourIt, BeerBoard, US BeerSAVER, Bevchek, Capton/BarVision, Kegtron, Kegbot Kegboard, "умный кран" или собственная система. Подключение возможно пятью способами (Kegboard: см. Дозированный налив и Kegboard ниже):
- Поля:
kraan(илиtap,plu),ml(илиcl,liter,volumeсeenheid) илиporties,id(один и тот же налив дважды = учтён один раз),tijdstip,tafel,bediening; один налив, список или{ "taps": [...] }. - Сеть (TCP): касса подключается к разливному компьютеру (адрес и порт) или сама слушает порт.
- Последовательный порт: порт COM или USB-serial, 1200–115200 baud, 8N1, 7E1 или 7O1.
- Для сети и последовательного порта настраивается формат сообщения (одно сообщение на строку или STX … ETX с возможной проверкой XOR и ответом ACK/NAK) и шаблон сообщения с частями
kraanилиpluи при необходимостиml,cl,liter,porties,tafel,bedieningиid(напр.kraan;mlили только PLU на бокал). Поставщики сообщают точный формат только монтажникам; спросите у поставщика разливного компьютера. Тестовый налив отправляет налив так, как это сделал бы разливной компьютер.
- Поля:
- Краны (администратор): для каждого крана или PLU — товар и то, как он попадает в счёт: за бокал (бокал в ml; налив 520 ml при бокалах по 250 ml = 2 бокала; от 50% считается бокал) или за литр (цена товара — цена за литр; в счёте напр. "Пилс 0,33 л" на правильную сумму).
- В счёте: если разливной компьютер сообщает стол, налив сразу попадает в открытый заказ этого стола. Иначе он находится в разделе Налито: на экране заказа появляется полоса "… налив(ов) без счёта"; выберите наливы и нажмите В этот счёт. Позиции сразу получают статус заказано (на бар больше не уходит заказ-наряд), и остаток списывается со склада. Кнопка Налито в верхней панели показывает всё, что ещё не в счёте.
- Списание (право Сторно): промывка, бой, дегустация, персонал, бесплатно или прочее (с пояснением); это записывается в журнал. Слишком малый налив для бокала (напр. промывка) нужно списать.
- Обзор (право Выручка за период): по каждому крану налито, в счёте, списано (по причинам), отменено и ещё открыто, в литрах, с процентом проданного, а также в виде CSV.
- Полученные наливы нельзя изменить (только обработать).
Дозированный налив и Kegboard
При дозированном наливе кран открывается только после того, как бокал пробит на кассе, и только на это количество. Так ничего не наливается без чека. Это работает только при включённой разливной системе и включается для каждого крана отдельно (по умолчанию выключено).
- Для крана (администратор, Настройки → Разливная система → Краны): отметьте Дозированный налив и выберите, сколько кран может быть открыт после пробития (10–600 секунд, по умолчанию 120). Для Kegboard укажите также реле (электромагнитный клапан). Дозированный налив возможен только по бокалам.
- Пробитие: при Заказать (или сразу при Расчёте) касса создаёт для каждой строки чека с этим продуктом разрешение (число бокалов × объём бокала в мл) и отправляет его разливному компьютеру. Налив, который приходит после этого, относится к этой строке. Поэтому он не попадает в чек повторно и не попадает в «Налито». Налив без разрешения обычно попадает в Налито.
- Сторно строки до налива: кран снова закрывается. Разрешение, по которому не налили вовремя, истекает; кран никогда не откроется позже.
- Разрешения на экране заказа (полоса над чеком): видно, что сейчас активно, Остановить и Разрешить снова. Разрешить снова можно, только если ещё ничего не налито, поэтому лишнее никогда не разрешается. Тестовое разрешение (администратор) разрешает один бокал без чека; это записывается в журнал.
- Как разрешение попадает на разливной компьютер:
- Kegboard (Kegbot, open source, ESP32 с расходомерами и электромагнитными клапанами; полностью открытый протокол): касса выдаёт grant для кранов с этим продуктом, реле и количества. Плата сама закрывает кран, когда количество достигнуто или время истекло.
- Сеть/последовательный порт: настраиваемая команда разрешения с
{kraan},{ml},{porties},{sec}и{id}(напр.V{kraan};{ml}), отправляемая в формате сообщений источника (строка или STX … ETX с XOR). При необходимости есть команда остановки. Точную команду сообщает поставщик.
- Подключение Kegboard: в + Источник выберите марку Kegbot Kegboard. Плата появится у источника; нажмите Разрешить (или Отклонить). Плата один раз получает собственный ключ, который касса хранит только в виде хеша. Другое устройство или неверный ключ ничего не меняют для подключённой платы; если плата потеряла ключ, сначала используйте Отключить. Источник показывает прошивку, счётчики и реле платы. Краны — это номера счётчиков (0, 1 …). Карта, приложенная к плате, отклоняется: оплата происходит на кассе. Если система розлива выключена, плата сохраняет свои сообщения и отправляет их позже.
- У источника вы задаёте, через сколько секунд без потока закрывается кран (5–300, по умолчанию 30). Для каждого крана укажите номер счётчика, реле (электромагнитный клапан) и как долго кран может быть открыт после пробития.
Управление музыкой с кассы
Персонал управляет музыкой с сенсорного экрана кассы, поэтому отдельный экран на баре не нужен. Включите это в Настройки → Заведение → Экраны и управление → Управление музыкой с кассы (по умолчанию выключено). Тогда в верхней панели появится кнопка Музыка: для каждого источника (например, Бар и Терраса) Воспроизвести, Пауза, Следующий, Предыдущий, Громче, Тише и ползунок громкости, а также что сейчас играет. Назад к кассе закрывает панель. При выключении источники сохраняются.
- Плейлист (Sonos, Bluesound и VLC): очередь с тем, что сейчас играет. Нажмите на трек, чтобы его воспроизвести; через Изменить можно убрать треки (✕), передвинуть их выше или ниже (↑ ↓; Sonos и Bluesound) или очистить плейлист. Через Выбрать другую музыку включите избранное Sonos (напр. радиостанцию или канал Tunify) или список воспроизведения Sonos, либо пресет BluOS.
- На отдельном экране: то же управление и крупный плейлист по адресу
http://<kassaserver>:3000/muziek, напр. на втором мониторе рядом с кассой или на планшете на баре (если на этом устройстве уже выполнен вход, иначе — с PIN-кодом). - На планшете или телефоне: QR-код с адресом этого отдельного экрана в сети заведения. Сотрудник сканирует его своим планшетом или телефоном (в wifi-сети заведения) и входит со своим PIN-кодом; кнопка Выйти снова закрывает экран. См. «Второй экран на планшете или телефоне».
Администратор добавляет источники кнопкой + Источник музыки, выбирает способ подключения и проверяет его кнопкой Проверить:
- Soundtrack (soundtrack.io): через открытый API, с API-токеном (запрашивается у Soundtrack) и звуковой зоной (Загрузить зоны). Воспроизведение, пауза, следующий, громкость и что сейчас играет.
- Sonos: IP-адрес колонки (для группы — колонки, которая управляет группой). Работает со всем, что играет на Sonos, например Tunify, Spotify или радио.
- Bluesound (BluOS): IP-адрес плеера; тоже работает со всем, что на нём играет, например Tunify.
- VLC на музыкальном компьютере: включите веб-интерфейс (Инструменты → Настройки → Показывать настройки: Все → Интерфейс → Основные интерфейсы: Веб, с паролем в разделе Lua); IP-адрес (при необходимости с
:poort, по умолчанию 8080) и пароль. - Свой музыкальный компьютер (веб-адреса): для музыкального компьютера или приставки с отдельным веб-адресом для каждой кнопки; GET или POST, а для громкости —
{volume}(0-100) в адресе. Без адресов Громче/Тише касса меняет громкость по шагам. - Веб-плеер музыкального сервиса: веб-адрес веб-плеера или страницы управления (например, веб-плеер Tunify или Media Tools) открывается в кассе по кнопке Музыка; если сервис нельзя показывать внутри другой страницы — через Открыть в отдельном окне.
Касса общается с плеерами со своего сервера, поэтому они должны быть в той же сети, что и касса (Soundtrack — через интернет). Управлять может любой, кто вошёл в систему; настраивать — с правом Настройка заведения, оплаты и принтеров. Токен и пароль никогда не показываются на экране и не попадают в журнал; в журнале записывается только настройка (вкл./выкл., источники), а не каждое нажатие. Экспорт конфигурации переносит только вкл./выкл. (источники относятся к одному заведению).
Второй экран на планшете или телефоне
Музыку и камеры можно открыть и на собственном планшете или телефоне сотрудника — как второй экран рядом с кассой. В окне Музыка или Камеры есть кнопка На планшете или телефоне: она показывает QR-код с адресом, например http://192.168.1.20:3000/muziek или .../camera.
- Подключите планшет или телефон к wifi-сети заведения.
- Отсканируйте QR-код камерой (или введите адрес в браузере).
- Войдите со своим PIN-кодом. Вы видите только то, что вам разрешено: музыку — все, камеры — только с правом Просмотр камер.
- Готово: Выйти справа вверху. Если сеанс истёк (например, планшет всю ночь не использовался), экран снова запросит PIN-код.
Совет: добавьте страницу на главный экран планшета (в браузере: Добавить на главный экран), тогда она будет открываться как приложение.
Поэтому касса определяет IP-адрес кассового ПК в сети (если у ПК их несколько, например wifi и кабель, вы выбираете сеть). На портале управления (касса удалённо) это адрес портала. QR-код касса создаёт сама, без интернета.
Привязка планшетов: одной кнопкой на планшет (необязательно)
Ещё проще: привяжите планшет один раз, и касса одной кнопкой отправит музыку или камеры на этот планшет. Включите в Настройки → Заведение → Экраны и управление → Планшеты как второй экран (по умолчанию выкл.).
- На планшете: откройте
http://<kassaserver>:3000/tablet(у настройки есть На планшете или телефоне с QR-кодом), войдите с PIN-кодом и дайте планшету название, напр. Планшет Бар. Привязать. - На кассе: в окне Музыка или Камеры теперь есть кнопка На Планшет Бар (с зелёной точкой, если планшет включён). Нажмите её: планшет сам откроет этот экран. Для музыки передаётся выбранный источник (напр. Терраса).
- На планшете: Закрыть возвращает к ожиданию; Отвязать этот планшет удаляет привязку.
Оставьте страницу на планшете открытой; если планшет выключен или спит, он откроет экран, как только снова включится. Планшет остаётся в системе под сотрудником, который на нём вошёл: отправлять и смотреть камеры можно только с правом Просмотр камер. Администратор видит у настройки, какие планшеты привязаны и включены ли они, и может переименовать или удалить их. Планшет хранит собственный ключ; касса хранит от него только хеш. При выключении привязанные планшеты сохраняются. В журнале видно, кто привязал, переименовал или удалил планшет.
Экран вызова для самовывоза
Экран для гостей: слева Готовится, справа Готово, с крупными номерами, как в закусочной или фастфуде. Включается в Настройки → Заведение → Экраны и управление → Экран вызова для самовывоза (по умолчанию выключен).
Привязка не нужна: откройте на телевизоре с браузером (смарт-ТВ, стик или мини-ПК), планшете или втором мониторе адрес кассы с /oproep, напр. http://192.168.1.20:3000/oproep. В настройке и в окне Вызвать есть кнопки На отдельном экране и На планшете или телефоне (QR-код с адресом). Входить не нужно: экран показывает только номера. Коснитесь экрана один раз, тогда браузеру можно воспроизводить звук.
Что отображается:
- заказы на самовывоз из кассы, интернет-магазина и Thuisbezorgd (а при желании и заказы у стойки без стола, при быстрой продаже) за последние 12 ч;
- как только что-то отправлено на кухню или в бар (или в интернет-магазине стоит статус готовится), номер появляется в колонке Готовится;
- Готово ставится само, когда кухонный экран отмечает весь заказ как готовый или заказ интернет-магазина получает статус готово. Номер ненадолго мигает, и экран издаёт «динь-дон»;
- готовый номер остаётся на экране заданное число минут (по умолчанию 10) или до Забран;
- заказы из киоска (см. Киоск самообслуживания) появляются всегда, как только они оплачены или будут оплачены на кассе, также при "поем здесь", с номером выдачи из их чека;
- по желанию также заказы для курьеров Thuisbezorgd, Uber Eats, Deliveroo и HubRise (флажок Также заказы для курьеров …): с номером заказа платформы и названием платформы под ним, чтобы курьер видел, когда его заказ готов. Выдан тогда сообщает и платформе, что курьер его забрал (как в окне платформы).
Номер: для интернет-магазина, Thuisbezorgd и платформ доставки — номер заказа, который уже есть у гостя или курьера; иначе номер выдачи (от 1 до 999). Он крупно напечатан на чеке с пояснением, что номер появится на экране, когда заказ будет готов (на языке чека).
По желанию (по умолчанию выключено, в настройке):
- Объявлять номер голосом: при новом готовом номере экран говорит, например, "Nummer 42…" на выбранном языке (нидерландский, английский, немецкий, французский, испанский, итальянский, португальский, польский, турецкий или арабский). Голос идёт из браузера экрана и звучит по-разному на разных устройствах; после открытия один раз коснитесь экрана. После звонка, если звук тоже включён.
- Статус заказа на телефоне: под номером выдачи на чеке появляется QR-код. Гость сканирует его, видит свой номер и статус (заказано, готовится, готово, выдано) и получает уведомление, когда заказ готов. Работает через портал управления, поэтому касса должна быть к нему подключена. Не для интернет-магазина и Thuisbezorgd (у них свой статус) и не для киоска (у него своя настройка).
На кассе есть кнопка Вызвать (с числом заказов, которые ещё готовятся):
- Готово вручную отмечает номер как готовый (без кухонного экрана или если так быстрее). Для заказа из интернет-магазина или Thuisbezorgd статус меняется тоже, поэтому гость получает уведомление.
- Назад возвращает номер в Готовится.
- Забран убирает номер с экрана (с возможностью Отменить).
В настройке также можно выбрать, показывать ли имя рядом с номером (по умолчанию нет, ради конфиденциальности) и издаёт ли экран звук. Выключение: нет кнопки «Вызвать» и нет номера выдачи на чеке; настройки сохраняются. В журнале видно, кто вручную отметил номер как готовый, вернул в «Готовится» или отметил как забранный.
Отметка прихода и ухода
По умолчанию учёт рабочего времени выкл.: тогда его нигде в кассе не видно (нет кнопки в верхней панели, нет на экране входа, нет вкладки «Рабочее время»). Включение: Настройки → Заведение, раздел Отметка прихода и ухода персонала:
- Выкл.: не использовать. Если позже выключить отметку прихода и ухода, она больше нигде не отображается, но уже отмеченные часы сохранятся (ничего не удаляется); если снова включить, они снова на месте.
- Вкл.: сотрудники могут отмечать приход и уход. После входа касса спрашивает, хотите ли вы отметить приход (можно Не сейчас). В верхней панели тогда видно Отметить приход или На смене с 17:02; нажмите, чтобы отметить уход.
- Обязательно: после входа сначала отметьте приход, иначе кассой пользоваться нельзя. Отметка ухода сразу выполняет выход из системы.
Кто не работает на кассе (напр. кухня), отмечается на экране входа: нажмите Приход / уход и введите PIN-код. Это переключает между приходом и уходом без входа в систему.
Если учёт времени включён, администратор видит в Настройки → Рабочее время:
- кто сейчас на смене (и может отметить уход за того, кто забыл);
- отработанные часы каждого сотрудника за период, со всеми сменами, и выгрузку в CSV (часы также десятичным числом для расчёта зарплаты);
- изменение или добавление смен (нажмите на смену или + Добавить смену). Каждое изменение записывается в журнал со старым и новым временем.
В Бельгии каждая отметка прихода и ухода также передаётся в «чёрный ящик». Если он недоступен, отметка не проходит (как и оплата). Соответствует ли это в точности бельгийским требованиям к регистрации персонала, ещё нужно подтвердить.
Взвешивание и этикетки (весы)
Если весы включены (Настройки → Весы), у товаров может быть цена за килограмм. Все остальные товары по-прежнему продаются поштучно.
- Взвешивание: нажмите на товар с ценой за килограмм (на кнопке показано, напр.,
12,95/kg). Окно Взвешивание показывает вес с весов в реальном времени (напр. Aclas OS6X или весы, на которых работает сама касса); зелёный = вес стабилен. Положите товар на весы и нажмите Добавить, как только вес стабилизируется. Цена = цена за кг × вес (с округлением до цента); вес тары товара вычитается автоматически. Если у товара есть опции, они предлагаются после этого. - Несколько весов: если весов несколько, вверху окна выберите, на каких взвешивать. Каждая касса/планшет запоминает свой выбор.
- Вручную: если весов нет (или разрешён ручной ввод), введите вес:
0,512или1,2— это килограммы,512или512 g— граммы. - Этикетка TS6X: отсканируйте штрихкод этикетки сканером на экране заказа (просто сканируйте, ничего открывать не нужно) или нажмите Этикетка и отсканируйте либо введите 13 цифр. Товар (PLU) и вес берутся с этикетки. Если на этикетке есть цена, касса берёт именно эту цену.
- На экране, в кассовом чеке и на экране покупателя указывается вес, напр.
Gehakt 6,63, а под ним0,512 kg x € 12,95/kg; в кухонном заказе —0,512 kg Gehakt. Разделение, перенос и возврат выполняются в килограммах. - Весовой товар доступен только при подключении к кассовому серверу (вес передаётся через кассовый сервер).
Uber Eats, Deliveroo и HubRise
Помимо Thuisbezorgd.nl / Takeaway.com, в кассу также поступают заказы из Uber Eats (Нидерланды и Бельгия), Deliveroo (только Бельгия; Deliveroo ушёл из Нидерландов в конце 2022 года) и всё, что подключено к HubRise (в т. ч. Uber Eats, Deliveroo, Just Eat/Takeaway.com и небольшие приложения для заказов). Каждая платформа включается отдельно в Настройки → Платформы доставки (по умолчанию выключено; при выключении всё сохраняется). Вкладка показывает для каждой платформы, в каких странах она работает, и предупреждает, если она не работает в стране заведения.
- Включите, затем Войти в Uber Eats и подключить магазин (заведение входит со своим аккаунтом Uber Eats). Если в аккаунте несколько магазинов, введите ID магазина (store id) и войдите снова. Для этого Uber Eats сначала должен одобрить Pin Voordeel как партнёра.
- Deliveroo: напрямую, через портал. Введите ID локации (location id) и ID бренда (brand id). Без планшета (по умолчанию): касса принимает или отклоняет; с планшетом: заведение принимает на планшете, а портал только сообщает, есть ли заказ в кассе.
- HubRise: касса сама забирает заказы (каждые 20 секунд, портал не нужен).
- Для каждой платформы: принимать автоматически, кухонный чек сразу на кухню/бар и (Uber Eats, Deliveroo) отправлять меню автоматически после изменения и Отправить меню сейчас. В меню — товары, отмеченные в Товары в меню Uber Eats и Deliveroo, с вариантами выбора; отметка «распродано» тоже передаётся.
Заказы. Заказ становится обычным заказом (bezorgen или afhalen, название группы <platform> <nummer>) с ценами платформы: товары распознаются по ID (из меню), коду или PLU-номеру, неизвестный = отдельная строка с ценой платформы (и сообщение); стоимость доставки, надбавки и скидка отдельными строками; если итог всё равно не сходится, добавляется строка "Разница". Кухонный чек сразу уходит на кухню/бар. Кнопка Платформы в верхней панели (с числом текущих заказов; оранжевая, если есть что принять): принять или отклонить (с причиной), готовится, готово, в пути, доставлено или забран, отменить и Завершить (оплачено онлайн). Что поддерживает платформа, то передаётся обратно (Uber Eats: принять, отклонить, отменить; Deliveroo: принять, отклонить, готовится, готово, забран; HubRise: все статусы). Если заведение доставляет само (своя доставка), заказ также есть в Рейсы, а выезд и доставка автоматически передаются платформе. Отмена со стороны платформы аннулирует заказ. Если касса более 2 минут не связана с порталом, портал отклоняет новый заказ Uber Eats и сообщает Deliveroo (с планшетом), что не получилось, чтобы заведение увидело это на планшете.
Код: apps/pos-server/src/lib/bezorgplatforms.ts, routes/bezorgplatforms.ts; экраны Bezorgplatforms.tsx. Сторона портала: horecapos-portaal/src/platforms.mjs. Журнал: Платформы доставки (вкл./выкл., настройки, заказы). Всё входит в резервные копии кассы.
У небольших платформ в Нидерландах и Бельгии (Homie, Hebtrek, sneleten.nl, Bistroo ...) нет публичной кассовой интеграции; если они подключены к HubRise, то работают через HubRise. Остальное: см. backlog.
Автомат для наличных (закрытая система обработки наличных)
По умолчанию выключено: наличные работают как обычно. В закрытой системе обработки наличных персонал не касается наличных: клиент или сотрудник вносит деньги в автомат, который их пересчитывает, проверяет на подлинность и выдаёт сдачу.
- Автоматы, с которыми касса связывается напрямую:
- CashDro (3, 4+, 5, 7, S Compact; NuKassa, KluisKassa): по сети (веб-сервис). Включите на CashDro Web Integration и создайте отдельного пользователя для кассы.
- Cashmatic (SelfPay 460/860/1060; в Бельгии Xpos): по сети (порт 50301) под пользователем Cashmatic.
- Azkoyen Cashlogy (POS1000, POS1500): через CashlogyConnector на Windows-ПК рядом с автоматом (порт 8092).
- CashKeeper: через CKMonitor на Windows-ПК (порт 16501).
- Glory CASHINFINITY (CI-5, CI-10, CI-10X; также через Cikam): через контроллер (FCC) автомата. Пока бета: первое подключение пусть проверит Glory или ваш дилер.
- Внешний: автоматом управляет другая программа, которая связывается с кассой (например, Cikam, ImaCash для 25 марок, программа CashGuard/StrongPoint (Merlin), PayComplete (SUZOHAPP), Gunnebo SafePay или французские марки, такие как CashMag).
- Тестовый автомат: без оборудования, для обучения или демонстрации. Кнопкой Проверить подключение проверяются адрес и вход. Разместите автомат в собственной сети (никогда не открывайте в интернет) и используйте для кассы отдельного пользователя, а не администратора.
- Расчёт с Наличные: Оплатить в автомате запускает оплату на сумму (с округлением наличных, если оно включено, плюс чаевые; при разделении счёта — на часть). Экран показывает, что внесено и что возвращается; касса проводит расчёт только после того, как автомат сообщит готово. Отмена = автомат возвращает деньги. Если автомат не смог выдать всю сдачу (не хватает монет), указывается, сколько нужно выдать из денежного ящика. Успешная оплата, по которой ещё не проведён расчёт (напр. отключился планшет), находится снова у этого заказа.
- Наличные только через автомат (по умолчанию включено): тогда сервер кассы принимает наличные только при успешной оплате в автомате именно за этот заказ и на эту сумму. Выкл. = также обычные наличные в ящик.
- Денежный ящик (Отчёт → Касса, право Управлять денежным ящиком): Запросить состояние (по каждой монете и купюре, у Cashmatic, Cashlogy, Glory и тестового автомата), Выдать с указанием причины (напр. размен для ящика), Пополнение и Изъятие излишка (размен остаётся; у Cashmatic). Ожидается в денежном ящике не учитывает деньги в автомате (они указаны отдельно ниже: В автомате для наличных), но учитывает сдачу, которую пришлось выдать из ящика.
Кнопка ©
В правом нижнем углу каждого экрана (PIN-код, план зала, заказ и кухня) есть маленькая кнопка ©. Она открывает данные OptimumPOS: логотип, адрес, телефон, e-mail и сайт. Иконка хранится локально в приложении, поэтому работает и без интернета. Эта же иконка — значок приложения (вкладка и главный экран).
Часть 2 · Менеджер
Начало работы
Менеджер по умолчанию может всё, что может официант, а также, среди прочего, давать скидки, делать возвраты, закрывать день, управлять денежным ящиком и просматривать журнал и остатки. В основном это находится под кнопкой Отчёт:
- Промежуточный отчёт (X): выручка на данный момент, без закрытия дня.
- Денежный ящик: размен на начало дня, внесение/изъятие денег и открытие ящика.
- Закрыть день (Z): в конце дня; после этого начинается новый день.
- Прошлые Z-отчёты, Выручка за период и Панель показателей.
- Журнал, Подарочные карты и Клиенты.
Склад
По умолчанию выключено. Включается в Настройки → Заведение → Вести учёт склада. Выключено = нигде в кассе не отображается.
- Для каждого товара выберите в Настройки → Товары → (товар) → Склад:
- Нет: как обычно;
- По товару: каждая продажа списывает 1 (напр., бутылки, банки), с порогом уведомления для "почти закончилось";
- Через ингредиенты: рецепт, напр. гамбургер = 1 булочка + 150 г мяса + 1 ломтик сыра. Каждая продажа списывает ингредиенты.
- Настройки → Склад (право Управление складом, по умолчанию у менеджера и администратора):
- Товары и Ингредиенты: остаток, с пометками закончилось / почти закончилось; фильтр "только (почти) закончившиеся" и экспорт в CSV.
- Для каждого товара или ингредиента можно провести Приход (+) (поставка), Инвентаризацию (=) (подсчитанное количество становится новым остатком) или Списание (−) (бой, истёк срок; причина обязательна).
- Создавайте ингредиенты с единицей измерения (шт, г, кг, мл, сл, л, порция, бутылка, кега) и порогом уведомления.
- История: все движения (продажа, сторно, приход, инвентаризация, списание) с указанием, кто и когда. Действия по управлению также попадают в журнал.
- Списание происходит при нажатии Заказать (или при расчёте, если позиция сразу оплачена). Сторно возвращает остаток. Разделение и перенос не списывают дважды. В меню списываются блюда, а не строка меню. Возвраты (чек возврата) остаток не возвращают (возвращённое обычно уже нельзя продать); при необходимости проведите это как приход.
- Если остаток закончился (или ингредиента не хватает ещё на одну порцию), товар автоматически отмечается как распродано на всех кассах. Если почти закончился, на кнопке товара видно ещё N. После прихода или инвентаризации его сразу снова можно заказать. Сервер кассы тоже отклоняет такой товар ("Pils" закончился (остаток 0)), так что даже с планшета, который ещё не знал об этом.
- Остаток может уйти ниже 0 (напр., два планшета одновременно или заказ офлайн); инвентаризация всё исправит.
- Список закупок: Настройки → Склад → Список закупок. Для каждого товара и каждого ингредиента, помимо порога уведомления, задаются пополнять до и поставщик. В список закупок попадает всё, что на пороге уведомления или ниже (без порога: при остатке 0), по поставщикам, с предложением пополнять до − остаток. Количество можно изменить, позиции — отметить или снять отметку. Затем Печать (чековый принтер), Копировать (для e-mail или WhatsApp), Экспорт (CSV), а после поставки — Доставлено: провести как приход (проводит всё сразу). Галочка вверху показывает и то, что ещё не закончилось, чтобы заказать впрок.
- Варианты выбора: у группы вариантов (Настройки → Товары → Варианты выбора) есть кнопка Склад. Укажите для каждого варианта ингредиенты на штуку, напр. Доп. сыр = 1 ломтик сыра, Картофель фри = 150 г картофеля фри. Если вариант выбран, эти ингредиенты списываются за каждую штуку (даже если сам товар не ведёт учёт склада; при сторно они возвращаются). Если ингредиент закончился, вариант на кассе отображается как (закончилось) и его нельзя выбрать.
Заказы у поставщиков
По умолчанию выключено. Включается в Настройки → Остатки → Заказы у поставщиков (только при включённом Вести учёт склада). Выкл. = список заказа работает как обычно.
- Поставщики (вкладка Поставщики): выберите из списка или создайте своего поставщика. В списке есть оптовики и cash & carry (Sligro, Sligro-ISPC/Sligro-M, HANOS, Makro, De Kweker, Horeca Totaal, Van Zon, zegro, Lekkerland), фудсервис (Bidfood и Bidfood Belgium, Solucious, Chefs Culinar, Java, Q-Food, Agora Culinair, VHC Jongens/Kreko/Actifood, Hocras, Van Hoeckel ...), оптовики напитков (De Klok, Henk Smit, Horesca, De Monnik, Hansen, Dranken Geers ...), пивоварни и безалкогольные напитки (Heineken через Sligro, AB InBev/BEES, Alken-Maes, Haacht, Duvel Moortgat, Martens, Coca-Cola, Spadel, Grolsch, Bavaria), поставщики свежих продуктов (Van Gelder, Driessen, FiliusKaas, Bakkers Brigade, Rungis ...), непродовольственные товары (Bunzl, Takeaware, Supplierz), интернет-магазин вин Vinify.nl и платформы заказов (Apicbase, Exact Horeko, Growzer, inOne, Cuisin.io, OrderXL). В списке только поставщики из страны заведения. Если выбрать одного из них, способ заказа, файл и столбцы уже настроены; у каждого поставщика указано, как у него заказывать.
- Для каждого поставщика: номер клиента, заказывать через:
- E-mail: заказ письмом (с таблицей) на e-mail для заказов, при желании с копией, со списком заказа во вложении: CSV, Excel, CSV для Care4Fresh (многие оптовики свежих продуктов), UBL 2.1 Order (Peppol BIS Order), EANCOM ORDERS (D96A в Нидерландах, D01B/HO2C в Бельгии) или cXML. Ответы приходят на e-mail заведения.
- Файл: касса создаёт файл, вы загружаете его в интернет-магазин поставщика (напр. Bunzl Snel bestellen:
artikel;aantal, Takeaware:SKU,Quantity). Разделитель, строка заголовка и столбцы настраиваются (artikel,ean,omschrijving,aantal,eenheid,prijs,totaal; черезartikel=SKUзадаётся своё название заголовка). - Интеграция (cXML): cXML OrderRequest с номером клиента и общим секретом на адрес для заказов поставщика — так же, как закупочные системы отправляют заказы в Sligro, HANOS и Bidfood. Адрес, номер клиента и секрет вы получаете от поставщика (Sligro: koppelingen@sligro.nl). Секрет никогда не возвращается на экран.
- Для обеих интеграций можно также указать имя пользователя и пароль (Basic) и дополнительные заголовки (по одному в строке, например
X-Api-Key: ...). - Выгрузка (SFTP/FTPS): касса сама помещает файл (EANCOM, UBL, CSV, Excel ...) в папку на сервере поставщика — так многие оптовики принимают EDI-заказы. SFTP (SSH), FTPS (явный на порту 21 или неявный на порту 990) или, только в собственной сети, FTP. Вход по паролю или по SSH-ключу (OpenSSH, PEM или PuTTY .ppk; ed25519, ECDSA или RSA). Создать ключ создаёт пару ключей в кассе; открытый ключ вы отправляете поставщику. Проверить подключение выполняет вход и ищет папку. Отпечаток SFTP-сервера фиксируется при первом подключении и затем проверяется (другой сервер пароль не получит); для FTPS с собственным сертификатом вы фиксируете отпечаток сертификата. Дополнительное программное обеспечение не требуется.
- Печать: заказ на чековом принтере, чтобы передать его по телефону.
- Пароли, ключи, токены и заголовки никогда не возвращаются на экран (оставить пустым = сохранить, Удалить = убрать).
- Запросить интеграцию: для поставщика касса составляет e-mail с запросом интеграции (cXML, EDI через SFTP/FTPS, UBL/Peppol или собственный API поставщика) с данными заведения (название, адрес, номер НДС, номер клиента, GLN) и тем, что требуется; для EDI — с открытым ключом. Отредактируйте и отправьте; копия и ответы приходят на e-mail заведения. Дата запроса указывается у поставщика. Для Sligro запрос уходит на koppelingen@sligro.nl, иначе укажите адрес вашего менеджера по работе с клиентами.
- Собственный поставщик (не из списка) умеет всё, кроме того, что должен предоставить сам поставщик: e-mail, файл и печать работают всегда; интеграция или выгрузка — только с данными этого поставщика.
- Дни заказа и доставка: дни заказа, крайнее время, срок доставки (желаемая дата доставки в заказе) и минимальная сумма заказа. Автоматически: в дни заказа начиная с этого времени касса сама подготавливает заказ как черновик (вы его проверяете) или сразу отправляет его (по e-mail, выгрузкой или через интеграцию; ниже минимальной суммы заказа — только подготовка черновика). Один раз в день на поставщика.
- По товару (Настройки → Товары → (товар) → Остатки, в разделе По товару) и по ингредиенту: Заказывать у (поставщик), номер для заказа у этого поставщика, EAN, в упаковке (ящик по 24 = 24), название упаковки и закупочная цена за упаковку. Уровень оповещения — момент для заказа; Пополнять до — сколько должно быть после пополнения.
- Заказы поставщикам (вкладка Заказы поставщикам):
- Предлагаемый заказ по каждому поставщику: всё, что на уровне оповещения или ниже. Уже заказанное и ещё не поступившее (в пути) учитывается, чтобы вы ничего не заказали дважды. Предложение = пополнять до − остаток − в пути (без Пополнять до: до уровня оповещения), с округлением вверх до целых упаковок. Измените количества и нажмите Создать заказ.
- Сначала заказ подготовлен как черновик: количества, отдельные строки (без товара, напр. салфетки), примечание и дату доставки ещё можно изменить. Затем Отправить (способом поставщика или в этот раз иначе). Если не удалось (напр. поставщик отклонил), рядом указывается причина, и можно попробовать снова.
- Получено: по каждой строке полученное количество (уже заполнено заказанным количеством); остатки увеличиваются по упаковкам (2 ящика по 24 = 48), а заказ отображается в истории.
- Каждый файл (CSV, Excel, UBL, EANCOM, cXML) можно также скачать отдельно.
- Отправленные, неудавшиеся, полученные и отменённые заказы записываются в журнал. Обычный Список заказа продолжает работать; если у товара указан поставщик из списка, товар отображается там под его названием.
Управление отзывами
Чтение отзывов из Google и Trustpilot и ответы на них прямо в кассе. Включается в разделе Настройки → Баллы и отзывы → Управление отзывами (по умолчанию выключено, тогда этого нигде не видно). Чтение и ответы: Отчёт → Отзывы (право Читать отзывы и отвечать на них, по умолчанию есть и у менеджера). Если отключить функцию, подключения и отзывы сохранятся.
- Затем каждому заведению достаточно нажать Подключить Google и войти в собственный аккаунт Google профиля компании. Ключ Places можно настроить и централизованно (расходы тогда несёт поставщик). Trustpilot настраивается для каждого заведения: у каждого заведения свой аккаунт Trustpilot Business (API входит в платную подписку), из которого берутся ключ, секрет и business user ID. В кассе у каждого способа указано "Кто этим занимается?".
- Приложение поставщика (через портал клиента): если Google-приложение и/или Trustpilot-приложение поставщика есть в портале клиента (см. README в horecapos-portaal, "Reviews: apps van de leverancier"), администратор в разделе Вход и ключи выбирает Приложение поставщика (по умолчанию для нового подключения, если в портале есть приложение). Заведение нажимает Подключить Google или Войти через Trustpilot и входит под собственным аккаунтом; касса сама ждёт завершения входа (каждые 3 секунд, не более 15 минут) и один раз забирает tokens из портала. Обновление тоже идёт через портал. Client-ID, secret или API-ключ в кассе не нужны; для Trustpilot нужны домен и, для ответов, business user ID. Публичный Trustpilot тогда читает отзывы через ключ портала. Требуются
PORTAAL_URLиPORTAAL_SLEUTEL. Своё приложение или API-ключ работает, как описано ниже. - Кому принадлежат отзывы: они остаются в собственном профиле компании Google и на собственной странице Trustpilot заведения, а касса хранит их только в собственной базе данных кассы. Ответы появляются от имени заведения. Портал только передаёт вход (в памяти, не более 15 минут, забрать можно один раз) и не хранит ни отзывов, ни tokens; название приложения поставщика видно только на экране согласия.
- Зарегистрироваться самостоятельно: у каждой платформы есть ссылка, чтобы самому создать профиль компании Google (business.google.com/create) или аккаунт Trustpilot Business (business.trustpilot.com), а у Trustpilot — ещё и ссылка на тарифы (business.trustpilot.com/plans). Регистрация и оплата происходят на самой платформе; API для этого нет.
- Затем нажмите Подключить Google и войдите в аккаунт, который управляет профилем компании. Один филиал в профиле = выбирается сразу; несколько = выбор в кассе.
- Google Places (только чтение): с Place ID и API-ключом Places API (или
GOOGLE_PLACES_API_KEY): средняя оценка, число отзывов и 5 самых релевантных отзывов. Отвечать так нельзя. - Trustpilot Business (чтение и ответы): API-ключ и API-секрет приложения в Trustpilot Business (Integrations → API; или
TRUSTPILOT_API_KEYиTRUSTPILOT_API_SECRET), домен заведения (касса сама найдёт business unit) и, для ответов, business user ID того, кто отвечает. - Trustpilot публичный (только чтение): только API-ключ.
- Касса получает отзывы каждые 30 минут (и сразу после подключения; Получить сейчас). Адрес эл. почты и номер заказа гостя (которые передаёт Trustpilot) касса не хранит.
- Отчёт → Отзывы: средняя оценка, количество по звёздам, без ответа и непрочитанные; фильтры по платформе, звёздам, без ответа и непрочитанным. У каждого отзыва: Ответить (не более 4000 символов; ответ увидят все), Изменить ответ, Удалить ответ и Прочитано. Новый или изменённый отзыв считается непрочитанным. В журнал записываются review_beantwoord и review_antwoord_weg.
- После отключения полученные отзывы сохраняются.
SMS- и e-mail-маркетинг
Сообщения клиентам с картой лояльности, которые дали на это согласие. Без карты лояльности ни то, ни другое включить нельзя.
- Согласие по каждому клиенту и каналу: у нового клиента на кассе есть галочки "Клиент хочет получать акции по SMS" и "... по e-mail" (по умолчанию выключены). В разделе Отчёт → Клиенты вы видите и меняете согласие (с датой, когда оно дано) и день рождения (только день и месяц). Отписка: снимите галочки и сохраните.
- Меню обновляется сразу: если вы включаете или выключаете маркетинг или карту лояльности, касса в течение нескольких секунд снова отправляет меню в интернет-магазин (только если что-то изменилось), чтобы галочка сразу появилась или исчезла.
- Согласие через интернет-магазин: если у заведения есть интернет-магазин, при оформлении заказа есть галочка "Я хочу получать предложения по e-mail/SMS" (только включённые каналы; по умолчанию выключена). Когда приходит такой заказ, касса ищет клиента по номеру телефона (иначе по адресу e-mail), при необходимости создаёт его и сохраняет согласие с датой. Недостающий номер или адрес у существующего клиента дополняется; в журнале появляется klant_toestemming с источником webshop.
- Отчёт → Маркетинг (право Управление картой лояльности): вверху указано, сколько клиентов дали согласие на SMS и на e-mail.
- Акции (разовые): название, SMS или e-mail, (тема,) текст с
{naam},{zaak}и{punten}, и при желании только клиенты, которые давно не приходили или имеют не меньше стольких баллов. Просмотр показывает, скольким клиентам уйдёт сообщение, текст в том виде, в каком его получит клиент, и число SMS на клиента. Отправить тест на свой номер или адрес. Затем Отправить: касса отправляет в фоне (не более 1000 за раз) и считает, что отправлено и что не удалось. Никто не получает одну и ту же акцию дважды; если касса остановится на полпути, Продолжить отправку продолжит с тех, кто ещё ничего не получил. - Отправка через Mailchimp или Klaviyo (при подключении к выбранному списку, см. ниже): для акции по e-mail в поле Отправлять через выберите кассу (собственный почтовый сервер, как описано выше) либо Mailchimp или Klaviyo. Тогда касса сначала обновляет список (отписки, баллы), создаёт там кампанию ровно для выбранных клиентов, которые есть в списке (Mailchimp: постоянная группа в audience; Klaviyo: отдельный список для акции), и отправляет её от отправителя по умолчанию для audience или аккаунта.
{naam}и{punten}Mailchimp/Klaviyo подставляет для каждого клиента; ссылка для отписки от сервиса стоит внизу. Нет лимита 1000 за раз и нет персонального промокода ({code}). Если не получилось, акция остаётся черновиком с сообщением об ошибке. Вкладка Маркетинг доступна и тогда, когда активна только интеграция (тогда только акции через Mailchimp/Klaviyo; Отправить тест работает через почтовый сервер кассы). Автоматические сообщения касса всегда отправляет сама; в Mailchimp/Klaviyo их создают как Customer Journey или Flow. Ключ Klaviyo: также права на запись для Campaigns и Templates (если вы уже входили — войдите заново). - Как push-уведомление через интернет-магазин (если в управлении интернет-магазином включены Push-уведомления с предложениями): в поле Отправлять через выберите Push-уведомление (интернет-магазин как приложение), с заголовком (не более 60 символов) и коротким текстом (не более 200 символов; подставляется только
{zaak}, так как интернет-магазин не знает, кто гость). Касса отправляет акцию через портал управления в интернет-магазин, а тот отправляет её гостям, которые включили там Предложения в уведомлениях; нажатие открывает меню интернет-магазина. Через несколько секунд у акции появится, сколько уведомлений дошло. Не более 3 в день, вместе с тем, что заведение отправляет из управления интернет-магазином; иначе акция остаётся черновиком с указанием причины. Вкладка «Маркетинг» доступна и тогда, когда включено только это (без карты лояльности и email-маркетинга). Без кода скидки и отбора (дни, баллы); для проверки включите на своём телефоне в интернет-магазине Предложения в уведомлениях. - Автоматически: поздравление с днём рождения (в день рождения, раз в год) и "мы по вам скучаем" (через столько дней без визита, один раз за каждое отсутствие клиента). Вкл./выкл. для каждого сообщения; отправляются только днём (10:00–20:00).
- Персональный промокод (необязательно, для каждого сообщения или акции; только если Промокоды включены в Настройки → Заведение): каждый клиент получает свой код, напр.
TERUG-7K4Q2M(день рожденияJARIG-…, акцияACTIE-…), в процентах или фиксированной суммой, при желании с минимальной суммой заказа, одноразовый, действует заданное число дней после отправки (по умолчанию 30), на кассе и/или в интернет-магазине. Вставьте{code}и{geldig}в текст там, где нужно; иначе касса добавит под сообщением "Uw kortingscode: … (10% korting, aan de kassa of in de webshop, geldig t/m …)". Просмотр и Отправить тест показывают пример кода (TERUG-VOORBEELD, не работает). Если отправка не удалась, код не создаётся. В акции видно, сколько кодов выдано и использовано. - Отписка указана под каждым сообщением: в SMS "Отписаться? Позвоните ... или скажите при следующем визите", в e-mail ссылка для отписки на e-mail заведения (а также кнопка Отписаться в Gmail и Outlook). Ответ на письмо приходит в заведение.
- Конфиденциальность (GDPR): только клиенты с согласием и с номером или адресом; в журнале нет номеров и адресов, но по каждой акции видно, сколько отправлено и сколько не удалось. Если вы удалите клиента, он исчезнет и из списка рассылки.
- Расходы: SMS отправляются через ваш аккаунт CM.com (больше 160 символов = больше SMS на клиента). У Gmail и других почтовых серверов есть дневной лимит; при большом числе клиентов отправляйте частями.
Чаевые по сотрудникам
В разделе Настройки → Заведение → Чаевые (только если включено "Показывать кнопки чаевых при расчёте") выберите, как чаевые по сотрудникам отображаются в промежуточном отчёте (X), Z-отчёте (чек и e-mail) и Выручке за период (также в CSV):
| Вариант | Распределение |
|---|---|
| Выкл. (по умолчанию) | только общая сумма чаевых, как обычно |
| Каждому свои чаевые | чаевые со счетов, которые сотрудник рассчитал сам |
| Общий котёл по часам | все чаевые вместе, по отработанным (отмеченным) часам за этот период (нужна отметка прихода и ухода; никто не отмечался = поровну) |
| Общий котёл поровну | все чаевые вместе, поровну между теми, кто был на смене (без отметок: кто пробивал или рассчитывал заказы) |
Оставшиеся копейки (центы) достаются тому, кто ближе всего к следующему центу, чтобы итог всегда сходился. Это только обзор: касса ничего не выплачивает (это можно сделать через "Изъятие из ящика"). Старые Z-отчёты остаются без изменений.
Z-отчёт по e-mail
Один раз укажите e-mail администратора в Настройки → Заведение → Отправлять Z-отчёт на (несколько адресов — через запятую, макс. 3). После Закрыть день Z-отчёт будет автоматически отправляться на этот адрес, помимо печатного чека. Пусто = не отправлять, как обычно.
- Отправка идёт в фоновом режиме, чтобы медленный почтовый сервер не задерживал закрытие дня.
- Не отправилось или нужно ещё раз: Отчёт → Прошлые Z-отчёты → (отчёт) → Отправить снова (с пометкой КОПИЯ).
Обзор дня (необязательно)
Если в поле Отправлять Z-отчёт на указан адрес, под ним есть флажок С кратким обзором дня в начале письма (по умолчанию выключено). Вкл. = в начале письма с Z-отчётом несколько строк простым языком, только из собственных данных кассы (без ИИ, ничего не передаётся наружу):
- выручка, чеки и гости и средний чек по сравнению с тем же периодом неделей раньше (в процентах); если тогда ничего не было, это указывается;
- 5 самых продаваемых товаров и что бросается в глаза: товары, которых продано как минимум на 3 больше или меньше, чем на прошлой неделе;
- количество сторно (по сравнению с прошлой неделей) и самый загруженный час (чеки и выручка).
Сам Z-отчёт (чек и письмо) остаётся точно таким же. Пример за сегодня показывает обзор с последнего закрытия дня до текущего момента. Обзор на нидерландском языке, как и письмо с Z-отчётом.
Дашборд
Вкладка Дашборд в разделе Отчёт (право Выручка за период), только просмотр:
- Выручка по часам в виде графика: выбранный день (синий) рядом с тем же днём прошлой недели (серый). Сегодняшний день сравнивается с прошлой неделей до того же времени, чтобы процент был честным. Другой день выбирается кнопками ◀ ▶ или по дате.
- Плитки: выручка (± % к прошлой неделе), количество чеков и средний чек, средние траты на гостя (только в зале; навынос/доставка не учитываются) за этот день и за выбранный период.
- Топ-10 товаров и самые загруженные часы за последние 7, 28 или 90 дней. Загруженные часы — это тепловая карта «день недели × час» (средняя выручка за рабочий день) с тремя самыми загруженными часами над ней; удобно для составления графика смен.
Проданные подарочные сертификаты не считаются выручкой, а скидки и заголовки меню не попадают в топ-10 (как и в других отчётах). День длится с 00:00 до 24:00.
Дополнительные отчёты
Три дополнительные вкладки в Отчёт, каждая включается отдельно в Настройки → Заведение → Управление и отчёты → Дополнительные отчёты (по умолчанию выключено: тогда вкладки нет). Для них нужно то же право, что и для Выручка за период, и они только для просмотра. Период: эта неделя, прошлая неделя, этот месяц, прошлый месяц, последние 90 дней, этот год или свой выбор (не более чуть больше года).
- Меню-инжиниринг: для каждого товара — как часто он продаётся (доля во всех проданных штуках) в сравнении с тем, сколько он приносит за штуку (маржа = цена продажи без НДС минус себестоимость). Каждый товар получает категорию: Звезда (популярный и с большой маржой: оставить как есть), Рабочая лошадка (популярный, маленькая маржа: немного поднять цену или удешевить приготовление), Загадка (продаётся мало, большая маржа: лучше показать) и Собака (продаётся мало, маленькая маржа: убрать из меню или заменить). Популярный = не менее 70% от равной доли; большая маржа = не меньше средней маржи на проданную штуку. Себестоимость берётся из Apicbase (Настройки → Рецептуры), иначе из закупочной цены товара (закупочная цена за упаковку, делённая на количество в упаковке), иначе из рецепта из ингредиентов с закупочной ценой (Остатки). Товары без себестоимости показаны отдельно внизу. По желанию — по группе товаров (
?groep=). - Акции и коды: по каждому промокоду, по каждой акции из Маркетинг (персональные коды вместе) и по каждому happy hour: сколько раз использовано (чеки; для happy hour также штуки), какая скидка, выручка и средний чек.
- Потери: что списано с остатков (Настройки → Остатки, Списать (−)), по причине (заглавные буквы и пробелы не важны) и по товару или ингредиенту, со стоимостью по себестоимости; а также что отменено уже после отправки на кухню или в бар, с продажной стоимостью и себестоимостью.
Скидки
Менеджер или администратор видит на экране заказа рядом с итогом кнопку % Скидка:
- на весь чек или на одну позицию;
- в процентах (10, 15, 20, 25, 50, 100% = бесплатно, или своё значение) или фиксированной суммой;
- всегда с причиной (Персонал, Постоянный гость, Жалоба, Акция, Для себя или свой вариант).
Скидка выводится отдельной строкой в чеке ("Скидка 10%", под ней причина) с той же ставкой НДС, чтобы итог и расшифровка НДС сходились. При скидке на весь чек она распределяется по ставкам НДС. Убрать: нажмите на сумму строки скидки. Если позиция с собственной скидкой отменяется, скидка тоже отменяется. Если убрать товар из чека с процентной скидкой на весь чек, касса пересчитывает скидку для оставшегося (в Бельгии UC226); фиксированная сумма остаётся и при расчёте снова распределяется по позициям. Если из-за скидки 100% платить нечего, завершите заказ кнопкой "Закрыть (к оплате 0)". Скидки отражаются в журнале, а также в X/Z-отчёте и отчёте за период как "в т.ч. скидка". При возврате чека со скидкой скидка учитывается пропорционально.
Промокоды (по желанию)
Коды со скидкой на весь чек, например для акции (ZOMER10). Включаются в Настройки → Заведение → Промокоды (по умолчанию выключено); сами коды создаются в Настройки → Промокоды (право Управление товарами):
- скидка в процентах или фиксированной суммой, при желании с минимальной суммой заказа, сроком действия с/по и не более стольких раз (пусто = без ограничений);
- для каждого кода: на кассе и/или в интернет-магазине (касса передаёт коды вместе с меню; использования считаются для кассы и интернет-магазина вместе).
На экране заказа есть кнопка Промокод (вводить код может любой; код заранее создан заведением). Скидка появляется в чеке строкой "Промокод CODE", распределённой по ставкам НДС; один код на чек, и нельзя, если уже есть (частичная) оплата. Если удалить строку или заказ отменён, использование больше не считается. Удаление использованного кода выключает его (отчёты остаются верными). Всё записывается в журнал (Промокод). Код: lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx.
Они не отображаются в списке Настройки → Промокоды (но количество по каждой акции видно в Отчёт → Маркетинг) и передаются в интернет-магазин, пока действительны и не использованы.
Отчёты и закрытие дня
Кнопка Отчёт в верхней панели:
- Промежуточный отчёт (X): выручка, НДС, способы оплаты, по группам и денежный ящик с момента последнего закрытия дня. Можно распечатать. Ничего не закрывает.
- Закрыть день (Z) (менеджер или администратор): пересчитайте денежный ящик (показывается разница с разменом + наличными), введите размен на следующий день и закройте. Z-отчёт получает сквозной номер, сохраняется и печатается на чековом принтере. Невозможно, пока есть открытые заказы. Опционально: Подсчёт по монетам и купюрам (помощник подсчёта) сам заполнит подсчитанную сумму; подсчёт по монетам/купюрам тогда тоже попадёт в Z-отчёт. Ввести итог вручную можно, как и раньше.
- Денежный ящик (менеджер или администратор, опционально):
- Изъятие из ящика (инкассация в банк, расход, выплата чаевых) или внесение в ящик (размен) с суммой и причиной. Ящик открывается и печатается квиток со строкой для подписи, который хранится вместе с деньгами (можно отключить). Это учитывается в сумме ожидается в ящике и отображается отдельной строкой в X- и Z-отчёте.
- Ввести или исправить размен на сегодня (обычно его вводят при закрытии дня на следующий день).
- Открыть ящик без продажи, с указанием причины.
- Всё попадает в журнал. Если вы этим не пользуетесь, закрытие дня работает точно так же, как раньше (размен + наличные = ожидается в ящике).
- Под выручкой указано количество гостей (персон в оплаченных заказах) и среднее на гостя, также в печатном X/Z-отчёте.
- Выручка за период (менеджер или администратор): сегодня, вчера, эта/прошлая неделя, этот/прошлый месяц, этот год или свой период «с–по». Показывает выручку, НДС, способы оплаты, чаевые, гостей, группы товаров, по дням и по сотрудникам. Кнопка Экспорт (Excel/CSV) создаёт файл для бухгалтера (точка с запятой и запятая в десятичных числах, сразу открывается в нидерландском Excel).
- Прошлые Z-отчёты: список с выручкой и кассовой разницей; можно открыть и распечатать копию (с пометкой "КОПИЯ").
Экспорт в бухгалтерию
Отчёт → Выручка за период → Экспорт для бухгалтерии (журнал) (право Выручка за период) создаёт CSV с одной журнальной проводкой за каждый день, готовый к импорту в e-Boekhouden, Exact, SnelStart, Twinfield и т.п. (через их импорт CSV/мемориальных проводок), или один из форматов ниже (UBL, XAF и готовые форматы для 14 программ).
Один документ в день (KASSA-JJJJMMDD), который всегда сбалансирован (дебет = кредит):
| Сторона | Что |
|---|---|
| Дебет | поступления по способам оплаты (наличные, карта, подарочный сертификат, онлайн, прочее), включая чаевые |
| Кредит | выручка по ставкам НДС (без НДС) и НДС к уплате по каждой ставке |
| Кредит | чаевые (к выплате персоналу, не выручка) |
| +/- | разница от округления (округление наличных до 5 центов) |
| +/- | внесение/изъятие из ящика (управление кассой) на транзитные счета, а также кассовая разница из Z-отчёта |
Возвраты и скидки уже учтены в чеках и уменьшают выручку. Столбцы: Datum; Boekstuk; Dagboek; Rekening; Omschrijving; Debet; Credit; Btw-code; Btw-% (точка с запятой, запятая в десятичных числах). После скачивания касса сообщает, есть ли дни, которые не сбалансированы или имеют разницу больше, чем от округления.
Рядом с кнопкой выбирается формат (выбор запоминается в браузере). Тот же журнал, но оформленный так, чтобы программа могла сразу его импортировать. Список показывает только форматы для страны заведения (Настройки → Заведение): сначала стандарты (CSV, UBL, XAF), затем программы по алфавиту:
| Формат | Файл | Загрузка в программу |
|---|---|---|
| Общий (CSV) | journaal_…csv | любая программа с импортом CSV/мемориальных проводок (сопоставление столбцов) |
| UBL 2.1 / Peppol (XML), NL и BE | journaal_…_ubl.xml (несколько дней: .zip) | за каждый день счёт "дневные поступления" на Kassaverkopen (уже оплачен) по Peppol BIS Billing 3.0, со строкой на каждую ставку НДС и счётом выручки в AccountingCost; только выручка и НДС (способы оплаты, чаевые, округление, денежный ящик и расхождение в кассе в счёт не входят). Для загрузки, среди прочего, в Adsolut, Billit, BUNNI, DigiBoox, Expert/M, Moneybird, Popsy, Rompslomp, Storecove и TriFact365; не для отправки через сеть Peppol. Название, номер плательщика НДС и адрес берутся из Настройки → Заведение |
| XML Auditfile Financieel (XAF 4.0), NL | journaal_…_xaf.xaf | auditfile налоговой службы Нидерландов (Belastingdienst) (XSD XmlAuditfileFinancieel4.0): один файл за период, главная книга, коды НДС, периоды и за каждый день мемориальная транзакция; импортируется, среди прочего, в Caseware, Exact Reeleezee и Visma Cash |
| AccountView (XML), NL | journaal_…_accountview.xml | XML-проводки (VFPData, один transact на каждую строку проводки с dj_code, period, inv_date, inv_nr, acct_nr, trn_desc и amount: дебет положительный, кредит отрицательный), по одному документу в день в мемориальном журнале; загрузка через определение импорта (Document → Importeren → Importdefinitie aanmaken, тип XML), имена полей — те же, что в самом AccountView, поэтому достаточно один раз сопоставить 1-к-1. Попросите проверить первый импорт |
| AFAS Profit (XML) | journaal_…_afas.xml | XML для UpdateConnector FiEntries (финансовые операции), одна проводка за день с годом, периодом, администрацией и журналом; в Profit загружается через Импорт → XML; укажите номер администрации (по умолчанию 1) |
| Asperion (CSV), NL | journaal_…_asperion.csv | формат FMUTA (Extra → Import financiële mutaties), за каждый день строка заголовка и строки проводок; определение импорта настраивает Asperion через службу поддержки |
| Дневная сводка (HTML), NL и BE | journaal_…_dagstaat.html | читаемая дневная сводка за каждый день (выручка по ставкам НДС, способы оплаты, чаевые, расхождение в кассе) и итоги; печать в PDF или отправка по почте, для программ без импорта (Accountable, Dext, Dexxter, Jortt, Kleisteen, MoneyMonk) |
| e-Boekhouden.nl (CSV) | journaal_…_eboekhouden.csv | Дата; Документ; Описание; Счёт главной книги; Сумма (дебет положительный, кредит отрицательный); код НДС GEEN (НДС уже на счетах НДС); Импорт → Операции, вид мемориальная проводка |
| Exact Online (XML) | journaal_…_exact.xml | eExact-XML (тема GLTransactions): за каждый день одна мемориальная проводка (тип 90) в журнале; Импорт/экспорт → Импорт XML |
| InformerOnline (TXT), NL | journaal_…_informer.txt | мемориальные проводки с разделителем-табуляцией (Geavanceerd → Memoriaal → uploaden); журнал должен быть номером 1–99 (иначе 90) |
| KING ERP (XML), NL | journaal_…_king.xml | KING_JOURNAAL: один пакет проводок (не окончательный) с журнальной проводкой за каждый день |
| KOMAS (CSV), NL | journaal_…_komas.csv | свободный формат KOMAS (0401 Importeren journaalposten): Datum; Grootboek; Omschrijving; Bedrag |
| Odoo (CSV), NL и BE | journaal_…_odoo.csv | Accounting → Journal Entries → Import records; журнал и счёт по названию или коду |
| Sage BOB 50 (Excel), BE | journaal_…_bob.xlsx | Importation de données externes → Opérations diverses (сопоставить столбцы один раз) |
| SAP Business One (ZIP), NL и BE | journaal_…_sapb1.zip | Data Transfer Workbench, Journal Entries: JournalEntries.csv и JournalEntries_Lines.csv |
| SnelStart (CSV) | journaal_…_snelstart.csv | Дата; Документ; Описание; Счёт главной книги; Дебет; Кредит (дд-мм-гггг, десятичная запятая, без BOM); импорт мемориальных проводок, журнал выбирается при загрузке |
| Twinfield (XML) | journaal_…_twinfield.xml | проводки журнала как черновик (destiny="temporary"), бухгалтер проводит их окончательно; укажите код администрации (пусто = администрация, в которую вы импортируете) |
| Winbooks (CSV), BE | journaal_…_winbooks.csv | K_DOC.CSV, за каждый день один документ в журнале (Winbooks нумерует сам) |
| Yuki (XML) | journaal_…_yuki.xml | Journal-XML (GeneralJournal), одна мемориальная проводка за день, та же структура, что и у прямой интеграции; ID администрации необязателен |
Обзор: какая бухгалтерская программа каким способом
По сегментам, по алфавиту. NL/BE = в какой стране работает программа: в Настройки → Бухгалтерия → Бухгалтерская программа вы видите только программы для страны заведения (нидерландские программы не работают в Бельгии и наоборот). Онлайн = касса сама проводит каждый день (выбор в Настройки → Бухгалтерия → Бухгалтерская программа); по запросу = API есть, но сначала требуется регистрация партнёра или одобрение поставщика (сообщите нам). Файл = формат в Экспорт для бухгалтерии. Где возможны оба варианта, можно использовать оба. Список находится в packages/shared/src/boekhoudcatalogus.ts и также показывается в Настройки → Бухгалтерия.
| Программа | NL | BE | Онлайн | Файл | Примечание |
|---|---|---|---|---|---|
| Малый и средний бизнес и самозанятые | |||||
| Accountable | – | ✓ | – | Дневная сводка (HTML, для PDF или почты) | |
| AccountView (Visma) | ✓ | – | по запросу | AccountView (XML), Общий (CSV) | Файл: XML-проводки для определения импорта (Document → Importeren); общий CSV тоже можно загрузить через определение импорта. Онлайн через API AccountView.Net по запросу в AccountView. |
| Acumulus | ✓ | – | ✓ | – | Онлайн как оплаченный счёт на продажу за каждый день, со строкой на каждую ставку НДС. |
| AFAS Profit | ✓ | – | ✓ | AFAS Profit (XML) | |
| Asperion | ✓ | – | по запросу | Asperion (CSV) | Онлайн после регистрации в качестве API-партнёра у Asperion. |
| Billit | – | ✓ | по запросу | UBL 2.1 / Peppol (XML) | Загрузка UBL через Fast input; онлайн после одобрения Billit. |
| BUNNI | ✓ | – | – | UBL 2.1 / Peppol (XML) | Публичной документации по API пока нет. |
| Dexxter | – | ✓ | – | Дневная сводка (HTML, для PDF или почты) | |
| DigiBoox (Visma DigiBTW) | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| e-Boekhouden.nl | ✓ | – | – | e-Boekhouden.nl (CSV) | Также для бывших клиентов Ficsus. |
| Exact Online | ✓ | ✓ | ✓ | Exact Online (XML) | |
| Exact Reeleezee | ✓ | – | – | XML Auditfile Financieel (XAF 4.0) | |
| Horus | – | ✓ | ✓ | – | |
| InformerOnline | ✓ | – | – | InformerOnline (TXT) | |
| Jortt | ✓ | – | – | Дневная сводка (HTML, для PDF или почты) | Без импорта: проведите дневную выручку как доход с дневной сводкой во вложении. |
| KING | ✓ | – | по запросу | KING ERP (XML) | Онлайн после регистрации партнёра у KING Software. |
| Kleisteen | ✓ | – | – | Дневная сводка (HTML, для PDF или почты) | |
| KOMAS (Adfinis) | ✓ | – | – | KOMAS (CSV) | |
| Minox | ✓ | – | по запросу | – | Онлайн после партнёрской интеграции через Minox. |
| Moneybird | ✓ | – | ✓ | UBL 2.1 / Peppol (XML) | |
| MoneyMonk | ✓ | – | – | Дневная сводка (HTML, для PDF или почты) | В 2026 году у MoneyMonk появится API для интеграций. |
| Octopus | – | ✓ | по запросу | – | Онлайн после запроса software house ID у Octopus. |
| Popsy / Allegro | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Rompslomp | ✓ | – | – | UBL 2.1 / Peppol (XML) | |
| Sage BOB 50 | – | ✓ | – | Sage BOB 50 (Excel) | |
| Silvasoft | ✓ | ✓ | ✓ | – | Онлайн как проводка продажи за каждый день, со строкой на каждую ставку НДС; способы оплаты, чаевые и расхождение в кассе не передаются. |
| SnelStart | ✓ | – | ✓ | SnelStart (CSV) | |
| Twinfield | ✓ | – | ✓ | Twinfield (XML) | |
| Visma Cash | ✓ | – | по запросу | XML Auditfile Financieel (XAF 4.0) | API с ключом из CASHWeb; формат записей для проводок ещё уточняется. |
| Visma eAccounting | ✓ | – | по запросу | – | Онлайн после одобрения Visma (регистрация партнёра). |
| Winbooks | – | ✓ | по запросу | Winbooks (CSV) | |
| Wolters Kluwer Adsolut | – | ✓ | по запросу | UBL 2.1 / Peppol (XML) | UBL со счётом выручки в каждой строке; включите в Adsolut "grootboekrekening verwerken bij verkopen". |
| Wolters Kluwer Expert/M | – | ✓ | – | UBL 2.1 / Peppol (XML) | |
| Yuki | ✓ | ✓ | ✓ | Yuki (XML) | |
| Международные | |||||
| QuickBooks Online | ✓ | ✓ | ✓ | общий CSV | Нет нидерландской или бельгийской версии: проверьте настройки НДС. |
| Xero | ✓ | ✓ | ✓ | общий CSV | |
| Zoho Books | ✓ | ✓ | ✓ | общий CSV | |
| Крупные компании и сети | |||||
| Exact Globe+ | ✓ | ✓ | – | Exact Online (XML) | Тот же XML, что и для Exact Online; дайте проверить первый импорт. |
| Microsoft Dynamics 365 Business Central | ✓ | ✓ | ✓ | – | |
| Odoo | ✓ | ✓ | ✓ | Odoo (CSV) | |
| Oracle NetSuite | ✓ | ✓ | по запросу | общий CSV | |
| SAP Business One | ✓ | ✓ | ✓ | SAP Business One (ZIP) | |
| Unit4 ERPx | ✓ | ✓ | – | общий CSV | |
| Платформы и агрегаторы | |||||
| Apicbase | ✓ | ✓ | по запросу | – | Продажи по чекам для склада и food cost: интеграция в Настройки → Рецептуры (не как бухгалтерская программа). |
| Caseware | ✓ | ✓ | – | XML Auditfile Financieel (XAF 4.0) | |
| Combidesk | ✓ | – | по запросу | – | Combidesk сам создаёт и обслуживает интеграцию (среди прочего с Exact, Moneybird, SnelStart и Twinfield); по запросу как партнёр. |
| Dext | ✓ | ✓ | – | Дневная сводка (HTML, для PDF или почты) | Отправьте дневную сводку (PDF) на ваш адрес Dext. |
| Jamix | ✓ | ✓ | по запросу | – | Продажи для остатков и food cost через интерфейс JAPI от Jamix; индивидуальная разработка по запросу у Jamix. |
| Omniboost | ✓ | ✓ | по запросу | – | Через партнёрскую программу Omniboost передаёт данные во многие бухгалтерские и гостиничные системы. |
| Storecove (Peppol) | ✓ | ✓ | по запросу | UBL 2.1 / Peppol (XML) | |
| TriFact365 | ✓ | – | – | UBL 2.1 / Peppol (XML), Дневная сводка (HTML, для PDF или почты) | |
| Любая другая программа | ✓ | ✓ | – | общий CSV, UBL или XAF (NL) |
Попросите бухгалтера проверить первый импорт. Формат описан в packages/shared/src/journaalexport.ts (с тестами).
Настройки → Бухгалтерия (право Настройка заведения, оплаты и принтеров): код журнала (по умолчанию MEM) и счёт главной книги для каждой статьи. Пусто = пример счёта (NL: 8000/8010/8020 выручка, 1500/1510 НДС, 1000 касса, 1100 карта; BE: 7000xx выручка, 451000 НДС, 570000 касса). Пусть бухгалтер укажет настоящие счета.
Интеграция с бухгалтерской программой
Онлайн-интеграции с Acumulus, AFAS Profit, Microsoft Dynamics 365 Business Central, Exact Online, Horus, Moneybird, Odoo, QuickBooks Online, SAP Business One, Silvasoft, SnelStart, Twinfield, Xero, Yuki и Zoho Books. После каждого дня касса проводит тот же журнал, что и в экспорте выше (выручка и НДС по ставкам, способы оплаты, чаевые, округление, денежный ящик и расхождение в кассе) мемориальной проводкой в выбранной программе, с журналом и счетами главной книги из Настройки → Бухгалтерия. Включено всегда не более одной программы.
- Список разделён по сегментам (малый и средний бизнес и самозанятые, международные, крупные компании и сети) и показывает только программы, которые работают в стране заведения; сервер отклоняет программу из другой страны (400) и не проводит в неё (409). Сразу под ним администратор получает именно поля этой программы; подключение и список проведённых дней находятся под счетами главной книги, а под ними — обзор всех программ для этой страны. Если при обновлении были включены две (в более старой версии это было возможно), Exact Online остаётся включённым, а другая программа выключается.
| Программа | Страна | Подключение к | Что проводит касса |
|---|---|---|---|
| Acumulus | NL | код контракта, пользователь и пароль API-пользователя | за каждый день оплаченный счёт на продажу со строкой на каждую ставку НДС; об ошибках Acumulus сообщает по почте на ACUMULUS_FOUTMAIL |
| AFAS Profit | NL | среда, токен, администрация | мемориальная проводка (FiEntries) |
| Business Central | NL, BE | тенант, среда, компания, client ID и секрет приложения Microsoft Entra (API.ReadWrite.All) | строки в общем журнале с кодом из поля «Журнал» |
| Exact Online | NL, BE | вход (OAuth, своё приложение: см. Exact Online ниже; Бельгия: start.exactonline.be) | мемориальная проводка в журнале (напр. 90) |
| Horus | BE | вход (OAuth, приложение ниже), при необходимости досье | прочая операция |
| Moneybird | NL | API-токен, при необходимости администрация | мемориальная проводка (general journal document) |
| Odoo | NL, BE | адрес, база данных, пользователь, API-ключ | журнальная проводка в журнале с коротким кодом (напр. MISC) |
| QuickBooks Online | NL, BE | вход (OAuth, приложение ниже; QUICKBOOKS_OMGEVING) | journal entry; счета по номеру |
| SAP Business One | NL, BE | адрес Service Layer, база данных, пользователь, пароль | журнальная проводка (JournalEntries) |
| Silvasoft | NL, BE | пользователь и API-ключ | проводка продажи на контрагента Kassaverkopen, строка на каждую ставку НДС (способы оплаты, чаевые и расхождение в кассе не передаются) |
| SnelStart | NL | ключ интеграции и ключ подписки | мемориальная проводка |
| Twinfield | NL | вход (OAuth, приложение ниже), при необходимости офис | транзакция журнала |
| Xero | NL, BE | вход (OAuth, приложение ниже), при необходимости организация | manual journal; счета по коду |
| Yuki | NL, BE | API-ключ, при необходимости администрация | мемориальная проводка (GeneralJournal) |
| Zoho Books | NL, BE | вход (OAuth, приложение ниже; по умолчанию европейский дата-центр), при необходимости организация | журнальная проводка; счета по коду |
- OAuth (Horus, QuickBooks, Twinfield, Xero, Zoho): один раз зарегистрировать приложение в программе.
- Для ряда программ поля API нельзя полностью подтвердить по публичной документации (в т.ч. Horus, Zoho Books, знак в Business Central и структура в SAP Business One): всегда давайте бухгалтеру проверить первую проводку.
- Exact Online: проводит журнал мемориальной проводкой в выбранной администрации.
- Выбирается в разделе Настройки → Бухгалтерия → Бухгалтерская программа → Exact Online (по умолчанию Выкл.). Бельгия: касса сама использует
start.exactonline.be. - Настройки → Бухгалтерия → Exact Online: Подключить Exact Online открывает вход в Exact; после этого указано, к какой администрации подключена касса. В поле Журнал укажите код мемориального журнала в Exact (напр.
90) и убедитесь, что счета главной книги в Exact существуют. - Когда: сразу после Закрыть день и далее каждый час, за все прошедшие дни (по вчерашний включительно) начиная с Проводить с (по умолчанию день подключения; более ранние дни у бухгалтера уже есть). Каждый день один раз; дни без выручки пропускаются. Провести сейчас можно всегда.
- Ошибки (счёта нет в Exact, день не сходится, нет интернета) показываются с причиной у этого дня; касса повторяет попытку позже, а следующие дни ждут, пока это не получится (так сохраняется правильный порядок). В журнале: "exact_geboekt".
- НДС отражается на счетах главной книги для НДС (без кода НДС, как и в экспорте). Попросите бухгалтера проверить первые проводки.
- Exact: подключение работает, пока касса им пользуется (каждые 10 минут новый токен, каждый раз новый refresh token). Если оно отозвано или слишком долго не использовалось, касса просит Подключить заново. Отвязать удаляет токены; проведённое остаётся.
- Выбирается в разделе Настройки → Бухгалтерия → Бухгалтерская программа → Exact Online (по умолчанию Выкл.). Бельгия: касса сама использует
- AFAS Profit: номер среды (напр.
12345; рабочая, тестовая или приёмочная), токен app-connector с UpdateConnector FiEntries и номер администрации (по умолчанию 1). Журнал = код мемориального журнала в AFAS (напр.90). - Журнал = номер или название мемориального журнала; если мемориальный журнал только один, касса берёт его. Счета главной книги должны быть номерами.
- Twinfield: вход через OAuth. Без этого приложения касса не может подключиться. Касса находит кластер и администрацию (пусто = первая); журнал = код мемориального журнала (напр.
MEMO). Проводит окончательно (destiny="final"). - Yuki: API-ключ администрации (Yuki → Настройки → Веб-сервисы); пустая администрация = первая для этого ключа. Проводит мемориальную проводку (GeneralJournal); Yuki не использует код журнала.
- Когда: сразу после Закрыть день и каждый час, за все прошедшие дни начиная с Проводить с (по умолчанию день подключения; при другой программе снова с этого дня). Каждый день один раз на программу; дни без выручки пропускаются; при ошибке причина указана у этого дня, а следующие дни ждут. Провести сейчас можно всегда. В журнале событий: "boekhoudpakket_geboekt".
- Ключи и токены никогда не показываются на экране (оставьте пустым при повторном подключении = сохранить). В копии кассы на портале проводки не выполняются.
Аудит-файл кассы (XAA)
Для заведений в Нидерландах в разделе Отчёт → Выручка за период рядом с экспортом для бухгалтерии есть кнопка Аудит-файл кассы (XAA): XML Auditfile Afrekensystemen 3.2 налоговой службы Нидерландов (Belastingdienst) и XML Platform (SRA) за выбранный период (не более чем чуть больше года; право Выручка за период). Именно этот файл Belastingdienst рекомендует для передачи данных кассы при проверке или бухгалтеру; правила изложены в документе Handreiking voor een betrouwbaar afrekensysteem (Руководство по надёжной кассовой системе) (docs/xaa).
В файле (auditfile_kassa_<van>_tm_<tot>.xml, схема docs/xaa/XmlAuditfileAfrekensystemen3.2.xsd):
- справочные данные: заведение (название, номер плательщика НДС, адрес), коды НДС, все сотрудники (с ролью и датой создания; плюс
SYSTEEMдля того, что касса делает сама, например интернет-магазин и интеграции) и все товары с их группой; - события: всё из журнала за период (вход и выход, открытие денежного ящика, закрытие дня, изменение настроек и цен, сторно, скидка, возврат, копия чека, приход и уход ...) и открытие кассового дня с разменом, каждое с кодом Belastingdienst (18001 вход, 18003 ящик, 18006 изменение установки, 18008 Z-отчёт, иначе 18999);
- кассовые операции: каждый чек (продажа, возврат и проформа, с номером чека, сотрудником и фискальным статусом, если он не в порядке) со всеми позициями (товар, группа, количество, цена, НДС; также скидки, подарочные карты, заголовки меню и позиции, отменённые до оплаты, — с суммой 0), НДС по ставкам, округление, оплаты по способам оплаты (наличные, карта, подарочная карта, онлайн; чаевые отдельно) и внесение денег в денежный ящик и изъятие из него.
Суммы положительные с C (продажа, поступление) или D (возврат, выплата); время указано по нидерландскому времени со смещением. Все ключи — это id из базы данных без дефисов, поэтому их можно найти в кассе.
Подпись (глава 6 спецификации): если Optimum POS настроил сертификат, аудит-файл подписывается и помещается в конверт (XML Signature), а файл называется …_ondertekend.xml; иначе это простой аудит-файл, о чём касса сообщает при скачивании.
Оплата по счёту
Бизнес-клиенты (компания, которая каждую неделю заказывает обед, отель, клуб) покупают по счёту и платят позже по счёту-фактуре. Включается в Настройки → Счета → Оплата по счёту (только при включённых Счетах; по умолчанию выключено).
- Клиенты: в разделе Отчёт → По счёту вы добавляете бизнес-клиентов с данными для счёта (название, адрес, номер плательщика НДС, номер KvK / номер предприятия, Peppol-ID, e-mail), при желании лимит (сколько максимум может быть не оплачено) и свой срок оплаты (иначе как в настройках счетов), а также нужно ли сразу отправлять счёт.
- Расчёт: способ оплаты По счёту, выберите клиента (видно, сколько уже не оплачено, и лимит). Чек — обычная продажа: выручка и НДС за этот день, в Бельгии как обычно через «чёрный ящик», на чеке «По счёту». Касса сразу создаёт счёт (UBL/Peppol и для печати) на оставшуюся сумму с датой оплаты и отправляет его, как настроено для счетов (e-mail, Peppol через Billit/Storecove/Banqup или собственный адрес). «По счёту» — одна сумма на остаток счёта (часть можно сначала оплатить иначе), без чаевых; подарочную карту нельзя продать по счёту. При превышении лимита касса отказывает.
- Оплата: клиент платит в заведении наличными, картой или подарочной картой (Отчёт → По счёту → Оплата получена; можно частично). Это не новая продажа и не новый чек: наличные попадают в деньги в ящике (ящик открывается), всё отражается в X- и Z-отчётах в разделе Получено по счетам. Когда всё оплачено, счёт получает статус «оплачено». Онлайн-оплата сюда не входит.
- Перевод: если в Данные в счёте указан IBAN, он печатается в счёте (и в UBL) с пометкой "Оплатить можно и в заведении". Если клиент сделал перевод, отметьте это через Оплата получена → Переведено (банк): не в ящик, но в X- и Z-отчётах в «Получено по счетам». Без IBAN указано "Оплата в заведении". В Бельгии в счёте (и в UBL) указывается структурированное сообщение (+++123/4567/89012+++, из номера счёта), чтобы банк передавал его вместе с платежом.
- Банк: проведение переводов без ручного ввода, см. ниже.
- Баланс (деньги заранее): в Отчёт → По счёту → Пополнить баланс вы вносите деньги заранее на счёт клиента, наличными (ящик открывается) или картой, напр. за серию обедов. При следующей продаже по счёту баланс сначала вычитается из счёта-фактуры; если в счёте-фактуре больше, остаток остаётся открытым. Баланс виден у клиента (баланс € ...), в X и Z в разделе Получено по счетам (Баланс внесён, С баланса клиента) и в бухгалтерском журнале как полученное заранее (по умолчанию 1640 / 460000). В Бельгии внесение идёт как внесение денег (signMoneyInOut) в чёрный ящик (UC4100).
- Сводный счёт-фактура (для каждого клиента, по умолчанию выкл.): с Один счёт-фактура на все чеки клиент при продаже по счёту пока не получает счёт-фактуру. Чек остаётся открытым у клиента (Чеки, ещё не включённые в счёт-фактуру, учитывается в лимите) и уже может быть оплачен. С Создать сводный счёт-фактуру (напр., в конце месяца) все открытые чеки попадают в один счёт-фактуру, каждая позиция с номером чека перед ней; уже оплаченное отмечено как оплаченное. Возврат на счёт попадает туда отрицательными позициями. Выкл. = как всегда, счёт-фактура на каждую продажу. В Бельгии один счёт-фактура со всеми чеками в чёрном ящике (signInvoice, UC4121 и UC4122).
- Бельгия: если клиент позже оплачивает продажу по счёту (наличными, картой, подарочной картой или переводом), касса сообщает это как корректировку оплаты в чеке: с кредита клиента на реальный способ оплаты (signPaymentCorrection, UC4118).
- Обзор: неоплаченные счета с датой оплаты (просроченные — красным), по каждому клиенту — счета и платежи. В Настройки → Счета — столбец Не оплачено.
- Бухгалтерия: в журнале продажа по счёту идёт на Дебиторскую задолженность (по умолчанию 1300 в Нидерландах, 400000 в Бельгии; настраивается в Настройки → Бухгалтерия), а оплата — с кассы, карты, подарочной карты или банка (по умолчанию 1050 / 550000) на дебиторскую задолженность. XAA: способ оплаты «По счёту».
- Право: Расчёт по счёту и приём платежей по счёту (по умолчанию официант — нет, менеджер — да). Всё записывается в журнал.
- Выключено: клиенты, счета и платежи сохраняются (также в резервной копии); переключатель входит в экспорт конфигурации, клиенты — нет (они относятся к одному заведению).
- В интернет-магазине (необязательно, по умолчанию выключено): с Также в интернет-магазине бизнес-клиенты заказывают онлайн по счёту (самовывоз и доставка). В Отчёт → По счёту вы создаёте для каждого клиента код клиента и передаёте его клиенту; касса хранит только зашифрованную версию, поэтому вы видите его один раз. Новый код клиента = старый больше не работает; Удалить код клиента = этот клиент больше не может заказывать онлайн по счёту. Интернет-магазин соблюдает лимит. В окне Интернет-магазин такой заказ завершается кнопкой Завершить (по счёту): расчёт по счёту, сразу со счётом-фактурой.
Банк: провести переводы
В Отчёт → По счёту → Банк касса для каждого поступления ищет соответствующий счёт с оплатой по счёту:
- Загрузить банковскую выписку: файл из интернет-банка в формате CAMT.053 (XML, все банки Нидерландов и Бельгии), MT940 (.sta/.940) или CODA (.cod, Бельгия). Только поступления; повторная загрузка выписки не создаёт дублей.
- Поиск: по номеру счёта или структурированному сообщению в назначении платежа (точно), иначе по сумме (и имени): тогда это предложение. Каждую строку можно провести (по предложению или к другому счёту), игнорировать или позже всё же провести. Провести = Переведено (банк) на дату банковской операции, никогда не больше открытой суммы; не в ящик.
- Подключение к банку (PSD2, по желанию): в Настройки → Счета → Подключение к банку касса каждый час сама получает поступления через Enable Banking (банки Нидерландов, Бельгии и остальной Европы). Выберите банк и войдите в него (бизнес-счёт); разрешение действует 180 дней, затем подключите заново. Отключение отзывает разрешение; поступления сохраняются. Без договора с Enable Banking это работает только для ваших собственных счетов (restricted production).
- Автоматическое проведение (по умолчанию выкл.): поступление, которое точно относится к счёту, касса проводит сразу (в том числе при загрузке выписки).
- Право: проведение — с Расчёт по счёту и приём платежей по счёту; настройка подключения к банку — с Настраивать заведение, оплату и принтеры. Загрузка, подключение, получение и проведение записываются в журнал.
- Выкл.: при выключенной оплате по счёту касса ничего не получает; поступления и подключение сохраняются (в том числе в резервной копии).
Видео с камер в кассе
Все камеры заведения на одной странице, без отдельного экрана или приложения. Включите в Настройки → Заведение → Экраны и управление → Видео с камер в кассе (по умолчанию выкл.). Тогда в верхней панели появится кнопка Камеры для тех, у кого есть право Просмотр камер (по умолчанию менеджер и администратор; в Настройки → Права можно включить и для официантов). Все камеры показаны рядом; нажмите на камеру, чтобы увеличить. При выключении системы видеонаблюдения сохраняются.
Также на отдельном экране: На отдельном экране открывает http://<kassaserver>:3000/camera (например, монитор за баром), а На планшете или телефоне показывает QR-код: сотрудник сканирует его своим планшетом или телефоном и входит со своим PIN-кодом (и там только с правом Просмотр камер). На узком экране камеры расположены друг под другом. См. «Второй экран на планшете или телефоне».
Администратор добавляет системы видеонаблюдения через + Система видеонаблюдения, проверяет их кнопкой Проверить и для каждой камеры задаёт название и показывать ли её на странице:
- Hikvision, Dahua, Axis и Reolink: камера или регистратор (NVR) в сети: IP-адрес (при необходимости с
:poort), пользователь (лучше только с просмотром) и каналы, напр.1-8или1,3,5. Вход через Basic или Digest; https с собственным сертификатом допустим. - Synology Surveillance Station: адрес NAS (по умолчанию порт 5000, с https 5001) и пользователь; Загрузить камеры загружает камеры с их названиями.
- UniFi Protect: адрес консоли (https) и локальная учётная запись; Загрузить камеры.
- ONVIF: любая камера или регистратор с ONVIF (напр. Hanwha, Bosch, Uniview, Annke); Загрузить камеры находит адрес снимка для каждого видеоисточника.
- Свой веб-адрес: снимок (JPEG), поток MJPEG или адрес
rtsp://. - Веб-страница системы видеонаблюдения (напр. Frigate, Blue Iris или go2rtc): открывается в кассе по кнопке «Камеры» (или в отдельном окне).
Без ffmpeg: снимок.
Конфиденциальность: касса получает изображения от системы видеонаблюдения и только передаёт их дальше; ничего не сохраняется (ни записей, ни кэша). Пользователи и пароли остаются на сервере и никогда не показываются на экране и в журнале. В журнале видно, кто смотрел камеры. Сами изображения страница запрашивает с ключом (действует 12 ч, пока сотрудник в системе), так как изображение в браузере не может передать токен. Экспорт конфигурации включает только вкл./выкл.
Журнал важных действий
Отчёт → Журнал (менеджер или администратор) показывает, кто, что и когда сделал.
- Выберите период (сегодня, вчера, эта неделя, этот/прошлый месяц или свой «с–по»), что вы хотите видеть (по умолчанию Важные действия, или, напр., только сторно и скидки, или Всё) и при необходимости одного сотрудника.
- Вверху по сотрудникам: количество и сумма сторно (удалено после заказа), скидок и возвратов, а также сколько раз ящик открывался без продажи, изъятия из ящика, копии чеков, предварительные счета (pro forma) и ручные оплаты картой. Нажмите на имя, чтобы видеть только этого сотрудника. Также количество попыток ввода неверного PIN-кода.
- Ниже — каждое действие со временем, кто, что и понятным описанием (напр., "2x Cola удалено после заказа € 5,60 · столик 4 · причина: гость передумал").
- Скачать (CSV) для Excel.
Что записывается: сторно, скидки (и их отмена), возвраты, копии чеков, проформы, ручная оплата картой, открытие ящика, внесение/изъятие денег, размен, закрытие дня, перенос позиций или столов, закрытие пустых заказов, изменение цены/названия/НДС товаров, новые или удалённые товары, изменения персонала и настроек, корректировка рабочего времени, вход и выход, неверные PIN-коды, а также отметки прихода и ухода. При оплате в счёт также: клиенты, продажи и платежи в счёт, загрузка банковских выписок, банковская интеграция и получение данных из банка. При уведомлении о долгом времени выполнения: опоздавшие заказы и отправленные извинения. С Mailchimp или Klaviyo: подключение, выбор списка, отвязка и отписки оттуда. С управлением музыкой: вкл./выкл., а также добавление, изменение и удаление источников музыки. С видео с камер: кто смотрел камеры (не чаще одного раза в полчаса на сотрудника), вкл./выкл. и системы видеонаблюдения. С сигнализацией: каждый сигнал, его обработка, а также включение и выключение.
Сигнализация: мошенничество и отклонения
Настройки → Сигнализация. Две части, каждая включается отдельно и по умолчанию выключена; при выключении все сигналы и настройки сохраняются. Настраивать может тот, у кого есть право Настройка сигнализации (по умолчанию менеджер и администратор); видеть и обрабатывать сигналы может тот, кто может видеть журнал. Касса проверяет каждые 5 минут (и по кнопке Проверить сейчас); не на теневой кассе.
Выявление мошенничества и краж (по сотруднику, за рабочий день с 05:00), каждое правило включается отдельно со своим порогом:
- сторно после проформы: удалено после того, как гость уже видел счёт;
- сторно, скидки и возвраты: от определённого числа раз или в сумме от определённой суммы (0 = не по сумме);
- ящик открыт без продажи (кнопка «Открыть ящик»);
- чек долго открыт: заказано, но через заданное число минут ещё не оплачено.
Уведомления об отклонениях, в сравнении с тем же днём недели и тем же временем за последние недели (по умолчанию 4; дни без выручки не учитываются, минимум два дня для сравнения):
- выручка на данный момент ниже (и/или выше) обычной больше чем на допуск, только при обычной выручке от заданной суммы;
- время кухни (от отправки чека на кухню до готовности на кухонном экране) за последний час выше допуска или выше фиксированного числа минут;
- сторно сегодня выше допуска, только от минимального количества.
Каждый сигнал приходит один раз (на правило, сотрудника и день; время кухни — не чаще раза в час) и отправляется:
- в кассу: кнопка Сигналы (n) в верхней панели с сигналами за последний день, неделю или 30 дней; Решено с заметкой. Другие экраны получают только оповещение без имён;
- push-уведомлением через ntfy (бесплатное приложение; ntfy.sh или свой сервер, topic и при необходимости токен), Pushover (API-токен приложения и user key) или Telegram (токен бота и chat-id);
Для каждого канала есть кнопка Тестовое сообщение. Токены и ключи остаются на кассе (экраны видят только, заполнены ли они). Сигнал — не доказательство: проверьте чек и журнал и обсудите это с сотрудником.
Чеки: копия и возврат (чек возврата)
Кнопка Чеки в верхней панели:
- Список чеков с момента последнего закрытия дня или за последние 7 дней; более старый чек можно найти по номеру.
- Печать копии: тот же чек с пометкой "КОПИЯ" (в Бельгии — с блоком FDM исходного чека). Фиксируется в журнале.
- Возврат / чек возврата (менеджер или администратор): выберите для каждой позиции, сколько возвращается, причину и способ возврата денег (наличные, карта, подарочный сертификат, прочее). Старый чек остаётся без изменений: создаётся новый чек возврата со своим номером в журнале (тип чека
retour, отрицательные суммы, в Бельгии передаётся в FDM как NR). Вернуть больше, чем было продано, нельзя. В X- и Z-отчёте возврат учитывается как отрицательная выручка. - С CCV или другим терминалом: сначала проведите возврат на самом терминале, затем отметьте "Уже возвращено на терминале".
- Наличные с округлением до 5 центов: сумма к возврату тоже округляется.
- Обратно на счёт клиента (продажа по счёту): если чек был по счёту бизнес-клиента, выберите По счёту. Сумма вычитается из открытого счёта-фактуры, и касса сразу создаёт кредит-ноту (в UBL — CreditNote, тип 381, со ссылкой на счёт-фактуру; в Бельгии подписано signInvoice, UC4122). Больше, чем открыто в счёте-фактуре, на счёт вернуть нельзя; остаток верните наличными или картой. Кредит-нота находится в Счета, и вы отправляете её как счёт-фактуру.
Денежный ящик с датчиком и ящик для каждого сотрудника
По умолчанию выключено. Настраивается в Настройки → Оплата → Денежный ящик.
- Датчик: многие ящики через чековый принтер сообщают, открыты они или закрыты (ESC/POS
DLE EOT 1, контакт 3 порта DK). Это возможно только с сетевым чековым принтером. Нажмите Измерить: ящик закрыт и Измерить: ящик открыт; если есть разница, примените правильное значение (высокий = открыт или низкий = открыт). Нет разницы = у этого ящика (или кабеля) нет датчика. Нет ответа от принтера = неизвестно, никогда не "закрыт".- Не проводить расчёт, пока ящик открыт: сервер кассы тогда отклоняет новый расчёт с сообщением "Денежный ящик ещё открыт".
- Свой ящик для каждого сотрудника: чековый принтер может открывать два ящика (ящик 1 и ящик 2). Выберите ящик для каждого сотрудника; при расчёте наличными, внесении/изъятии денег и Открыть ящик касса открывает ящик того, кто вошёл в систему. В Отчёт → Касса тогда появляется Ящик по сотрудникам: размен по сотрудникам, наличные (без автомата для наличных), ожидается, Подсчитать и расхождение по каждому человеку (в журнале как
ladetelling). Обычное закрытие дня остаётся без изменений. - Тест ящика 1 и Тест ящика 2 открывают ящик для проверки.
- Открыть ящик без продажи (с причиной) всегда и так записывается в журнал и в аудиторский файл кассы (XAA), как того требует Налоговая служба (Belastingdienst) (исключения, такие как "no sale").
Часть 3 · Администратор
Начало работы
Установка. HorecaPOS устанавливается с помощью программы установки для вашей системы, которую можно найти на странице загрузки OptimumPOS: Android (приложение), Windows (программа установки), macOS (установщик для Mac с Apple Silicon и Intel), Linux (графический установщик или пакет .deb либо .rpm), Raspberry Pi (графический установщик или .deb для Raspberry Pi 3, 4 или 5 с 64-битной Raspberry Pi OS) и Chromebook (Android-приложение из Google Play). Выберите для всех пользователей для кассового сервера, к которому подключаются планшеты и кухонный экран, или только для меня, если нужна только касса на этом устройстве. Установщик ставит всё необходимое, включая базу данных, и каждую ночь делает резервную копию. Для обновления установите новую версию: ваши данные сохранятся. Программа установки запускается на языке вашего компьютера (иначе на английском); в Windows и Linux на первом экране можно выбрать другой язык. Касса затем сразу запускается на этом языке. Пакеты .deb и .rpm и Android-приложение используют язык системы, а иначе — нидерландский.
Администратор настраивает кассу в разделе Настройки. Там есть вкладки Заведение, Персонал, Права, Рабочее время, Товары, Happy hour, Склад, Планы зала, Оплата, Принтеры, Бухгалтерия, Резервные копии, Импорт/экспорт и База данных. Какие вкладки видит менеджер, зависит от прав.
База данных. В разделе Настройки → База данных (только администратор) вы выбираете между MySQL / MariaDB, встроенной базой данных и PostgreSQL; при переключении переносятся все данные (см. База данных). Если Optimum POS уже задал постоянный адрес при установке, действует этот адрес и полей для ввода нет. Иначе вы сами заполняете Сервер, Порт, База данных, Пользователь и Пароль. Касса сама сохраняет их, затем снова показывает их заполненными, и их всегда можно изменить кнопкой Изменить данные MySQL/MariaDB или Изменить данные PostgreSQL. Оставить пароль пустым означает: сохранить прежний пароль (для того же пользователя). Установщик и обновление ничего не меняют в DATABASE_URL и в выбранной базе данных.
Бухгалтерия
Всё для бухгалтерии находится в Настройки → Бухгалтерия. Вместе с бухгалтером укажите журнал и счета главной книги. Если вы хотите, чтобы касса сама проводила дневную выручку каждый день, выберите вверху в поле Бухгалтерская программа свою программу, в том числе Exact Online: вы видите только программы, которые работают в стране вашего заведения. Сразу под ним введите данные этой программы и подключитесь. Для программ, в которые нужно входить (например, Exact Online, Twinfield или Xero), сначала заполните приложение: client ID и секрет клиента. Если Optimum POS при установке жёстко задал программу или какое-либо значение, вы не увидите этот выбор или это поле. Там же есть обзор всех программ: какие можно подключить онлайн, а для каких создаётся файл. Файл создаётся в Отчёт → Выручка за период → Экспорт для бухгалтерии: выберите формат вашей программы, или UBL (Peppol), XAF или дневную сводку. Всегда давайте бухгалтеру проверить первую проводку или первый импорт.
Для заведения в Нидерландах там также есть Аудит-файл кассы (XAA): XML Auditfile Afrekensystemen налоговой службы Нидерландов (Belastingdienst) со всеми чеками, позициями, оплатами и событиями кассы за выбранный период. Его вы передаёте своему бухгалтеру или, при проверке, в Belastingdienst.
Зарплата и планирование
Если ваш персонал отмечает приход и уход, в Настройки → Рабочее время внизу находится Зарплата и планирование, в двух блоках. В Расчёт зарплаты вы выбираете зарплатную программу или (в Бельгии) социальный секретариат и вводите для каждого сотрудника его табельный номер в этой программе. Затем вы создаёте за период файл с отработанными часами и выручкой по сотрудникам и импортируете его в зарплатную программу. В Планирование персонала вы выбираете систему планирования: в Deputy, Dyflexis и Shiftbase выручка передаётся автоматически каждый час, для остальных вы создаёте файл выручки. Так вы видите в планировании затраты на персонал рядом с выручкой. Если вы работаете без учёта прихода и ухода, выручку всё равно можно отправлять в планирование: тогда это находится внизу Настройки → Бухгалтерия, в Выручка в планирование. Если Optimum POS при установке задал что-то жёстко, этот выбор или это поле вы не видите.
Резервные копии
Касса каждую ночь автоматически создаёт резервную копию, а также всегда перед обновлением. В Настройки → Резервные копии видны все копии (когда, кем или автоматически, размер), а кнопкой Создать резервную копию можно сделать копию самостоятельно. Если последней копии больше двух дней, появляется красное предупреждение: в этом случае свяжитесь с Optimum POS.
Восстановление выполняется кнопкой Восстановить рядом с резервной копией. Всё, что произошло после этой копии, будет потеряно. Нужно поставить галочку и ещё раз ввести свой PIN-код. Касса сначала делает страховочную копию текущего состояния, а затем выполняет выход для всех. В Бельгии это нельзя сделать с кассы (счётчики «чёрного ящика» продолжают идти); там это делает Optimum POS.
База данных
В разделе Настройки → База данных (только администратор) видно, где касса хранит свои данные. Вверху показана текущая база данных: программа, версия, таблицы, строки и адрес или папка. Для персонала и планшетов касса работает одинаково с любой базой. В Windows, macOS, Linux и на Raspberry Pi вы выбираете из трёх баз данных:
- MySQL / MariaDB: отдельная программа баз данных (MySQL 8.0 или новее, MariaDB 10.6 или новее), например на уже имеющемся сервере или NAS. Тогда все данные хранятся в обычных таблицах MySQL или MariaDB и доступны для чтения вашей программе для отчётов или BI. Касса считает точно так же, как с PostgreSQL.
- Встроенная (PGlite): находится в самой кассе, ничего устанавливать не нужно. Лучший выбор для большинства заведений и база данных на Android и Chromebook.
- PostgreSQL: отдельная программа баз данных на компьютере кассы или где-то в сети.
Когда MySQL или MariaDB? Если в заведении уже есть сервер MySQL или MariaDB, если с ним работает ваш ИТ-администратор или если вы хотите читать данные в собственных отчётах, в Excel или в BI-программе. Если сомневаетесь, выберите встроенную: она работает сразу.
Что нужно для MySQL или MariaDB?
- MySQL 8.0 или новее либо MariaDB 10.6 или новее, доступная с сервера кассы.
- Отдельная база данных для кассы (или для касс одной сети), с кодировкой utf8mb4.
- Пользователь базы данных, которому разрешено создавать, изменять, переименовывать и удалять таблицы в этой базе (CREATE, ALTER, DROP, INDEX, SELECT, INSERT, UPDATE, DELETE), например так:
CREATE DATABASE horecapos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'horecapos'@'localhost' IDENTIFIED BY 'wachtwoord';
GRANT ALL PRIVILEGES ON horecapos.* TO 'horecapos'@'localhost';
Если MySQL или MariaDB работает на другом компьютере, укажите в последних двух строках IP-адрес сервера кассы вместо localhost.
Перенос в MySQL / MariaDB:
- В разделе Адрес MySQL/MariaDB заполните поля: Сервер (по умолчанию localhost), Порт (по умолчанию 3306), База данных (по умолчанию horecapos), Пользователь и Пароль; для MariaDB так же. Если адрес уже задан, поля уже заполнены; если оставить пароль пустым, останется сохранённый пароль (для того же пользователя). Касса сама сохраняет адрес; если Optimum POS уже задал постоянный адрес, действует этот адрес и полей нет. Если касса уже работает на MySQL/MariaDB, позже данные меняются кнопкой Изменить данные MySQL/MariaDB. Шифрованное подключение настроит для вас Optimum POS.
- Нажмите Проверить подключение: вы увидите программу и версию или причину ошибки.
- Нажмите Перенести в MySQL/MariaDB, отметьте, что вы понимаете последствия, и введите свой PIN-код.
Перенос работает в любом направлении между тремя базами данных, и все данные переносятся:
- Касса ненадолго не принимает запросы (обычно меньше минуты); затем планшеты сами продолжают работу.
- Сначала касса делает резервную копию текущего состояния (в разделе Настройки → Резервные копии).
- Всё переносится в новую базу, и касса по каждой таблице пересчитывает, всё ли на месте в точности.
- Только когда всё совпадает, касса продолжает работу с новой базой. Вошедшие сотрудники остаются в системе.
Если что-то не удаётся, ничего не меняется, и касса продолжает работать со старой базой. Старая база остаётся, поэтому вернуться можно всегда. Данные кассы, которые уже были в новой базе MySQL/MariaDB или PostgreSQL, заменяются. В Бельгии это тоже возможно: счётчики «чёрного ящика» переносятся точно.
Резервное копирование и восстановление работают одинаково со всеми тремя базами (Настройки → Резервные копии). Резервную копию одной базы можно восстановить в любой другой, в том числе копию из PostgreSQL в MySQL или MariaDB.
Что хранится в MySQL или MariaDB? Каждая таблица кассы с тем же именем и столбцами (время в UTC). Каждая таблица получает дополнительный ключевой столбец _hp_sleutel, а во вспомогательных таблицах _horecapos_stand, _horecapos_kolom, _horecapos_reeks и _horecapos_wijziging (журнал изменений, хранится 14 дней) касса ведёт состояние, типы столбцов, счётчики и изменения. Другие программы читают данные; записывают только кассы.
Как это работает: касса считает в быстрой рабочей копии на сервере кассы и записывает каждое изменение в MySQL/MariaDB на том же шаге. Если это не удаётся, изменение не выполняется и касса сообщает об ошибке; поэтому MySQL/MariaDB должна быть доступна. При запуске касса считывает всё из MySQL/MariaDB.
Несколько касс в одной базе. Как и с PostgreSQL, несколько касс могут работать с одной базой MySQL/MariaDB, например каждое заведение сети со своим сервером кассы. Изменения выполняются по очереди, и каждая касса сначала принимает то, что сделали другие, поэтому при одновременных изменениях ничего не теряется. Если касса восстанавливает резервную копию или касса более новой версии обновляет базу, остальные кассы сами перечитывают всё заново; поэтому обновляйте все кассы одновременно. Касса, выключенная дольше 14 дней, при запуске перечитывает всё заново.
При установке вы тоже выбираете базу данных: MySQL / MariaDB, встроенную (рекомендуется) или PostgreSQL с адресом. Если она недоступна, касса устанавливается со встроенной базой; перенести можно потом здесь. При обновлении выбор сохраняется.
Подключение планшетов и экранов
- На каждом планшете/кассе откройте адрес кассового сервера, например
http://192.168.1.20:3000, и добавьте ярлык на главный экран (Chrome: Добавить на главный экран). - Экран кухни:
http://192.168.1.20:3000/keuken. - Экран покупателя (повёрнут к клиенту, необязательно):
http://192.168.1.20:3000/klantscherm, см. «Экран покупателя». - Экраны находят кассовый сервер автоматически (тот же адрес, порт 4000).
Экран покупателя
Экран на кассе, который повёрнут к клиенту. Клиент видит примерно, что заказано, и очень чётко — сумму и способ оплаты. На нём нет управления: экран просто повторяет действия кассы. По умолчанию выключен; включается в Настройки → Заведение → Экран покупателя. На кассовом ПК с двумя экранами касса в первый раз включает его сама; если потом выключить его, он останется выключенным. Без экрана покупателя (выключен или не подключён) всё работает как обычно: касса отправляет изображение в фоне, и персонал никогда не заметит ошибку или отсутствие экрана.
Что видит клиент:
- Ожидание (никто не рассчитывается): название заведения и ваш собственный текст приветствия (Настройки → Заведение; пусто = "Добро пожаловать").
- Заказ: товары с количеством и суммой (одинаковые строки объединены, меню — одной строкой с составом мелким шрифтом ниже, скидка — одной строкой) и крупно итоговая сумма. Уже оплаченное при раздельном расчёте показано ниже. При включённой опции Настройки → Заведение → Фото товаров → на экране покупателя рядом с каждым товаром показывается маленькое фото.
- Расчёт: способ оплаты (Карта, Наличные, Подарочный сертификат), чаевые и крупно К оплате. Наличные: сколько дал клиент и сколько сдачи, как только это введено на кассе. Карта: "Следуйте инструкциям на платёжном терминале".
- Спасибо: после расчёта на несколько секунд "Спасибо!" с оплаченной суммой (наличные: сдача клиенту), затем снова экран ожидания.
Подключение — двумя способами (оба настраиваются на самом устройстве):
- Второй монитор у кассового ПК (Windows, Linux/Raspberry Pi, macOS): автоматически. При входе в систему и после установки касса открывает экран покупателя на весь экран на самом маленьком дисплее, который не является основным (при одинаковом размере — на самом правом); в Windows — всегда на другом экране, а не на экране кассы (касса находится на сенсорном экране и при запуске тоже открывается сама). Размер и положение задаёт система, поэтому подходит любой формат. Без второго экрана ничего не происходит. В Windows закрытый экран покупателя возвращается сам; в Linux и macOS ярлык HorecaPOS экран покупателя в меню возвращает его на место. В Windows он открывается в режиме киоска Chrome (или Edge): на весь экран, без строки заголовка и без панели задач (закрыть — Alt+F4). Он следует за кассой на том же ПК без кода привязки.
- В любом браузере долгое нажатие нигде не открывает меню браузера, и не появляется предложение перевести страницу.
- Касса закрыта = экран покупателя закрыт. Если программа кассы останавливается (Перезапуск, обновление, касса остановлена или удалена), экран покупателя тоже закрывается чуть более чем через 10 секунд; когда касса снова работает, он возвращается сам. В Windows он закрывается и тогда, когда вы закрываете только окно кассы. В Wayland (Linux) касса не может сама закрыть окно.
- Экран покупателя случайно закрыт? В Windows он через несколько секунд возвращается сам, пока касса открыта и второй экран подключён.
- Всегда только один экран покупателя. В Windows экран покупателя работает только в режиме киоска на втором экране. Экран покупателя в окне кассы (например, восстановленный Edge после отключения электричества или открытый кнопкой в кассе) в течение нескольких секунд закрывается сам; его место затем занимает правильный экран покупателя.
- Никто не вошёл = только приветствие. Если касса находится на экране ввода PIN-кода (в том числе после перезапуска или выхода), экран покупателя показывает только приветственный текст и никогда — предыдущий счёт.
- В Windows автоматическое открытие можно также отключить флажком Экран покупателя автоматически ... в установщике.
- В Linux касса перемещает окно с помощью wmctrl (входит в пакет). В Wayland (например, Raspberry Pi OS с labwc) это невозможно: тогда один раз перенесите экран покупателя на второй экран вручную (браузер это запомнит) или выберите X11 в raspi-config. В macOS при первом запуске Mac запросит разрешение в разделе Универсальный доступ.
- Вручную: Настройки → Заведение → Экран покупателя → Открыть экран покупателя (второй монитор). В Chrome и Edge (также на Chromebook) кнопка сразу переносит окно на экран покупателя (в первый раз браузер запросит разрешение); один щелчок по экрану покупателя разворачивает его на весь экран. В других браузерах: перетащите окно и нажмите F11.
- Android-касса со встроенным экраном покупателя (напр., Sunmi D2/T2) или монитор через HDMI/USB-C: тоже автоматически. Как только приложение установлено на кассе, экран покупателя появляется на втором экране; подключение и отключение срабатывают сразу.
- Sunmi T1 mini / T2 mini с маленьким текстовым дисплеем (2 строки): приложение само выводит туда сумму: Итого, К оплате, при оплате наличными Сдача, после расчёта Спасибо!, а в режиме ожидания — название заведения. Экран покупателя должен быть включён.
- iPad (рабочий экран) с внешним экраном через HDMI/USB-C или AirPlay: приложение само выводит экран покупателя на этот экран (подготовлено; приложение для iOS ещё не выпущено).
- Chromebook: в качестве рабочего экрана в Chrome кнопка Открыть экран покупателя (второй монитор) работает так же, как описано выше. В Android-приложении экран покупателя автоматически появляется на втором экране, как только ChromeOS передаёт этот экран Android-приложениям; если этого не происходит, используйте отдельное устройство с кодом привязки.
- Отдельное устройство (планшет или свой ПК рядом с кассой): откройте
http://<kassaserver>:3000/klantscherm. В правом нижнем углу экрана показан код привязки из 6 символов. Введите его на кассе в Настройки → Заведение → Экран покупателя → Привязать. Отвязать возвращает экран к коду привязки. Привязка сохраняется для каждой кассы отдельно (в браузере этой кассы), поэтому у каждой кассы может быть свой экран покупателя.
Экран покупателя не запрашивает PIN-код (управлять там нечем) и показывает только изображение кассы, к которой он привязан. Изображение хранится только в памяти кассового сервера; после перезапуска экран пуст до следующего изменения. Настройка (вкл./выкл. и текст приветствия) входит в резервную копию и в Импорт/экспорт (Прочие настройки).
Электронный чек по QR (по желанию)
По умолчанию выключено. Включается в Настройки → Заведение → Кухня и экран покупателя → Электронный чек (опция появляется, когда экран покупателя сохранён включённым). После расчёта на экране Спасибо показывается QR-код; тогда этот экран остаётся 45 секунд вместо нескольких секунд. Гость сканирует код своим телефоном и видит чек точно таким же, как бумажный (тот же текст, на бельгийской кассе — также с блоком FDM). На телефоне он может распечатать чек, сохранить его как pdf или скачать как текстовый файл.
- Это работает через портал управления:
https://kassa.<portaal>/__bon/<kassa>/<sleutel>. Поэтому касса должна быть подключена к порталу; иначе QR-код не появляется и ничего не меняется. - Ключ случайный, его невозможно угадать, и он действует 30 дней. Затем касса удаляет его автоматически. Портал ничего не хранит.
- Работает со вторым монитором и с отдельным экраном покупателя. Бумажный чек и чек по e-mail продолжают работать как обычно.
Экран покупателя в режиме ожидания: слайд-шоу (по желанию)
По умолчанию выключено. Включается в Настройки → Заведение → Кухня и экран покупателя → Экран покупателя в режиме ожидания. Если на экране покупателя нет счёта, слайды сменяют друг друга (по умолчанию каждые 8 секунд, настраивается от 4 до 60):
- Акции: happy hour (если happy hour включён) со скидкой, днями и временем и товарами или группами; действующие сейчас идут первыми, с пометкой "Сейчас!".
- Избранные товары (не более 12, например новинки меню) с ценой и (если фото товаров на экране покупателя включены) фото. Распроданный товар экран пропускает.
- Бонусная карта: баллы за евро, вознаграждение и карты штампов (только если карта лояльности включена).
- Свои тексты: не более 5, каждый на отдельном слайде (например, "С пятницы новинка: наше летнее меню").
Без слайдов экран покупателя, как всегда, показывает экран приветствия.
Happy hour
По умолчанию выключено. Включается в Настройки → Заведение → Использовать счастливые часы; после этого появляется вкладка Настройки → Счастливые часы.
- Для каждого счастливого часа: название (печатается в чеке), дни, с–по (может переходить через полночь, например 23:00–01:00), скидка в % или фиксированная цена, а также для каких групп товаров и/или отдельных товаров.
- В этот промежуток касса при пробивании автоматически берёт цену счастливого часа (никогда не дороже обычной; при фиксированной цене опции добавляются как обычно). На кнопке товара старая цена зачёркнута, рядом новая цена и HH; в заказе и в чеке указано название счастливого часа. Уже пробитые позиции сохраняют свою цену.
- Предложение дня: отметьте Весь день (00:00–24:00) и выберите день (дни), напр. каждый вторник свиные рёбрышки по фиксированной цене.
- Сезон: отметьте Только в сезон (каждый год) и выберите даты «с» и «по» (день и месяц, напр. с 1 июня по 31 августа; можно и через Новый год, напр. с 1 декабря по 28 февраля). Вне сезона happy hour не действует.
- Изменения записываются в журнал.
Периоды меню и сезоны
По умолчанию выключено. Включается в Настройки → Заведение → Периоды меню и тип заказа → Ассортимент по периодам меню и сезонам; после этого появляется вкладка Настройки → Периоды меню. Если выключить, все товары снова продаются всегда, а периоды меню сохраняются.
- Для каждого периода меню: название (напр. Завтрак, Обед, Ужин, Летнее меню), дни, время «с–по» (можно через полночь; Весь день = 00:00–24:00), при необходимости сезон (каждый год, день и месяц), а также какие группы товаров и/или отдельные товары в него входят.
- Товары и группы товаров, входящие в один или несколько периодов меню, продаются только тогда, когда идёт один из этих периодов; то, что не входит ни в один период, продаётся всегда. Экран заказа показывает только то, что продаётся сейчас, и сам переключается, когда период начинается или заканчивается; сервер отклоняет остальное ("сейчас не продаётся, только в период Завтрак").
- Интернет-магазин показывает и рассчитывает тот же ассортимент (на момент заказа).
- Другая цена в определённый день или сезон — это happy hour (предложение дня, см. выше).
- Меню для каждой точки: у каждой кассы (филиала) свои товары, периоды меню и цены.
- Изменения записываются в журнал.
Ассортимент и цены по типу заказа
По умолчанию выключено. Включается в Настройки → Заведение → Периоды меню и тип заказа → Ассортимент и цены по типу заказа. Если выключить, везде снова действует обычная цена и всё продаётся везде; введённые цены сохраняются.
- В Настройки → Товары для каждого товара: Цена при самовывозе и Цена при доставке (пусто = обычная цена) и Продаётся для (в заведении, самовывоз, доставка; минимум один вариант). У группы товаров тоже есть Продаётся для — для всех товаров этой группы.
- Для заказа на самовывоз или доставку экран заказа показывает цену этого типа заказа и только то, что для него продаётся; сервер рассчитывает эту цену и отклоняет остальное. Happy hour, комплексные меню и варианты выбора считаются от этой цены.
- Ставка НДС для самовывоза (у товара) от этого не зависит, как и всегда.
- При самовывозе и доставке интернет-магазин показывает цены и товары выбранного варианта (при смене страница меню перезагружается), а за столом — цены и товары для заведения.
- Экспорт и импорт конфигурации (Настройки → Импорт/экспорт) включают цены по типу заказа, "продаётся для", периоды меню и сезоны happy hour.
Меню
По умолчанию выключено. Включается в Настройки → Заведение → Использовать меню.
- Меню — это обычный товар (с ценой меню), для которого в Настройки → Товары → (товар) → Меню задаются составные части:
- фиксированная: всегда этот товар (например, "Напиток: Домашнее вино");
- на выбор: выбрать 1 (или больше) из группы товаров, при необходимости только из определённых товаров (например, "Основное блюдо: выбрать 1 из Основных блюд").
- Для каждой части — подача (1 = сразу, 2/3 = ждать вызова).
- Когда вы пробиваете меню, для каждой части выбираются блюда. Для каждого блюда (в том числе фиксированного) можно выбрать опции, как для отдельного товара (прожарка, дополнительный сыр; обязательные опции должны быть выбраны), и добавить примечание. Доплата за опции прибавляется к цене меню. Меню отображается одной строкой с блюдами (и их опциями) под ней.
- Блюда уходят на кухню/бар отдельными строками (кухонный чек и экран кухни), каждое в своей подаче. Сама строка меню — нет.
- Для НДС цена меню распределяется между частями пропорционально их обычной цене, чтобы еда и напитки получили правильную ставку. В чеке указано меню с общей ценой и блюдами под ним.
- Если у самого меню есть опции (например, размер), их выбирают вверху окна меню. Они указаны у строки меню в чеке, а также у каждого блюда меню в кухонном чеке и на экране кухни как "(меню)".
- Удаление/сторнирование выполняется для всего меню целиком (нажмите на строку меню).
- Разделить / перенести: выберите строку меню; блюда переносятся вместе с ней. При 2× одинаковом меню можно перенести и 1 (заголовок и блюда разделяются).
- Без подключения меню тоже можно пробивать; они сохраняются на планшете и отправляются, как только связь восстановится (как и отдельные товары).
- Счастливые часы могут действовать и на меню.
Рецептуры и себестоимость (Apicbase)
Интеграция с Apicbase (рецептуры, себестоимость, склад и закупки) через Generic POS API от Apicbase (по умолчанию выключено, каждая часть включается и выключается отдельно). Настройка в Настройки → Рецептуры (право Настройка заведения, оплаты и принтеров). Касса сама обменивается данными с Apicbase (только исходящий трафик, портал не нужен).
- Подключение (всё заполняет администратор), одним из трёх способов:
- Вставить token: в Apicbase Library Settings → API Settings → New token → Service Account Token (scopes accounts, library, sales); вставить access token и refresh token;
- Войти через собственное API-app заведения (client-id и секрет из API Settings): Войти в Apicbase и вставить код, который затем покажет Apicbase;
- Истёкший token (через 7 дней) касса сама обновляет с помощью refresh token.
- Outlet: Загрузить outlets и выбрать outlet этого заведения. Касса установит там POS на Generic POS API с собственным location-id (можно указать; по умолчанию
HORECAPOS-…, уникальный для каждой кассы). - Вкл., с галочками:
- Товары, группы и опции в Apicbase: группы товаров, товары (PLU = PLU-номер товара, иначе код, иначе id), опции как modifiers, с ценой и НДС. Автоматически после каждого изменения (через минуту) и ежедневно. Затем в Apicbase вы привязываете каждый товар кассы к рецепту;
- Каждый оплаченный чек в Apicbase: сначала самые старые, не более 100 за раз, в течение четверти часа после оплаты (и каждые 5 минут). Скидка распределяется по строкам; свободные суммы, сбор за одноразовую упаковку и залог идут как отдельные товары в Apicbase; весовые товары — как 1 шт. на общую сумму. Если отправка не удалась, касса останавливается (Apicbase принимает чеки по порядку) и повторяет попытку позже: на оплату это не влияет. При включении вы выбираете, с какого дня (по умолчанию с текущего момента);
- Получать себестоимость порции (каждые 6 ч): для каждого привязанного рецепта food cost (ингредиенты и потери), с затратами на персонал, цена продажи и маржа по данным Apicbase. Расчёт по самому дешёвому поставщику, последней цене заказа или средней стоимости запасов;
- Брать цену продажи из Apicbase (по умолчанию выкл.): устанавливает в кассе цену продажи привязанных товаров (записывается в журнал).
- Внизу: Себестоимость по товарам с себестоимостью, себестоимостью с персоналом, ценой в кассе, себестоимостью % и маржой. Кнопки Отправить каталог сейчас, Отправить чеки сейчас и Получить себестоимость сейчас.
Код: apps/pos-server/src/lib/apicbase.ts, routes/apicbase.ts; экран Apicbase.tsx. Журнал: Apicbase. Условие: API-модуль Apicbase. Для приложения Pin Voordeel для всех клиентов: партнёрство и сертификация в Apicbase (см. backlog). Документация: https://developers.apicbase.com/docs/generic-pos-api-guide
Гостиничное ПО: на номер
Для ресторана или бара при отеле: счёт записывается на номер гостя. По умолчанию выключено: Настройки → Отель (право Настройка заведения, оплаты и принтеров).
- Один список со всем гостиничным ПО (Гостиничное ПО отеля). Встроенные интеграции:
- Mews (Connector API: client token и access token, сервис ресторана и для каждой ставки НДС код НДС в Mews), apaleo (собственное приложение с client ID и client secret, property ID; для каждой ставки НДС при необходимости тип НДС) и Cloudbeds (API-ключ и property ID), у каждой есть тестовая и рабочая среда;
- Oracle OPERA Cloud (OHIP), protel (protel I/O), RoomRaccoon, Booking Experts, Amadeus (XMLPOS), VIPS, Stayntouch, Clock PMS+, Guestline (Rezlynx), Hotelogix, eviivo, Little Hotelier, Shiji и Infor HMS (Databridge). После выбора отображаются ровно те поля, которые нужны этому гостиничному ПО (ключи, ID отеля, при необходимости адрес их API и их код для каждой ставки НДС), с кратким пояснением, что нужно запросить у поставщика. Эти интеграции сделаны по документации поставщиков; попросите поставщика подтвердить интеграцию и сначала попробуйте Проверить подключение и один чек;
- демо (четыре люкса, номера с 4 по 7), чтобы попробовать;
- Sirvoy, как половинчатая интеграция и только с Sirvoy Pro. У Sirvoy нет API, через которое касса могла бы что-то добавить в бронирование, даже через файл (импорт CSV создаёт только новые бронирования). Благодаря этому касса знает гостей (номер, имя, заезд, выезд): поиск в На номер, а также самообслуживание в киоске и в интернет-магазине работают как обычно. Чек не попадает в Sirvoy сам: после расчёта он отображается в Настройки → Отель в разделе Внести в Sirvoy с номером комнаты, гостем, номером чека и суммой по ставкам НДС. Отель вручную добавляет его в бронирование как доп. услугу и нажимает Внесено (отмена — Пока нет). Нужно:
- предпочтительно касса, подключённая к порталу управления: тогда адрес идёт через портал (
https://<portaal>/hotel/<kassa-id>/sirvoy?sleutel=...) и в отеле не нужно открывать порт. Иначе сама касса должна быть доступна из интернета по https (свой домен с сертификатом или проброс портов; Sirvoy требует TLS 1.2 или выше), и вы вводите этот адрес; - Адрес показывается только один раз; касса хранит только хеш. Создать новый адрес = старый перестаёт работать;
- предпочтительно касса, подключённая к порталу управления: тогда адрес идёт через портал (
Sirvoy отправляет что-то только при изменении бронирования: бронирования, сделанные до подключения, касса узнаёт только после изменения в Sirvoy. Сообщения могут приходить не по порядку; сообщение старее (generatedAt), чем то, что уже есть в кассе, пропускается. В отеле = не отменено и выезд не оформлен, заселён или заезд сегодня или раньше, а выезд сегодня или позже. Проверить подключение показывает, сколько бронирований пришло.
Всё это гостиничное ПО продаётся в Нидерландах и/или Бельгии. Проверить подключение проверяет данные. Код каждой интеграции: apps/pos-server/src/lib/pms/<naam>.ts.
- Самообслуживание (по умолчанию выключено): гость отеля сам записывает заказ на свой номер, в киоске и/или в интернет-магазине (самовывоз и доставка, не при заказе за столом). Он вводит номер комнаты и фамилию; касса проверяет в гостиничном ПО, проживает ли этот гость сейчас в этом номере. Есть максимум на заказ (по умолчанию € 150), а после 5 неудачных попыток за 15 минут гостя направляют к стойке регистрации. Сообщение никогда не показывает, кто проживает в номере.
- Расчёт: когда интеграция включена, есть способ оплаты На номер. Найдите гостя по имени или номеру комнаты (только гости, которые сейчас проживают в отеле) и нажмите Записать на номер .... Касса проводит чек по ставкам НДС на гостиничный счёт гостя; гость платит при выезде.
- Бельгия: если заказ уже есть за столом в чёрном ящике, он сначала переходит со стола на номер (signCostCenterChange на ROOM, UC4101); чек идёт как кредит номера (ROOM_CREDIT) в чёрный ящик.
- Если проведение в гостиничном ПО не удаётся (нет интернета), продажа всё равно есть, а проведение показано как Не удалось в Настройки → Отель, с кнопкой Ещё раз.
- Отчёты и бухгалтерия: На номер (отель) — отдельный способ оплаты в X- и Z-отчёте, в дневном отчёте и в аудиторском файле (XAA).
Код: apps/pos-server/src/lib/hotel.ts, routes/hotel.ts, интеграции в lib/pms/, каталог packages/shared/src/hotelcatalogus.ts; экран Hotel.tsx. Журнал: Отель. Секреты (токены) хранятся только в базе данных, никогда на экране.
Управление винами с Vinify
Настройки → Управление винами (по умолчанию выключено; при выключении всё сохраняется). Vinify ведёт винный погреб, винную карту и запасы и является главным источником вин. Согласно POS-требованиям Vinify касса предоставляет API, через который Vinify:
Входит всеми тремя способами, которые знает Vinify (администратор включает, каким):
- API ID и API-ключ (
X-Api-IdиX-Api-KeyилиAuthorization: Bearer <id>:<sleutel>); - API-ключ и API secret с подписью:
X-Api-Key,X-TimestampиX-Signature= hex HMAC-SHA256(secret,<timestamp>\n<METHODE>\n<pad met query>\n<sha256 van de body>), не старше 5 минут.
Ключ и secret создаёт касса (показываются один раз); экраны видят только, заполнены ли они. Доступно через портал по адресу https://<portaal>/vinify/<kassa-id>/... (без открытого порта в заведении; адрес указан в Настройки → Управление винами). Какие товары являются винами: то, что создаёт Vinify, плюс отмеченные вами группы. Если Vinify даёт адрес для отправки продаж, касса отправляет их и сама (push, с токеном): после каждого оплаченного чека и каждые 5 минут то, что ещё не удалось. Vinify включает интеграцию с HorecaPOS (hello@vinify.no). Всё в журнале. Не путать с Vinify.nl — интернет-магазином вин: он находится среди поставщиков (Заказы у поставщиков).
Быстрый ввод адреса по индексу и номеру дома
Включается в разделе Настройки → Заведение → Быстрый ввод адреса (по умолчанию выключено; только для заведения в Нидерландах). Введите индекс и номер дома (также с буквой или дополнением, напр. 12A или 12-1) и нажмите Найти адрес: улица, номер дома, индекс и город заполнятся. Если по этому номеру несколько адресов (12, 12A, 12B), выберите нужный. После этого всё можно изменить вручную.
- В данных заведения (Настройки → Заведение, над адресом).
- У клиента с картой лояльности: на кассе при новом клиенте и в разделе Отчёт → Клиенты. Для этого у клиентов есть (необязательный) адрес: улица и номер дома, индекс и город.
- Адреса берутся из бесплатного Locatieserver от PDOK (официальные адреса Нидерландов, BAG): аккаунт или ключ не нужны, нужен интернет. Без интернета или для бельгийского адреса просто введите адрес вручную.
Уведомление о новой версии
Включается в Настройки → Заведение → Уведомление об обновлении (по умолчанию выключено).
- Касса обновлена: если кассовый сервер обновился, а на планшете ещё открыты старые экраны, вверху появляется "Касса обновлена (версия …)" с кнопкой Обновить. Планшет проверяет каждые 5 минут, когда экран снова становится видимым, и после перезапуска сервера.
- Доступно обновление: если касса привязана к порталу управления (
PORTAAL_URL/PORTAAL_SLEUTEL) и там заполненоNIEUWSTE_VERSIE, то пользователи с правом управлять настройками видят "Доступно обновление: версия …" (с пояснением изUPDATE_NOTITIE). Позже скрывает уведомление на этом планшете до появления следующей версии. Обновление выполняется как обычно с помощьюscripts\windows\update.cmd(см. «Обновление»).
Платформы бронирования
Бронирования из TheFork, Formitable, Zenchef, Resengo (только Бельгия), OpenTable (только Нидерланды), PlanPanther, RestoManager и Aqqo (только Нидерланды) автоматически попадают в кассу и на план зала. Включается в Настройки → Платформы бронирования (по умолчанию выключено). Работает, только если Бронирования включены.
- Страна заведения: можно выбрать только платформы, которые работают в стране заведения (Resengo только в Бельгии, OpenTable и Aqqo только в Нидерландах). Сервер тоже это проверяет.
- Несколько платформ одновременно: можно подключить несколько платформ одновременно, например TheFork и Formitable. Две платформы никогда не получат один и тот же стол в одно и то же время; тогда вторая бронь поступит без стола.
- + Подключить платформу: выберите платформу и заполните данные. Секреты (Client secret, ключ обратного вызова) никогда не показываются в обзоре; оставить пустым = сохранить, Очистить = удалить.
- TheFork (публичный B2B API): Restaurant-UUID, Client ID и Client Secret (запрашиваются у TheFork). Если касса отменяет бронирование, оно отменяется и в TheFork.
- Formitable, Zenchef, Resengo, OpenTable, PlanPanther, RestoManager, Aqqo: их API доступен только партнёрам или не публичен (PlanPanther, RestoManager и Aqqo: подключение кассы — по договорённости с ними). События Formitable (
booking.created,.changed,.canceled,.checkin,.checkout) распознаются. - На плане зала: если стол в кассе называется так же, как стол на платформе, и свободен в это время, бронирование ставится на этот стол; иначе — без стола (выберите его при прибытии). Повторно пришедшее бронирование обновляется, а не дублируется. В обзоре указано "via TheFork".
- Статус: если платформа отменяет бронирование или сообщает о no-show, касса принимает это. То, что в кассе уже отмечено как прибывшее, остаётся прибывшим.
- Обратное уведомление (no-show обратно): укажите адрес обратного вызова (например, вашего сервиса интеграции). Касса отправляет каждое изменение из кассы (прибытие, no-show, отмена, оплата с суммой) в JSON:
{ platform, id, status, statusEn, bedrag, valuta, tafel, tijdstip, gemeldOp }(сумма в центах, только при оплате), сAuthorization: Bearer <terugmeld-sleutel>, если вы его указали. Если не получилось, касса повторяет попытку каждую минуту, а ошибка отображается у платформы. То, что пришло от самой платформы, обратно не отправляется. - Тестовое бронирование: создаёт бронирование так, как его отправила бы платформа.
- Удалить: подключение и ключ удаляются; бронирования остаются.
- Все изменения записываются в журнал (без секретов).
Программы лояльности и отзывы
Два отдельных переключателя в Настройки → Баллы и отзывы (оба по умолчанию выключены, тогда этого нигде не видно). Если их выключить, настройки и то, что уже произошло, сохраняются.
Программа лояльности другой платформы: гость копит баллы в Joyn (Бельгия) и/или Piggy (Leat; Нидерланды и Бельгия). Это не зависит от собственной карты лояльности кассы; она может работать параллельно.
- Несколько одновременно: в Бельгии Piggy и Joyn могут быть включены вместе, каждый со своими данными (выберите платформу, заполните, Сохранить; Изменить и Удалить для каждой платформы). Гость получает для каждой программы свой QR-код на чеке, свою ссылку в чеке по e-mail и свою кнопку в интернет-магазине и копит баллы в каждой программе один раз за заказ. То, что уже было настроено, продолжает работать.
- QR-код на чеке: после расчёта под чеком печатается QR-код с текстом "Сканируйте и копите баллы в ...". В чеке по e-mail есть ссылка, а в интернет-магазине (самовывоз и доставка) — кнопка на странице заказа и ссылка в письме-подтверждении. Один заказ даёт баллы только один раз: чек, письмо и интернет-магазин используют один и тот же уникальный код (номер заказа). "QR-код на печатном чеке" можно выключить; письмо и интернет-магазин всё равно получают ссылку.
- Piggy, способ "QR-код и ссылка": введите адрес вашего клиентского портала Piggy, Shop UUID и Account secret (Piggy Business Dashboard). Работает без интернета: касса сама создаёт ссылку.
- Piggy, способ "Сразу начислять": дополнительно введите personal access token (Piggy → Marketplace → Private App). Если касса отправляет чек по e-mail и гость с этим адресом уже участник, касса сразу начисляет баллы; на чеке тогда написано "Баллы начислены в Piggy". Касса никогда не создаёт нового участника; не участник (или нет e-mail) = QR-код.
- Joyn, способ "QR-код и ссылка": с partner key, shop reference и shared secret от Joyn (запросить через api-integration@joyn.be). Работает без интернета. QR-код действует 2 ч.
- Joyn, способ "Через API": с shop API key (включите подключение в портале продавца Joyn). При расчёте касса запрашивает у Joyn код для баллов. Списание баллов, как всегда, на Joyn-iPad.
- Создать пробную ссылку: проверяет, верны ли данные (ссылка на € 10; открывайте её только для просмотра).
- Можно выбрать только платформы страны заведения; секретные данные хранятся только в базе данных и никогда не показываются на экране (оставить пустым = сохранить).
Просить отзывы: после визита одно письмо с кнопкой на Google и/или Trustpilot.
- Через несколько часов (настраивается, по умолчанию 3) гость получает письмо на языке чека.
- Интернет-магазин: при самовывозе и доставке интернет-магазин сам отправляет письмо через несколько часов после того, как заказ закрыт в кассе, на языке гостя.
- Google: вставьте ссылку для отзыва из профиля компании (Google → ваш профиль компании → Попросить отзывы,
https://g.page/r/.../review) или введите Place ID. - Trustpilot: введите домен вашего заведения (кнопка ведёт на
trustpilot.com/evaluate/<domein>). Если у вас в Trustpilot есть адрес для приглашений (Automatic Feedback Service,...@invite.trustpilot.com), введите и его: тогда письмо уходит в Trustpilot скрытой копией (BCC) с невидимыми именем, адресом e-mail и номером чека, а Trustpilot сам отправляет приглашение (тогда без собственной кнопки Trustpilot). Только Trustpilot с адресом для приглашений: касса отправляет письмо только в Trustpilot. - Не слишком часто: один и тот же гость (адрес e-mail) получает не больше одной просьбы за период (по умолчанию 90 дн.; 0 = каждый раз). Для этого касса хранит только хеш адреса; сам адрес e-mail удаляется, как только письмо отправлено (если не удалось — после трёх попыток, иначе через 14 дн.).
- QR-код на чеке (необязательно): также QR-код для отзыва под печатным чеком.
- Пример письма и Удалить ожидающие письма (адреса тогда сразу удаляются). Журнал показывает review_gevraagd с a***@domen.ru.
- Google и Trustpilot запрещают вознаграждение за отзыв и просьбы только к довольным гостям ("review gating"). Поэтому касса спрашивает всех одинаково и ничего не даёт взамен за отзыв.
- Чтение отзывов и ответы на них в кассе: см. «Управление отзывами» ниже.
Интеграция с Mailchimp и Klaviyo
Клиенты с картой лояльности — в вашей собственной программе рассылок: в Настройки → Заведение → Mailchimp и Klaviyo (под SMS- и e-mail-маркетингом). Переключателя нет: без интеграции с выбранным списком ничего не происходит.
- Подключение: с помощью API-ключа (Mailchimp: Профиль → Extras → API keys; Klaviyo: закрытый ключ
pk_…с правами на запись для Lists, Profiles, Subscriptions, Events, Campaigns и Templates). Секрет клиента и ключ больше никогда не показываются на экране (оставить пустым = сохранить). Затем выберите список (Mailchimp: audience). - Клиенты: кто дал согласие на e-mail, попадает в список (подписан) с именем, фамилией, телефоном, днём рождения и баллами (Mailchimp: поле
PUNTEN, касса создаёт его сама; Klaviyo: свойствоpunten). Согласие отозвано, e-mail изменён или клиент удалён — отписан. Повторно передаётся только то, что изменилось. При подключённой интеграции касса (и галочка "акции" в интернет-магазине) также запрашивает у нового клиента согласие на e-mail, и его можно изменить в Отчёт → Клиенты, даже без собственного e-mail-маркетинга. - Отписка: кто отписывается в Mailchimp или Klaviyo, в кассе тоже теряет согласие на e-mail (журнал: "отписан в Mailchimp"). Тех, кто отписался сам, касса повторно не подписывает.
- Заказы: каждый оплаченный чек клиента из списка передаётся как событие (Mailchimp:
bestelling, с суммой, номером чека и количеством; Klaviyo:Placed Order, со стоимостью в евро). С их помощью в программе рассылок можно настроить автоматические письма, например после первого заказа или если клиент не приходил месяц. Чеки, оформленные до выбора списка, не передаются. - Акции: в Отчёт → Маркетинг акцию можно также отправить через Mailchimp или Klaviyo (см. SMS- и e-mail-маркетинг); касса тогда создаёт там кампанию и отправляет её.
- Обновление: каждые 5 минут или кнопкой Обновить сейчас. Отвязать: удаляется из кассы; в Mailchimp и Klaviyo всё остаётся. Ключи хранятся в базе данных (входят в резервную копию, но не в экспорт конфигурации).
Код: lib/mailinglijst.ts, routes/mailinglijst.ts и MailingKoppelingen.tsx.
BI и экспорт данных
Данные о продажах в Power BI, Looker Studio, Excel, Google Sheets, Tableau, Qlik Sense, Metabase, BI-сервис (например, YourBI, BI4Horeca или Moore DRV) или собственное хранилище данных. Включается в Настройки → BI и экспорт данных (по умолчанию выключено). Только чтение: через интеграцию ничего нельзя изменить в кассе. Без данных гостей.
- Данные: чеки (включая чеки возврата), проданные товары (строки чеков), платежи, выручка по дням, выручка по часам, сторно, товары, сотрудники (без PIN-кода) и отработанные часы. Суммы в евро с точкой в качестве десятичного разделителя, время — по местному времени заведения.
- + Интеграция: выберите программу и способ. Каждая программа поддерживает один или несколько способов; можно иметь несколько интеграций одновременно (в том числе для одной программы).
- Программа сама получает данные (API): касса один раз выдаёт ключ только для чтения. Период через
?van=&tot=(ГГГГ-ММ-ДД) или постоянный адрес с?periode=(vandaag, gisteren, 7d, 30d, 90d, 365d, week, maand, vorigemaand, jaar); не более 366 дней, не более 200.000 строк. Ключ вAuthorization: Bearer,X-Sleutelили?sleutel=. - Через портал: если касса подключена к клиентскому порталу, тот же адрес работает и вне заведения, без открытия порта:
https://<portaal>/bi/<kassa-id>/<gegevens>?periode=90d&formaat=csv&sleutel=.... Так служба Power BI обновляет данные по расписанию (без шлюза), а Google Sheets может получать их через=IMPORTDATA("...")(это же источник для Looker Studio). Касса показывает адрес у интеграции. - Обзор сети через портал клиента (несколько заведений): один адрес и один ключ для всех ваших касс вместе. В каждой кассе, которая должна участвовать, включите Обзор сети через портал клиента (под переключателем BI) и создайте ключ в портале клиента в разделе Мои кассы → BI для всех ваших заведений. Затем:
https://<portaal>/bi/keten/<gegevens>?periode=90d&formaat=csv&sleutel=hpk_.... Портал получает данные с каждой кассы и объединяет их, сkassaIdиzaakв каждой строке. Кассы, которые офлайн или не участвуют, указаны вontbrekend(JSON) и в заголовкеX-Ontbrekend. Самой кассе для этого не нужен собственный ключ; отключение в кассе или в портале клиента останавливает это. - При наличии токена он передаётся как
Authorization: Bearer, а вX-HorecaPOS-Handtekeningесть подпись (sha256=HMAC содержимого). Если отправка не удалась, касса повторяет попытку каждую минуту; ничего не отправляется дважды. С параметром начиная с отправляются и старые чеки. - Касса передаёт файлы: каждый день (в заданное время, за предыдущий день; пропущенные дни догоняются) или каждый час (сегодня до текущего момента), в формате CSV (запятая или точка с запятой для нидерландского Excel) или JSON, в папку на кассовом компьютере (например, папку OneDrive или SharePoint для Power BI или Excel), на сервер FTP(S) или SFTP или по e-mail. Имена файлов:
horecapos_<gegevens>_<datum>.csv. - Отправить тест (push) и Экспортировать сейчас (файл) у интеграции.
- Скачать вручную: выберите данные, период и формат.
- Шаблон Power BI (
.pbit): готовый отчёт для Power BI Desktop, кнопка Скачать шаблон Power BI в разделе BI и экспорт данных. Сначала создайте API-подключение (Power BI). В модели: таблица для каждого набора данных с правильными типами, календарь (год, месяц, неделя, день недели), связи (дата → календарь, строки чеков → товары, отработанные часы → сотрудники) и меры (выручка с НДС и без, НДС, чаевые, чеки, гости, среднее на чек и на гостя, проданное количество, выручка по товарам, оплачено, сторно, отработанные часы, выручка на отработанный час). Три страницы: Обзор (ключевые показатели, выручка по дням, дням недели и часам, способы оплаты), Товары (по группам и по товарам) и Персонал (часы и выручка по сотрудникам). Через портал сервис Power BI также обновляет его по расписанию. - Секреты (токен, пароль, ключ) никогда не показываются в обзоре; оставить пустым = сохранить, Очистить = удалить. Всё записывается в журнал (без секретов).
Зарплата и планирование
При включённом Учёте прихода и ухода (Настройки → Заведение) в Настройки → Рабочее время внизу находится Зарплата и планирование (право Управление настройками), в двух отдельных блоках. Если учёт выключен, часов нет: тогда только блок «Планирование персонала» (выручка, онлайн или файлом выручки) находится внизу Настройки → Бухгалтерия, под заголовком Выручка в планирование:
- Расчёт зарплаты (payroll): выберите зарплатную программу или (Бельгия) социальный секретариат, заполните его поля и для каждого сотрудника его табельный номер в этой программе. Затем вы создаёте за период файл с отработанными часами (закрытые смены, по сотруднику за день прихода) и выручкой по сотруднику (без НДС, то, что он/она рассчитал(а)): готовый для Loket.nl (Variabele gegevens, итог по сотруднику за период, строка заголовка
aanslnr;persnr;ploeg;<looncomponent>) и SD Worx Бельгия (Tijdsregistratie, фиксированные позиции, по сотруднику за день), иначе список часов (CSV: Datum; Personeelsnummer; Naam; Uren; Omzet excl. btw). Сотрудники без табельного номера не попадают в файл Loket или SD Worx; касса сообщает, кто это. - Планирование персонала (WFM): выберите систему планирования. Повторная отправка перезаписывает данные. Кроме того, список выручки (CSV по дням и часам, без НДС и с НДС) и для Strobbo файл Excel для Importeer omzet.
- Только программы, работающие в стране заведения, по группам и по алфавиту; сервер отклоняет программу из другой страны (400).
- Ключи и токены никогда не выводятся на экран.
- Затрагивает бухгалтерию: затраты на зарплату проводит в бухгалтерии зарплатная программа, выручку проводит касса (Настройки → Бухгалтерия). AFAS Payroll и Exact Online Loon находятся в той же среде, что и бухгалтерия AFAS и Exact.
- На копии кассы на портале это невозможно (это делает касса в заведении).
- У ряда программ API не публичное или доступно только партнёрам (в т.ч. Loket, Nmbrs, Nostradamus, Employes, Shyfter, Planday, Eitje): они отмечены по запросу; до тех пор файл. Формат SD Worx и Strobbo взят из их документации: попросите проверить первый импорт.
| Программа | NL | BE | Онлайн | Файл | Примечание |
|---|---|---|---|---|---|
| Зарплатные программы и расчётные бюро | |||||
| ADP | ✓ | ✓ | по запросу | Список часов по сотрудникам и дням (CSV) | Подключение через ADP (по запросу); до тех пор список часов по сотрудникам и дням. |
| AFAS Payroll | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | Расчёт зарплаты в AFAS Profit (та же среда, что и бухгалтерия в AFAS); подключение по запросу, до тех пор список часов. |
| BCS HR | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | Подключение через BCS (по запросу); до тех пор список часов. |
| Buddee | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | Программа для кадров и зарплаты; подключение по запросу, до тех пор список часов по сотрудникам и дням. |
| Employes | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | У Employes есть API для отработанных часов (токен клиента); подключение появится после согласования с Employes. До тех пор список часов. |
| Exact Online Loon | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | Расчёт зарплаты в Exact Online (та же среда, что и бухгалтерия в Exact); подключение по запросу, до тех пор список часов. |
| Humanwave | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | Подключение через Humanwave (по запросу); до тех пор список часов. |
| Loket.nl | ✓ | – | по запросу | Loket.nl Variabele gegevens (CSV), Список часов по сотрудникам и дням (CSV) | Файл для Werkgever → Collectieve mutaties → Importeren → Variabele gegevens (часы по сотрудникам за период). Онлайн через API Loket после регистрации в Loket. |
| Nmbrs | ✓ | – | по запросу | Список часов по сотрудникам и дням (CSV) | Список часов по сотрудникам и дням для переноса в Nmbrs. Онлайн через API Nmbrs после регистрации приложения в Nmbrs. |
| Salar (Van Winckel) | ✓ | – | – | Список часов по сотрудникам и дням (CSV) | Список часов по сотрудникам и дням для бухгалтерской фирмы; формат импорта Salar не публичен. |
| Социальные секретариаты | |||||
| Acerta | – | ✓ | по запросу | Список часов по сотрудникам и дням (CSV) | Социальный секретариат: формат файла выполненных работ вы получите от Acerta; до тех пор список часов. |
| Group S | – | ✓ | по запросу | Список часов по сотрудникам и дням (CSV) | Социальный секретариат: формат файла выполненных работ вы получите от Group S; до тех пор список часов. |
| Liantis | – | ✓ | по запросу | Список часов по сотрудникам и дням (CSV) | Социальный секретариат с API, которое Liantis открывает для каждой компании отдельно; до тех пор список часов. |
| Partena Professional | – | ✓ | по запросу | Список часов по сотрудникам и дням (CSV) | Социальный секретариат: формат файла выполненных работ вы получите от Partena; до тех пор список часов. |
| SD Worx | ✓ | ✓ | – | SD Worx Tijdsregistratie (TXT), Список часов по сотрудникам и дням (CSV) | Бельгия: файл Tijdsregistratie (фиксированные позиции, по сотруднику за день) для "Tijdsregistratie importeren". Нидерланды: список часов. |
| Securex | – | ✓ | по запросу | Список часов по сотрудникам и дням (CSV) | Социальный секретариат: подключения идут через партнёров; до тех пор список часов. |
| Планирование и учёт рабочего времени | |||||
| Book'u | – | ✓ | по запросу | Выручка по дням и часам (CSV) | Book'u подаёт декларации Dimona; подключение кассы по запросу. До тех пор список выручки. |
| Deputy | ✓ | ✓ | ✓ | Выручка по дням и часам (CSV) | Онлайн: выручка по часам каждый час передаётся в Deputy (Sales). Постоянный токен создаётся в Deputy в разделе API-подключений. |
| Dyflexis | ✓ | – | ✓ | Выручка по дням и часам (CSV) | Онлайн: выручка по часам каждый час передаётся в Dyflexis (information streams). API-токен вы получите через Dyflexis. |
| Eitje | ✓ | – | по запросу | Выручка по дням и часам (CSV) | Eitje подключается через свою партнёрскую программу; до тех пор список выручки по дням и часам. |
| Exact Horeko | ✓ | – | по запросу | Выручка по дням и часам (CSV) | Подключение через Horeko (по запросу); до тех пор список выручки. |
| Fooks | ✓ | – | по запросу | Выручка по дням и часам (CSV) | Fooks сам разрабатывает подключения касс; до тех пор список выручки по дням и часам. |
| L1NDA | ✓ | – | по запросу | Выручка по дням и часам (CSV) | L1NDA разрабатывает подключения касс вместе с партнёрами; до тех пор список выручки по дням и часам. |
| Mr. Einstein | ✓ | – | по запросу | Выручка по дням и часам (CSV) | HR, графики и затраты на персонал для общепита; Mr. Einstein разрабатывает подключения касс вместе с поставщиком кассы (запрос через mreinstein.nl/contact). До тех пор список выручки по дням и часам. |
| Nostradamus | ✓ | ✓ | по запросу | Выручка по дням и часам (CSV) | Nostradamus принимает выручку через свой кассовый интерфейс (API-токен и домен заведения, по запросу в Nostradamus); до тех пор — список выручки по дням и часам. |
| Plan-Me | – | ✓ | по запросу | Выручка по дням и часам (CSV) | Plan-Me подаёт декларации Dimona; подключение кассы по запросу. До тех пор список выручки. |
| Planday | ✓ | ✓ | по запросу | Выручка по дням и часам (CSV) | У Planday есть открытое API для кассовых систем; подключение появится после согласования. До тех пор список выручки. |
| Shiftbase | ✓ | – | ✓ | Выручка по дням и часам (CSV) | Онлайн: выручка за день каждый час передаётся в журнал отдела в Shiftbase. API-ключ создаётся в Shiftbase в App center. |
| Shyfter | – | ✓ | по запросу | Выручка по дням и часам (CSV) | Shyfter подаёт декларации Dimona и принимает выручку за день через своё API; подключение появится после согласования с Shyfter. До тех пор список выручки. |
| Strobbo | ✓ | ✓ | – | Импорт выручки Strobbo (Excel), Выручка по дням и часам (CSV) | Файл Excel для Planning → € → Importeer omzet (выручка по дням и рабочим местам). |
| Tamigo | ✓ | ✓ | по запросу | Выручка по дням и часам (CSV) | Подключение через Tamigo (по запросу); до тех пор список выручки. |
| Werktijden.nl | ✓ | – | – | Выручка по дням и часам (CSV), Список часов по сотрудникам и дням (CSV) | Werktijden.nl сам регистрирует часы и (пока) не принимает выручку через своё API; списки нужны для сравнения. |
| XPS Logic | ✓ | – | по запросу | Выручка по дням и часам (CSV) | XPS Logic ориентирован на гибкий и временный (агентский) персонал; подключение по запросу. До тех пор список выручки. |
Требования закона в Бельгии и Нидерландах
Что требует закон и что HorecaPOS для этого делает (попросите бухгалтера подтвердить, что действует для вашего заведения):
| Страна | Требование | HorecaPOS |
|---|---|---|
| Бельгия | Зарегистрированная кассовая система (GKS 2.0) с чёрным ящиком для заведений общепита, которые обязаны ей соответствовать (в т.ч. при выручке от блюд более € 25.000 в год без НДС) | подключение к чёрному ящику (FDM), обязательные данные на чеке и счётчики в Z-отчёте (страна Бельгия в Настройки → Заведение, FDM_API_KEY и FDM_TERMINAL_ID); вверху раздела Настройки → Заведение вы выбираете, обязано ли заведение использовать GKS: Да = расчёт только с работающим чёрным ящиком, Нет = без него, с заявлением администратора (каждый год заново); пока ничего не выбрано, расчёт невозможен. Касса считает выручку от блюд и предупреждает при превышении 25.000 € |
| Бельгия | Электронные счета через Peppol: с 1 января 2026 счета между бельгийскими плательщиками НДС в обязательном порядке выставляются в структурированном электронном виде (UBL, Peppol BIS 3); кассовые чеки для потребителей под это не подпадают | экспорт дневной выручки в формате UBL по Peppol BIS Billing 3.0 для бухгалтерской программы (Экспорт в бухгалтерию); и счета по чеку для бизнес-клиентов (Настройки → Счета): UBL по Peppol BIS Billing 3.0 плюс счёт для печати, отправка по e-mail, через Billit в сеть Peppol, на собственный адрес или скачивание (см. «Счета для бизнес-клиентов») |
| Бельгия | НДС в общепите с 1 марта 2026: еда навынос и безалкогольные напитки 12% (в заведении и навынос), алкоголь 21%, блюда, которые клиент готовит сам (фондю, гурмэ), 6% | Помощник по НДС (Настройки → Законы и правила): тип каждого товара, правильная ставка сразу или с определённой даты; описания ставок A/B/C обновлены |
| Нидерланды | Закон об алкоголе: никакого алкоголя лицам младше 18, в том числе при онлайн-продаже и доставке (проверка возраста при передаче) | Проверка возраста: товары с алкоголем; в интернет-магазине клиент сам подтверждает 18+ (флажок не установлен заранее) с уведомлением, что возраст проверят при передаче; "18+" на кухонном чеке, чеке доставки и кассовом чеке |
| Нидерланды | Одноразовые стаканы и контейнеры (SUP): с 2024 отдельная видимая цена за пластиковую одноразовую упаковку при самовывозе и доставке | Сбор за одноразовую упаковку для каждого товара, отдельной строкой в чеке (НДС товара) и отдельно в выручке |
| Нидерланды | Залог за банки и пластиковые бутылки | Залог для каждого товара (€ 0,15 / € 0,25), отдельная строка без НДС при самовывозе и доставке, отдельно в выручке |
| Нидерланды | Оплата наличными: с 1 января 2026 нельзя принимать € 3.000 или больше наличными за товары | Предупреждение при самовывозе и доставке (также на кассовом автомате); можно подтвердить, это записывается в журнал |
| Нидерланды и Бельгия | Изменение НДС: ставка или товар получает другой процент НДС с определённой даты | Планирование изменения НДС: касса выполняет его в тот же день (в Бельгии по товарам, буквы A/B/C/D фиксированы) |
| Нидерланды | Проживание (ночёвки) 21% с 1 января 2026 | ставка НДС настраивается для каждого товара |
| ЕС | Директива Omnibus: зачёркнутая цена «было» может быть только самой низкой ценой за последние 30 дней | интернет-магазин зачёркивает цену только относительно самой низкой цены за 30 дней (касса хранит историю цен; еженедельные happy hours учитываются) |
| ЕС | European Accessibility Act (с 28 июня 2025): интернет-магазины должны быть доступными (WCAG 2.1 AA) | интернет-магазин работает с клавиатурой и программой чтения с экрана (ссылка "К содержимому", видимый фокус, подписи) и имеет заявление о доступности (ссылка внизу) |
| Нидерланды | XML Auditfile Financieel (XAF): стандарт налоговой службы Нидерландов (Belastingdienst) для передачи учётных данных (или их части); XAF 4.0 обязателен с 2027 года | экспорт как XAF 4.0 (Экспорт для бухгалтерии) |
| Нидерланды | Надёжная кассовая система: хранить данные кассы (все чеки, корректировки и события) и иметь возможность предоставить их в цифровом виде при проверке; для этого Belastingdienst рекомендует XML Auditfile Afrekensystemen (XAA) | экспорт в формате XAA 3.2 (Отчёт → Выручка за период → Аудит-файл кассы), по желанию с подписью сертификатом поставщика |
| Бельгия | Регистрация присутствия при зарегистрированной кассовой системе: регистрация начала и окончания рабочего времени работников в кассовой системе | Учёт прихода и ухода (Настройки → Заведение; Обязательно = сначала отметить приход) регистрируется в чёрном ящике |
| Бельгия | Dimona: каждое трудоустройство (в том числе flexi-jobs и студентов) декларировать в RSZ до его начала | это делает ваш социальный секретариат или инструмент планирования (напр. Shyfter, Book'u, Plan-Me); HorecaPOS предоставляет отработанные часы и выручку (Настройки → Рабочее время → Зарплата и планирование) |
| Нидерланды | Учёт рабочего времени и времени отдыха (Закон о рабочем времени, Arbeidstijdenwet) | Учёт прихода и ухода с отработанными часами по каждому сотруднику, которые может исправлять администратор (с журналом изменений), и список часов для зарплатной программы |
| Нидерланды и Бельгия | HACCP / безопасность пищевых продуктов: регистрация температур (охлаждение, морозильник, поддержание в тепле, термообработка, быстрое охлаждение, приёмка) и уборки; NL Hygiënecode voor de Horeca (NVWA), BE самоконтроль FAVV (руководство G-023) | Регистрация HACCP в кассе (Настройки → Законы и правила, кнопка HACCP вверху): точки измерения с границами, задачи по уборке и контролю, обязательное корректирующее действие при отклонении, записи без возможности изменения, отчёт с пропущенными записями как CSV или печать (см. Регистрация HACCP) |
| Нидерланды и Бельгия | Обязанность хранения (NL 7 лет, BE 10 лет) | чеки, Z-отчёты и журнал хранятся в базе данных и в резервных копиях; журнал нельзя изменить или удалить из кассы |
Законы и правила
Настройки → Законы и правила (администратор; помощник по НДС также с правом Управление товарами). По умолчанию всё выключено; без этих настроек касса работает как обычно.
- Проверка возраста для алкоголя (18+): в разделе «Товары» отметьте Содержит алкоголь (или используйте помощника по НДС). При самовывозе и доставке с алкоголем на кухонном чеке, кассовом чеке и на экране заказов стоит "18+". В интернет-магазине клиент сам подтверждает, что ему 18 лет или больше (флажок не установлен заранее), и видит, что возраст проверят при передаче.
- Сбор за одноразовую упаковку (Нидерланды): сумма для каждого товара (ориентировочные цены: стакан € 0,25, контейнер для блюда € 0,50, маленький контейнер € 0,05). При самовывозе и доставке касса сама добавляет в чек строку "Сбор за упаковку" (с НДС товара); она автоматически следует за товарами (база данных отслеживает её и после удаления, переноса или смены типа заказа) и учитывается отдельно в выручке. В заведении сбора нет. Thuisbezorgd.nl и интернет-магазин начисляют свой собственный сбор.
- Залог (Нидерланды): для каждого товара (€ 0,15 банка/бутылка, € 0,25 большая бутылка), строка "Залог" без НДС, только при самовывозе и доставке.
- Наличные от € 3.000 (Нидерланды, с 1-1-2026 запрещено для товаров): при самовывозе и доставке — предупреждение при оплате и на кассовом автомате; сотрудник может подтвердить (напр. кейтеринг как услуга), это записывается в журнал. Еда и напитки в заведении — услуга: без предупреждения.
- Помощник по НДС: тип каждого товара (блюдо, безалкогольный напиток, алкогольный напиток, продукты без приготовления, прочее; сначала предположение по названию и группе). Касса показывает правильную ставку в заведении и навынос (Бельгия с 1-3-2026: блюда и безалкогольные напитки 12%, в том числе навынос; алкоголь 21%; продукты без приготовления 6%. Нидерланды: 9% и 21%) и применяет её сразу или с определённой даты.
- Планирование изменения НДС: товар на другую ставку или (только Нидерланды) ставка с новым процентом, начиная с определённой даты. Касса выполняет это в тот день сама (проверка каждые 15 минут и при запуске).
Счета (в Бельгии обязательны между компаниями) описаны в разделе «Счета для бизнес-клиентов». Осталось сделать: GKS 2.0, узнать, как обстоит дело с сертификацией (см. docs/backlog-concurrenten.md).
Счета для бизнес-клиентов
Настройки → Счета (администратор; по умолчанию выключено): включите Счета для бизнес-клиентов (UBL / Peppol). Ниже, если включено, находятся Оплата по счёту, Данные в счёте, Сервисы Peppol, Подключение к банку (при оплате по счёту) и список всех счетов. В Бельгии электронные счета между компаниями обязательны с 1-1-2026.
- Счета для бизнес-клиентов: Чеки → выберите чек → Счёт. Укажите клиента (или выберите прежнего); касса создаёт счёт с номером (напр. F2026-0001, нумерация по годам) в формате UBL по Peppol BIS Billing 3.0 и в виде счёта для печати или сохранения в PDF. Отправка по e-mail (оба файла во вложении, при желании копия бухгалтеру), через Billit в сеть Peppol (
BILLIT_API_KEY,BILLIT_PARTY_ID), через Storecove (STORECOVE_API_KEY,STORECOVE_LEGAL_ENTITY_ID; получатель определяется по Peppol-ID клиента, напр. 0208 → BE:EN, 0106 → NL:KVK, иначе по e-mail через Storecove) или через Banqup от Unifiedpost (BANQUP_CLIENT_ID,BANQUP_CLIENT_SECRET,BANQUP_SPACE_ID;BANQUP_SANDBOX=1для тестовой среды; Banqup проверяет UBL и сам доставляет его), на собственный адрес (FACTUUR_HTTP_URL, напр. бухгалтерская программа или другой сервис Peppol) или скачивание. Один счёт на чек; чек уже оплачен, поэтому "оплачено". Номер KvK/предприятия, IBAN, Peppol-ID, префикс и срок оплаты — в разделе Данные в счёте. Все счета — внизу вкладки (право Выручка за период). - Ключи, секреты и заголовки никогда не отображаются (только "заполнено"; оставить пустым = сохранить, Удалить = удалить) и не записываются в журнал (только какие поля изменились). Они хранятся в базе данных (
vestiging.peppol_gegevens): входят в резервные копии, но не в экспорт конфигурации.
Киоск самообслуживания
Гости заказывают сами на стойке или планшете, как в фастфуде, и платят на кассе или картой у киоска. Экраны заказа — часть самой кассы, поэтому меню, цены, опции, комплексы, happy hours, части дня, фото, аллергены, языки и чек берутся из кассы, и их не нужно настраивать где-то ещё. На киоске работает приложение PinPortal Kiosk 2 (Android, включая Sunmi, а также Windows, Linux и macOS), которое показывает страницу и печатает чек. По умолчанию выключено.
Включение и настройка (администратор): Настройки → Заведение → Экраны и управление → Киоск самообслуживания.
- Выберите, что может выбрать гость: Здесь и/или С собой (с собой считается по цене с собой и ставке НДС для выноса, если они заданы).
- Приветственный текст, через сколько секунд без касаний киоск возвращается к началу (корзина при этом очищается) и какие группы товаров есть на киоске (ничего не отмечено = все).
- Что-нибудь ещё?: отметьте группы товаров (напр. напитки, десерты); у корзины киоск тогда предложит несколько товаров из них.
- Оплата, для каждого киоска (см. Добавление и подключение киоска):
- На кассе (по умолчанию, как в старом киоске): гость заказывает, получает номер выдачи и платит на кассе. Терминал у киоска не нужен.
- Картой у киоска: гость платит на терминале у киоска.
- Гость выбирает: на кассе или картой. Если у киоска нет терминала, оплата на кассе.
- На кухню (при оплате на кассе): сразу после заказа в киоске (по умолчанию) или только после оплаты на кассе.
- Чек: на принтере киоска (по умолчанию), на чековом принтере кассы или без чека (только номер на экране). При оплате на кассе киоск печатает листок с номером и надписью ещё не оплачено; кассовый чек выдаётся при расчёте на кассе.
- Статус заказа на телефоне (по желанию, по умолчанию выключено): на чеке киоска и на финальном экране появляется QR-код. Гость сканирует его, видит свой номер и статус (заказано, готовится, готово) и получает уведомление, когда заказ готов. Работает через портал управления, поэтому касса должна быть к нему подключена.
- Алкоголь и весовые товары никогда не попадают на киоск: без персонала нельзя проверить возраст, и весов нет.
- Сканер штрихкодов (необязательно, по умолчанию всё выключено): отметьте, что может делать сканирование на киоске:
- товар в корзину (код товара);
- промокод;
- карта лояльности (гость копит баллы);
- подарочная или предоплаченная карта как оплата. Если баланса достаточно, заказ сразу оплачен. Иначе карта оплачивает часть, а остаток гость платит картой или на кассе (тогда это можно и на киоске только с оплатой картой). После такой частичной оплаты гость больше не может отменить заказ; заказ отображается на кассе как Киоск … · номер.
Сам сканер настраивается на киоске: в приложении PinPortal Kiosk 2 в разделе управления → Сканер штрихкодов (как клавиатура, встроенный сканер или COM-порт), с тестом сканера. Сканер, работающий как клавиатура, работает и без приложения.
- Пополнить баланс (необязательно, по умолчанию выключено; работает только при включённом параметре Пополняемый баланс): на стартовом экране киоска тогда появляется Пополнить баланс. Гость сканирует свою клубную или подарочную карту (или вводит код), видит баланс и выбирает сумму. Суммы вы задаёте сами (от 1 до 6, по умолчанию € 10, € 20 и € 50). Оплата — как настроено для киоска: картой или на кассе по номеру выдачи. После расчёта сумма зачисляется на баланс. Такое пополнение не отправляется на кухню, не показывается на экране вызова и не получает QR-код. Максимальный баланс из параметра Пополняемый баланс действует и здесь.
- На мой номер (интеграция с отелем, по умолчанию выключено; Настройки → Отель → Самообслуживание): тогда у корзины появляется Записать на мой номер. Гость отеля вводит номер комнаты и фамилию; если они совпадают с гостем, который сейчас проживает в этом номере, заказ уходит на кухню и записывается на номер как оплаченный (см. Гостиничное ПО: на номер).
- Бельгия (чёрный ящик): всё, что ещё не протестировано с чёрным ящиком, в киоске автоматически выключено (подарочная карта или баланс как способ оплаты, пополнение, промокод, комплексные меню, опции с доплатой, happy hour), так же как на кассе.
Добавление и подключение киоска
- В разделе Киоски введите название (напр. Киоск вход) и выберите Добавить киоск. Вы получите код подключения из 6 цифр (действует 30 минут).
- Выберите у киоска, как платит гость: по умолчанию на кассе. Если это киоск с терминалом, выберите картой или гость выбирает и выберите терминал этого киоска (из Настройки → Оплата).
- Откройте на киоске страницу киоска:
- в заведении: в приложении в управлении → Vast adres адрес, указанный у настройки, напр.
http://192.168.1.20:3000/kiosk; - или через портал управления (https, даже если киоск не в той же сети): привяжите адрес киоска, указанный у настройки, к коду киоска в приложении, как со старым киоском.
- в заведении: в приложении в управлении → Vast adres адрес, указанный у настройки, напр.
- Введите код подключения на киоске. Готово: киоск запоминает свой ключ. Подключить заново даёт новый код; Удалить отключает его.
У каждого киоска видно, в сети ли он.
Как заказывает гость
- Стартовый экран с приветствием; гость выбирает язык (все языки кассы) и касается экрана, чтобы заказать.
- Здесь или с собой.
- Меню по группам товаров, с фото, ценой (с happy hour), аллергенами и тем, что закончилось. Товары с выбором или комплекс открывают окно выбора.
- Корзина: изменение количества и, при желании, Что-нибудь ещё?.
- Заказать (оплата на кассе): гость видит свой номер выдачи крупно на экране вместе с суммой, получает листок и платит на кассе. В кассе заказ открыт как Киоск Вход · 42 (номер, который называет гость); расчёт как обычно. После этого он отображается как оплаченный на экране вызова и уходит на кухню, если это должно было произойти только после оплаты.
- Оплатить картой: касса отправляет сумму на терминал этого киоска (то же подключение оплаты, что и на кассе). Если не получилось, гость может попробовать снова или отменить (или, если можно выбирать, всё же оплатить на кассе). Только после успешной оплаты заказ уходит на кухню и закрывается. Гость видит свой номер выдачи крупно на экране и получает чек.
- Через несколько секунд киоск возвращается в начало.
При сбое: уведомление и аварийный режим (в приложении киоска, управление → Bij storing; по умолчанию выключено). Если киоск не может связаться с кассой, на нём отображается Even gesloten. Две дополнительные функции:
- Teams, Slack, Discord, ntfy, Home Assistant, Make или Zapier), а также сообщение hersteld, когда всё снова работает. Кнопкой Testmelding sturen вы проверяете адрес.
- Аварийный режим: киоск сохраняет простое меню, которое передаёт ему страница киоска: товары без вариантов выбора и без комплексных меню, по цене «здесь» (или «с собой», если это единственный вариант).
- Если кассы нет какое-то время (по умолчанию 60 секунд), гость заказывает из этого меню.
- Гость платит картой или на стойке. Оплата картой возможна, только если в приложении включено Pinbetaling.
- Печатаются два аварийных талона: один для гостя (N1, N2 …) и один для стойки/кухни. На них указано, что это не кассовый чек.
- Когда касса возвращается, страница киоска заносит аварийные заказы в кассу как Nood N… <киоск>. Они не уходят на кухню (у неё уже был аварийный талон) и не показываются на экране вызова.
- Оплачено картой и сумма та же, что в кассе: заказ рассчитан как Оплата картой вручную. Иначе (оплата на стойке или другая сумма) заказ остаётся открытым для официантов.
- Всё записывается в журнал.
- Бельгия: с зарегистрированной кассовой системой (GKS, чёрный ящик) каждая продажа должна сразу проходить через кассу и FDM. Аварийный режим тогда, скорее всего, не допускается; сначала уточните. В Бельгии приложение киоска включает его только после дополнительного подтверждения, а касса показывает предупреждение у киоска.
В кассе заказ из киоска — обычный заказ (навынос или в зале, с названием Киоск Вход) на имя сотрудника Kiosk. Касса создаёт его сама; никто не может войти под ним. Не делайте его неактивным, иначе киоск не сможет заказывать. Заказы из киоска есть в отчётах, в разделе Чеки и на экране вызова. Заказ, не завершённый в киоске (не заказан или не оплачен картой), сам истекает через 30 минут.
Оплата картой в тестовом режиме (Настройки → Оплата)? Тогда киоск на самом деле не принимает деньги; удобно для пробы. Без интернета оплатить картой нельзя; киоск тогда сообщает, что заказать можно у стойки.
Сбой: если касса недоступна, приложение киоска показывает "Временно закрыто" и само продолжает работу. Если киоск работает через портал управления и пропадает интернет, приложение может перейти на кассу в локальной сети (в приложении: управление → Расширения → При сбое переходить на локальную сеть); адрес передаёт сам киоск.
Выключение: киоск сообщает, что ненадолго закрыт. Киоски и настройки сохраняются. В журнале фиксируются включение/выключение, настройки, добавленные и удалённые киоски, подключения и отменённые заказы.
Электронный меню-борд
Меню с ценами на телевизоре (или другом мониторе с браузером), прямо из кассы. По умолчанию выключено; включается в Настройки → Заведение → Экраны и управление → Электронный меню-борд. Затем откройте на телевизоре http://<kassaserver>:3000/menubord (или кнопку На отдельном экране / На планшете или телефоне с QR-кодом). Без входа и без привязки.
- По каждой группе товаров — товары с ценой, в порядке кассы. Сами выберите, какие группы (и в каком порядке), от 1 до 4 колонок, тёмное или светлое оформление, свой заголовок (пусто = название заведения), фото товаров и аллергены.
- Всегда актуально: борд запрашивает меню каждые 10 секунд (и сразу при изменении), поэтому распроданный товар (зачёркнутый с пометкой Распродано или убранный с борда), закончившиеся остатки, happy hour (акционная цена с зачёркнутой обычной ценой, а название и время окончания вверху) и периоды меню (только то, что продаётся сейчас) отображаются правильно автоматически.
- Если всё не помещается на экране, страницы сменяются (по умолчанию каждые 12 секунд, настраивается от 5 до 120).
Персонал и PIN-коды
Настройки → Персонал (только администратор): добавление сотрудников, изменение имени, роли и PIN-кода, перевод в неактивные.
- Роли: официант (заказы, расчёт, X-отчёт), менеджер (дополнительно скидки, возвраты, закрытие дня, денежный ящик и журнал) и администратор (всё, включая все Настройки). Это стандартные права; что могут официант и менеджер, можно изменить (см. Права по ролям).
- PIN-код от 4 до 8 цифр, уникальный среди активных сотрудников. PIN-коды хранятся в базе данных только в зашифрованном виде (хеш) и не могут быть прочитаны.
- Удалить сотрудника полностью нельзя (на него ссылаются чеки и журнал); неактивный = больше не может войти.
- Всегда остаётся хотя бы один активный администратор.
- Другая роль, новый PIN-код или неактивность: текущие сеансы этого сотрудника сразу завершаются.
- Бельгия: при желании — национальный регистрационный номер для учёта персонала.
- Язык: язык экранов для этого сотрудника (или "Язык устройства"). После входа касса сразу переключается на этот язык; сотрудник может также сам сменить его флажком в правом нижнем углу (см. Языки).
- Совет: замените демо-PIN-коды 1111 и 2222 до запуска кассы в работу.
Вход по карте (по желанию)
По умолчанию выключено. Включить: Настройки → Персонал, галочка Вход по карте (NFC, RFID или iButton). Нужно: USB-считыватель карт, работающий как клавиатура (для NFC- или RFID-карт, брелоков, браслетов или ключей iButton). Такой считыватель "печатает" номер карты и нажимает Enter; драйвер или интеграция не нужны.
- Привязка: нажмите на сотрудника, затем Привязать карту и приложите карту к считывателю. Одна карта принадлежит одному сотруднику. Убрать карту, если она потеряна.
- Вход: на экране входа приложите карту к считывателю. PIN-код тоже продолжает работать как обычно.
- Приход и уход (если включено): на экране входа Приход / уход и карту к считывателю.
- Номер карты хранится в базе данных только в зашифрованном виде (хеш), как и PIN-код. Неактивные сотрудники не могут войти и по своей карте.
- Выкл.: вход только по PIN-коду, как обычно. Привязанные карты сохраняются.
Права по ролям
Настройки → Права (только администратор): для каждой роли отметьте, что могут официант и менеджер. По умолчанию всё точно так, как описано выше (как касса работала всегда); отличающаяся ячейка выделена цветом.
| Право | Официант | Менеджер |
|---|---|---|
| Удалять строки после заказа (сторно) | да | да |
| Давать скидку / убирать скидку | нет | да |
| Отмечать товар как "нет в наличии" | да | да |
| Печатать копию чека | да | да |
| Возврат (кредит-чек) | нет | да |
| Расчёт по счёту и приём платежей по счёту (только при включённой оплате по счёту) | нет | да |
| Промежуточный итог (X-отчёт) | да | да |
| Закрыть день (Z-отчёт) | нет | да |
| Выручка за период | нет | да |
| Управлять денежным ящиком | нет | да |
| Управлять подарочными сертификатами (только для сертификатов с балансом) | нет | да |
| Читать отзывы и отвечать на них (только при включённом управлении отзывами) | нет | да |
| Управление картой лояльности (только при включённой карте лояльности) | нет | да |
| Просматривать журнал | нет | да |
| Просмотр камер (только при включённом видео с камер) | нет | да |
| Управлять складом (только при включённом учёте остатков) | нет | да |
| Управление товарами | нет | нет |
| Управлять планами зала | нет | нет |
| Настраивать заведение, оплату и принтеры | нет | нет |
| Просматривать и изменять рабочее время | нет | нет |
- Администратору всегда разрешено всё. Изменять персонал и права может всегда только администратор (иначе кто-то мог бы выдать себе больше прав).
- Кнопки и вкладки, недоступные роли, для неё скрыты; кассовый сервер это тоже проверяет. Если менеджеру дать, например, Управлять товарами, он увидит кнопку Настройки только с вкладкой «Товары».
- Изменения сразу действуют на всех кассах и записываются в журнал. Сбросить по умолчанию возвращает всё как было.
Данные заведения
Настройки → Заведение (только администратор): название, адрес, почтовый индекс, город, телефон и номер НДС точки. Они печатаются вверху каждого чека и проформы. Здесь же задаётся текст внизу чека (можно несколько строк; пусто = без текста; по умолчанию "Bedankt en tot ziens!"), а под ним — язык чека (по умолчанию нидерландский; см. Языки). Пример чека меняется в реальном времени. После сохранения следующий чек сразу использует новые данные. Страну и фискальные данные (GKS) здесь намеренно изменить нельзя. В Бельгии номер НДС обязателен. С галочкой Округлять наличные платежи до 5 центов (по умолчанию выключено) итог при оплате наличными округляется (€ 6,62 → € 6,60, € 6,63 → € 6,65); разница указывается в чеке как "Округление". Оплата картой всегда точна до цента.
Управление товарами
Войдите как администратор и выберите Настройки → Товары.
- Добавляйте, изменяйте (название, цена, группа, ставка НДС на месте и навынос, название в чеке, код, нет в наличии) и удаляйте группы товаров и товары. Группам и товарам можно задать собственный цвет; товар с цветом получает цветную кнопку на экране заказа (текст автоматически белый или тёмный для читаемости).
- Порядок меняется перетаскиванием группы или товара за ≡. Это работает мышью и пальцем на планшете. Именно в этом порядке они будут на экране заказа; открытые экраны кассы обновляются сразу.
- Удаление убирает товар из кассы, но старые заказы и фискальный журнал по-прежнему его знают. Группу можно удалить только когда она пуста.
- Опции: откройте товар или группу товаров и добавьте в разделе "Опции" группы опций, например "Прожарка" (ровно одна, обязательно), "Соус" (не более одного) или "Дополнительно" (несколько, с минимумом и максимумом; пустой максимум = без ограничений). У каждой опции есть название и доплата (может быть отрицательной, например -0,50). Группы опций группы товаров действуют для всех товаров этой группы, в дополнение к собственным опциям товара. Порядок — кнопками ▲▼. Удалить можно всегда: существующие заказы и чеки сами хранят выбранные опции. Сервер также проверяет обязательные опции и максимум.
- Фото для товара: см. «Фото товаров».
- Цена за килограмм, номер PLU и тара (только при включённых весах): см. «Настройка весов». Без галочки товар продаётся поштучно.
Фото товаров
Каждому товару можно добавить фото.
- Добавить фото: Настройки → Товары → выберите товар → Выбрать фото (на планшете или телефоне можно сразу снять камерой). Фото уменьшается в браузере максимум до 512 × 512 пикселей (JPEG, обычно 20–80 кБ) и сразу сохраняется; Другое фото заменяет его, Удалить фото удаляет. В списке товаров перед названием показывается маленькое фото. Только с правом Управлять товарами; jpg, png и webp, не более 512 кБ.
- Что показывать, администратор выбирает в Настройки → Заведение → Фото товаров, независимо друг от друга, по умолчанию выключено:
- Фото товара на кнопках экрана заказа: фото вверху кнопки товара, под ним название и цена.
- Фото товара рядом с товарами на экране покупателя: маленькое фото перед каждой строкой на экране покупателя (сам экран покупателя тоже должен быть включён). Товары без фото остаются как есть; если выключено, всё работает точно как раньше.
Сканер штрихкодов
Сканером штрихкодов на кассе вы сканируете товары, промокоды, карты лояльности и подарочные карты. Включается в Настройки → Сканер (вкладка рядом с принтерами и весами; по умолчанию выключено). Отметьте, что делает сканирование на экране заказа:
- Товар в чек: товар с этим кодом (Настройки → Товары, поле Код; напр. штрихкод EAN на упаковке). Если есть варианты, меню или цена за килограмм, сначала открывается окно выбора или весы, как при нажатии. То же самое делает Сканирование на экране заказа в Печать этикеток; оно продолжает работать как прежде.
- Промокод в чек (если промокоды включены).
- Карта лояльности: клиент с этим номером карты добавляется в чек (если карта лояльности включена). Если вы сканируете неизвестный код при чеке с клиентом, касса спросит, не его ли это новая карта.
- Подарочная или предоплаченная карта: касса показывает баланс (если подарочные карты с балансом включены). Оплата — в разделе Расчёт → Подарочная карта; там карту тоже можно отсканировать.
Касса ищет сначала среди товаров, затем среди карт лояльности, подарочных карт и промокодов. Сканирование работает на экране заказа, если курсор не стоит в поле ввода. В поле ввода код просто попадает в это поле.
Тест сканера: в Настройки → Сканер при каждом сканировании видно код и как касса его понимает, даже если сканер ещё выключен. Если не работает:
- Переключите сканер в режим клавиатура (USB-HID) с Enter после кода. У большинства сканеров это уже так.
- Встроенный сканер (напр. кассы Sunmi) настраивается в настройках сканера устройства на ввод с клавиатуры.
- Этикетки весов TS6X (вес и цена) обрабатывают сами весы, даже при включённом сканере.
На киоске сканер настраивается отдельно (Настройки → Заведение → Киоск); см. Киоск самообслуживания.
Печать этикеток
Этикетки товаров с названием, ценой и штрихкодом на принтере этикеток (Brother, Dymo, Zebra ...), установленном на компьютере или планшете. Включается в Настройки → Заведение → Печать этикеток (по умолчанию выключено). Там же выбирается размер этикетки (38 × 25, 57 × 32, 62 × 29 или 100 × 50 мм) и будут ли на ней цена и штрихкод. Пробная печать печатает одну пробную этикетку.
- Настройки → Товары → (товар) → Этикетки: выберите количество и нажмите Печать.
- Закупки → (полученный заказ) → Печать этикеток: для каждого товара столько этикеток, сколько поступило (полученные единицы заказа × количество в единице заказа; без ингредиентов). Не более 500 этикеток за раз.
- Касса открывает диалог печати: выберите в нём принтер этикеток и формат бумаги рулона. Каждая этикетка — одна страница.
- Штрихкод — это код товара (Настройки → Товары): 8 или 13 цифр с верной контрольной цифрой = EAN (12 цифр: контрольная цифра добавляется), иначе Code 128 (буквы, цифры и знаки препинания, до 30 символов). Без кода нет штрихкода.
- Сканирование на экране заказа (флажок, по умолчанию выключено): сканер штрихкодов, работающий как клавиатура, добавляет товар с этим кодом с обычными вариантами выбора (опции, весы, аллергия). Не вместе с весами TS6X, у которых свои этикетки с весом и ценой.
- Право: Управление товарами или Управление складом.
Настройка весов (A&D, Aclas, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec, Zebra)
Отдельная вкладка Настройки → Весы (право Настраивать заведение, оплату и принтеры, по умолчанию только администратор; вкладка есть всегда, даже если весы ещё выключены). По умолчанию выключено: тогда касса работает точно как раньше. Не видите вкладку?
Автоматический поиск. Если ещё ничего не настроено, касса при открытии этого раздела сама начинает поиск (кнопка Поиск запускает его заново):
- касса (сервер кассы) работает прямо на ПК-весах или AI-весах Aclas (TS6X, TS3X, TS5EX/NX/GX, iS6X, iS2X, iR6X, Ti6X, iL8X; марка/модель устройства: в Windows через WMI, в Android через
getprop, в Linux через DMI) и отвечает Aclas Scale Module? Тогда эти весы настраиваются как На этом устройстве, и весы для этикеток тоже; в Linux (без Scale Module) — встроенные весы на найденном внутреннем порту (/dev/ttyS...) как "TS6X (встроенные)", с указанием модели; - к COM-/USB-порту подключены OS6X? Каждый порт проверяется на скоростях 9600, 4800, 2400 и 19200 бод: сначала короткое прослушивание (непрерывный режим), затем отправка
W(Toledo), а иначе Dialog 06 (9600, 7 бит данных, контроль нечётности: запрос состояния).
Найденное вносится в форму с кнопкой Включить и использовать: одно касание — и всё работает. (Поиск отправляет W на каждый свободный COM-порт; занятый порт, например платёжным терминалом, пропускается.)
Все весы Aclas. Для каждых весов выберите модель; тогда касса знает, как их можно подключить. Есть два вида:
- На этом устройстве (настраивается один раз): касса работает на самих весах (ПК-весы или AI-весы). В Windows или Android взвешивание идёт через Aclas Scale Module, без порта, скорости и протокола; в Linux (без Scale Module) — через внутренний порт весов (обычно
/dev/ttyS0или/dev/ttyS1), с портом, скоростью и протоколом. Таких весов на кассу может быть только одни; Поиск находит их сам. ПК-весы или AI-весы (TS6X, iS6X ...) всегда На этом устройстве: в списке они могут быть только один раз, остальные модели ПК-/AI-весов тогда выбрать нельзя. TS6X в другом месте заведения может печатать этикетки (тогда включите только Сканирование этикеток). - Подключённые (несколько одновременно): весы подключены к серверу кассы кабелем (RS232/USB), по Bluetooth или через сеть. Сколько нужно (не более 8), каждые со своим названием.
Один список, две галочки. Все весы находятся в одном списке. Для каждых весов отметьте, что они делают: Взвешивание на кассе (касса запрашивает вес при заказе) и/или Сканирование этикеток (весы печатают этикетку со штрихкодом, которую сканирует касса, и получают PLU из кассы). ПК-весы или AI-весы, например TS6X, умеют и то и другое; весы для этикеток серии LS — только этикетки. Этикетки могут поступать только с одних весов на заведение.
| Модель | Тип | Подключения | В кассе |
|---|---|---|---|
| OS6X | POS-весы | RS232, USB, Bluetooth | подключённые, несколько одновременно |
| OS2X | POS-весы | RS232, USB | подключённые, несколько одновременно |
| CS6X, CS3X | Кассовые весы | RS232, USB, Ethernet, Wi-Fi | подключённые, несколько одновременно |
| TS6X, TS3X, TS5EX, TS5NX, TS5GX | Весы со встроенным компьютером (Windows, Android, Linux) | RS232, USB, Ethernet, Wi-Fi | на этом устройстве (1x), также как весы для этикеток |
| iS6X, iS2X, iR6X, Ti6X, iL8X | AI-весы с распознаванием товаров (Windows, Android, Linux) | RS232, USB, Ethernet, Wi-Fi | на этом устройстве (1x), также как весы для этикеток |
| iS5X, OiT2X | AI-весы (только Linux) | RS232, USB, Ethernet | подключённые или как весы для этикеток |
| LS2S, LS2RX, LS2CX, LS2NX, LS5SX, LS5RX, LS5CX, LS5NX, LS6CX, LS6RX, LS6NX | Весы для этикеток | RS232, Ethernet, Wi-Fi | сканирование этикеток и PLU |
| PS1CX, PS1DX, PS6CX, PS6DX | Весы с ценой | RS232 | подключённые, несколько одновременно |
| PS1BX | Весы с ценой без подключения | нет | вес вручную |
| LH15X | Подвесные весы с принтером этикеток | RS232, Ethernet, Wi-Fi | подключённые или как весы для этикеток |
A&D, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec и Zebra. Включены распространённые модели этих марок, для которых точно известно, как касса с ними общается (требует проверки = протокол не указан дословно ни в одном источнике; касса выбирает наиболее вероятный). Все подключённые (несколько одновременно) или как весы с печатью этикеток, этикетку которых сканирует касса:
| Марка | Модель | Тип | Подключение | Протокол (заводской) | В кассе |
|---|---|---|---|---|---|
| A&D | EK-i (в т. ч. EK-610i), HV-WP | Кассовые весы (только вес) | RS232, EK-i также USB | Непрерывно (режим stream), 2400 бод, 7E1 | подключённые, несколько одновременно |
| Adam Equipment | Swift | Весы с ценой | RS232, USB (опция) | Непрерывно (непрерывно на ПК), 9600 8N1 (требует проверки) | подключённые, несколько одновременно |
| Avery Berkel | FX110, FX120, FX131 (встраиваемые, со сканером) | Кассовые весы | RS232, FX131 также USB | Mettler Toledo 82/7 = Toledo 8217 (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| Avery Berkel | FX125 | Весы с ценой | RS232 | Checkout-Dialog 06 (9600, 7O1) | подключённые, несколько одновременно |
| Avery Berkel | Xs, XTs, XTi | Весы для этикеток | Ethernet, Wi-Fi, USB | свои PLU на весах | сканировать этикетки |
| Avery Weigh-Tronix | 7820, 7829, ZP900 | Кассовые весы | RS232, 7820 также USB, ZP900 также USB и Ethernet | NCI (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| Balanzas Marques | BM1000P TOP | Кассовые весы (только вес) | RS232 | METTLER (касса отправляет W, Toledo), 9600 бод, 7E1 | подключённые, несколько одновременно |
| Balanzas Marques | BM5 Junior Tower Label, BM500 ETQ | Весы для этикеток | Ethernet, USB, RS232, BM500 ETQ также Wi-Fi | свои PLU на весах | сканировать этикетки |
| Baxtran | TW, VW, XTA, XTA-P | Весы с ценой | RS232 | Toledo (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| Bizerba | CS 300 (также встраиваемые) | Кассовые весы | RS232 | Checkout-Dialog 06 (9600, 7O1) | подключённые, несколько одновременно |
| Bizerba | K-Class Flex, KH II | Весы для этикеток | Ethernet | свои PLU на весах | сканировать этикетки |
| Brecknell | 6702U, 6710U, 6720U | Кассовые весы | RS232, USB (виртуальный COM-порт) | NCI (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| CAS | PD-II, PDN, PDI, PDS-B | Кассовые весы | RS232, PDN также USB и Bluetooth, PDI также USB | ECR type 2 = Toledo (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| CAS | CL3000, CL5500, CL7200 | Весы для этикеток | Ethernet, USB, RS232, CL5500 и CL7200 также Wi-Fi | свои PLU на весах | сканировать этикетки |
| Datalogic | Magellan 9300i, 9400i, 9800i (сканер с весами) | Кассовые весы | RS232 (отдельный весовой порт), USB | Mettler Toledo 8217 (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| Dibal | KS-400, D-POS 400 | Кассовые весы | RS232, D-POS 400 также USB | Checkout-Dialog 06 (9600, 7O1) | подключённые, несколько одновременно |
| Dibal | G-325, PI-100 | Весы с ценой | RS232 | Checkout-Dialog 06 (9600, 7O1) | подключённые, несколько одновременно |
| Dibal | M-500 (Mistral), D-900, CS-2200 | Весы для этикеток | Ethernet, Wi-Fi, USB | свои PLU на весах | сканировать этикетки |
| DIGI | DS-781 | Весы с ценой | RS232 | DIGI Type B (касса отправляет ENQ), 9600 8N1 | подключённые, несколько одновременно |
| DIGI | SM-120, SM-6000 | Весы для этикеток | Ethernet, Wi-Fi | свои PLU на весах | сканировать этикетки |
| Dini Argeo | DFW, DGT, 3590E | Кассовые весы (только вес) | RS232, USB, Ethernet, DFW и 3590E также Wi-Fi | Непрерывно (ST,GS, 0.512,kg), 9600 8N1 | подключённые, несколько одновременно |
| Excell Precision | TPE, AM4, FD4-P, FDP4-P, GE4, GEP4 | Весы с ценой | RS232 | Непрерывно (ST,GS,+0.876kg), 9600 8N1 (кроме TPE, требует проверки) | подключённые, несколько одновременно |
| Gram | XFOC RS, XFOC+ RS, ZFOC RS | Весы с ценой | RS232, USB (кабель Gram) | Gram (касса отправляет ENQ, затем DC1), 9600 8N1 (XFOC требует проверки) | подключённые, несколько одновременно |
| Ishida | Uni-3, Uni-5, Uni-7, Uni-9 | Весы для этикеток | Ethernet, Wi-Fi, USB | свои PLU на весах | сканировать этикетки |
| Kern & Sohn | RPB, RFC | Весы с ценой | RS232, USB | Checkout-Dialog 06 (Prot = DLG-06, 9600, 7O1) | подключённые, несколько одновременно |
| Kern & Sohn | RFE (с ценой), IFB, EOC | Весы с ценой / кассовые весы | RS232 | Непрерывно, 9600 8N1 | подключённые, несколько одновременно |
| Mettler Toledo | Ariva-S | Кассовые весы | RS232, USB (виртуальный COM-порт) | Toledo 8217 (касса отправляет W), 9600 бод, 7E1 | подключённые, несколько одновременно |
| Mettler Toledo | Viva | Кассовые весы | RS232 | Toledo 8217, 9600 бод, 7E1 | подключённые, несколько одновременно |
| Mettler Toledo | bPlus, UC Evo | Весы для этикеток | Ethernet, Wi-Fi | свои PLU на весах | сканировать этикетки |
| Minebea Intec | Signum, Combics, Midrics, Puro | Кассовые весы (только вес) | RS232, USB, Signum и Combics также Ethernet | Непрерывно (SBI, автоматическая печать), 9600 8N1 | подключённые, несколько одновременно |
| Ohaus | Aviator 7000 | Весы с ценой | RS232 или USB | Checkout-Dialog 06 (9600, 7O1) | подключённые, несколько одновременно |
| Ohaus | Valor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000 | Кассовые весы (только вес) | RS232, USB, Ethernet | Непрерывно (Auto Print Continuous), 9600 8N1 | подключённые, несколько одновременно |
| Precia Molen | DP400 | Кассовые весы | RS232, USB | Checkout-Dialog 06 (9600, 7O1) | подключённые, несколько одновременно |
| Precia Molen | DPOS CR, C 210 B, C 210 C | Весы с ценой | RS232 | Checkout-Dialog 06 (9600, 7O1; C 210 требует проверки) | подключённые, несколько одновременно |
| Precia Molen | Corail 500 | Весы для этикеток | Ethernet, Wi-Fi | свои PLU на весах | сканировать этикетки |
| Precisa | XB, XT, LS, LX (прецизионные весы) | Кассовые весы (только вес) | RS232, LS и LX также USB | Непрерывно (режим печати CONTINUOUS), 9600 8N1 | подключённые, несколько одновременно |
| Rice Lake | BenchPro BP-S, BenchPro BP-R | Кассовые весы | RS232 | BP-S Toledo 8213, BP-R NCI (в обоих случаях касса отправляет W), 9600 бод, 7E1 (требует проверки) | подключённые, несколько одновременно |
| Rongta | RLS1000, RLS1100 | Весы для этикеток | Ethernet, RS232, Wi-Fi | свои PLU на весах | сканировать этикетки |
| Sartorius | Entris, Quintix | Кассовые весы (только вес) | RS232, USB | Непрерывно (SBI, автоматическая печать), 9600 8N1 | подключённые, несколько одновременно |
| Star Micronics | mG-T12, mG-T30, mG-T60, mG-S8200 | Кассовые весы (только вес) | RS232, USB (виртуальный COM-порт) | Непрерывно, 9600 8N1 (требует проверки) | подключённые, несколько одновременно |
| T-Scale | PA10, PA15, PEA10 | Весы для этикеток | Ethernet | свои PLU на весах | сканировать этикетки |
| UWE | ASEP | Весы с ценой | RS232 | Непрерывно, 9600 8N1 (требует проверки) | подключённые, несколько одновременно |
| Wedderburn | TSDS983 | Кассовые весы | RS232 | DIGI Type B (касса отправляет ENQ), 9600 8N1 (требует проверки) | подключённые, несколько одновременно |
| Wedderburn | TSDS781T, TSDS782T | Весы с ценой | RS232 | DIGI Type B, 9600 8N1 (требует проверки) | подключённые, несколько одновременно |
| Wedderburn | TSSM120 | Весы для этикеток | Ethernet, RS232 | свои PLU на весах | сканировать этикетки |
| Wintec | ScalePOS ACS-S60E (касса со встроенными весами) | Кассовые весы | внутренний COM6 (Windows) или COM4 (Android) | Непрерывно, 9600 8N1 (требует проверки) | подключённые |
| Zebra | MP7000, MP72 (сканер с весами) | Кассовые весы | RS232 (порт AUX) | SASI = Toledo (касса отправляет W), 9600 бод, 7E1 (требует проверки) | подключённые, несколько одновременно |
- A&D EK-i и HV-WP: переведите весы в режим stream (EK-i:
prt 0; с завода стоит печать по клавише PRINT), а на кассе установите Непрерывно с 2400 бод и 7E1 (так A&D настроены с завода). Сообщение:ST,+00512.00 g(US= вес нестабилен,OL= перегрузка). - Adam Equipment Swift: установите на весах непрерывно на ПК (8N1); тогда касса стоит на Непрерывно.
- Avery Berkel FX110, FX120 и FX131: выберите на весах протокол Mettler Toledo 82/7, а на кассе установите Запросить (Toledo) с 7E1 (9600 бод). Dialog 06 тоже подходит. FX125 (с дисплеем цены) не поддерживает Toledo: там Dialog 06. Касса настроит это сама при выборе модели.
- Avery Weigh-Tronix 7820, 7829 и ZP900 и Brecknell 6702U, 6710U и 6720U: NCI, протокол Weigh-Tronix. Касса отправляет
W(как и для Toledo), весы отвечают весом (1.234KG) и строкой состояния; она показывает, нестабилен ли вес, перегрузка или недогрузка. Касса стоит на Запросить (Toledo) с 7E1 (9600 бод). USB работает как виртуальный COM-порт. Для ZP900 установите на кассе порт 2 (NCI). Для 67xxU на весах можно также выбрать 8213 (SCP03). - Balanzas Marques BM1000P TOP: для COM-порта выберите протокол B (METTLER) и 9600 бод, 7 бит данных, чётная чётность; тогда касса стоит на Запросить (Toledo) с 7E1.
- Baxtran TW, VW, XTA и XTA-P (весы с расчётом стоимости; VW и XTA-P со стойкой): в меню RS232 весов выберите протокол Toledo, 9600 бод и 7 бит данных с чётной чётностью (7E1); тогда касса стоит на Запросить (Toledo) с 7E1. Касса настроит это сама при выборе модели. CONT (весы отправляют сами) тоже работает: тогда установите на кассе Непрерывно с той же скоростью и битами данных. Подключение кабелем RS232 (9-контактным) или кабелем USB–RS232.
- Bizerba CS 300: Checkout-Dialog 06 (спецификация Bizerba): касса отправляет цену за кг, поверенные весы считают сумму. Если весы запрашивают контрольные коды, их можно получить у Bizerba или поставщика.
- CAS PD-II, PDN, PDI и PDS-B (PDS-B, в частности, у LRE): выберите на весах ECR type 2 (Toledo), а на кассе установите Запросить (Toledo) с 7E1 (9600 бод).
- Datalogic Magellan 9300i, 9400i и 9800i: установите Scale Interface Type отдельного весового порта на Mettler Toledo 8217, а на кассе Запросить (Toledo) с 7E1.
- Dibal KS-400, D-POS 400, G-325 и PI-100: выберите на весах протокол Checkout_Dialog06 (протокол 24) и 9600 бод, 7 бит данных, контроль нечётности (тип параметра 5); тогда касса стоит на Dialog 06. D-POS 400 подключается и по USB.
- DIGI DS-781: установите на весах Type B / стандартная команда (data transmission
00011); касса отправляетENQи получает нетто, тару, цену за кг и сумму. - Dini Argeo DFW, DGT и 3590E: настройте последовательный порт на непрерывную передачу (9600 8N1); тогда касса стоит на Непрерывно.
- Excell Precision TPE (и 4-е поколение AM4, FD4-P, FDP4-P, GE4, GEP4): установите выход RS232 на непрерывно (9600 8N1); тогда касса стоит на Непрерывно.
- Gram XFOC RS, XFOC+ RS и ZFOC RS: протокол Gram (9600 8N1). Касса отправляет
ENQ, весы отвечаютACK, касса отправляетDC1, и весы отправляют вес:SOH STX S/U/F teken gewicht eenheid BCC ETX EOT(S= стабилен,U= в движении,F= ошибка; BCC = XOR от статуса до единицы измерения включительно). Подключение через RS232 или USB-кабель Gram. - Kern & Sohn RPB и RFC: установите на весах
Prot = DLG-06(подключение к кассе — опция 965-419); тогда касса стоит на Dialog 06. RFE, IFB и EOC: непрерывная передача (8N1), касса на Непрерывно. - Mettler Toledo Ariva/Viva: установите на весах протокол Toledo (8217), а на кассе Запросить (Toledo) с Биты данных / чётность = 7E1 (Mettler: 9600 бод, 7 бит данных, чётная чётность; Ariva подключается и по USB как виртуальный COM-порт). Касса настроит это сама при выборе модели.
- Minebea Intec Signum, Combics, Midrics и Puro и Sartorius Entris и Quintix: SBI с автоматической печатью (9600 8N1); тогда касса стоит на Непрерывно. Сообщение:
N + 0.512 kg; без единицы измерения вес ещё не стабилен. - Ohaus Aviator 7000: в настройках весов (шаг 20) выберите протокол Dialog 06; тогда касса стоит на Dialog 06. RS232 или USB, в зависимости от кабеля.
- Ohaus Valor 7000, Ranger 3000/4000/7000 и Defender 3000 (взвешивание без цены): установите на весах Auto Print Continuous (9600 бод, 8N1), а на кассе Непрерывно. Весы отправляют
0.512 kg G;?после веса означает, что вес ещё не стабилен. Ranger 7000 подключается и по Ethernet (TCP-порт 9761). - Precia Molen DP400, DPOS CR и C 210 (торговые весы с 2025 года принадлежат Dibal): Dialog 06 (9600 7O1), как у Dibal. Если с C 210 не работает, попробуйте Запросить (Toledo) с 7E1.
- Precisa XB, XT, LS и LX: установите режим печати CONTINUOUS и 9600 8N1, без даты, времени и ID в строке; тогда касса стоит на Непрерывно. Без единицы измерения вес ещё не стабилен.
- Rice Lake BenchPro BP-S (Toledo 8213) и BP-R (NCI): касса стоит на Запросить (Toledo) с 7E1.
- Star Micronics mG-T и mG-S8200: через RS232 или USB (виртуальный COM-порт, с драйвером Star) на Непрерывно.
- UWE ASEP: RS232 к ПК/кассе, касса на Непрерывно (требует проверки).
- Wedderburn TSDS983, TSDS781T и TSDS782T — это весы DIGI под собственным номером: DIGI (Type B), как и DIGI DS-781. Если не работает, попробуйте Запросить (Toledo) с 7E1.
- Wintec ScalePOS ACS-S60E: касса работает на самом ScalePOS; встроенные весы подключены к COM6 (Windows) или COM4 (Android), 9600 8N1. Выберите Непрерывно; если весы ничего не отправляют, Поиск найдёт правильный протокол.
- Zebra MP7000 и MP72: порт RS232 AUX с завода настроен на SASI (9600 7E1, касса отправляет
W): на кассе Запросить (Toledo) с 7E1. - Весы с этикетками этих марок (Avery Berkel, Balanzas Marques, Bizerba, CAS, Dibal, DIGI, Ishida, Mettler Toledo, Precia Molen, Rongta, T-Scale, Wedderburn) — самостоятельные системы со своим файлом PLU. Включите для весов Сканирование этикеток и задайте тот же штрихкод, что и на весах (EAN-13, начало 20–29, PLU и вес или цена). PLU задаются на самих весах или в программе марки; Отправить на TS6X и Скачать файл PLU есть только для Aclas.
Тот же список есть в кассе в Настройки → Весы → Все весы (ACLAS_MODELLEN в packages/shared/src/weegschaal.ts, с маркой для каждой модели).
Как можно меньше заполнять: при выборе модели касса готовит остальное так, как марка настраивает на заводе: подключение COM-порт / USB на первом свободном порту, 9600 бод (A&D: 2400) и протокол марки (Toledo: Aclas с 8N1, а с 7E1 Avery Berkel FX, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo, Rice Lake и Zebra; Dialog 06: Avery Berkel FX125, Bizerba, Dibal, Kern & Sohn RPB/RFC, Ohaus Aviator и Precia Molen; DIGI Type B: DIGI и Wedderburn; Gram: Gram; Непрерывно: A&D, Adam Equipment, Dini Argeo, Excell Precision, остальные Kern & Sohn, Minebea Intec, остальные Ohaus, Precisa, Sartorius, Star Micronics, UWE и Wintec), а также имя (напр. OS6X, OS6X 2). ПК- или ИИ-весы становятся На этом устройстве (напр. TS6X (ingebouwd); в Linux на внутреннем порту /dev/ttyS0). Если что-то не так, Поиск найдёт правильный порт, скорость и протокол.
На этом устройстве (Aclas Scale Module): весы показывают поверенный вес; касса передаёт цену за килограмм и тару (как предварительную тару) и принимает сумму, рассчитанную весами, как и при Dialog 06.
- Android: приложение Aclas AclasScaleDriver (
com.aclas.aclasscaledriver) обычно уже установлено на весах; если нет, установитеaclas-android/AclasScaleDriver.apk. Приложение HorecaPOS работает напрямую со службой этого приложения, поэтому дополнительная библиотека не нужна. - Linux: у Aclas нет Scale Module для Linux. Просто выберите модель (например, TS6X): подключение станет На этом устройстве (внутренний порт) на
/dev/ttyS0, 9600 бод, Toledo. Встроенные весы обычно находятся на/dev/ttyS0или/dev/ttyS1; Поиск проверяет их и подставляет правильный порт, скорость и протокол. И здесь они могут быть только один раз.
Программы Aclas входят в состав кассы: Scale Module для Windows (aclas-module), AclasScaleDriver для Android (aclas-android) и Aclas Sync SDK для Windows и Linux (aclas-sdk). Aclas разрешает нам их поставлять. Установщики для Windows и Linux их содержат; ничего не нужно отдельно скачивать или устанавливать.
Bluetooth (например, OS6X): сначала выполните сопряжение весов. Windows создаёт для них COM-порт (Параметры Bluetooth → Другие параметры Bluetooth → COM-порты), Linux — /dev/rfcomm0: укажите этот порт. В Android-приложении укажите Bluetooth-адрес (00:11:22:AA:BB:CC); приложение один раз запрашивает разрешение Устройства поблизости и подключается через Bluetooth SPP.
AI-весы (распознавание товаров): камера распознаёт товар в программе Aclas на весах. Взвешивание работает через Scale Module (на этом устройстве) или порт RS232; AI-весы для этикеток после распознавания печатают этикетку со штрихкодом, которую сканирует касса (как у TS6X).
Aclas AI Recognition Plugin (AI-весы, на которых работает касса, напр. iS6X с Windows): плагин Aclas распознаёт товар и вводит его штрихкод в кассу, как сканер (с Enter после него); экран заказа добавляет товар с весом в заказ. Как это настроить:
- Включите для весов Сканирование этикеток с тем же штрихкодом, что и в плагине. Рекомендуется: начинается с
27, PLU 5 цифр, вес (Aclas тип 17): тогда касса сама считает по цене за килограмм. С ценой (тип 12, начинается с22) тоже можно. - Для этих весов отключите Взвешивание на кассе: плагин и Scale Module не могут одновременно работать с весами. Вес берётся из штрихкода. Если плагин отвечает на Поиск, касса предлагает его результат и не запускает Scale Module. Без кода активации плагин взвешивает и рассчитывает сумму, но не распознаёт товары.
- В самом плагине: штрихкод в Scale and Barcode Format Settings → Default Barcode Format (тип 17), а в настройках окна — точка, где плагин щёлкает и вводит код. Выберите для этого пустое место на экране заказа, не на кнопке. Новым товарам заведение обучает плагин само на весах (обучение AI).
- Присвойте весовым товарам номер PLU и отправьте PLU на весы (Отправить на TS6X или файл PLU); плагин распознаёт по номеру PLU.
- Касса разрешает плагину распознавать только пока экран заказа открыт на самих весах (
POST /aiplugin/resume, при закрытии/aiplugin/suspend, порт 5003 на весах; в первый раз также EmployeeMode: экран покупателя на весах не показывает товары). На других кассах и планшетах и через портал управления ничего не происходит. - Плагин всегда запускается в режиме Resume и не может сообщить своё состояние. Поэтому экран заказа каждые 30 с снова отправляет resume; если этого нет (экран закрыт, плагин или весы перезапущены), касса в течение минуты переводит плагин в Suspend и держит его там.
- Плагину нужен код активации от Aclas для каждых весов (привязан к серийному номеру). Сейчас работает в Windows; версия Aclas для Android появится позже (касса там делает то же самое).
Aclas OS6X (POS-весы у кассы, RS232/USB; так же работают и другие подключённые весы):
- Одни или несколько весов (не более 8), каждые со своим названием (например, Прилавок, Бар) и своим подключением: COM-порт / USB (
COM3в Windows,/dev/ttyUSB0в Linux/Android) со скоростью или сеть через преобразователь «последовательный порт — сеть» (IP-адрес и TCP-порт, например 4001). - Протокол: Запросить (Toledo) = касса отправляет
W, весы отвечают весом (Toledo 8217, так обычно настроены OS6X; также сообщения нестабильно/перегрузка/ниже нуля) или Непрерывно = весы сами постоянно отправляют вес (ST,GS, 0.512kg,US= нестабильно) или Dialog 06 (поверенные), см. ниже, или DIGI (Type B) = касса отправляетENQ, а DIGI отвечает статусом, нетто, тарой, ценой за кг и суммой (37 символов:<status> <toestand> CR 0<netto> CR 4<tarra> CR U<kiloprijs> CR T<bedrag> CR LF; состояние бит 1 = стабильно, бит 2 = ниже нуля, бит 3 = слишком тяжело, бит 4 = слишком легко), или Gram = касса отправляетENQ, ждётACK, отправляетDC1и считываетSOH STX <S/U/F> <teken> <gewicht> <eenheid> <BCC> ETX EOT. Задайте на весах тот же протокол и скорость. Биты данных / чётность: 8N1 (Aclas, Adam Equipment, DIGI, Dini Argeo, Excell Precision, Gram, Kern & Sohn, Minebea Intec, Ohaus, Precisa, Sartorius, Star Micronics, UWE, Wedderburn, Wintec) или 7E1 (A&D, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Brecknell, CAS, Datalogic, Mettler Toledo 8217, Rice Lake, Zebra); Dialog 06 всегда 7O1. Запросить читает также NCI (Avery Weigh-Tronix, Brecknell, Rice Lake BP-R): наWвесы отвечаютLF 1.234KG CR LF S00 CR ETX; строка состояния (S+ 2 или 3 байта) показывает, нестабилен ли вес (байт 1 бит 0), слишком легко (байт 2 бит 0) или слишком тяжело (байт 2 бит 1);^^^^^= слишком тяжело,_____= слишком легко. - Dialog 06 (Checkout-Dialog 06, европейский протокол для поверенных весов у кассы): касса передаёт на весы цену за килограмм (и тару товара); весы взвешивают, сами рассчитывают сумму и показывают цену за килограмм, вес и сумму на собственном (поверенном) дисплее. Касса принимает вес и сумму; в окне взвешивания написано "рассчитано весами". Всегда 9600 бод, 7 бит данных, контроль нечётности, 1 стоповый бит (скорость в настройках тогда не учитывается). Порядок обмена:
EOT STX 01 ESC <kiloprijs 6> ESC ETX(с тарой: запись03из 4 цифр в граммах) → ACK;ENQ→STX 02 ESC 3 ESC <gram 5> ESC <kiloprijs 6> ESC <bedrag 6> ETX; NAK →EOT STX 08 ETX→STX 09 ESC <code> ETX(22 = ещё не готово, тогда повтор через 100 мс; 20 = вес колеблется; 21 = сначала снимите груз; 30/31 = слишком лёгкий; 32 = слишком тяжёлый; 11 = недопустимая цена). Контрольные коды: многие весы Dialog 06 время от времени (например, каждые 30 взвешиваний) запрашивают контрольные коды кассовой программы (запись 11 → запись 10). Эти коды и способ их расчёта производитель весов сообщает только поставщику кассы. Введите их в поле Контрольные коды (пары из 4 шестнадцатеричных символов, например74AE 1B2C); касса передаёт их, когда весы запрашивают. Если весы используют меняющееся число (Z) и постоянные коды поэтому не подходят, касса сообщит об этом; тогда попросите поставщика настроить весы без этой проверки или используйте Toledo. - Весы подключаются к ПК или устройству, на котором работает сервер кассы; все кассы и планшеты взвешивают через сервер кассы и в окне взвешивания выбирают, какие весы использовать. Тест выполняет одно взвешивание.
- Сеть работает везде.
- Разрешить ввод веса вручную: включено = даже при наличии весов вес можно ввести вручную; без OS6X это возможно всегда.
Сканирование этикеток (галочка у весов: Aclas TS6X, другие ПК- или AI-весы, серия LS или LH15X; весы + принтер этикеток, одни на заведение):
- IP-адрес: нужен только для Отправить на TS6X. Взвешивание и сканирование этикеток работают без него. Если касса работает на самих TS6X, оставьте поле пустым: касса будет отправлять данные себе (127.0.0.1). Если те же весы также взвешивают на кассе, обе галочки стоят у одних и тех же весов (Поиск настраивает это так).
- Сканирование этикеток: сканирование этикеток на экране заказа. Настройте вид штрихкода, как на TS6X: начинается с (20–29, по умолчанию
28), количество цифр для PLU (4, 5 или 6), затем вес в граммах или цена в центах, плюс контрольная цифра (EAN-13). Под настройкой показан пример. - Номера PLU: в разделе Настройки → Товары весовой товар получает цену за килограмм, при необходимости тару и номер PLU (уникальный). Номер PLU выбирается из списка (Без PLU, следующий свободный, Другой номер…); при отметке Цена за килограмм следующий свободный номер уже подставлен. Нужен только для этикеток и PLU весов TS6X: без TS6X можно оставить Без PLU.
- Прямая отправка работает в Windows и Linux; в Android и macOS используйте файл PLU. При первой установке сверьте названия полей файла PLU и коды в
aclas-plu.ps1с руководством SDK для поставленных весов (менять нужно в одном месте:ACLAS_PLU_KOLOMMENвpackages/shared/src/weegschaal.ts).
Портал управления: сообщение в портал содержит функцию Весы (A&D, Aclas, Adam Equipment, Avery Berkel, Avery Weigh-Tronix, Balanzas Marques, Baxtran, Bizerba, Brecknell, CAS, Datalogic, Dibal, DIGI, Dini Argeo, Excell Precision, Gram, Ishida, Kern & Sohn, Mettler Toledo, Minebea Intec, Ohaus, Precia Molen, Precisa, Rice Lake, Rongta, Sartorius, Star Micronics, T-Scale, UWE, Wedderburn, Wintec, Zebra) с вкл./выкл. и весами по моделям (напр. TS6X (op dit apparaat), 2x OS6X, PS1CX, Ariva-S, DS-781, LS6RX, 5 producten per kilo); без IP-адресов, COM-портов и Bluetooth-адресов.
Закон о метрологии: весы, на которых вы продаёте, должны быть поверены (класс III, как OS6X). При Toledo/непрерывном режиме касса считает по весу, который передают весы; при Dialog 06 цену рассчитывают сами поверенные весы.
Код: packages/shared/src/weegschaal.ts (протоколы, этикетки, файл PLU), apps/pos-server/src/lib/weegschaal.ts и routes/weegschaal.ts; экраны WeegschaalInstellingen.tsx и WeegDialoog.tsx.
Thuisbezorgd.nl / Takeaway.com
Заказы с Thuisbezorgd.nl поступают прямо в кассу, без посредников (без Deliverect, HubRise и т. п.): Just Eat Takeaway JET Connect обменивается данными с порталом управления Pin Voordeel, а касса забирает свои сообщения оттуда.
В Бельгии платформа называется Takeaway.com: та же компания (Just Eat Takeaway) и та же интеграция. Для бельгийского заведения на экранах, в уведомлениях, на кухонном чеке и в портале управления везде указано Takeaway.com вместо Thuisbezorgd.nl. Ниже Thuisbezorgd означает обе платформы.
Почему через портал? Кассе нужны только PORTAAL_URL и PORTAAL_SLEUTEL (см. Портал управления), и она отправляет только исходящие запросы.
Настройка (Настройки → Платформы доставки → Thuisbezorgd.nl / Takeaway.com, право Настройка заведения, оплаты и принтеров; раньше это было в Настройки → Заведение):
- Включите Использовать Thuisbezorgd (применяется сразу, независимо от кнопки «Сохранить»).
- Зарегистрироваться в Thuisbezorgd. Затем заведение выбирает в Thuisbezorgd (Partner Hub или через менеджера) OptimumPOS / Pin Voordeel в качестве кассы. После этого JET запускает сеанс подключения; портал находит зарегистрированную кассу (по почтовому индексу и названию, иначе Pin Voordeel связывает сеанс вручную в портале), отправляет конфигурацию и запрашивает у кассы меню. Затем интеграция начинает работать.
- Отметьте товары, доступные для заказа через Thuisbezorgd (по группам или по отдельности), при желании с описанием для Thuisbezorgd. Меню (цена, варианты выбора как модификаторы, аллергены, НДС) передаётся автоматически; PLU = id товара/варианта. После изменения в каталоге касса обновляет меню в течение 30 секунд; только "закончился"/"снова в наличии" передаётся через API доступности.
- Часы работы Thuisbezorgd: отдельно для доставки и самовывоза (напр.
16:00-22:00, несколько блоков через запятую). Их сохраняют кнопкой Сохранить часы работы под ними, и они отправляются в Thuisbezorgd как service times, как только интеграция готова. - Временно закрыто / Снова открыто (в NL/BE открывается снова не позднее следующего утра в 07:00).
Заказы. Заказ становится обычным заказом без стола (bezorgen или afhalen, название группы TB <ordernummer>) с ценами, которые заплатил клиент, плюс стоимость доставки/сервисный сбор отдельной строкой и скидка Thuisbezorgd строкой скидки; если итог всё же не сходится — строка "Разница Thuisbezorgd". Кухонный чек сразу уходит на кухню/бар (можно отключить). Касса в течение нескольких секунд подтверждает заказ порталу, а тот сообщает JET; если это не удаётся в течение 3 минут или касса офлайн, JET получает "ошибка", и заведение переходит на Orderpad.
Кнопка Thuisbezorgd в верхней панели (с числом текущих заказов): список, клиент и адрес, время готовности/доставки и хронология (track & trace): получен, курьер едет в заведение, курьер в заведении, в пути к клиенту, доставлен (от JET), плюс собственные этапы (готовится, готов, в пути/доставлен при собственной доставке, забран). Живую карту с курьером JET Connect кассе не предоставляет; её видит клиент в приложении Thuisbezorgd. Новый заказ, отмена и "курьер в заведении" сопровождаются оранжевой полосой и звуком. Завершить (оплачено онлайн) проводит расчёт способом оплаты online; если клиент платит у двери, просто проведите расчёт. Отмена со стороны Thuisbezorgd аннулирует заказ и печатает кухонный чек "ОТМЕНЁН".
Код: apps/pos-server/src/lib/thuisbezorgd.ts, routes/thuisbezorgd.ts; экраны ThuisbezorgdInstellingen.tsx и Thuisbezorgd.tsx. Со стороны портала: horecapos-portaal/src/thuisbezorgd.mjs (см. README портала).
Подсчёт в портале управления. Количество заказов Thuisbezorgd за день передаётся в сообщении порталу управления (verkoopTelling в lib/portaal.ts): поступившие и не отменённые, по дню поступления. Заказ Thuisbezorgd, рассчитанный в кассе (в том числе через Завершить (оплачено онлайн)), там повторно не учитывается в самовывозе/доставке. Данные Thuisbezorgd хранятся в базе данных кассы и поэтому входят в обычные резервные копии кассы.
Интернет-магазин и онлайн-заказы
Каждое заведение может получить собственный интернет-магазин: сайт заказов (и приложение) в фирменном стиле заведения для самовывоза, доставки, заказа за столом по QR-коду и бронирования, с онлайн-оплатой (MultiSafepay или Buckaroo) или оплатой при самовывозе/доставке. Интернет-магазин — отдельный проект, horecapos-webshop (Node.js, см. README там), и работает на том же сервере, что и портал управления.
Включение и настройка выполняются в управлении интернет-магазином: кнопка Управлять интернет-магазином в клиентском портале (владелец) или у установки в портале управления (Pin Voordeel). Там находятся вкл./выкл., веб-адрес (<zaak>.<webshopdomein> или собственный домен), фирменный стиль (цвета, логотип, фото в шапке, шрифт), часы работы и временные интервалы для самовывоза и доставки, зона доставки (почтовые индексы, радиус или область на карте, со стоимостью и минимумом), оплата, промокоды, тексты, языки, QR-коды для столов, бронирование и приложение (устанавливается как PWA; Android-приложение через Trusted Web Activity). Кроме того, push-уведомления (по желанию, по умолчанию выключены): гость включает уведомление на странице своего заказа и получает push-уведомление, когда заказ готов или в пути; желающие также время от времени получают предложение, которое заведение отправляет из управления интернет-магазином (вкладка Push-уведомления). Работает на Android и компьютерах (Chrome, Edge, Firefox, Samsung Internet), в Android-приложении, а также на iPhone и iPad (iOS 16.4 или новее), если гость добавит интернет-магазин на экран «Домой». SMS и e-mail не отправляются, имя и номер не сохраняются. Подробности в README интернет-магазина.
Меню. Касса отправляет меню автоматически: все активные товары (не весовые), по группам товаров, с ценой, вариантами выбора, аллергенами, отметкой о распродаже и фото товара, а также столы и данные заведения и какие маркетинговые каналы включены (для галочки "получать предложения" при оформлении заказа, см. SMS- и e-mail-маркетинг). Это происходит при запуске, как только включается интернет-магазин, в течение 30 секунд после изменения в каталоге и в течение нескольких секунд после изменения в Настройки → Заведение, например маркетинга или карты лояльности (или по кнопке Отправить меню сейчас). Убрать товар из интернет-магазина можно в управлении интернет-магазином (скрыть) или в базе данных с помощью artikel.webshop = false.
Заказы. Самовывоз и доставка становятся обычным заказом без стола (название группы WEB <bestelnummer>) с ценами, которые видел гость, плюс стоимость доставки и транзакционный сбор отдельными строками и промокод строкой скидки; если итог всё же не сходится — строка "Разница интернет-магазина". Чаевые гостя не считаются выручкой: они попадают в Завершить (оплачено онлайн) как чаевые в оплате. Заказ за столом (QR-код) добавляется к открытому счёту этого стола (оплачено онлайн: отдельной группой за этим столом). Кухонный чек сразу уходит на кухню/бар (отключается в окне Интернет-магазин). Касса в течение нескольких секунд подтверждает заказ с номером чека; гость получает "получен" и письмо. Если касса офлайн, интернет-магазин не принимает заказы (гость видит это сразу) и отправляет письмо заведению, если заказ слишком долго не обработан. Бронирования из интернет-магазина попадают в Бронирования (только если бронирование в кассе включено). Если задан максимум на интервал (Доставка и временные интервалы), заказы интернет-магазина со временем в этом интервале учитываются.
Бельгия (чёрный ящик). Заказ из интернет-магазина сразу уходит в чёрный ящик как заказ (signOrder), ещё до кухонного талона, так же как Заказать на кассе. Если это не удаётся, заказ не попадает в кассу, и интернет-магазин позже отправляет его повторно. Всё, что ещё не протестировано с чёрным ящиком, выключено в меню для интернет-магазина (подарочные карты, промокоды, по счёту, на номер, комплексные меню, опции с доплатой, happy hour и чаевые) и отклоняется, если старый интернет-магазин всё же это присылает. Завершить проверяет чаевые, оплату по счёту и на номер так же, как касса.
На номер (интеграция с отелем, Настройки → Отель → Самообслуживание → В интернет-магазине): меню получает kamer: { maxBedrag }; интернет-магазин отправляет betaling.wijze = "kamer" вместе с kamer и achternaam. Касса проверяет гостя в гостиничном ПО (не за столом, не с подарочной картой) и сохраняет его вместе с заказом; Завершить (на номер) проводит расчёт на номер и записывает чек на гостиничный счёт. Сводный счёт-фактура при оплате по счёту: чек тогда числится как открытая позиция.
Кнопка Интернет-магазин в верхней панели (с числом текущих заказов): список, клиент и адрес, желаемое время или "как можно скорее", способ оплаты и хронология. Этапы Готовится, Готово и В пути гость видит в реальном времени в интернет-магазине (и по e-mail, если заведение этого хочет). Рассчитан в кассе = Завершён; Отмена аннулирует только строки этого заказа интернет-магазина, печатает кухонный чек "ОТМЕНЕНО", а за заказ, оплаченный онлайн, интернет-магазин возвращает деньги. Пришёл, неявка или отмена у бронирования тоже передаются в интернет-магазин. Новый заказ или бронирование вызывает оранжевую полосу и звуковой сигнал.
Код: apps/pos-server/src/lib/webshop.ts, routes/webshop.ts; экран Webshop.tsx. Сторона портала: horecapos-portaal/src/webshop.mjs.
Касса и интернет-магазин одинаково (каждая часть включается отдельно, по умолчанию выключено; более старый интернет-магазин игнорирует новые поля). Что включено в кассе, работает и в интернет-магазине:
- Happy hour: интернет-магазин берёт ту же цену, что и касса в этот момент (зачёркнутая обычная цена и название happy hour), в том числе с сезоном.
- Периоды меню и тип заказа (если они включены): интернет-магазин показывает только то, что продаётся сейчас, а при самовывозе и доставке — цену и товары выбранного варианта (за столом: в заведении). Меню получает для каждого товара
prijzen(afhalen,bezorgen) иnietBij, а также списокdagdelen. - Комплексные меню: гость выбирает блюда (фиксированные и на выбор, с их опциями); в кассе это строка меню с блюдами под ней и распределённой ценой меню (НДС по каждому блюду верен). Блюда, которые входят только в меню, передаются как
menuArtikelen. Старый интернет-магазин без выбора: меню попадает в чек как обычный товар, как раньше. - Запас закончился = распродано, в том числе опции с закончившимся ингредиентом.
- Аллергены: выключены в кассе = не показываются в интернет-магазине.
- Карта лояльности: гость может при оформлении копить баллы (по номеру телефона или e-mail); касса привязывает клиента к заказу, баллы начисляются при расчёте (списание — в заведении). Интернет-магазин показывает баланс.
- Подарочные карты (Настройки → Заведение → Подарочные карты → Продавать подарочные карты в интернет-магазине, только с балансом): гость покупает карту и оплачивает онлайн; касса создаёт карту, которая сразу активна, а код возвращается через портал в интернет-магазин (статус и письмо). Если включена и Подарочная карта как способ оплаты, гость при самовывозе может выбрать "подарочной картой в заведении".
- Промокоды (Настройки → Промокоды, с переключателем в разделе Заведение): для каждого кода на кассе и/или в интернет-магазине; использования считаются для обоих вместе.
- Пауза и загруженность: кнопка Интернет-магазин на верхней панели: Приостановить интернет-магазин (с текстом для гостя) и Загруженность (доп. минуты). Доходит до интернет-магазина за несколько секунд.
- Онлайн-бронирование по правилам кассы (Настройки → Заведение → Бронирования): максимум человек, дней вперёд, слот, минимум заранее и время по дням недели.
- Доставка и временные интервалы: см. Интернет-магазин следует за кассой в разделе Доставка и временные интервалы.
- All-you-can-eat за столом (Настройки → Заведение → All-you-can-eat → Также при заказе за столом по QR-коду): если за столом идёт предложение, гость видит входящие в него блюда как Включено за € 0, с раундами, максимумом на человека, временем ожидания и лимитом времени. Остальное он оплачивает как обычно; всё идёт на счёт стола. Если состояние за столом только что изменилось, касса отклоняет заказ, и гость заказывает заново.
- По счёту (Настройки → Счета → Оплата по счёту → Также в интернет-магазине): см. В интернет-магазине в разделе Оплата по счёту.
- Онлайн в лист ожидания (Настройки → Заведение → Лист ожидания): см. Онлайн в лист ожидания в разделе Лист ожидания для гостей без брони.
- Допродажа: "Что-нибудь ещё?" (по желанию, по умолчанию выключено; Настройки → Заведение → Расчёт → Допродажа в интернет-магазине): выберите группы товаров (напр. напитки, соусы, десерты) и сколько предложений. Тогда в интернет-магазине у корзины и при расчёте показываются товары из этих групп, которых ещё нет в корзине (только то, что сейчас продаётся, не распродано и без обязательного выбора); гость добавляет их одним касанием. Группы не выбраны = выключено, как раньше. У киоска своя допродажа (см. Киоск самообслуживания).
Для этого меню для интернет-магазина имеет versie: 2 с полями menuArtikelen, allergenenAan, happyhours, menus, klantenkaart, cadeaubon, kortingscodes, pauze, drukteMin, volgt, bezetting, reserveren.online, ayce, opRekening, wachtlijst и upsell. Подтверждение для портала дополнительно содержит cadeaubonnen (коды), klant (баллы) и plek (лист ожидания).
Подсчёт в портале управления. Самовывоз и доставка через интернет-магазин считаются отдельно (webshop, webshopGeannuleerd в verkoopTelling), по дню поступления, и не учитываются повторно в самовывозе/доставке. Заказ за столом учитывается как обычно у стола.
Оплата картой и платёжные терминалы
Настройки → Оплата (только администратор):
- Терминалы: для каждого терминала — название, ID терминала и собственный API-ключ из PinPortal (Клиент → Изменить клиента → Прочее → API Keys). После сохранения видна только последняя часть ключа; он никогда не возвращается в браузер. Кнопкой Проверить подключение вы проверяете ключ и терминал.
- Тестовый режим: имитирует терминал (оплата проходит примерно через 7 с; сумма, оканчивающаяся на 13 цент., отклоняется). Удобно для проверки без платёжного терминала.
Если есть хотя бы один терминал с API-ключом (или включён тестовый режим), Расчёт → Карта / Bancontact автоматически запускает оплату на терминале на сумму, рассчитанную сервером.
Пока интеграция включена, сервер принимает "карту" только при успешной оплате через терминал именно для этого заказа и этой суммы. Запросы отправляются, как в официальном PHP SDK, обычной формой, с резервным API (api-backup.pinvandaag.com), если основной API не отвечает. Каждый ответ API отображается с пометкой [pin] в окне сервера — это удобно при сбоях. Успешная оплата, которая ещё не обработана (например, планшет отключился), находится при следующем расчёте этого заказа.
Чаевые (карта, наличные и подарочный сертификат)
На экране расчёта у каждого способа оплаты есть ряд кнопок чаевых: Нет, 5%, 10%, 15% (с округлением вверх до 10 цент.), Округлить (до следующего целого евро) и Другая сумма. При оплате картой клиент платит сумму + чаевые за один раз на терминале; при оплате наличными чаевые учитываются в сдаче и в денежном ящике. В чеке указана оплаченная картой сумма, а под ней "в т. ч. чаевые"; ИТОГО и НДС не меняются, потому что чаевые не являются выручкой. В X/Z-отчёте чаевые указаны по способам оплаты и как "Чаевые всего".
Администратор настраивает кнопки чаевых в разделе Настройки → Заведение → Чаевые: вкл./выкл., какие проценты (не более 4, например "5, 10, 15"), показывать ли кнопку "Округлить" и при каких способах оплаты (карта, наличные, подарочный сертификат) возможны чаевые. "Нет" и "Другая сумма" есть всегда.
"Пусть будет …" есть всегда, при любом способе оплаты, даже если кнопки чаевых выключены (без настройки): клиент сам округляет счёт вверх, и разница — это чаевые. Есть кнопки со следующим целым евро и следующими круглыми суммами (например, € 28,00 → 29, 30, 40; € 44,00 → 45, 50, 60) и Другой итог, чтобы ввести итог вручную. Повторное нажатие на выбранную кнопку = без округления. Не более € 500 чаевых (тот же предел, что и на сервере кассы).
Нет интернета
Касса работает в локальной сети, и интернет ей не нужен; он нужен только для оплаты картой через интеграцию. Если в заведении нет интернета, в верхней панели отображается Нет интернета · карта вручную (проверяется каждую минуту). Тогда на экране расчёта, а также после неудачного запуска на терминале, появляется кнопка Уже оплачено на терминале: проведите сумму на самом терминале и зафиксируйте оплату этой кнопкой.
Планы зала и столики
Настройки → Планы зала (только администратор):
- Добавляйте планы зала (например, Зал, Терраса, Зимний сад), переименовывайте, удаляйте и меняйте их порядок кнопками ◀ ▶.
- Добавляйте столы кнопками над сеткой (круглый, квадратный, длинный, барный стол) и перетаскивайте их мышью или пальцем на место. Синий уголок выбранного стола увеличивает или уменьшает его.
- Для каждого стола задайте название/номер, количество персон (учитываются стулья вокруг стола) и форму; можно дублировать или удалять.
- С клавиатуры: стрелки перемещают (Shift = больший шаг), Delete удаляет.
- Изменения вступают в силу только после Сохранить; "Отменить" возвращает всё назад.
- Стол или план зала с открытым заказом удалить нельзя. Удалённые столы сохраняются в старых заказах.
Перенос настроек во второе заведение
Настройки → Импорт/экспорт (только администратор). Если вы полностью настроили одно заведение, экспортируйте конфигурацию в файл .json и импортируйте его в кассу второго заведения. Можно выбрать по разделам:
- Товары: группы, товары, цены (в том числе по типу заказа), НДС, варианты выбора, меню, счастливые часы (с сезоном), периоды меню, аллергены, ингредиенты/рецепты, карты лояльности, тарифы «всё включено» (all-you-can-eat) и фото товаров.
- Планы зала: помещения и столы.
- Прочие настройки: все параметры заведения, принтеры (без IP-адреса), права по ролям и бухгалтерия.
Никогда не переносятся: название, адрес, почтовый индекс, город, телефон, e-mail, номер НДС и завершающая строка чека заведения, адрес e-mail для Z-отчёта, платёжные терминалы и их ключи, персонал и PIN-коды, а также вся выручка, чеки, клиенты и количество запасов.
Импорт надёжно защищён: большое красное предупреждение, галочка "Я понимаю...", повторный ввод собственного PIN-кода администратора, отсутствие открытых заказов, та же страна (ставки НДС) и автоматическая резервная копия заранее. Импорт выполняется одной транзакцией: если что-то пойдёт не так, ничего не изменится. Существующие товары, группы, ингредиенты и столы не стираются, а убираются из кассы (как при удалении), чтобы старые чеки и отчёты оставались верными.
Импорт из другой кассы
Переход без перепечатывания всего. Доступно всегда (без переключателя): в разделе Настройки → Импорт/экспорт (только администратор) есть блок Импорт из другой кассы.
- Что: товары (название, цена вкл. НДС, НДС, группа, код/PLU, остаток) или клиенты с картой лояльности (имя, телефон, e-mail, баллы, адрес, индекс, город; имя и фамилия объединяются).
- Файл: экспорт из вашей прежней кассы (Dobizzz/DoPos, Lightspeed, MplusKASSA, unTill, Tebi ...) или собственный список: CSV (; , табуляция или |; UTF-8 или Excel в нидерландском формате) или Excel (.xlsx), первый лист, с названиями столбцов в первой строке. Старый файл .xls сначала сохраните как .xlsx или CSV.
- Предпросмотр: касса распознаёт столбцы по названию (Omschrijving, Verkoopprijs incl. BTW, BTW %, Omzetgroep, Artikelnummer, GSM, Spaarpunten ...) и показывает первые 10 строк. Если столбец не тот, выберите сами. Ничего не меняется до Импорт.
- Товары: цены как 3,50, € 3,50 или 1.234,50; НДС как 21, 9%, 0,09, высокий или низкий (неизвестно или пусто: выбранная вами ставка, по умолчанию самая высокая). Группы товаров, которых ещё нет, создаются (без группы: "Импортировано").
- Остатки (столбец Voorraad, Stock, Aantal ...): если включено Вести учёт склада (Настройки → Заведение), товар ведёт учёт остатка и остаток становится этим количеством (инвентаризация в истории склада, причина "Импортировано"). Пусто: остаток не меняется.
- Пример файла (CSV): список для самостоятельного заполнения (Naam;Productgroep;Prijs;Btw;Voorraad;Code), например в Excel.
- Клиенты: баллы добавляются как корректировка "Импортировано из другой кассы" (видно в истории). Согласие на SMS или e-mail не переносится (GDPR): запросите его заново. Сначала включите карту лояльности.
- Существующие товары (тот же код или, без кода, то же название) и клиенты (тот же телефон или e-mail) пропускаются или обновляются, если отметить это (у товаров: название, цена, НДС, группа и остаток). Повторяющиеся строки в файле берутся один раз.
- По окончании: сколько новых, обновлённых и пропущенных, с пояснением по каждой строке, что было не так (напр. нет цены). Не более 5000 строк за раз. В журнале это отображается как "Конфигурация импортирована".
Языки (42, в т.ч. турецкий, арабский, дарижа, берберский, польский, болгарский, венгерский, русский, сербский, албанский, персидский, тигринья, амхарский, сомалийский, папьяменто, сранантонго, хинди, урду, индонезийский, вьетнамский, сирийский арамейский, китайский и украинский)
Рядом с кнопкой © в правом нижнем углу на каждом экране есть кнопка с языком (например, NL и флажок). Нажмите на неё, чтобы открыть меню выбора: языки расположены в алфавитном порядке, с названием на родном языке перед флагом: Bahasa Indonesia (индонезийский), Čeština (чешский), Darija (марокканский арабский латиницей), Deutsch, English, Español, Français, Hrvatski (хорватский), Italiano, Kurdî (курманджи), Latviešu (латышский), Lietuvių (литовский), Magyar (венгерский), Nederlands, Papiamentu (папьяменто), Polski, Português, Română, Shqip (албанский), Slovenčina (словацкий), Soomaali (сомалийский), Sranantongo, Srpski (сербский, латиницей), Tarifit (рифский берберский), Tiếng Việt (вьетнамский), Türkçe, затем кириллицей Български (болгарский), Русский (русский) и Українська (украинский), далее языки с арабским письмом: اردو (урду), الدارجة (дарижа), العربية (арабский), دری (дари), فارسی (персидский, фарси), پښتو (пушту) и کوردی (سۆرانی) (курдский сорани), затем сирийским письмом ܣܘܪܝܝܐ (сирийский арамейский, сурёйо), письмом деванагари हिन्दी (хинди), письмом геэз ትግርኛ (тигринья) и አማርኛ (амхарский), на тифинаге ⵜⴰⵎⴰⵣⵉⵖⵜ (тамазигхт, берберский) и последним 中文(简体)(китайский, упрощённое письмо). Все экраны, кнопки, уведомления и сообщения об ошибках сервера кассы переводятся.
- Для каждого сотрудника: выбранный язык сохраняется у вошедшего сотрудника (
gebruiker.taal). Если входит сотрудник с другим языком, касса сразу переключается. На самом устройстве запоминается последний использованный язык, чтобы и экран ввода PIN-кода уже был на этом языке. Если вы выбрали язык (на экране PIN-кода или после входа) и (снова) вошли в течение 10 минут, этот выбор имеет приоритет и становится языком этого сотрудника. Переключение перезагружает экран; вы остаётесь в системе, а открытый счёт остаётся открытым. - Первый запуск на устройстве: если на планшете или ПК язык ещё не задан, касса запускается на языке, выбранном при установке. Если язык не выбран — на языке самого устройства (браузера или операционной системы, также в Android-приложении), а если такого языка нет — на нидерландском. После этого каждое устройство запоминает свой выбор.
- Восточная Европа: польский, чешский, словацкий, венгерский, румынский, болгарский, хорватский (также для боснийского), литовский, латышский, украинский и русский — языки большинства трудовых мигрантов из Центральной и Восточной Европы в Нидерландах и Бельгии.
- Балканы: сербский (латиницей, как его пишет большинство сербов в Нидерландах и Бельгии; также для черногорского) и албанский (Албания, Косово и Северная Македония).
- Африканский Рог: тигринья (Эритрея) и амхарский (Эфиопия), оба письмом геэз, и сомалийский (латиницей).
- Иран: персидский (фарси). Устройство с афганским вариантом персидского (fa-AF) получает дари, остальные — фарси.
- Карибские Нидерланды и Суринам: папьяменто (Papiamentu, орфография Кюрасао и Бонайре; также для Арубы) и сранантонго.
- Азия: хинди (деванагари; также для сарнами-хиндустани), урду (справа налево), индонезийский и вьетнамский (латиница, в том числе на чеке).
- Марокканские: дарижа (марокканский арабский, разговорный язык) арабским письмом и латиницей (так многие марокканские нидерландцы пишут в мессенджерах), наряду со стандартным арабским. Берберские: тарифит (рифский, латиницей; большинство марокканских нидерландцев родом из Рифа) и стандартный марокканский тамазигхт письмом тифинаг.
- Справа налево: арабский (стандартный арабский), урду, дарижа арабским письмом, дари и пушту (Афганистан), персидский (фарси, Иран), курдский сорани (Ирак/Иран) и сирийский арамейский (сурёйо, сирийским письмом). Суммы, коды и цифровые клавиши остаются слева направо. Курдский курманджи (Турция/Сирия) пишется латиницей.
- Кухонный чек (кухня/бар): по умолчанию на языке сотрудника, который передаёт заказ. Для каждого принтера в разделе Настройки → Принтеры → Язык кухонного чека можно также задать постоянный язык (например, язык повара) с латинским письмом: Nederlands, Čeština, Darija, Deutsch, English, Español, Français, Hrvatski, Italiano, Kurdî, Latviešu, Lietuvių, Magyar, Papiamentu, Polski, Português, Română, Shqip, Slovenčina, Soomaali, Sranantongo, Srpski, Tarifit, Tiếng Việt, Bahasa Indonesia или Türkçe. Болгарский, русский и украинский печатаются на кухонном чеке в латинской транскрипции (чековый принтер не поддерживает кириллицу). Арабское, сирийское письмо, деванагари, письмо геэз, тифинаг и китайский нельзя напечатать на чековом принтере: тогда дарижа печатается латиницей, тамазигхт — как тарифит, а остальные — на нидерландском. Постоянные тексты (СТОЛ, Подача, ЖДЁТ вызова, ВЫЗОВ ПОДАЧИ, НАПЕЧАТАНО ПОЗЖЕ, Самовывоз, Стойка) переводятся; названия товаров и комментарии остаются такими, как их ввели. Принтеры, на которых был установлен нидерландский, теперь следуют языку сотрудника.
- Кассовый чек (для всех клиентов): по умолчанию на нидерландском, независимо от языка экранов. Другой язык выбирается в разделе Настройки → Заведение → Язык кассового чека (прямо под текстом внизу чека), только языки с латинским письмом. Это касается также проформы, чека возврата, копии, подарочного сертификата и чека по e-mail. Суммы, коды НДС, номер НДС заведения и фискальные строки (Бельгия) не меняются; собственный текст внизу чека остаётся таким, как его ввело заведение.
- Товары, группы и варианты называются так, как их ввело заведение; они не переводятся.
- Язык каждого сотрудника можно также задать в разделе Настройки → Персонал.
- Введение и руководство также доступны на всех этих языках. Через кнопку © они открываются на языке кассы; вверху флажками можно выбрать другой язык (в кассе при этом ничего не меняется).
Для разработчиков: каждый видимый текст хранится в коде как vt('Nederlandse tekst') (apps/pos-web/lib/i18n.ts); нидерландский текст является ключом. Переводы находятся в apps/pos-web/lib/vertalingen/<taal>.ts. Если перевода нет, касса показывает нидерландский текст; тест i18n (pos-web) проверяет, что каждый текст переведён на каждый язык и что места {0} совпадают. Сообщения сервера кассы остаются на нидерландском и переводятся в браузере (в том числе с {0}, например название товара в сообщении).
Настройка принтеров
У новой кассы нет принтеров. Войдите как администратор (демо: 1111) и выберите Настройки в верхней панели.
- Принтеры: добавьте столько принтеров, сколько есть в заведении (например, касса, кухня, бар, пицца), каждый с подключением (обычно сеть: IP-адрес и порт 9100) и шириной бумаги. Кнопкой Тестовый чек проверьте, что он работает. Вверху выберите, какой принтер печатает кассовый чек и проформу (и открывает денежный ящик). Для каждого принтера также выберите язык кухонного чека (см. Языки); кассовый чек остаётся на нидерландском.
- Подключение для каждого принтера:
- Сеть (IP-адрес): IP-адрес и порт (обычно 9100). Так было всегда, так и останется: существующие принтеры автоматически настроены на сеть.
- USB: в Linux — устройство, например
/dev/usb/lp0. В Android — USB-принтер, подключённый к устройству (OTG-кабель; пусто = первый USB-принтер). В Windows и macOS выберите Системный принтер. - Последовательный (COM / ttyUSB): COM-порт (Windows),
/dev/ttyUSB0или/dev/ttyS0(Linux, Android) или/dev/cu.…(macOS), со скоростью (обычно 9600, 19200 или 38400 baud). Также для Bluetooth-принтера, который Windows или Linux подключает как COM-порт или/dev/rfcomm0. - Bluetooth: в приложении HorecaPOS на Android, с Bluetooth-адресом сопряжённого принтера (например, мобильного чекового принтера). Сначала выполните сопряжение принтера в настройках Bluetooth Android.
- Системный принтер (Windows / CUPS): принтер в том виде, в каком его знает Windows или CUPS (Linux, macOS), с собственным драйвером или как Generic / Text Only. Чек передаётся на принтер в необработанном виде (RAW), без форматирования драйвером.
- Встроенный (Sunmi, iMin ...): принтер в самой Android-кассе.
- Поиск показывает принтеры и порты, которые видит касса. Выберите один, и адрес заполнится.
- Протокол: ESC/POS (почти все чековые принтеры, включая принтеры Star в режиме ESC/POS) или Star (Star Line Mode). Для Star касса сама преобразует чек; чек выглядит так же.
- Устройство официанта со своим принтером: Android-устройство официанта с приложением HorecaPOS (например, ручной терминал с мобильным Bluetooth-принтером или Sunmi в роли устройства официанта) может печатать само. Зарегистрируйте его на самом устройстве (Настройки → Принтеры → Устройства официантов со своим принтером) и у принтера выберите Подключён к. Устройство официанта забирает свои чеки с кассы; оставьте на нём приложение открытым. Если это не удаётся (приложение закрыто, вне зоны wifi), кухонный чек попадает в очередь печати — так же, как при выключенном сетевом принтере. Отменить регистрацию устройства возвращает принтеры на саму кассу.
- Принтер для группы / товара: для каждой группы товаров выберите, на какой принтер идёт кухонный чек. Для отдельного товара это можно переопределить своим принтером или "без кухонного чека".
Одинаковые товары при печати объединяются: дважды 1x Cola превращается в 2x Cola на кухонном и кассовом чеке. Объединяются только товары с одинаковыми вариантами и комментарием.
Установщик для Linux добавляет пользователя кассы в группы lp и dialout, чтобы касса могла использовать USB- и последовательные принтеры.
Нужна помощь?
Optimum POS · 085 560 00 60 · support@optimumpos.nl · понедельник–пятница 9:00–20:00, суббота–воскресенье 14:00–20:00