Офлайн инструкция в PDF: ссылка Инструкция по настройке интеграции R-keeper с Advantshop. Содержание
Настройка PDS интерфейса
Настройка валюты
Настройка скидки
Настройка MCR алгоритма
Настройка Farcards
Настройка сервиса интеграции RestoCRM
Настройка мобильного официанта
Настройка макета пречека
Настройка макета купона
Расширенные свойства
Повторная авторизация на кассе
Проверка лояльности перед пречеком и оплатой
Настройка страницы с анкетой гостя
Отключение настроек предыдущей интеграции Maxma
Удаление PDS интерфейса
Отключение валюту оплаты бонусами
Отключение купона
Отключение функциональной клавиши
Отключение MCR алгоритма
Тестирование
Добавить драйвер PDS интерфейса на кассовом сервере.
Настроить логический интерфейс PDS интерфейса в Сервис > Интерфейсы.
После выполнения настроек необходимо перезапустить кассовый сервер.
Настроить валюту для оплаты бонусами как .
Валютой можно будет оплатить заказ. Сумма доступных к списанию бонусов будет отображаться в окне информации о клиенте и при добавлении валюты к заказу.
Информация о бонусах в окне Информация о клиенте:
Информация о бонусах при оплате:
Оплату бонусами можно внести предоплатой:
После оплаты заказа бонусы будут списаны со счета клиента.
Создать изменяемую скидку с типом Процент и детализацией с процентом 100%.
Скидка будет добавляться к каждому заказу после применения лояльности. Сумма скидки рассчитывается автоматически в соответствии с настройками в ЛК Maxma. Если лояльность не настроена, то скидка будет добавлена с нулевой суммой.
Создать MCR алгоритм и привязать его к PDS интерфейсу.
Скрипт для MCR алгоритма:
function MCR1002755(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean; begin
if ((length(Parameter)=13) or //используется для поиска 13ти значного кода карты
(length(Parameter)=5) or //используется для поиска 5ти значного кода карты
( length(Parameter)=6) or //используется для поиска 6ти значного кода карты
(length(Parameter)=11)) //используется для поиска номера телефона then
Result := True; end;
- Длина кода карты может отличаться в зависимости от настроек Maxma. Чтобы MCR алгоритм отрабатывал корректно, его следует поправить.
- Настройки MCR алгоритма не должны пересекаться с настройками других MCR алгоритмов, чтобы при вводе номера телефона, кода карты или сканирования QR с помощью Мобильного официанта отрабатывал только один MCR алгоритм.
Запустить через командную строку, чтобы установить Farcards как службу Windows.
Конфигурационные файлы можно не изменять и оставить дефолтные из дистрибутива.
Пример farcards.ini
[ FarServer]
Type = 1
DLL = restocrm.dll
Gate = 1
XMLCP=1251
[ LinkDLL]
1 = pds_netk
[ pds_netk]
NetServerName=RestoCRM ininame=netk.ini DebugMessages=1
Пример config.ini
Запустить службу Farcards
Если используется x32 операционная система:
Установить службу RestoCRM с помощью сервиса nssm.exe https://nssm.cc/download . Служба устанавливается там же, где устанавливается служба Farcards. Для этого необходимо: Скопировать nssm.exe в папку где находится сервис restocrm.exe.
Запустить через командную строку, откроется GUI, в котором указать путь к файлу restocrm.exe и нажать кнопку “Install service”.
Настроить конфигурационный файл config.ini. Файл config.ini расположен в папке, где находится исполняемый файл restocrm.exe.
Все параметры можно оставить без изменений, кроме выделенных шрифтом. Все значения параметров Вы должны были получить в процессе выполнения текущей инструкции.
Пример config.ini
[TELEGRAM]
# Токен бота телеграм, куда отправить сообщения в случае ошибки работы
интеграции
BotToken = ""
# Включить максимальное логирование
# Допустимые значения: true, false
Debug = true
[ SERVICE]
# Порт для подключения farcards
PORTFC = 8000
# Порт для подключения rkeeper
PORTRK = 8001
# Включить максимальное логирование
# Допустимые значения: true, false
Debug = true
# Скрывать данные авторизации из логов
HideAuthInLog = true
# Отправлять заказы сохраненные в режиме offline
OfflineMode = true
# Периодичность отправки заказа сохраненного в offline в секундах SendOfflineTimeout = 500
[ MAXMA]
#ProcessingKey
# Не обязательный параметр для изменения, можно оставить - 2 RPS = 2
# Не обязательный параметр для изменения, можно оставить - 6000 - в миллисекундах
Timeout = 7000
# Включить максимальное логирование
# Допустимые значения: true, false
Debug = true
# ShopCode и ShopName используется при создании заказа
# Код скидки в rkeeper, используемый для добавления к заказу
# Бонусы в наименовании скидки
BonusInFio = true
# Код валюты для оплаты бонусами
# Purchase отправлять с максимальным расчетом бонусов к списанию AutoBonus =false
# Код PDS интерфейса
# PrettyLog
PrettyLog = true
[RK7MID]
# строка подключения для кассового сервера
# используется для синхронизации заказов
# пользователь для доступа к HTTP кассового сервера
# пароль для доступа к HTTP кассового сервера
# количество секунд, через которое повторно отправить запрос, в случае ошибки
блокировки заказа
# UpdateOrder - иногда возникает ошибка Не получается заблокировать. Заказ заблокирован другим ключом блокировки (станция RK7CASH001, оператор 7). # Причина: заказ не успел разблокироваться, нужно подождать несколько секунд, чтобы попробовать снова отправить запрос
# 5 - рекомендуемое значение
TimeoutError = 5
# Включить максимальное логирование
# Допустимые значения: true, false
Debug = false
# Таймаут запроса
Timeout = 5
# Информация из лояльности в пречеке печатается в расширенном свойстве, вместо документа Купон
PrecheckLoyaltyInfoInExtraField = true
# PrettyLog
PrettyLog = false
# Фильтрова Body запросов CMD в RK7 API
# Пример: FilterRequestLog = "GetOrder,GetRefData"
FilterRequestLog = "GetOrder,GetRefData"
Запустить установленую службу.
Для печати информации о лояльности в , необходимо использовать макет пречека, который находится в папке с дистрибутивом - файл . Макет добавить в справочники и .
Пример печати пречека
Для печати информации о лояльности в , необходимо добавить купон, который находится в папке с дистрибутивом - файл . Макет добавить в справочники и . Предустановленный купон с наименованием в можно удалить или сделать неактивным.
Купон будет печататься после чека. Пример печати нефискального чека с купоном:
Открыть и создать расширенное свойство с параметрами:
- Информация из лояльности
- LoyaltyInfo
В список типов добавить Кассовый сервер
Сохранить и перезапустить Сервер справочников, Кассовый сервер и Менеджерскую RK7.
В свойствах кассового сервера указать IP адрес сервиса RestoCRM с портом. Например: 192.168.1.111:8001. Значение порта 8001 использовать из config.ini - параметр .
По данному IP адресу касса будет подключаться к сервису RestoCRM и выполнять проверки перед печатью пречека и оплатой.
Открыть и добавить скрипт с наименованием
в скрипте указать значение параметра - это код скидки , созданной ранее в текущей инструкции.
Код скрипта - параметр SomeScript:
procedure ProcessOperation1000100(Parameter: integer); var i, discCode: integer; it: TCheckItem;
CardCode, AMessage: string;
McrPay: TMcrPay; begin
if TObject(RKCheck.CurrentOrder) = Nil then Exit;
CardCode := ''; for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do
begin it := RKCheck.CurrentOrder.Sessions.Lines[i]; if SYS.ObjectInheritsFrom(it, 'TDiscountItem') then
if (it.code = discCode) and (TDiscountItem(it).State <> disDeleted) then CardCode :=
TDiscountItem(it).CardCode; end if CardCode <> '' then RK7.PerformMcrAlgorith(CardCode, 0);
end;
Открыть
переименовать название операции на и указать в параметре скрипт из предыдущего действия.
● Если занята, то можно использовать любую свободную Пользовательскую операцию от 01 до 20, кроме
Открыть
, создать функциональную клавишу и указать в параметрах операцию , созданную в предыдущем действии.
Открыть сделать копии селекторов и
Добавить функциональную клавишу в
.
Открыть и добавить созданные селекторы в фильтры ресторана.
Отображение на кассе после нажатии кнопки :
Открыть и добавить скрипт с наименованием
Обязательно параметры: - код скидки , см. раздел Настройка скидки.
Код скрипта - параметр SomeScript:
procedure ProcessOperation1000122(Parameter: integer); var
Props: TVisitOrderInfo;
LoyaltyInfo: string; ErrorCode: integer; i: integer; it: TCheckItem;
CardCode, AMessage: string;
URL: string;
CardInfo: TRKCardInfo; json, ipaddress: string; m, discCode:integer;
begin
// обязательно заполнить
if TObject(RKCheck.CurrentOrder) = Nil then Exit; CardCode := ''; for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do
begin
it := RKCheck.CurrentOrder.Sessions.Lines[i]; if SYS.ObjectInheritsFrom(it, 'TDiscountItem') then
if (it.code = discCode) and (TDiscountItem(it).State <> disDeleted) then CardCode :=
TDiscountItem(it).CardCode; end
if CardCode <> '' then
begin
Http.Charset := 'utf-8';
Http.ContentType := 'application/json';
Http.ClearHeaders;
Http.AddHeader('Accept-Language', 'ru');
Http.ConnectTimeout := 2500;
json := '{';
json := json + '"PriceListSum":"' + floattostr(RKCheck.CurrentOrder.PriceListSum) + '",'; //
Сумма по прайс-листу (без скидок-наценок и добавляемых налогов) json := json + '"ToPaySum":"' + floattostr(RKCheck.CurrentOrder.ToPaySum) + '",'; // Сумма
заказа с учетом скидок (не уменьшается при оплате) json := json + '"PaidSum":"' + floattostr(RKCheck.CurrentOrder.PaidSum) + '",'; //
Оплаченная сумма
json := json + '"UnpaidSum":"' + floattostr(RKCheck.CurrentOrder.UnpaidSum) + '",'; //
Сумма которую нужно доплатить для полной оплаты заказа
json := json + '"DiscountSum":"' + floattostr(RKCheck.CurrentOrder.DiscountSum) + '",'; //
Сумма скидок/наценок
json := json + '"CardCode":"' + CardCode + '",';
json := json + '"Visit":' + inttostr(RKCheck.CurrentOrder.UVN); json := json + '}';
if RK7.CashGroup.genipaddress = '' then URL := ' https://127.0.0.1:8001 ' else URL := 'https://' + RK7.CashGroup.genipaddress; ErrorCode := Http.Post (URL+'/GetLoyaltyInfoWithCheckOrder', json, LoyaltyInfo); if ErrorCode <> 200 then begin AMessage := 'Ошибка: ' + IntToStr(ErrorCode) + #13#10 +
Utf8ToAnsi(Http.GetLastError); Gui.ShowMessage(AMessage);
end;
if (LoyaltyInfo = 'need check') then begin
m:= Gui.MessageDlgEx('Чек изменился, необходимо повторно применить лояльность.'+#13+#10+'Выполнить?', mtInformation, mbYes+mbNo, 'Да;Нет');
if m=ID_Yes then RK7.PerformMcrAlgorith(CardCode, 0); if m=ID_No then Exit;
end
else begin
Props := TVisitOrderInfo.Create();
Props.CustomProps.Values['LoyaltyInfo'] := LoyaltyInfo;
RKCheck.UpdateOrderProps(Props); end; end; end;
Открыть переименовать название операции на и указать в параметре скрипт из предыдущего действия.
- Имя операции обязательно должно быть . Если данное условие не удается выполнить, то обратитесь в ТП RestoCRM.
Открыть и скопировать предустановленные экземпляры форм.
Новые формы загрузить из файлов форм, которые находятся в папке с дистрибутивом:
Открыть и скопировать предустановленную форму Новый дизайн
Открыть свойства новой схемы форм и указать новые формы и
Открыть и добавить новую схему форм в использование.
- Для применения новой схемы форм может потребоваться перезапуск кассы.
Перед печатью пречека или перед оплатой на кассе будет выполняться проверка, что чек изменился после последнего применения лояльности к заказу.
Если нажать Да, то повторно применится лояльность к заказу. Сумма скидки и бонусов, доступных к списанию обновятся в соответствии с актуальным заказом. Если нажать Нет, то ничего не произойдет и окно закроется.
Перейдите в справочник настроек Настройки > Параметры. В навигационном дереве в левой части окна перейдите по пунктам Установочные > Связь с другими системами > Сервисы. Выберите один из четырех доступных сервисов (убедитесь, что выбранный Вами сервис не используется другим ПО) и заполните для него два параметра:
● Имя web-сервиса (будет отображено на кассе): ● URL web-сервиса:
Для каждой точки должен быть уникальный URL, в котором совпадает с кодом из config.ini, а совпадает с ключом из config.ini.
Пример config.ini можно посмотреть в пункте .
Данные поля доступны для редактирования только под дилерской учетной записью.
После заполнения этих параметров в главном меню кассы отобразится новая кнопка, с подписью, соответствующей введенному имени веб-сервиса.
Удаление PDS интерфейса
В Сервис > Станции и Устройства на кассовом сервере удалить драйвер PDS интерфейса. Значение параметра должно быть .
После удаления обязательно сохранить настройки и перезагрузить кассовый сервер.
Отключение валюту оплаты бонусами
Перевести в статус валюту привязанную к интерфейсу .
Отключение купона
Открыть Настройки > Печать > Документы и Макеты > Документы CRM > Купон > Найти макет с названием и открыть Ссылающиеся элементы.
Сменить статус всех купонов на и сохранить.
Отключение функциональной клавиши
Открыть Сервис > Операции > Пользовательские операции > Найти объект с названием и открыть Ссылающиеся элементы.
Сменить статус всех функциональных клавиш на и сохранить.
Отключение MCR алгоритма
Открыть Сервис > Обработка сигналов устройств > MCR алгоритмы > Найти объект с названием или где параметр , сменить статус на и сохранить.
Закрыть заказ из зала без лояльности
Заказ сохранен в ЛК Maxma
Закрыть заказ из зала с лояльностью без оплаты бонусами
Заказ сохранен в ЛК Maxma
Закрыть заказ из зала с лояльностью с оплатой бонусами
Заказ сохранен в ЛК Maxma
Закрыть быстрый чек без лояльности
Заказ сохранен в ЛК Maxma
Закрыть быстрый чек с лояльностью без оплаты бонусами
Заказ сохранен в ЛК Maxma
Закрыть быстрый чек с лояльностью с оплатой
Заказ сохранен в ЛК Maxma
Кнопка повторная авторизация в заказе из зала
Открывается окно с авторизацией клиента
Кнопка повторная авторизация в быстром чеке
Открывается окно с авторизацией клиента
Проверка изменений чека после применения лояльность перед пречеком в заказе из зала
Открывается диалоговое окно на кассе с сообщением, что требуется повторно применить авторизацию
Проверка изменений чека после применения лояльность перед оплатой в быстром чеке
Открывается диалоговое окно на кассе с сообщением, что требуется повторно применить авторизацию
Применить промокод с телефона/карты
Промокод применяется к заказу
Применить промокод без номера телефона/карты
Промокод применяется к заказу
Добавить драйвер PDS интерфейса на кассовом сервере.