HorecaPOSРуководство Введение Перейти к кассе
RU

Руководство HorecaPOS

Это руководство состоит из трёх частей: сначала для персонала (официантов), затем для менеджера и в конце для администратора. Каждая часть дополняет предыдущую: менеджер может всё, что могут официанты, а администратор может всё.

Что именно разрешено вашей роли, администратор настраивает в разделе Настройки → Права. Если вы не видите какую-то кнопку, у вашей роли (пока) нет на это прав.

Это руководство есть и в самой кассе: нажмите кнопку © в правом нижнем углу любого экрана и выберите Руководство или откройте http://<kassa-pc>:3000/handleiding. См. также введение и документацию API.

Часть 1 · Персонал

Начало работы

Вход. Откройте кассу на кассовом компьютере, планшете или телефоне и введите свой PIN-код (от 4 до 8 цифр). После этого вы увидите план зала.

Вход по PIN-коду

Открыть столик. Нажмите на столик. Для свободного столика создаётся новый заказ; у занятого вы продолжаете уже открытый заказ. Вверху можно переключаться между залами (например, Зал и Терраса). Для продаж у стойки используйте Быстрая продажа, для заказов навынос — Навынос.

План зала

Заказ. Выберите группу товаров и нажимайте на товары. Они появятся в чеке слева. При необходимости сначала выберите подачу (1 = сразу, 2 и 3 ждут, пока вы их не вызовете). Нажмите Заказать: заказы уйдут на кухню и в бар. Пока вы не нажали «Заказать», строки можно просто удалить.

Оплата. Нажмите Оплатить, выберите Карта / Bancontact, Наличные или Подарочная карта, при желании чаевые, и подтвердите. При оплате картой платёж автоматически начнётся на терминале. Чек печатается; его также можно отправить по e-mail.

Расчёт

Выход. Выйдите из системы, когда закончите, чтобы никто другой не работал под вашим именем. Через 8 ч выход произойдёт автоматически.

Нет интернета? Касса продолжает работать. Если вверху написано Нет интернета · оплата картой вручную, введите сумму прямо на платёжном терминале и выберите на экране оплаты Уже оплачено на терминале.

Несколько компаний за одним столиком

За одним столом могут сидеть несколько групп, у каждой свой счёт и свой чек.

Разделение счёта при расчёте

Экран расчёта

Оплата работает как обычно: Всё сразу. Теперь на экране оплаты счёт можно также разделить, с помощью кнопок под Назад и Оплатить (так они всегда остаются на виду, без прокрутки):

Частичная оплата проводит только платёж; счёт остаётся открытым, а на экране заказа написано "уже оплачено … · осталось …". Чек (со всеми платежами) печатается при последнем платеже, как при обычной оплате. Оплата картой через интеграцию проходит ровно на сумму части. Если часть уже оплачена, строки больше нельзя переносить в другую группу и нельзя добавлять скидки; удалить можно, только если открытой суммы достаточно. Каждая частичная оплата записывается в журнал.

Быстрая продажа и навынос (без столика)

План зала с быстрой продажей и самовывозом

В правом верхнем углу экрана столов находятся Быстрая продажа и С собой. Обе кнопки сразу открывают заказ без стола. Быстрая продажа — это продажа у стойки (НДС на месте); «С собой» использует для каждого товара ставку НДС на вынос. Через "Имя клиента" можно добавить имя; оно будет на чеке ("С собой – Янсен") и вверху кухонного заказа. Открытые заказы без стола показаны под кнопками залов ("Без стола: С собой #12 – Янсен"), чтобы их можно было найти. Если вы вернётесь, ничего не продав, пустой заказ исчезнет сам.

Обе кнопки можно включить или выключить для каждого заведения в Настройки → Заведение, сразу под светлой/тёмной темой (по умолчанию включено). Выкл. = кнопка скрыта; уже открытые заказы без стола остаются видны.

Доставка и временные интервалы

Заказы, которые вы принимаете на кассе сами, например по телефону или у стойки, по тем же правилам, что и в интернет-магазине: зоны доставки и максимальное число заказов на временной интервал. Включается в Настройки → Заведение → Доставка и временные интервалы, сразу под кнопками Быстрая продажа и Самовывоз (по умолчанию выключено).

Расширения (всё по умолчанию выключено; без этих настроек всё работает точно так, как описано выше):

Код: lib/bezorgen.ts, routes/bezorgen.ts, BezorgDialoog.tsx, BezorgInstellingen.tsx, BezorgKaart.tsx и lib/kaart.ts (карта, без дополнительного пакета; тот же код находится в интернет-магазине как public/kaart.js).

Телефония: распознавание клиента при заказе по телефону

Настройки → Телефония (по умолчанию выключено; при выключении всё сохраняется). Два отдельных переключателя:

Поиск ведётся по карте лояльности, заказам на доставку и самовывоз в кассе, интернет-магазину, Thuisbezorgd, платформам доставки и броням. Номера приводятся к одному виду (+31 6 1234 5678, 0031612345678 и 06-12345678 — один и тот же номер; также бельгийские номера).

Как поступает номер (можно несколько способов одновременно; один и тот же звонок учитывается один раз):

ИсточникДляНастройка
Webhook / action URL3CX (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!BoxFRITZ!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: см. Приложение для курьеров ниже).

Создание рейса. В кассе есть кнопка Рейсы (с числом доставок, которые ещё нужно отправить, плюс рейсы в пути).

  1. В разделе Готово к доставке отметьте заказы, которые поедут. Это заказы на доставку из кассы, интернет-магазина и Thuisbezorgd (только собственная доставка; заказы с курьером Thuisbezorgd — нет).
  2. Выберите курьера (сотрудника) и размен, который он берёт с собой (по умолчанию сумма из настройки), и нажмите Создать рейс.
  3. Появится QR-код. Курьер сканирует его своим телефоном и видит по каждому адресу имя, адрес с кнопкой Маршрут (навигация), Позвонить, комментарий, желаемое время и сумму к получению. Есть калькулятор сдачи (клиент даёт € 50 → сдача € 31,50). Входить в систему не нужно. Делитесь ссылкой только с курьером: у кого она есть, тот видит адреса этого рейса. Кнопкой QR-код для курьера создаётся новая ссылка; старая перестаёт работать.
  4. Нажмите Отправить, когда курьер уезжает. Размен выдаётся из денежного ящика (выдача денег с указанием причины). Клиент получает сообщение, что заказ в пути:
    • для заказа из кассы — по SMS и/или e-mail, если включены Сообщения клиенту (см. «Доставка и временные интервалы»);
    • для интернет-магазина — как настроено в интернет-магазине (почта, SMS или push-уведомление);
    • для Thuisbezorgd — через Thuisbezorgd.

Пока рейс не выехал, его ещё можно отменить.

  1. В пути курьер по каждому адресу нажимает Доставлено, наличные, Доставлено, карта (собственный платёжный терминал) или Доставлено (уже оплачено). Касса видит это сразу. Если курьер не может отметить, это можно сделать в кассе. Вернувшись в заведение, курьер нажимает Я вернулся в заведение.

Сдача выручки. После рейса нажмите Расчёт (право Управление денежным ящиком):

Track & trace (включается отдельно в настройке). Когда заказ в пути, клиент получает ссылку на страницу отслеживания на портале. Ссылка есть в SMS или e-mail, а в интернет-магазине — на странице статуса (Следите за курьером). На странице отслеживания показано:

Страницы отображаются на языке телефона (все языки портала). В кассе у рейса видно, когда местоположение передавалось последний раз (со ссылкой на карту).

Конфиденциальность. Портал хранит данные рейса (имена, адреса, номера телефонов, местоположение) только пока рейс идёт. При расчёте всё удаляется, иначе — через 24 ч. Клиент видит только свой заказ. Местоположение курьера видно только во время рейса и перестаёт быть видимым, как только курьер вернулся.

Планирование рейсов (необязательно)

Включите в Настройки → Заведение → Доставка → Планирование рейсов (по умолчанию выключено; работает со своими курьерами). Тогда в окне Рейсы появится кнопка Предложить рейсы. Касса объединяет заказы, которые ещё нужно доставить, в рейсы:

Кнопкой Использовать этот рейс вы отмечаете эти заказы в этом порядке; выберите курьера и нажмите Создать рейс. Для рейса, который ещё не выехал, Лучший порядок расставляет адреса в самом быстром порядке (также на телефоне курьера). У каждого рейса указаны расстояние и время в пути.

Настройки: адресов на рейс, сколько может длиться рейс, временное окно, скорость курьера (велосипед ~15, скутер ~25, автомобиль ~35 км/ч в городе) и минут на адрес (парковка, звонок в дверь, расчёт; по умолчанию 2). Эти значения может настраивать и менеджер: в окне Рейсы кнопкой Настроить планирование рейсов (право Настроить планирование рейсов, по умолчанию включено для менеджера; меняется в Настройки → Права). Включение или выключение планирования рейсов и сервис маршрутов (адрес, API-ключ) остаются за администратором.

Расстояние и время в пути, на выбор администратора:

Кнопкой Проверить вы проверяете сервис. Если сервис не работает, планирование переходит на оценку и сообщает об этом. Адрес с неизвестным местоположением (нет действительного почтового индекса и номера дома) попадает в предложении в раздел без известного местоположения и не планируется. Экспорт конфигурации включает настройки, но не ключ.

Код: lib/ritplanning.ts.

Приложение для курьеров (необязательно)

Включите в Настройки → Заведение → Доставка → Приложение для курьеров (по умолчанию выключено; работает со своими курьерами и порталом управления). Тогда каждый курьер привязывает свой телефон один раз, вместо того чтобы сканировать QR-код на каждый рейс:

  1. В Привязанные телефоны выберите курьера (сотрудника), при желании название телефона, и нажмите Привязать телефон.
  2. Появится QR-код. Курьер сканирует его в приложении Optimum Bezorger (кнопка Привязать) или камерой телефона: тогда страница откроется в браузере. Она работает и без приложения, её можно добавить на главный экран.
  3. Привязка действует, пока вы её не отзовёте; телефон сразу перестанет что-либо видеть. Новая привязка для того же сотрудника заменяет старую (например, при новом телефоне).

В приложении или на странице показаны все свои рейсы (каждый рейс, который касса создаёт для этого курьера), с теми же кнопками, что и в рейсе: Маршрут, Позвонить, сумма к получению с калькулятором сдачи, Доставлено и Я вернулся в заведение. Отдельно можно включить:

Приложение для 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.

Уведомление о долгом времени выполнения

Заказ на самовывоз или доставку готов позже обещанного: касса замечает это, уведомляет и может сразу отправить клиенту извинение, при желании с купоном. Включается в Настройки → Заведение → Доставка → Уведомление о долгом времени выполнения (по умолчанию выключено).

Код: lib/telaat.ts, routes/telaat.ts, TeLaat.tsx и packages/shared/src/telaat.ts.

Кнопка «Заказать»: что она делает и когда она нужна

Нажать на товар и нажать Заказать — это два разных шага:

Зачем два шага? У стола вы принимаете весь заказ (напитки, закуска, основное блюдо), что-то меняете, если гость передумал, и затем отправляете всё сразу на кухню — один бегунок на каждую станцию, а не на каждый товар. Так кухня может начать готовить задолго до оплаты.

Что ещё происходит при нажатии Заказать:

Можно сразу перейти к расчёту. Если вы нажмёте Расчёт, когда в счёте ещё есть новые позиции, касса сначала автоматически их закажет, чтобы кухня и бар всегда получили свой бегунок. За стойкой бара или при заказе навынос не нужно сначала нажимать «Заказать»: добавьте товар и сразу нажмите «Расчёт». Если автоматический заказ не удался (нет связи, ограничение all-you-can-eat, чёрный ящик), экран расчёта не откроется, и вы увидите причину.

Не нужен чек для бара, когда вы рассчитываете сразу? В Настройки → Заведение → Заказ и расчёт поставьте галочку Расчёт сразу без сервис-чека. Тогда на кухню и в бар уходит только то, что вы отправляете кнопкой Заказать; то, что вы рассчитываете сразу, не получает сервис-чека.

Большая или маленькая кнопка Расчёт

С галочкой Большая кнопка "Расчёт" на экране заказа сразу под заказанными товарами есть большая кнопка Расчёт: широкая, высокая и с суммой, чтобы быстро попадать. Если часть счёта уже оплачена, на кнопке показана оставшаяся сумма. Маленькая кнопка внизу рядом с Заказать тогда исчезает.

С большой кнопкой кнопки на экране расчёта тоже большие: Расчёт (при оплате Картой, Подарочной картой и другими способами оплаты), а при оплате Наличными Без сдачи и Расчёт широкие и высокие, по ним легко попасть даже грязными пальцами (например, в мясной лавке). Способы оплаты немного крупнее, а кнопки чаевых немного меньше, чтобы всё помещалось на экране.

При новой установке галочка снята: тогда маленькая кнопка внизу рядом с Заказать и экран расчёта с обычными кнопками. Хотите крупно? В Настройки → Заведение, сразу под светлой/тёмной темой, поставьте галочку Большая кнопка "Расчёт". Касса, которая уже использовалась, сохраняет прежнюю настройку. Выбор действует для всех касс и планшетов заведения.

Отметка товара "нет в наличии" (распродано)

Любой сотрудник может на экране заказа долго нажать на товар (или щёлкнуть правой кнопкой мыши) и выбрать Закончился. Товар станет серым, и его нельзя будет заказать ни на одной кассе. Так же его можно вернуть кнопкой Снова в наличии. Каждое изменение записывается в журнал. Администратор по-прежнему может сделать это в Настройки → Товары. Кассовый сервер тоже отклоняет товар, который "закончился" ("Cola" закончилась), в том числе с планшета, который ещё не получил изменение, или заказы, сохранённые офлайн; такой планшет покажет "Не удалось отправить".

Кухонный экран (KDS)

Помимо принтеров заказов (а не вместо них) кухня или бар может использовать экран. Откройте на планшете/ПК на кухне http://<kassaserver>:3000/keuken, войдите с PIN-кодом и выберите станцию: это те же названия, что и у принтеров (кухня, бар, ...), поэтому на экране будет ровно то, что попало бы в этот заказ. "Все" показывает все станции.

Экран обновляется сам сразу. Заказы по-прежнему печатаются; кто не пользуется экраном, ничего не заметит.

Кухонный экран: передача, порядок и подача

Настройки → Принтеры → Кухонный экран. Каждая часть включается отдельно, по умолчанию выключена; при выключении всё сохраняется.

Кухонный принтер выключен или нет кухонного экрана

Касса всегда продолжает работать, даже если принтер кухни или бара выключен (или закончилась бумага, или отошёл кабель), а также без кухонного экрана:

Подачи (закуска, основное блюдо ...)

Кнопки подач показываются только тогда, когда они нужны: как только в заказе есть меню (составной товар) или когда что-то уже есть в подаче с 2 по 4. С обычными товарами, например колой, вы их не видите, и всё сразу уходит на кухню. Ничего настраивать не нужно.

Под списком заказа находится Подача 1 2 3 4. По умолчанию выбрана подача 1, и всё работает как обычно: "Заказать" сразу отправляет всё на кухню, без заголовков подач в заказе. Если выбрать подачу 2 (или выше) перед добавлением товаров, то они:

Подача 1 всегда уходит сразу. Если подача 2 уже вызвана, блюдо, дозаказанное позже в подачу 2, тоже уходит сразу.

Аллергены для каждого товара

По умолчанию выкл.: тогда аллергены нигде не показываются. Включение: Настройки → Заведение → Указывать и показывать аллергены для товаров.

All-you-can-eat

По умолчанию выкл. Вы создаёте одно или несколько предложений, напр. Включается в Настройки → Заведение → All-you-can-eat (только администратор). Рыба, Мясо и Суши, у каждого есть:

Кнопками ↑ ↓ задаётся порядок. Он важен, если блюдо входит в несколько предложений: тогда оно относится к верхнему из выбранных группой. Удалить убирает предложение для новых столов; у текущих столов строки цен сохраняются (уменьшить число человек там ещё можно, увеличить — нет).

За столом:

Подарочные сертификаты

Два переключателя в Настройки → Заведение → Подарочные карты:

Пополняемый баланс (необязательно)

Для клубов, спортивных столовых, молодёжных центров и мероприятий: подарочная карта с балансом становится пополняемой картой. Включается в Настройки → Заведение → Пополняемый баланс, под подарочными картами (по умолчанию выкл.; работает, только если включено Продавать подарочные карты с балансом).

Талоны на питание

Только для заведений в Бельгии, по умолчанию выключено: Настройки → Заведение → Расчёт → Талоны на питание. Талоны на питание — это льгота к зарплате: работодатель зачисляет их на карту сотрудника (Edenred, Monizze или Pluxee). Гость платит ею на обычном платёжном терминале; интеграция с эмитентами не нужна.

Иностранная валюта

Оплата наличными в другой валюте, напр. для британских или американских туристов или в приграничье со швейцарским франком. По умолчанию выключено: Настройки → Заведение → Расчёт → Иностранная валюта. Добавьте валюты (CHF, CZK, DKK, GBP, HUF, NOK, PLN, SEK, TRY, USD) и для каждой валюты курс: сколько евро вы берёте за 1 единицу (напр. 1 GBP = € 1,15).

Дополнительные кнопки при заказе и расчёте

Кнопки для того, что нужно не каждому заведению. Всё по умолчанию выключено; включается для каждой кнопки в Настройки → Заведение → Заказ и расчёт (право Настройка заведения, оплаты и принтеров). Выключено = кнопки нигде в кассе нет, и кассовый сервер отклоняет действие. В Нидерландах всё работает без чёрного ящика; в Бельгии кнопка работает только тогда, когда эта функция протестирована с чёрным ящиком (у кнопки это указано, если ещё нет).

При открытии стола:

При заказе (экран заказа, для того, что вы нажмёте потом):

При расчёте:

Позже (Чеки):

Код: 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, с названием заведения в качестве отправителя.

Бронирования

Включение: Настройки → Заведение → Бронирования (по умолчанию выключено). Там же задаётся, за сколько минут до начала забронированный стол отображается на плане зала (по умолчанию 60), и стандартная длительность бронирования (по умолчанию 120 минут).

Кассовая интеграция TheFork: стол открывается при прибытии, счёт возвращается

Через POS-API TheFork касса работает вместе с TheFork Manager (по умолчанию выключено), в дополнение к получению бронирований, описанному выше. Включение: Настройки → Платформы бронирования → Кассовая интеграция TheFork; работает через портал управления.

Документация TheFork: https://docs.thefork.io/POS-API/introduction

Лист ожидания для гостей без брони

Для гостей без брони, которые ждут свободный стол. Включение: Настройки → Заведение → Лист ожидания (walk-ins) (по умолчанию выключено). Доступно, только если настроены SMS через CM.com; иначе листа ожидания в кассе нигде нет (даже в настройках). Работает независимо от бронирований, даже если они выключены. Там же задаётся текст SMS (пусто = "Здравствуйте, {naam}! Ваш стол в {zaak} готов. Пожалуйста, подойдите к персоналу."; {naam}, {zaak} и {personen} подставляются автоматически).

Карта лояльности / бонусные баллы

Включение: Настройки → Заведение → Карта клиента / бонусные баллы (по умолчанию выключено, тогда этого нигде не видно). Там же задаётся: баллов за евро (0 = только карты со штампами), после скольких баллов даётся награда и сколько евро скидки она составляет.

Профиль гостя: VIP, особенности питания и предпочтения (необязательно)

Включается в Настройки → Заведение → Профиль гостя, под картой лояльности (по умолчанию выключено; работает, только если карта лояльности включена). Затем:

Избранное / быстрые кнопки

По умолчанию выкл. Настройки → Заведение → Избранное / быстрые кнопки:

Ещё по одной

На экране заказа есть кнопка ↻ Ещё раунд (как только что-то есть в счёте, даже если это ещё не заказано). Одно нажатие ещё раз добавляет последний раунд (всё, что ушло одним нажатием "Заказать", или то, что вы только что выбрали) новыми строками; затем просто нажмите Заказать. Цены — текущие (в том числе happy hour).

Время за столиком на плане зала

На каждом занятом столе показано ⏱ 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 в Настройки → Законы и правила (по умолчанию выключено).

Разливная система и расходомеры

Каждый налив, о котором сообщает разливной компьютер или расходомер, попадает в счёт, поэтому ничего не "утекает". Включите это в Настройки → Разливная система (по умолчанию выключено).

Дозированный налив и Kegboard

При дозированном наливе кран открывается только после того, как бокал пробит на кассе, и только на это количество. Так ничего не наливается без чека. Это работает только при включённой разливной системе и включается для каждого крана отдельно (по умолчанию выключено).

Управление музыкой с кассы

Персонал управляет музыкой с сенсорного экрана кассы, поэтому отдельный экран на баре не нужен. Включите это в Настройки → Заведение → Экраны и управление → Управление музыкой с кассы (по умолчанию выключено). Тогда в верхней панели появится кнопка Музыка: для каждого источника (например, Бар и Терраса) Воспроизвести, Пауза, Следующий, Предыдущий, Громче, Тише и ползунок громкости, а также что сейчас играет. Назад к кассе закрывает панель. При выключении источники сохраняются.

Администратор добавляет источники кнопкой + Источник музыки, выбирает способ подключения и проверяет его кнопкой Проверить:

Касса общается с плеерами со своего сервера, поэтому они должны быть в той же сети, что и касса (Soundtrack — через интернет). Управлять может любой, кто вошёл в систему; настраивать — с правом Настройка заведения, оплаты и принтеров. Токен и пароль никогда не показываются на экране и не попадают в журнал; в журнале записывается только настройка (вкл./выкл., источники), а не каждое нажатие. Экспорт конфигурации переносит только вкл./выкл. (источники относятся к одному заведению).

Второй экран на планшете или телефоне

Музыку и камеры можно открыть и на собственном планшете или телефоне сотрудника — как второй экран рядом с кассой. В окне Музыка или Камеры есть кнопка На планшете или телефоне: она показывает QR-код с адресом, например http://192.168.1.20:3000/muziek или .../camera.

  1. Подключите планшет или телефон к wifi-сети заведения.
  2. Отсканируйте QR-код камерой (или введите адрес в браузере).
  3. Войдите со своим PIN-кодом. Вы видите только то, что вам разрешено: музыку — все, камеры — только с правом Просмотр камер.
  4. Готово: Выйти справа вверху. Если сеанс истёк (например, планшет всю ночь не использовался), экран снова запросит PIN-код.

Совет: добавьте страницу на главный экран планшета (в браузере: Добавить на главный экран), тогда она будет открываться как приложение.

Поэтому касса определяет IP-адрес кассового ПК в сети (если у ПК их несколько, например wifi и кабель, вы выбираете сеть). На портале управления (касса удалённо) это адрес портала. QR-код касса создаёт сама, без интернета.

Привязка планшетов: одной кнопкой на планшет (необязательно)

Ещё проще: привяжите планшет один раз, и касса одной кнопкой отправит музыку или камеры на этот планшет. Включите в Настройки → Заведение → Экраны и управление → Планшеты как второй экран (по умолчанию выкл.).

  1. На планшете: откройте http://<kassaserver>:3000/tablet (у настройки есть На планшете или телефоне с QR-кодом), войдите с PIN-кодом и дайте планшету название, напр. Планшет Бар. Привязать.
  2. На кассе: в окне Музыка или Камеры теперь есть кнопка На Планшет Бар (с зелёной точкой, если планшет включён). Нажмите её: планшет сам откроет этот экран. Для музыки передаётся выбранный источник (напр. Терраса).
  3. На планшете: Закрыть возвращает к ожиданию; Отвязать этот планшет удаляет привязку.

Оставьте страницу на планшете открытой; если планшет выключен или спит, он откроет экран, как только снова включится. Планшет остаётся в системе под сотрудником, который на нём вошёл: отправлять и смотреть камеры можно только с правом Просмотр камер. Администратор видит у настройки, какие планшеты привязаны и включены ли они, и может переименовать или удалить их. Планшет хранит собственный ключ; касса хранит от него только хеш. При выключении привязанные планшеты сохраняются. В журнале видно, кто привязал, переименовал или удалил планшет.

Экран вызова для самовывоза

Экран для гостей: слева Готовится, справа Готово, с крупными номерами, как в закусочной или фастфуде. Включается в Настройки → Заведение → Экраны и управление → Экран вызова для самовывоза (по умолчанию выключен).

Привязка не нужна: откройте на телевизоре с браузером (смарт-ТВ, стик или мини-ПК), планшете или втором мониторе адрес кассы с /oproep, напр. http://192.168.1.20:3000/oproep. В настройке и в окне Вызвать есть кнопки На отдельном экране и На планшете или телефоне (QR-код с адресом). Входить не нужно: экран показывает только номера. Коснитесь экрана один раз, тогда браузеру можно воспроизводить звук.

Что отображается:

Номер: для интернет-магазина, Thuisbezorgd и платформ доставки — номер заказа, который уже есть у гостя или курьера; иначе номер выдачи (от 1 до 999). Он крупно напечатан на чеке с пояснением, что номер появится на экране, когда заказ будет готов (на языке чека).

По желанию (по умолчанию выключено, в настройке):

На кассе есть кнопка Вызвать (с числом заказов, которые ещё готовятся):

  1. Готово вручную отмечает номер как готовый (без кухонного экрана или если так быстрее). Для заказа из интернет-магазина или Thuisbezorgd статус меняется тоже, поэтому гость получает уведомление.
  2. Назад возвращает номер в Готовится.
  3. Забран убирает номер с экрана (с возможностью Отменить).

В настройке также можно выбрать, показывать ли имя рядом с номером (по умолчанию нет, ради конфиденциальности) и издаёт ли экран звук. Выключение: нет кнопки «Вызвать» и нет номера выдачи на чеке; настройки сохраняются. В журнале видно, кто вручную отметил номер как готовый, вернул в «Готовится» или отметил как забранный.

Отметка прихода и ухода

По умолчанию учёт рабочего времени выкл.: тогда его нигде в кассе не видно (нет кнопки в верхней панели, нет на экране входа, нет вкладки «Рабочее время»). Включение: Настройки → Заведение, раздел Отметка прихода и ухода персонала:

Кто не работает на кассе (напр. кухня), отмечается на экране входа: нажмите Приход / уход и введите PIN-код. Это переключает между приходом и уходом без входа в систему.

Если учёт времени включён, администратор видит в Настройки → Рабочее время:

В Бельгии каждая отметка прихода и ухода также передаётся в «чёрный ящик». Если он недоступен, отметка не проходит (как и оплата). Соответствует ли это в точности бельгийским требованиям к регистрации персонала, ещё нужно подтвердить.

Взвешивание и этикетки (весы)

Если весы включены (Настройки → Весы), у товаров может быть цена за килограмм. Все остальные товары по-прежнему продаются поштучно.

Uber Eats, Deliveroo и HubRise

Помимо Thuisbezorgd.nl / Takeaway.com, в кассу также поступают заказы из Uber Eats (Нидерланды и Бельгия), Deliveroo (только Бельгия; Deliveroo ушёл из Нидерландов в конце 2022 года) и всё, что подключено к HubRise (в т. ч. Uber Eats, Deliveroo, Just Eat/Takeaway.com и небольшие приложения для заказов). Каждая платформа включается отдельно в Настройки → Платформы доставки (по умолчанию выключено; при выключении всё сохраняется). Вкладка показывает для каждой платформы, в каких странах она работает, и предупреждает, если она не работает в стране заведения.

Заказы. Заказ становится обычным заказом (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.

Автомат для наличных (закрытая система обработки наличных)

По умолчанию выключено: наличные работают как обычно. В закрытой системе обработки наличных персонал не касается наличных: клиент или сотрудник вносит деньги в автомат, который их пересчитывает, проверяет на подлинность и выдаёт сдачу.

Кнопка ©

Данные OptimumPOS

В правом нижнем углу каждого экрана (PIN-код, план зала, заказ и кухня) есть маленькая кнопка ©. Она открывает данные OptimumPOS: логотип, адрес, телефон, e-mail и сайт. Иконка хранится локально в приложении, поэтому работает и без интернета. Эта же иконка — значок приложения (вкладка и главный экран).

Часть 2 · Менеджер

Начало работы

Менеджер по умолчанию может всё, что может официант, а также, среди прочего, давать скидки, делать возвраты, закрывать день, управлять денежным ящиком и просматривать журнал и остатки. В основном это находится под кнопкой Отчёт:

Склад

По умолчанию выключено. Включается в Настройки → Заведение → Вести учёт склада. Выключено = нигде в кассе не отображается.

Заказы у поставщиков

По умолчанию выключено. Включается в Настройки → Остатки → Заказы у поставщиков (только при включённом Вести учёт склада). Выкл. = список заказа работает как обычно.

Управление отзывами

Чтение отзывов из Google и Trustpilot и ответы на них прямо в кассе. Включается в разделе Настройки → Баллы и отзывы → Управление отзывами (по умолчанию выключено, тогда этого нигде не видно). Чтение и ответы: Отчёт → Отзывы (право Читать отзывы и отвечать на них, по умолчанию есть и у менеджера). Если отключить функцию, подключения и отзывы сохранятся.

SMS- и e-mail-маркетинг

Сообщения клиентам с картой лояльности, которые дали на это согласие. Без карты лояльности ни то, ни другое включить нельзя.

Чаевые по сотрудникам

В разделе Настройки → Заведение → Чаевые (только если включено "Показывать кнопки чаевых при расчёте") выберите, как чаевые по сотрудникам отображаются в промежуточном отчёте (X), Z-отчёте (чек и e-mail) и Выручке за период (также в CSV):

ВариантРаспределение
Выкл. (по умолчанию)только общая сумма чаевых, как обычно
Каждому свои чаевыечаевые со счетов, которые сотрудник рассчитал сам
Общий котёл по часамвсе чаевые вместе, по отработанным (отмеченным) часам за этот период (нужна отметка прихода и ухода; никто не отмечался = поровну)
Общий котёл поровнувсе чаевые вместе, поровну между теми, кто был на смене (без отметок: кто пробивал или рассчитывал заказы)

Оставшиеся копейки (центы) достаются тому, кто ближе всего к следующему центу, чтобы итог всегда сходился. Это только обзор: касса ничего не выплачивает (это можно сделать через "Изъятие из ящика"). Старые Z-отчёты остаются без изменений.

Z-отчёт по e-mail

Один раз укажите e-mail администратора в Настройки → Заведение → Отправлять Z-отчёт на (несколько адресов — через запятую, макс. 3). После Закрыть день Z-отчёт будет автоматически отправляться на этот адрес, помимо печатного чека. Пусто = не отправлять, как обычно.

Обзор дня (необязательно)

Если в поле Отправлять Z-отчёт на указан адрес, под ним есть флажок С кратким обзором дня в начале письма (по умолчанию выключено). Вкл. = в начале письма с Z-отчётом несколько строк простым языком, только из собственных данных кассы (без ИИ, ничего не передаётся наружу):

Сам Z-отчёт (чек и письмо) остаётся точно таким же. Пример за сегодня показывает обзор с последнего закрытия дня до текущего момента. Обзор на нидерландском языке, как и письмо с Z-отчётом.

Дашборд

Вкладка Дашборд в разделе Отчёт (право Выручка за период), только просмотр:

Проданные подарочные сертификаты не считаются выручкой, а скидки и заголовки меню не попадают в топ-10 (как и в других отчётах). День длится с 00:00 до 24:00.

Дополнительные отчёты

Три дополнительные вкладки в Отчёт, каждая включается отдельно в Настройки → Заведение → Управление и отчёты → Дополнительные отчёты (по умолчанию выключено: тогда вкладки нет). Для них нужно то же право, что и для Выручка за период, и они только для просмотра. Период: эта неделя, прошлая неделя, этот месяц, прошлый месяц, последние 90 дней, этот год или свой выбор (не более чуть больше года).

Скидки

Менеджер или администратор видит на экране заказа рядом с итогом кнопку % Скидка:

Скидка выводится отдельной строкой в чеке ("Скидка 10%", под ней причина) с той же ставкой НДС, чтобы итог и расшифровка НДС сходились. При скидке на весь чек она распределяется по ставкам НДС. Убрать: нажмите на сумму строки скидки. Если позиция с собственной скидкой отменяется, скидка тоже отменяется. Если убрать товар из чека с процентной скидкой на весь чек, касса пересчитывает скидку для оставшегося (в Бельгии UC226); фиксированная сумма остаётся и при расчёте снова распределяется по позициям. Если из-за скидки 100% платить нечего, завершите заказ кнопкой "Закрыть (к оплате 0)". Скидки отражаются в журнале, а также в X/Z-отчёте и отчёте за период как "в т.ч. скидка". При возврате чека со скидкой скидка учитывается пропорционально.

Промокоды (по желанию)

Коды со скидкой на весь чек, например для акции (ZOMER10). Включаются в Настройки → Заведение → Промокоды (по умолчанию выключено); сами коды создаются в Настройки → Промокоды (право Управление товарами):

На экране заказа есть кнопка Промокод (вводить код может любой; код заранее создан заведением). Скидка появляется в чеке строкой "Промокод CODE", распределённой по ставкам НДС; один код на чек, и нельзя, если уже есть (частичная) оплата. Если удалить строку или заказ отменён, использование больше не считается. Удаление использованного кода выключает его (отчёты остаются верными). Всё записывается в журнал (Промокод). Код: lib/kortingscodes.ts, routes/kortingscodes.ts, Kortingscodebeheer.tsx, KortingscodeDialoog.tsx.

Они не отображаются в списке Настройки → Промокоды (но количество по каждой акции видно в Отчёт → Маркетинг) и передаются в интернет-магазин, пока действительны и не использованы.

Отчёты и закрытие дня

Отчёт — промежуточный итог (X)

Кнопка Отчёт в верхней панели:

Экспорт в бухгалтерию

Отчёт → Выручка за период → Экспорт для бухгалтерии (журнал) (право Выручка за период) создаёт 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 и BEjournaal_…_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), NLjournaal_…_xaf.xafauditfile налоговой службы Нидерландов (Belastingdienst) (XSD XmlAuditfileFinancieel4.0): один файл за период, главная книга, коды НДС, периоды и за каждый день мемориальная транзакция; импортируется, среди прочего, в Caseware, Exact Reeleezee и Visma Cash
AccountView (XML), NLjournaal_…_accountview.xmlXML-проводки (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.xmlXML для UpdateConnector FiEntries (финансовые операции), одна проводка за день с годом, периодом, администрацией и журналом; в Profit загружается через Импорт → XML; укажите номер администрации (по умолчанию 1)
Asperion (CSV), NLjournaal_…_asperion.csvформат FMUTA (Extra → Import financiële mutaties), за каждый день строка заголовка и строки проводок; определение импорта настраивает Asperion через службу поддержки
Дневная сводка (HTML), NL и BEjournaal_…_dagstaat.htmlчитаемая дневная сводка за каждый день (выручка по ставкам НДС, способы оплаты, чаевые, расхождение в кассе) и итоги; печать в PDF или отправка по почте, для программ без импорта (Accountable, Dext, Dexxter, Jortt, Kleisteen, MoneyMonk)
e-Boekhouden.nl (CSV)journaal_…_eboekhouden.csvДата; Документ; Описание; Счёт главной книги; Сумма (дебет положительный, кредит отрицательный); код НДС GEEN (НДС уже на счетах НДС); Импорт → Операции, вид мемориальная проводка
Exact Online (XML)journaal_…_exact.xmleExact-XML (тема GLTransactions): за каждый день одна мемориальная проводка (тип 90) в журнале; Импорт/экспорт → Импорт XML
InformerOnline (TXT), NLjournaal_…_informer.txtмемориальные проводки с разделителем-табуляцией (Geavanceerd → Memoriaal → uploaden); журнал должен быть номером 1–99 (иначе 90)
KING ERP (XML), NLjournaal_…_king.xmlKING_JOURNAAL: один пакет проводок (не окончательный) с журнальной проводкой за каждый день
KOMAS (CSV), NLjournaal_…_komas.csvсвободный формат KOMAS (0401 Importeren journaalposten): Datum; Grootboek; Omschrijving; Bedrag
Odoo (CSV), NL и BEjournaal_…_odoo.csvAccounting → Journal Entries → Import records; журнал и счёт по названию или коду
Sage BOB 50 (Excel), BEjournaal_…_bob.xlsxImportation de données externes → Opérations diverses (сопоставить столбцы один раз)
SAP Business One (ZIP), NL и BEjournaal_…_sapb1.zipData Transfer Workbench, Journal Entries: JournalEntries.csv и JournalEntries_Lines.csv
SnelStart (CSV)journaal_…_snelstart.csvДата; Документ; Описание; Счёт главной книги; Дебет; Кредит (дд-мм-гггг, десятичная запятая, без BOM); импорт мемориальных проводок, журнал выбирается при загрузке
Twinfield (XML)journaal_…_twinfield.xmlпроводки журнала как черновик (destiny="temporary"), бухгалтер проводит их окончательно; укажите код администрации (пусто = администрация, в которую вы импортируете)
Winbooks (CSV), BEjournaal_…_winbooks.csvK_DOC.CSV, за каждый день один документ в журнале (Winbooks нумерует сам)
Yuki (XML)journaal_…_yuki.xmlJournal-XML (GeneralJournal), одна мемориальная проводка за день, та же структура, что и у прямой интеграции; ID администрации необязателен

Обзор: какая бухгалтерская программа каким способом

По сегментам, по алфавиту. NL/BE = в какой стране работает программа: в Настройки → Бухгалтерия → Бухгалтерская программа вы видите только программы для страны заведения (нидерландские программы не работают в Бельгии и наоборот). Онлайн = касса сама проводит каждый день (выбор в Настройки → Бухгалтерия → Бухгалтерская программа); по запросу = API есть, но сначала требуется регистрация партнёра или одобрение поставщика (сообщите нам). Файл = формат в Экспорт для бухгалтерии. Где возможны оба варианта, можно использовать оба. Список находится в packages/shared/src/boekhoudcatalogus.ts и также показывается в Настройки → Бухгалтерия.

ПрограммаNLBEОнлайнФайлПримечание
Малый и средний бизнес и самозанятые
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. После каждого дня касса проводит тот же журнал, что и в экспорте выше (выручка и НДС по ставкам, способы оплаты, чаевые, округление, денежный ящик и расхождение в кассе) мемориальной проводкой в выбранной программе, с журналом и счетами главной книги из Настройки → Бухгалтерия. Включено всегда не более одной программы.

ПрограммаСтранаПодключение кЧто проводит касса
AcumulusNLкод контракта, пользователь и пароль API-пользователяза каждый день оплаченный счёт на продажу со строкой на каждую ставку НДС; об ошибках Acumulus сообщает по почте на ACUMULUS_FOUTMAIL
AFAS ProfitNLсреда, токен, администрациямемориальная проводка (FiEntries)
Business CentralNL, BEтенант, среда, компания, client ID и секрет приложения Microsoft Entra (API.ReadWrite.All)строки в общем журнале с кодом из поля «Журнал»
Exact OnlineNL, BEвход (OAuth, своё приложение: см. Exact Online ниже; Бельгия: start.exactonline.be)мемориальная проводка в журнале (напр. 90)
HorusBEвход (OAuth, приложение ниже), при необходимости досьепрочая операция
MoneybirdNLAPI-токен, при необходимости администрациямемориальная проводка (general journal document)
OdooNL, BEадрес, база данных, пользователь, API-ключжурнальная проводка в журнале с коротким кодом (напр. MISC)
QuickBooks OnlineNL, BEвход (OAuth, приложение ниже; QUICKBOOKS_OMGEVING)journal entry; счета по номеру
SAP Business OneNL, BEадрес Service Layer, база данных, пользователь, парольжурнальная проводка (JournalEntries)
SilvasoftNL, BEпользователь и API-ключпроводка продажи на контрагента Kassaverkopen, строка на каждую ставку НДС (способы оплаты, чаевые и расхождение в кассе не передаются)
SnelStartNLключ интеграции и ключ подпискимемориальная проводка
TwinfieldNLвход (OAuth, приложение ниже), при необходимости офистранзакция журнала
XeroNL, BEвход (OAuth, приложение ниже), при необходимости организацияmanual journal; счета по коду
YukiNL, BEAPI-ключ, при необходимости администрациямемориальная проводка (GeneralJournal)
Zoho BooksNL, BEвход (OAuth, приложение ниже; по умолчанию европейский дата-центр), при необходимости организацияжурнальная проводка; счета по коду

Аудит-файл кассы (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):

Суммы положительные с C (продажа, поступление) или D (возврат, выплата); время указано по нидерландскому времени со смещением. Все ключи — это id из базы данных без дефисов, поэтому их можно найти в кассе.

Подпись (глава 6 спецификации): если Optimum POS настроил сертификат, аудит-файл подписывается и помещается в конверт (XML Signature), а файл называется …_ondertekend.xml; иначе это простой аудит-файл, о чём касса сообщает при скачивании.

Оплата по счёту

Бизнес-клиенты (компания, которая каждую неделю заказывает обед, отель, клуб) покупают по счёту и платят позже по счёту-фактуре. Включается в Настройки → Счета → Оплата по счёту (только при включённых Счетах; по умолчанию выключено).

Банк: провести переводы

В Отчёт → По счёту → Банк касса для каждого поступления ищет соответствующий счёт с оплатой по счёту:

Видео с камер в кассе

Все камеры заведения на одной странице, без отдельного экрана или приложения. Включите в Настройки → Заведение → Экраны и управление → Видео с камер в кассе (по умолчанию выкл.). Тогда в верхней панели появится кнопка Камеры для тех, у кого есть право Просмотр камер (по умолчанию менеджер и администратор; в Настройки → Права можно включить и для официантов). Все камеры показаны рядом; нажмите на камеру, чтобы увеличить. При выключении системы видеонаблюдения сохраняются.

Также на отдельном экране: На отдельном экране открывает http://<kassaserver>:3000/camera (например, монитор за баром), а На планшете или телефоне показывает QR-код: сотрудник сканирует его своим планшетом или телефоном и входит со своим PIN-кодом (и там только с правом Просмотр камер). На узком экране камеры расположены друг под другом. См. «Второй экран на планшете или телефоне».

Администратор добавляет системы видеонаблюдения через + Система видеонаблюдения, проверяет их кнопкой Проверить и для каждой камеры задаёт название и показывать ли её на странице:

Без ffmpeg: снимок.

Конфиденциальность: касса получает изображения от системы видеонаблюдения и только передаёт их дальше; ничего не сохраняется (ни записей, ни кэша). Пользователи и пароли остаются на сервере и никогда не показываются на экране и в журнале. В журнале видно, кто смотрел камеры. Сами изображения страница запрашивает с ключом (действует 12 ч, пока сотрудник в системе), так как изображение в браузере не может передать токен. Экспорт конфигурации включает только вкл./выкл.

Журнал важных действий

Отчёт → Журнал (менеджер или администратор) показывает, кто, что и когда сделал.

Что записывается: сторно, скидки (и их отмена), возвраты, копии чеков, проформы, ручная оплата картой, открытие ящика, внесение/изъятие денег, размен, закрытие дня, перенос позиций или столов, закрытие пустых заказов, изменение цены/названия/НДС товаров, новые или удалённые товары, изменения персонала и настроек, корректировка рабочего времени, вход и выход, неверные PIN-коды, а также отметки прихода и ухода. При оплате в счёт также: клиенты, продажи и платежи в счёт, загрузка банковских выписок, банковская интеграция и получение данных из банка. При уведомлении о долгом времени выполнения: опоздавшие заказы и отправленные извинения. С Mailchimp или Klaviyo: подключение, выбор списка, отвязка и отписки оттуда. С управлением музыкой: вкл./выкл., а также добавление, изменение и удаление источников музыки. С видео с камер: кто смотрел камеры (не чаще одного раза в полчаса на сотрудника), вкл./выкл. и системы видеонаблюдения. С сигнализацией: каждый сигнал, его обработка, а также включение и выключение.

Сигнализация: мошенничество и отклонения

Настройки → Сигнализация. Две части, каждая включается отдельно и по умолчанию выключена; при выключении все сигналы и настройки сохраняются. Настраивать может тот, у кого есть право Настройка сигнализации (по умолчанию менеджер и администратор); видеть и обрабатывать сигналы может тот, кто может видеть журнал. Касса проверяет каждые 5 минут (и по кнопке Проверить сейчас); не на теневой кассе.

Выявление мошенничества и краж (по сотруднику, за рабочий день с 05:00), каждое правило включается отдельно со своим порогом:

Уведомления об отклонениях, в сравнении с тем же днём недели и тем же временем за последние недели (по умолчанию 4; дни без выручки не учитываются, минимум два дня для сравнения):

Каждый сигнал приходит один раз (на правило, сотрудника и день; время кухни — не чаще раза в час) и отправляется:

Для каждого канала есть кнопка Тестовое сообщение. Токены и ключи остаются на кассе (экраны видят только, заполнены ли они). Сигнал — не доказательство: проверьте чек и журнал и обсудите это с сотрудником.

Чеки: копия и возврат (чек возврата)

Чеки

Кнопка Чеки в верхней панели:

Денежный ящик с датчиком и ящик для каждого сотрудника

По умолчанию выключено. Настраивается в Настройки → Оплата → Денежный ящик.

Часть 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 или MariaDB, если с ним работает ваш ИТ-администратор или если вы хотите читать данные в собственных отчётах, в Excel или в BI-программе. Если сомневаетесь, выберите встроенную: она работает сразу.

Что нужно для MySQL или MariaDB?

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:

  1. В разделе Адрес MySQL/MariaDB заполните поля: Сервер (по умолчанию localhost), Порт (по умолчанию 3306), База данных (по умолчанию horecapos), Пользователь и Пароль; для MariaDB так же. Если адрес уже задан, поля уже заполнены; если оставить пароль пустым, останется сохранённый пароль (для того же пользователя). Касса сама сохраняет адрес; если Optimum POS уже задал постоянный адрес, действует этот адрес и полей нет. Если касса уже работает на MySQL/MariaDB, позже данные меняются кнопкой Изменить данные MySQL/MariaDB. Шифрованное подключение настроит для вас Optimum POS.
  2. Нажмите Проверить подключение: вы увидите программу и версию или причину ошибки.
  3. Нажмите Перенести в MySQL/MariaDB, отметьте, что вы понимаете последствия, и введите свой PIN-код.

Перенос работает в любом направлении между тремя базами данных, и все данные переносятся:

  1. Касса ненадолго не принимает запросы (обычно меньше минуты); затем планшеты сами продолжают работу.
  2. Сначала касса делает резервную копию текущего состояния (в разделе Настройки → Резервные копии).
  3. Всё переносится в новую базу, и касса по каждой таблице пересчитывает, всё ли на месте в точности.
  4. Только когда всё совпадает, касса продолжает работу с новой базой. Вошедшие сотрудники остаются в системе.

Если что-то не удаётся, ничего не меняется, и касса продолжает работать со старой базой. Старая база остаётся, поэтому вернуться можно всегда. Данные кассы, которые уже были в новой базе 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 с адресом. Если она недоступна, касса устанавливается со встроенной базой; перенести можно потом здесь. При обновлении выбор сохраняется.

Подключение планшетов и экранов

Экран покупателя

Экран на кассе, который повёрнут к клиенту. Клиент видит примерно, что заказано, и очень чётко — сумму и способ оплаты. На нём нет управления: экран просто повторяет действия кассы. По умолчанию выключен; включается в Настройки → Заведение → Экран покупателя. На кассовом ПК с двумя экранами касса в первый раз включает его сама; если потом выключить его, он останется выключенным. Без экрана покупателя (выключен или не подключён) всё работает как обычно: касса отправляет изображение в фоне, и персонал никогда не заметит ошибку или отсутствие экрана.

Что видит клиент:

Подключение — двумя способами (оба настраиваются на самом устройстве):

Экран покупателя не запрашивает PIN-код (управлять там нечем) и показывает только изображение кассы, к которой он привязан. Изображение хранится только в памяти кассового сервера; после перезапуска экран пуст до следующего изменения. Настройка (вкл./выкл. и текст приветствия) входит в резервную копию и в Импорт/экспорт (Прочие настройки).

Электронный чек по QR (по желанию)

По умолчанию выключено. Включается в Настройки → Заведение → Кухня и экран покупателя → Электронный чек (опция появляется, когда экран покупателя сохранён включённым). После расчёта на экране Спасибо показывается QR-код; тогда этот экран остаётся 45 секунд вместо нескольких секунд. Гость сканирует код своим телефоном и видит чек точно таким же, как бумажный (тот же текст, на бельгийской кассе — также с блоком FDM). На телефоне он может распечатать чек, сохранить его как pdf или скачать как текстовый файл.

Экран покупателя в режиме ожидания: слайд-шоу (по желанию)

По умолчанию выключено. Включается в Настройки → Заведение → Кухня и экран покупателя → Экран покупателя в режиме ожидания. Если на экране покупателя нет счёта, слайды сменяют друг друга (по умолчанию каждые 8 секунд, настраивается от 4 до 60):

Без слайдов экран покупателя, как всегда, показывает экран приветствия.

Happy hour

По умолчанию выключено. Включается в Настройки → Заведение → Использовать счастливые часы; после этого появляется вкладка Настройки → Счастливые часы.

Периоды меню и сезоны

По умолчанию выключено. Включается в Настройки → Заведение → Периоды меню и тип заказа → Ассортимент по периодам меню и сезонам; после этого появляется вкладка Настройки → Периоды меню. Если выключить, все товары снова продаются всегда, а периоды меню сохраняются.

Ассортимент и цены по типу заказа

По умолчанию выключено. Включается в Настройки → Заведение → Периоды меню и тип заказа → Ассортимент и цены по типу заказа. Если выключить, везде снова действует обычная цена и всё продаётся везде; введённые цены сохраняются.

По умолчанию выключено. Включается в Настройки → Заведение → Использовать меню.

Рецептуры и себестоимость (Apicbase)

Интеграция с Apicbase (рецептуры, себестоимость, склад и закупки) через Generic POS API от Apicbase (по умолчанию выключено, каждая часть включается и выключается отдельно). Настройка в Настройки → Рецептуры (право Настройка заведения, оплаты и принтеров). Касса сама обменивается данными с Apicbase (только исходящий трафик, портал не нужен).

  1. Подключение (всё заполняет администратор), одним из трёх способов:
    • Вставить 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.
  2. Outlet: Загрузить outlets и выбрать outlet этого заведения. Касса установит там POS на Generic POS API с собственным location-id (можно указать; по умолчанию HORECAPOS-…, уникальный для каждой кассы).
  3. Вкл., с галочками:
    • Товары, группы и опции в Apicbase: группы товаров, товары (PLU = PLU-номер товара, иначе код, иначе id), опции как modifiers, с ценой и НДС. Автоматически после каждого изменения (через минуту) и ежедневно. Затем в Apicbase вы привязываете каждый товар кассы к рецепту;
    • Каждый оплаченный чек в Apicbase: сначала самые старые, не более 100 за раз, в течение четверти часа после оплаты (и каждые 5 минут). Скидка распределяется по строкам; свободные суммы, сбор за одноразовую упаковку и залог идут как отдельные товары в Apicbase; весовые товары — как 1 шт. на общую сумму. Если отправка не удалась, касса останавливается (Apicbase принимает чеки по порядку) и повторяет попытку позже: на оплату это не влияет. При включении вы выбираете, с какого дня (по умолчанию с текущего момента);
    • Получать себестоимость порции (каждые 6 ч): для каждого привязанного рецепта food cost (ингредиенты и потери), с затратами на персонал, цена продажи и маржа по данным Apicbase. Расчёт по самому дешёвому поставщику, последней цене заказа или средней стоимости запасов;
    • Брать цену продажи из Apicbase (по умолчанию выкл.): устанавливает в кассе цену продажи привязанных товаров (записывается в журнал).
  4. Внизу: Себестоимость по товарам с себестоимостью, себестоимостью с персоналом, ценой в кассе, себестоимостью % и маржой. Кнопки Отправить каталог сейчас, Отправить чеки сейчас и Получить себестоимость сейчас.

Код: 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

Гостиничное ПО: на номер

Для ресторана или бара при отеле: счёт записывается на номер гостя. По умолчанию выключено: Настройки → Отель (право Настройка заведения, оплаты и принтеров).

Sirvoy отправляет что-то только при изменении бронирования: бронирования, сделанные до подключения, касса узнаёт только после изменения в Sirvoy. Сообщения могут приходить не по порядку; сообщение старее (generatedAt), чем то, что уже есть в кассе, пропускается. В отеле = не отменено и выезд не оформлен, заселён или заезд сегодня или раньше, а выезд сегодня или позже. Проверить подключение показывает, сколько бронирований пришло.

Всё это гостиничное ПО продаётся в Нидерландах и/или Бельгии. Проверить подключение проверяет данные. Код каждой интеграции: apps/pos-server/src/lib/pms/<naam>.ts.

Код: 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 (администратор включает, каким):

  1. API ID и API-ключ (X-Api-Id и X-Api-Key или Authorization: Bearer <id>:<sleutel>);
  2. 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), выберите нужный. После этого всё можно изменить вручную.

Уведомление о новой версии

Включается в Настройки → Заведение → Уведомление об обновлении (по умолчанию выключено).

Платформы бронирования

Бронирования из TheFork, Formitable, Zenchef, Resengo (только Бельгия), OpenTable (только Нидерланды), PlanPanther, RestoManager и Aqqo (только Нидерланды) автоматически попадают в кассу и на план зала. Включается в Настройки → Платформы бронирования (по умолчанию выключено). Работает, только если Бронирования включены.

Программы лояльности и отзывы

Два отдельных переключателя в Настройки → Баллы и отзывы (оба по умолчанию выключены, тогда этого нигде не видно). Если их выключить, настройки и то, что уже произошло, сохраняются.

Программа лояльности другой платформы: гость копит баллы в Joyn (Бельгия) и/или Piggy (Leat; Нидерланды и Бельгия). Это не зависит от собственной карты лояльности кассы; она может работать параллельно.

Просить отзывы: после визита одно письмо с кнопкой на Google и/или Trustpilot.

Интеграция с Mailchimp и Klaviyo

Клиенты с картой лояльности — в вашей собственной программе рассылок: в Настройки → Заведение → Mailchimp и Klaviyo (под SMS- и e-mail-маркетингом). Переключателя нет: без интеграции с выбранным списком ничего не происходит.

Код: 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 и экспорт данных (по умолчанию выключено). Только чтение: через интеграцию ничего нельзя изменить в кассе. Без данных гостей.

Зарплата и планирование

При включённом Учёте прихода и ухода (Настройки → Заведение) в Настройки → Рабочее время внизу находится Зарплата и планирование (право Управление настройками), в двух отдельных блоках. Если учёт выключен, часов нет: тогда только блок «Планирование персонала» (выручка, онлайн или файлом выручки) находится внизу Настройки → Бухгалтерия, под заголовком Выручка в планирование:

ПрограммаNLBEОнлайнФайлПримечание
Зарплатные программы и расчётные бюро
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-отчёты и журнал хранятся в базе данных и в резервных копиях; журнал нельзя изменить или удалить из кассы

Законы и правила

Настройки → Законы и правила (администратор; помощник по НДС также с правом Управление товарами). По умолчанию всё выключено; без этих настроек касса работает как обычно.

Счета (в Бельгии обязательны между компаниями) описаны в разделе «Счета для бизнес-клиентов». Осталось сделать: GKS 2.0, узнать, как обстоит дело с сертификацией (см. docs/backlog-concurrenten.md).

Счета для бизнес-клиентов

Настройки → Счета (администратор; по умолчанию выключено): включите Счета для бизнес-клиентов (UBL / Peppol). Ниже, если включено, находятся Оплата по счёту, Данные в счёте, Сервисы Peppol, Подключение к банку (при оплате по счёту) и список всех счетов. В Бельгии электронные счета между компаниями обязательны с 1-1-2026.

Киоск самообслуживания

Гости заказывают сами на стойке или планшете, как в фастфуде, и платят на кассе или картой у киоска. Экраны заказа — часть самой кассы, поэтому меню, цены, опции, комплексы, happy hours, части дня, фото, аллергены, языки и чек берутся из кассы, и их не нужно настраивать где-то ещё. На киоске работает приложение PinPortal Kiosk 2 (Android, включая Sunmi, а также Windows, Linux и macOS), которое показывает страницу и печатает чек. По умолчанию выключено.

Включение и настройка (администратор): Настройки → Заведение → Экраны и управление → Киоск самообслуживания.

Сам сканер настраивается на киоске: в приложении PinPortal Kiosk 2 в разделе управления → Сканер штрихкодов (как клавиатура, встроенный сканер или COM-порт), с тестом сканера. Сканер, работающий как клавиатура, работает и без приложения.

Добавление и подключение киоска

  1. В разделе Киоски введите название (напр. Киоск вход) и выберите Добавить киоск. Вы получите код подключения из 6 цифр (действует 30 минут).
  2. Выберите у киоска, как платит гость: по умолчанию на кассе. Если это киоск с терминалом, выберите картой или гость выбирает и выберите терминал этого киоска (из Настройки → Оплата).
  3. Откройте на киоске страницу киоска:
    • в заведении: в приложении в управлении → Vast adres адрес, указанный у настройки, напр. http://192.168.1.20:3000/kiosk;
    • или через портал управления (https, даже если киоск не в той же сети): привяжите адрес киоска, указанный у настройки, к коду киоска в приложении, как со старым киоском.
  4. Введите код подключения на киоске. Готово: киоск запоминает свой ключ. Подключить заново даёт новый код; Удалить отключает его.

У каждого киоска видно, в сети ли он.

Как заказывает гость

  1. Стартовый экран с приветствием; гость выбирает язык (все языки кассы) и касается экрана, чтобы заказать.
  2. Здесь или с собой.
  3. Меню по группам товаров, с фото, ценой (с happy hour), аллергенами и тем, что закончилось. Товары с выбором или комплекс открывают окно выбора.
  4. Корзина: изменение количества и, при желании, Что-нибудь ещё?.
  5. Заказать (оплата на кассе): гость видит свой номер выдачи крупно на экране вместе с суммой, получает листок и платит на кассе. В кассе заказ открыт как Киоск Вход · 42 (номер, который называет гость); расчёт как обычно. После этого он отображается как оплаченный на экране вызова и уходит на кухню, если это должно было произойти только после оплаты.
  6. Оплатить картой: касса отправляет сумму на терминал этого киоска (то же подключение оплаты, что и на кассе). Если не получилось, гость может попробовать снова или отменить (или, если можно выбирать, всё же оплатить на кассе). Только после успешной оплаты заказ уходит на кухню и закрывается. Гость видит свой номер выдачи крупно на экране и получает чек.
  7. Через несколько секунд киоск возвращается в начало.

При сбое: уведомление и аварийный режим (в приложении киоска, управление → Bij storing; по умолчанию выключено). Если киоск не может связаться с кассой, на нём отображается Even gesloten. Две дополнительные функции:

В кассе заказ из киоска — обычный заказ (навынос или в зале, с названием Киоск Вход) на имя сотрудника Kiosk. Касса создаёт его сама; никто не может войти под ним. Не делайте его неактивным, иначе киоск не сможет заказывать. Заказы из киоска есть в отчётах, в разделе Чеки и на экране вызова. Заказ, не завершённый в киоске (не заказан или не оплачен картой), сам истекает через 30 минут.

Оплата картой в тестовом режиме (Настройки → Оплата)? Тогда киоск на самом деле не принимает деньги; удобно для пробы. Без интернета оплатить картой нельзя; киоск тогда сообщает, что заказать можно у стойки.

Сбой: если касса недоступна, приложение киоска показывает "Временно закрыто" и само продолжает работу. Если киоск работает через портал управления и пропадает интернет, приложение может перейти на кассу в локальной сети (в приложении: управление → Расширения → При сбое переходить на локальную сеть); адрес передаёт сам киоск.

Выключение: киоск сообщает, что ненадолго закрыт. Киоски и настройки сохраняются. В журнале фиксируются включение/выключение, настройки, добавленные и удалённые киоски, подключения и отменённые заказы.

Электронный меню-борд

Меню с ценами на телевизоре (или другом мониторе с браузером), прямо из кассы. По умолчанию выключено; включается в Настройки → Заведение → Экраны и управление → Электронный меню-борд. Затем откройте на телевизоре http://<kassaserver>:3000/menubord (или кнопку На отдельном экране / На планшете или телефоне с QR-кодом). Без входа и без привязки.

Персонал и PIN-коды

Настройки → Персонал (только администратор): добавление сотрудников, изменение имени, роли и PIN-кода, перевод в неактивные.

Вход по карте (по желанию)

По умолчанию выключено. Включить: Настройки → Персонал, галочка Вход по карте (NFC, RFID или iButton). Нужно: USB-считыватель карт, работающий как клавиатура (для NFC- или RFID-карт, брелоков, браслетов или ключей iButton). Такой считыватель "печатает" номер карты и нажимает Enter; драйвер или интеграция не нужны.

Права по ролям

Настройки → Права (только администратор): для каждой роли отметьте, что могут официант и менеджер. По умолчанию всё точно так, как описано выше (как касса работала всегда); отличающаяся ячейка выделена цветом.

ПравоОфициантМенеджер
Удалять строки после заказа (сторно)дада
Давать скидку / убирать скидкунетда
Отмечать товар как "нет в наличии"дада
Печатать копию чекадада
Возврат (кредит-чек)нетда
Расчёт по счёту и приём платежей по счёту (только при включённой оплате по счёту)нетда
Промежуточный итог (X-отчёт)дада
Закрыть день (Z-отчёт)нетда
Выручка за периоднетда
Управлять денежным ящикомнетда
Управлять подарочными сертификатами (только для сертификатов с балансом)нетда
Читать отзывы и отвечать на них (только при включённом управлении отзывами)нетда
Управление картой лояльности (только при включённой карте лояльности)нетда
Просматривать журналнетда
Просмотр камер (только при включённом видео с камер)нетда
Управлять складом (только при включённом учёте остатков)нетда
Управление товараминетнет
Управлять планами заланетнет
Настраивать заведение, оплату и принтерынетнет
Просматривать и изменять рабочее времянетнет

Данные заведения

Настройки — Заведение

Настройки → Заведение (только администратор): название, адрес, почтовый индекс, город, телефон и номер НДС точки. Они печатаются вверху каждого чека и проформы. Здесь же задаётся текст внизу чека (можно несколько строк; пусто = без текста; по умолчанию "Bedankt en tot ziens!"), а под ним — язык чека (по умолчанию нидерландский; см. Языки). Пример чека меняется в реальном времени. После сохранения следующий чек сразу использует новые данные. Страну и фискальные данные (GKS) здесь намеренно изменить нельзя. В Бельгии номер НДС обязателен. С галочкой Округлять наличные платежи до 5 центов (по умолчанию выключено) итог при оплате наличными округляется (€ 6,62 → € 6,60, € 6,63 → € 6,65); разница указывается в чеке как "Округление". Оплата картой всегда точна до цента.

Управление товарами

Настройки — Товары

Войдите как администратор и выберите Настройки → Товары.

Фото товаров

Каждому товару можно добавить фото.

Сканер штрихкодов

Сканером штрихкодов на кассе вы сканируете товары, промокоды, карты лояльности и подарочные карты. Включается в Настройки → Сканер (вкладка рядом с принтерами и весами; по умолчанию выключено). Отметьте, что делает сканирование на экране заказа:

Касса ищет сначала среди товаров, затем среди карт лояльности, подарочных карт и промокодов. Сканирование работает на экране заказа, если курсор не стоит в поле ввода. В поле ввода код просто попадает в это поле.

Тест сканера: в Настройки → Сканер при каждом сканировании видно код и как касса его понимает, даже если сканер ещё выключен. Если не работает:

На киоске сканер настраивается отдельно (Настройки → Заведение → Киоск); см. Киоск самообслуживания.

Печать этикеток

Этикетки товаров с названием, ценой и штрихкодом на принтере этикеток (Brother, Dymo, Zebra ...), установленном на компьютере или планшете. Включается в Настройки → Заведение → Печать этикеток (по умолчанию выключено). Там же выбирается размер этикетки (38 × 25, 57 × 32, 62 × 29 или 100 × 50 мм) и будут ли на ней цена и штрихкод. Пробная печать печатает одну пробную этикетку.

Настройка весов (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)

Отдельная вкладка Настройки → Весы (право Настраивать заведение, оплату и принтеры, по умолчанию только администратор; вкладка есть всегда, даже если весы ещё выключены). По умолчанию выключено: тогда касса работает точно как раньше. Не видите вкладку?

Автоматический поиск. Если ещё ничего не настроено, касса при открытии этого раздела сама начинает поиск (кнопка Поиск запускает его заново):

Найденное вносится в форму с кнопкой Включить и использовать: одно касание — и всё работает. (Поиск отправляет W на каждый свободный COM-порт; занятый порт, например платёжным терминалом, пропускается.)

Все весы Aclas. Для каждых весов выберите модель; тогда касса знает, как их можно подключить. Есть два вида:

Один список, две галочки. Все весы находятся в одном списке. Для каждых весов отметьте, что они делают: Взвешивание на кассе (касса запрашивает вес при заказе) и/или Сканирование этикеток (весы печатают этикетку со штрихкодом, которую сканирует касса, и получают PLU из кассы). ПК-весы или AI-весы, например TS6X, умеют и то и другое; весы для этикеток серии LS — только этикетки. Этикетки могут поступать только с одних весов на заведение.

МодельТипПодключенияВ кассе
OS6XPOS-весыRS232, USB, Bluetoothподключённые, несколько одновременно
OS2XPOS-весы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, iL8XAI-весы с распознаванием товаров (Windows, Android, Linux)RS232, USB, Ethernet, Wi-Fiна этом устройстве (1x), также как весы для этикеток
iS5X, OiT2XAI-весы (только 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&DEK-i (в т. ч. EK-610i), HV-WPКассовые весы (только вес)RS232, EK-i также USBНепрерывно (режим stream), 2400 бод, 7E1подключённые, несколько одновременно
Adam EquipmentSwiftВесы с ценойRS232, USB (опция)Непрерывно (непрерывно на ПК), 9600 8N1 (требует проверки)подключённые, несколько одновременно
Avery BerkelFX110, FX120, FX131 (встраиваемые, со сканером)Кассовые весыRS232, FX131 также USBMettler Toledo 82/7 = Toledo 8217 (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
Avery BerkelFX125Весы с ценойRS232Checkout-Dialog 06 (9600, 7O1)подключённые, несколько одновременно
Avery BerkelXs, XTs, XTiВесы для этикетокEthernet, Wi-Fi, USBсвои PLU на весахсканировать этикетки
Avery Weigh-Tronix7820, 7829, ZP900Кассовые весыRS232, 7820 также USB, ZP900 также USB и EthernetNCI (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
Balanzas MarquesBM1000P TOPКассовые весы (только вес)RS232METTLER (касса отправляет W, Toledo), 9600 бод, 7E1подключённые, несколько одновременно
Balanzas MarquesBM5 Junior Tower Label, BM500 ETQВесы для этикетокEthernet, USB, RS232, BM500 ETQ также Wi-Fiсвои PLU на весахсканировать этикетки
BaxtranTW, VW, XTA, XTA-PВесы с ценойRS232Toledo (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
BizerbaCS 300 (также встраиваемые)Кассовые весыRS232Checkout-Dialog 06 (9600, 7O1)подключённые, несколько одновременно
BizerbaK-Class Flex, KH IIВесы для этикетокEthernetсвои PLU на весахсканировать этикетки
Brecknell6702U, 6710U, 6720UКассовые весыRS232, USB (виртуальный COM-порт)NCI (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
CASPD-II, PDN, PDI, PDS-BКассовые весыRS232, PDN также USB и Bluetooth, PDI также USBECR type 2 = Toledo (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
CASCL3000, CL5500, CL7200Весы для этикетокEthernet, USB, RS232, CL5500 и CL7200 также Wi-Fiсвои PLU на весахсканировать этикетки
DatalogicMagellan 9300i, 9400i, 9800i (сканер с весами)Кассовые весыRS232 (отдельный весовой порт), USBMettler Toledo 8217 (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
DibalKS-400, D-POS 400Кассовые весыRS232, D-POS 400 также USBCheckout-Dialog 06 (9600, 7O1)подключённые, несколько одновременно
DibalG-325, PI-100Весы с ценойRS232Checkout-Dialog 06 (9600, 7O1)подключённые, несколько одновременно
DibalM-500 (Mistral), D-900, CS-2200Весы для этикетокEthernet, Wi-Fi, USBсвои PLU на весахсканировать этикетки
DIGIDS-781Весы с ценойRS232DIGI Type B (касса отправляет ENQ), 9600 8N1подключённые, несколько одновременно
DIGISM-120, SM-6000Весы для этикетокEthernet, Wi-Fiсвои PLU на весахсканировать этикетки
Dini ArgeoDFW, DGT, 3590EКассовые весы (только вес)RS232, USB, Ethernet, DFW и 3590E также Wi-FiНепрерывно (ST,GS, 0.512,kg), 9600 8N1подключённые, несколько одновременно
Excell PrecisionTPE, AM4, FD4-P, FDP4-P, GE4, GEP4Весы с ценойRS232Непрерывно (ST,GS,+0.876kg), 9600 8N1 (кроме TPE, требует проверки)подключённые, несколько одновременно
GramXFOC RS, XFOC+ RS, ZFOC RSВесы с ценойRS232, USB (кабель Gram)Gram (касса отправляет ENQ, затем DC1), 9600 8N1 (XFOC требует проверки)подключённые, несколько одновременно
IshidaUni-3, Uni-5, Uni-7, Uni-9Весы для этикетокEthernet, Wi-Fi, USBсвои PLU на весахсканировать этикетки
Kern & SohnRPB, RFCВесы с ценойRS232, USBCheckout-Dialog 06 (Prot = DLG-06, 9600, 7O1)подключённые, несколько одновременно
Kern & SohnRFE (с ценой), IFB, EOCВесы с ценой / кассовые весыRS232Непрерывно, 9600 8N1подключённые, несколько одновременно
Mettler ToledoAriva-SКассовые весыRS232, USB (виртуальный COM-порт)Toledo 8217 (касса отправляет W), 9600 бод, 7E1подключённые, несколько одновременно
Mettler ToledoVivaКассовые весыRS232Toledo 8217, 9600 бод, 7E1подключённые, несколько одновременно
Mettler ToledobPlus, UC EvoВесы для этикетокEthernet, Wi-Fiсвои PLU на весахсканировать этикетки
Minebea IntecSignum, Combics, Midrics, PuroКассовые весы (только вес)RS232, USB, Signum и Combics также EthernetНепрерывно (SBI, автоматическая печать), 9600 8N1подключённые, несколько одновременно
OhausAviator 7000Весы с ценойRS232 или USBCheckout-Dialog 06 (9600, 7O1)подключённые, несколько одновременно
OhausValor 7000, Ranger 3000, Ranger 4000, Ranger 7000, Defender 3000Кассовые весы (только вес)RS232, USB, EthernetНепрерывно (Auto Print Continuous), 9600 8N1подключённые, несколько одновременно
Precia MolenDP400Кассовые весыRS232, USBCheckout-Dialog 06 (9600, 7O1)подключённые, несколько одновременно
Precia MolenDPOS CR, C 210 B, C 210 CВесы с ценойRS232Checkout-Dialog 06 (9600, 7O1; C 210 требует проверки)подключённые, несколько одновременно
Precia MolenCorail 500Весы для этикетокEthernet, Wi-Fiсвои PLU на весахсканировать этикетки
PrecisaXB, XT, LS, LX (прецизионные весы)Кассовые весы (только вес)RS232, LS и LX также USBНепрерывно (режим печати CONTINUOUS), 9600 8N1подключённые, несколько одновременно
Rice LakeBenchPro BP-S, BenchPro BP-RКассовые весыRS232BP-S Toledo 8213, BP-R NCI (в обоих случаях касса отправляет W), 9600 бод, 7E1 (требует проверки)подключённые, несколько одновременно
RongtaRLS1000, RLS1100Весы для этикетокEthernet, RS232, Wi-Fiсвои PLU на весахсканировать этикетки
SartoriusEntris, QuintixКассовые весы (только вес)RS232, USBНепрерывно (SBI, автоматическая печать), 9600 8N1подключённые, несколько одновременно
Star MicronicsmG-T12, mG-T30, mG-T60, mG-S8200Кассовые весы (только вес)RS232, USB (виртуальный COM-порт)Непрерывно, 9600 8N1 (требует проверки)подключённые, несколько одновременно
T-ScalePA10, PA15, PEA10Весы для этикетокEthernetсвои PLU на весахсканировать этикетки
UWEASEPВесы с ценойRS232Непрерывно, 9600 8N1 (требует проверки)подключённые, несколько одновременно
WedderburnTSDS983Кассовые весыRS232DIGI Type B (касса отправляет ENQ), 9600 8N1 (требует проверки)подключённые, несколько одновременно
WedderburnTSDS781T, TSDS782TВесы с ценойRS232DIGI Type B, 9600 8N1 (требует проверки)подключённые, несколько одновременно
WedderburnTSSM120Весы для этикетокEthernet, RS232свои PLU на весахсканировать этикетки
WintecScalePOS ACS-S60E (касса со встроенными весами)Кассовые весывнутренний COM6 (Windows) или COM4 (Android)Непрерывно, 9600 8N1 (требует проверки)подключённые
ZebraMP7000, MP72 (сканер с весами)Кассовые весыRS232 (порт AUX)SASI = Toledo (касса отправляет W), 9600 бод, 7E1 (требует проверки)подключённые, несколько одновременно

Тот же список есть в кассе в Настройки → Весы → Все весы (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.

Программы 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 после него); экран заказа добавляет товар с весом в заказ. Как это настроить:

Aclas OS6X (POS-весы у кассы, RS232/USB; так же работают и другие подключённые весы):

Сканирование этикеток (галочка у весов: Aclas TS6X, другие ПК- или AI-весы, серия LS или LH15X; весы + принтер этикеток, одни на заведение):

Портал управления: сообщение в портал содержит функцию Весы (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, право Настройка заведения, оплаты и принтеров; раньше это было в Настройки → Заведение):

  1. Включите Использовать Thuisbezorgd (применяется сразу, независимо от кнопки «Сохранить»).
  2. Зарегистрироваться в Thuisbezorgd. Затем заведение выбирает в Thuisbezorgd (Partner Hub или через менеджера) OptimumPOS / Pin Voordeel в качестве кассы. После этого JET запускает сеанс подключения; портал находит зарегистрированную кассу (по почтовому индексу и названию, иначе Pin Voordeel связывает сеанс вручную в портале), отправляет конфигурацию и запрашивает у кассы меню. Затем интеграция начинает работать.
  3. Отметьте товары, доступные для заказа через Thuisbezorgd (по группам или по отдельности), при желании с описанием для Thuisbezorgd. Меню (цена, варианты выбора как модификаторы, аллергены, НДС) передаётся автоматически; PLU = id товара/варианта. После изменения в каталоге касса обновляет меню в течение 30 секунд; только "закончился"/"снова в наличии" передаётся через API доступности.
  4. Часы работы Thuisbezorgd: отдельно для доставки и самовывоза (напр. 16:00-22:00, несколько блоков через запятую). Их сохраняют кнопкой Сохранить часы работы под ними, и они отправляются в Thuisbezorgd как service times, как только интеграция готова.
  5. Временно закрыто / Снова открыто (в 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.

Касса и интернет-магазин одинаково (каждая часть включается отдельно, по умолчанию выключено; более старый интернет-магазин игнорирует новые поля). Что включено в кассе, работает и в интернет-магазине:

Для этого меню для интернет-магазина имеет 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), по дню поступления, и не учитываются повторно в самовывозе/доставке. Заказ за столом учитывается как обычно у стола.

Оплата картой и платёжные терминалы

Настройки → Оплата (только администратор):

Если есть хотя бы один терминал с 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 чаевых (тот же предел, что и на сервере кассы).

Нет интернета

Касса работает в локальной сети, и интернет ей не нужен; он нужен только для оплаты картой через интеграцию. Если в заведении нет интернета, в верхней панели отображается Нет интернета · карта вручную (проверяется каждую минуту). Тогда на экране расчёта, а также после неудачного запуска на терминале, появляется кнопка Уже оплачено на терминале: проведите сумму на самом терминале и зафиксируйте оплату этой кнопкой.

Планы зала и столики

Редактор плана зала

Настройки → Планы зала (только администратор):

Перенос настроек во второе заведение

Настройки — Импорт/экспорт

Настройки → Импорт/экспорт (только администратор). Если вы полностью настроили одно заведение, экспортируйте конфигурацию в файл .json и импортируйте его в кассу второго заведения. Можно выбрать по разделам:

Никогда не переносятся: название, адрес, почтовый индекс, город, телефон, e-mail, номер НДС и завершающая строка чека заведения, адрес e-mail для Z-отчёта, платёжные терминалы и их ключи, персонал и PIN-коды, а также вся выручка, чеки, клиенты и количество запасов.

Импорт надёжно защищён: большое красное предупреждение, галочка "Я понимаю...", повторный ввод собственного PIN-кода администратора, отсутствие открытых заказов, та же страна (ставки НДС) и автоматическая резервная копия заранее. Импорт выполняется одной транзакцией: если что-то пойдёт не так, ничего не изменится. Существующие товары, группы, ингредиенты и столы не стираются, а убираются из кассы (как при удалении), чтобы старые чеки и отчёты оставались верными.

Импорт из другой кассы

Переход без перепечатывания всего. Доступно всегда (без переключателя): в разделе Настройки → Импорт/экспорт (только администратор) есть блок Импорт из другой кассы.

Языки (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, затем кириллицей Български (болгарский), Русский (русский) и Українська (украинский), далее языки с арабским письмом: اردو (урду), الدارجة (дарижа), العربية (арабский), دری (дари), فارسی (персидский, фарси), پښتو (пушту) и کوردی (سۆرانی) (курдский сорани), затем сирийским письмом ܣܘܪܝܝܐ (сирийский арамейский, сурёйо), письмом деванагари हिन्दी (хинди), письмом геэз ትግርኛ (тигринья) и አማርኛ (амхарский), на тифинаге ⵜⴰⵎⴰⵣⵉⵖⵜ (тамазигхт, берберский) и последним 中文(简体)(китайский, упрощённое письмо). Все экраны, кнопки, уведомления и сообщения об ошибках сервера кассы переводятся.

Для разработчиков: каждый видимый текст хранится в коде как vt('Nederlandse tekst') (apps/pos-web/lib/i18n.ts); нидерландский текст является ключом. Переводы находятся в apps/pos-web/lib/vertalingen/<taal>.ts. Если перевода нет, касса показывает нидерландский текст; тест i18n (pos-web) проверяет, что каждый текст переведён на каждый язык и что места {0} совпадают. Сообщения сервера кассы остаются на нидерландском и переводятся в браузере (в том числе с {0}, например название товара в сообщении).

Настройка принтеров

У новой кассы нет принтеров. Войдите как администратор (демо: 1111) и выберите Настройки в верхней панели.

Одинаковые товары при печати объединяются: дважды 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