Ускорение построения интерактивных отчётов

На скорость построения отчетов влияют следующие факторы: состояние БД SQL; корректная настройка службы агрегатов; способ, которым строится отчет.

Перенос r_keeper_7 на другой компьютер

Краткое описание переноса серверов r_keeper_7 на другие компьютеры

Установка Menuboard Pro

Введение

В статье описана установка и настройка продукта Menuboard Pro

Системные требования

Минимальные системные требования ниже:

  • Процессор — 2-х ядерный
  • Оперативная память — 2 ГБ
  • Места на жестком диске — 2 ГБ 
  • Операционная система — Windows 7 32/64 и старше

Настройка избранных блюд

Введение

В статье описана настройка "избранного" — списка блюд, к которому можно обращаться с кассовой станции. Там же можно из списка добавлять и удалять блюда. При нажатии кнопки Получить избранное — блюда добавляются к текущему заказу.

Для работы схемы понадобятся:

  • XML-интерфейс на сервере справочников, доступный с кассы
  •  

Настройка XML-интерфейса

 

Оплата чаевых по QR-коду

Введение

В статье описана настройка печати QR-кода в пречеке со ссылкой на страницу SberTips.

Реализация

Ссылка должна быть вида 

https://app.sbertips.ru/{waiterCode}?orgid={orgId}&src=3

Для генерации ссылки на оплату необходимо получить в макете параметры:

  1. waiterCode – уникальный код официанта в системе SberTips
  2. orgId – код организации в системе SberTips

Для получения кода официанта и кода заведения в системе SberTips необходимо:

  1. Перейдите в меню Настройки > Настройка > Расширенные свойства
Содержание

Работа с защищенным XML-интерфейсом r_keeper_7 по подписке

Общая схема работы

  1. Для работы с xml-интерфейсом и выполнения команд SaveOrder, PayOrder необходимо дополнительно передавать информацию о лицензии LicenseInfo.
  2. Лицензия заводится и генерируется на сервере лицензирования, при этом в локальной БД ИНТЕГРАЦИИ в зашифрованном виде должны сохраняться учетные данные необходимые для выполнения запросов к СЛ: токен, id активной лицензии, порядковый номер запроса seqNumber.
  3. Для ИНТЕГРАЦИИ нужно использовать один из имеющихся продуктов в СЛ (см. таблицу ниже). ВАЖНО: продукт определяется в в соответствии с типом ИНТЕГРАЦИИ.

Продукты с xml-saas ProductGUID
R-Keeper модуль XML-интерфейс для CRM 12 мес ПО f2af3b7e-4225-4e36-b72d-c65e7b9a04c6
R-Keeper модуль XML-интерфейс для CRM 1мес ПО  fb4ba8ec-ea17-4268-a05d-cad9a598ab95
R-Keeper модуль XML-интерфейс для KDS 12 мес ПО 9a55a4a4-c2b4-412b-a558-90d8a8443850
R-Keeper модуль XML-интерфейс для KDS 1мес ПО  5674248a-06f5-4116-916f-09b1383f80a2
R-Keeper модуль XML-интерфейс для Доставки 12 мес 310bc5c7-b0ca-4790-bdeb-afe0d9cf516b
R-Keeper модуль XML-интерфейс для Доставки 1мес ПО c4fc346f-df29-4083-b611-49eb275544e8
R-Keeper модуль XML-интерфейс для Киоск 12 мес ПО 1c09f192-7938-4b17-9db5-f78856c633ad
R-Keeper модуль XML-интерфейс для Киоск 1мес ПО dc79065a-2e33-47ee-85d7-a375444f7835
R-Keeper модуль XML-интерфейс для Приложения 12 мес ПО 655cee55-7bcd-4826-b6e0-a8ccf2017ef3
R-Keeper модуль XML-интерфейс для Приложения 1мес ПО 4458d8b1-0019-4025-8c7a-60a83ad64b66

Авторизация

Для запросов к системе лицензирования требуется авторизация. Для этого нужны:

  • userName - логин интегратора (дилера)
  • password - пароль интегратора (дилера)
  • token - токен безопасности (токен выдается на Интегратора - на все его интеграции. Для получения токена отправьте письмо с запросом на integrations@ucs.ru)

В заголовке запроса должен быть передан параметр usr. Правило его формирования:

usr : Base64(userName + «;» + lowercase(md5(userName+password)) + «;» + lowercase(md5(token)))

Запрос id лицензии

Для получения id лицензии к СЛ выполняется запрос GetLicenseIdByAnchor

GetLicenseIdByAnchor?anchor=6:<productGUID>#<restCode>/17

Где 

  • productGUID - GUID продукта
  • restCode - код ресторана

Пример заполнения якоря для продукта "R-Keeper модуль XML-интерфейс для Приложения 12 мес ПО" для объекта 199999993

6:655cee55-7bcd-4826-b6e0-a8ccf2017ef3:199999993/17
ВАЖНО: символы ": # /" в строке должны быть экранированы!! (: - %3A # - %23)
т.е. запрос будет иметь вид:
https://l.ucs.ru/ls5api/api/License/GetLicenseIdByAnchor?anchor=6%3A655cee55-7bcd-4826-b6e0-a8ccf2017ef3%23199999993/17

ВАЖНО: для положительного ответа на объекте должна быть подтверждена заявка на указанное ПО и сгенерирована активная лицензия.

В ответ получим информацию об активной лицензии

Ответ сервера лицензирования
{"id":"fe4e4c5a-3037-4f0c-8216-7b98be6d87bb","expirationDate":"2020-03-26T00:00:00","qty":1.0}

Полученный id должен сохраняться в БД ИНТЕГРАЦИИ и передаваться при заполнении LicenseInfo в атрибуте licenseToken. Обновление id нужно выполнять каждый раз при старте ИНТЕГРАЦИИ и при периодических проверках лицензии, например, каждые 30-90 минут либо при ошибках выполнения запроса перед повтором.

Заполнение LicenseInfo

При отправке команд SaveOrder, PayOrder, MakeRetunGoods ИНТЕГРАЦИЯ проверяет наличие в БД информации о лицензии (id лицензии), если id найден в xml запрос добавляется дополнительный элемент LicenseInfo.

<LicenseInfo anchor="6:655cee55-7bcd-4826-b6e0-a8ccf2017ef3:199999993/17" licenseToken="fe4e4c5a-3037-4f0c-8216-7b98be6d87bb"><LicenseInstance guid="instance_guid" seqNumber="0"/></LicenseInfo>
  • anchor - якорь лицензии
  • licenseToken - id лицензии
  • guid - уникальный guid экземпляра приложения (При первом старте интеграции должен быть сгенерирован автоматически, в дальнейшем хранится локально и передается в каждом запросе)
  • seqNumber -  порядковый номер запроса. При первом вызове для нового guid должен быть 0, увеличивается при каждом запросе. в ИНТЕГРАЦИИ  должно быть реализовано хранение текущего seqNumber в оперативной памяти или локальной БД. Для получения актуального значения на старте приложения можно использовать команду GetXMLLicenseInstanceSeqNumber, но эту команду нельзя выполнять слишком часто.

XSD схемы запросов можно посмотреть на ftp://tp.ucs.ru/rk7/ForDealers/XMLInterface/XML-Schemes

5.6.6 Ввод номера стола

Окно для ввода номера стола (см. Рис. 171) появляется сразу после выбора типа заказа и настраивается в менеджерской киоска в разделе «Настройки»-«Основные настройки» (см. 5.3.1 Основные настройки) с помощью параметров:

- ВВОД НОМЕРА СТОЛА:

- Да – показывать окно для ввода номера стола;

- Нет – не показывать окно для ввода номера стола;

 

- КОД ТИПА ЗАКАЗА, ДЛЯ КОТОРОГО СЛЕДУЕТ ПОКАЗАТЬ ВЫБОР СТОЛА – код типа заказа, для которого следует показать выбор стола.

 

Рис. 170
 

 

 

Рис. 171

 

Настройка интеграции с Grafana

Введение

В статье описана интеграции r_keeper_7 и аналитическим приложением Grafana. 

Установка Grafana

Grafana доступна для различных систем — Linux, Windows и других. Установка тривиальна и подробно описана на странице скачивания. Для нашем примере будет установка на Windows. 

  1. Скачайте установщик со страницы загрузки
  2. Запустите установщик
  3. Готово!

Решение проблем с синхронизацией

Решение проблем с синхронизацией

Синхронизация справочников базами данных

Введение

В статье описана настройка новой синхронизации между базами данных r_keeper_7

Описание синхронизации

Описание ini-файлов

rk7srv.INI

[DBSync]
; Включение ведения второй базы SQLiteCMN для общей (основной) и локальной баз справочников,
; и записи их журнальных файлов и бэкапов для работы механизма синхронизации базами.
; После запуска в этом режиме, сервер справочников сделает рядом с файлом базы rk7.udb файл rk7.udb.SQLite
; и папку, в которой будет накапливать резервные копии, журнальные файлы и файл настройки фильтрации
; для передачи клиентским приложениям. Подробнее о ней см. ниже, в описании параметра OutputPath.
; По умолчанию это папка DBSync\outgoing в папке с базой данных.
; Сетевой доступ к этой папке у нас автоматически обеспечивается по протоколу WebDAV,
; для чего каждым сервером запускается свой nginx, доступ к которому автоматически прокидывается
; сквозь HTTP-интерфейс сервера. Если в ini клиентских приложений им не задан статический ReqSourceURL (см. ниже),
; хост и порт для подключения к нему клиентские приложения по умолчанию выясняют у сервера сами, подключаясь к нему по сетевому имени.
; Для проверки можно подключаться к этой папке, например, web-браузером, по URL вида https://<http host>:<http port>/rk7api/v1/dbsync/

UseDBSync = 1

; Папка, в которую будут попадать созданные файлы бакапов, журналов и файл настройки фильтрации.
; Можно не задавать, так как по умолчанию - это папка DBSync\outgoing\ рядом с файлом собственной базы данных справочников
; сервера справочников. Клиентские приложения берут из неё файлы для обновления своих баз.
; Доступ к ней они получают либо через встроенный WebDAV, либо напрямую как к папке в файловой системе, либо любым другим способом.

; OutputPath = <DataBasePath>DBSync\outgoing

; Через столько транзакций делать бэкап. По умолчанию, через каждые 1000 файлов журнала.
;
BackupOnVersionsDelta = 2000

; После накопления какого суммарного размера журнала (в процентах от размера последнего бэкапа) делать новый бэкап.
; По умолчанию, 30% - новый бэкап будет сделан, когда суммарный размер файлов журнала,
; появившихся после создания последнего бэкапа,  достигнет 30% от размера этого последнего бэкапа.
;
BackupOnJournalSizeMultiplier = 30

; После достижения какого суммарного объёма файлов журнала стирать из OutputPath самые старые из них.
; Задаётся в процентах от размера последнего сделанного бэкапа, по умолчанию 300.
; То есть, по умолчанию, файлов журнала будет храниться три размера базы.
;
BackupMaxTotalSizeMultiplier = 300

; Минимальное время хранения файлов журналов в часах
; По умолчанию журналы хранятся не менее 8 часов
;
MinSaveJournalHours = 8

; После достижения какого количества бэкапов стирать из OutputPath самые старые из них.
; По умолчанию хранится два бэкапа - последний и, на всякий случай, предыдущий
;
BackupCountLimit = 2

; Для защиты обмена файлами через http можно задать системный пароль, значение параметра должно начинаться с ":"
;
ServerLoginInfo = :<Password>

; Включение режима откладки nginx. 1 — включить. По умолчанию — 0.
;
NginxDebug = 0