R-Keeper

Офлайн инструкция в PDF:  ссылка Инструкция по настройке интеграции R-keeper с Advantshop.

Содержание

Содержание
    Настройка PDS интерфейса
    Настройка валюты
    Настройка скидки
    Настройка MCR алгоритма
    Настройка Farcards
    Настройка сервиса интеграции RestoCRM
    Настройка мобильного официанта
    Настройка макета пречека
    Настройка макета купона
    Расширенные свойства
    Повторная авторизация на кассе
    Проверка лояльности перед пречеком и оплатой
    Настройка страницы с анкетой гостя
    Отключение настроек предыдущей интеграции Maxma
    Удаление PDS интерфейса
    Отключение валюту оплаты бонусами
    Отключение купона
    Отключение функциональной клавиши
    Отключение MCR алгоритма
    Тестирование

1. Настройка PDS интерфейса

Добавить драйвер PDS интерфейса на кассовом сервере.
Настроить логический интерфейс PDS интерфейса в Сервис > Интерфейсы.
После выполнения настроек необходимо перезапустить кассовый сервер.

2. Настройка валюты

Настроить валюту для оплаты бонусами как Фискальная скидка .
Обращаем внимание:
  • Тип Фискальная скидка превращает оплату в скидку только для фискального регистратора, а на чеке r_keeper печатается оплата.
  • Источник  https://docs.rkeeper.ru/rk7/latest/ru/svojstva-tipa-valyuty-55973203.html 
Валютой можно будет оплатить заказ. Сумма доступных к списанию бонусов будет отображаться в окне информации о клиенте и при добавлении валюты к заказу.
Информация о бонусах в окне Информация о клиенте:
Информация о бонусах при оплате:
Оплату бонусами можно внести предоплатой:
После оплаты заказа бонусы будут списаны со счета клиента.

3. Настройка скидки

Создать изменяемую скидку с типом Процент и детализацией с процентом 100%.
Скидка будет добавляться к каждому заказу после применения лояльности. Сумма скидки рассчитывается автоматически в соответствии с настройками в ЛК Maxma. Если лояльность не настроена, то скидка будет добавлена с нулевой суммой.
4. Настройка MCR алгоритма
Создать MCR алгоритм и привязать его к PDS интерфейсу.
Скрипт для MCR алгоритма:
Title
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 алгоритм.

5. Настройка Farcards

Установить  https://www.microsoft.com/ru-ru/download/details.aspx?id=53840  - версию vc_redist.x86.exe.
Запустить farcards.exe /install через командную строку, чтобы установить 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

6. Настройка сервиса интеграции RestoCRM

Если используется x32 операционная система:
● Установить  https://www.microsoft.com/ru-ru/download/details.aspx?id=48145  - версию vc_redist.x86.exe.

● Обновить

Установить службу RestoCRM с помощью сервиса nssm.exe  https://nssm.cc/download . Служба устанавливается там же, где устанавливается служба Farcards. Для этого необходимо:
    Скопировать nssm.exe в папку где находится сервис restocrm.exe.
    Запустить nssm.exe install через командную строку, откроется GUI, в котором указать путь к файлу restocrm.exe и нажать кнопку “Install service”.
Настроить конфигурационный файл config.ini. Файл config.ini расположен в папке, где находится исполняемый файл restocrm.exe.
Все параметры можно оставить без изменений, кроме выделенных жирным шрифтом. Все значения параметров Вы должны были получить в процессе выполнения текущей инструкции.
Пример config.ini
[TELEGRAM]
# Токен бота телеграм, куда отправить сообщения в случае ошибки работы
Title
интеграции
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
ProcessingKey = "8886c84e-8788-4e41-97ed-f11149c1973f"
# Не обязательный параметр для изменения, можно оставить - 2 RPS = 2
# Не обязательный параметр для изменения, можно оставить - 6000 - в миллисекундах
Timeout = 7000
# Включить максимальное логирование
# Допустимые значения: true, false
Debug = true
# ShopCode и ShopName используется при создании заказа
ShopCode = "799"
ShopName = "rkeeper-test"
# Код скидки в rkeeper, используемый для добавления к заказу DiscountCode = 2
# Бонусы в наименовании скидки
BonusInFio = true
# Код валюты для оплаты бонусами
BonusCode = 10
# Purchase отправлять с максимальным расчетом бонусов к списанию AutoBonus =false
# Код PDS интерфейса
InterfaceCode = 7
# PrettyLog
PrettyLog = true
[RK7MID]
# строка подключения для кассового сервера
# используется для синхронизации заказов
# пользователь для доступа к HTTP кассового сервера User = 2
# пароль для доступа к HTTP кассового сервера Pass = 2
# количество секунд, через которое повторно отправить запрос, в случае ошибки
блокировки заказа
# 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"
Запустить установленую службу.


7. Настройка макета пречека

Для печати информации о лояльности в пречеке , необходимо использовать макет пречека, который находится в папке с дистрибутивом - файл Пречек Maxma.mak . Макет добавить в справочники Документы и Макеты и Схемы печати .
Пример печати пречека

8. Настройка макета купона

Для печати информации о лояльности в чеке , необходимо добавить купон, который находится в папке с дистрибутивом - файл Купон СБП QR-код + Maxma.mak . Макет добавить в справочники Документы и Макеты и Схемы печати . Предустановленный купон с наименованием СБП QR-код в Схемах печати можно удалить или сделать неактивным.
Купон будет печататься после чека. Пример печати нефискального чека с купоном:

9. Расширенные свойства

Открыть Настройка - Настройка - Расширенные свойства - Свойства заказа и создать расширенное свойство с параметрами:
  • Название: Информация из лояльности
  • Системное имя: LoyaltyInfo
  • Название: IP address
  • Системное имя: ipaddress
В список типов добавить Кассовый сервер
Сохранить и перезапустить Сервер справочников, Кассовый сервер и Менеджерскую RK7.
В свойствах кассового сервера указать IP адрес сервиса RestoCRM с портом. Например: 192.168.1.111:8001. Значение порта 8001 использовать из config.ini - параметр PORTRK .
Для информации:
По данному IP адресу касса будет подключаться к сервису RestoCRM и выполнять проверки перед печатью пречека и оплатой.

10. Повторная авторизация на кассе

Открыть Сервис - Скрипты и добавить скрипт с наименованием Повторная авторизация.
Обязательно в скрипте указать значение параметра discCode - это код скидки Система лояльности , созданной ранее в текущей инструкции.
Код скрипта - параметр SomeScript:
Title
procedure ProcessOperation1000100(Parameter: integer); var i, discCode: integer; it: TCheckItem;
CardCode, AMessage: string;
McrPay: TMcrPay; begin
discCode := 2; // Код скидки: должен совпадать с config.ini > [MAXMA] >
DiscountCode 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;
Открыть Сервис - Операции - Пользовательские операции - Выбрать
Пользовательская операция 11, переименовать название операции на Повторная авторизация и указать в параметре Скрипт скрипт Повторная авторизация из предыдущего действия.
Обращаем внимание:
● Если Пользовательская операция 11 занята, то можно использовать любую свободную Пользовательскую операцию от 01 до 20, кроме Пользовательская операция 12.
Открыть Настройки - Графический интерфейс - Функциональные клавиши -
Прочее , создать функциональную клавишу и указать в параметрах Операция/Операция пуст операцию Повторная авторизация , созданную в предыдущем действии.
Открыть Настройки - Графический интерфейс - Селекторы - Заказ - Селектор операций, сделать копии селекторов Быстрый чек: операции и Чек: операции
Добавить функциональную клавишу Повторная авторизация в Кнопки селектора -
Доп .
Открыть Настройки - Графический интерфейс - Использования селекторов и добавить созданные селекторы в фильтры ресторана.
Отображение на кассе после нажатии кнопки Доп :

11. Проверка лояльности перед пречеком и оплатой

Открыть Сервис - Скрипты и добавить скрипт с наименованием Проверка перед пречеком и оплатой.
Обязательно параметры: discCode - код скидки Система лояльности , см. раздел Настройка скидки.
Код скрипта - параметр SomeScript:
Title
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
// обязательно заполнить
discCode := 2; // Код скидки: использовать из config.ini > [MAXMA] > DiscountCode
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;
Открыть Сервис - Операции - Пользовательские операции - Выбрать Пользовательская операция 12, переименовать название операции на Проверка перед пречеком и оплатой и указать в параметре Скрипт скрипт Проверка перед пречеком и оплатой из предыдущего действия.
Обращаем внимание:
  • Имя операции обязательно должно быть rkoUser12 . Если данное условие не удается выполнить, то обратитесь в ТП RestoCRM.
Открыть Настройки - Графический интерфейс - Формы - Заказ - Редактирование заказа/ Редактирование заказа (быстрый чек) и скопировать предустановленные экземпляры форм.
Новые формы загрузить из файлов форм, которые находятся в папке с дистрибутивом:
  • файл Редактор заказа.dfm
  • файл Редактор заказа (быстрый чек).dfm
Открыть Настройки - Графический интерфейс - Схемы форм и скопировать предустановленную форму Новый дизайн
Открыть свойства новой схемы форм и указать новые формы Редактирование заказа и Редактирование заказа (быстрый чек)
Открыть Настройки - Графический интерфейс - Использование схем форм и добавить новую схему форм в использование.
Обращаем внимание:
  • Для применения новой схемы форм может потребоваться перезапуск кассы.
Перед печатью пречека или перед оплатой на кассе будет выполняться проверка, что чек изменился после последнего применения лояльности к заказу.
Если нажать Да, то повторно применится лояльность к заказу. Сумма скидки и бонусов, доступных к списанию обновятся в соответствии с актуальным заказом. Если нажать Нет, то ничего не произойдет и окно закроется.

12. Настройка страницы с анкетой гостя

Перейдите в справочник настроек Настройки > Параметры. В навигационном дереве в левой части окна перейдите по пунктам Установочные > Связь с другими системами > Сервисы. Выберите один из четырех доступных сервисов (убедитесь, что выбранный Вами сервис не используется другим ПО) и заполните для него два параметра:
● Имя web-сервиса (будет отображено на кассе): Регистрация гостя в ПЛ ● URL web-сервиса:
 https://my.maxma.com/minipos/?shop=  КОД_МАГАЗИНА &key= СЕКРЕТНЫЙ_КЛЮЧ
Для каждой точки должен быть уникальный URL, в котором КОД_МАГАЗИНА совпадает с кодом ShopCode из config.ini, а СЕКРЕТНЫЙ_КЛЮЧ совпадает с ключом ProcessingKey из config.ini.
Пример config.ini можно посмотреть в пункте 6.Настройка сервиса интеграции RestoCRM .
Данные поля доступны для редактирования только под дилерской учетной записью.
После заполнения этих параметров в главном меню кассы отобразится новая кнопка, с подписью, соответствующей введенному имени веб-сервиса.
13. Отключение настроек предыдущей интеграции Maxma
Актуально клиентам, которые выполняли настройки в рамках статьи  https://help.maxma.com/p/VAQjRaFTxsMi0l/R-keeper .
    Удаление PDS интерфейса
В Сервис > Станции и Устройства на кассовом сервере удалить драйвер PDS интерфейса. Значение параметра должно быть PDS Server Name = CLFC .
После удаления обязательно сохранить настройки и перезагрузить кассовый сервер.
    Отключение валюту оплаты бонусами
Перевести в статус Неактивен валюту привязанную к интерфейсу CloudLoyalty .
    Отключение купона
Открыть Настройки > Печать > Документы и Макеты > Документы CRM > Купон > Найти макет с названием Купон доп.инфо printtext и открыть Ссылающиеся элементы.
Сменить статус всех купонов на Неактивен и сохранить.
    Отключение функциональной клавиши
Открыть Сервис > Операции > Пользовательские операции > Найти объект с названием CL Повторная Авторизация и открыть Ссылающиеся элементы.
Сменить статус всех функциональных клавиш на Неактивен и сохранить.
    Отключение MCR алгоритма
Открыть Сервис > Обработка сигналов устройств > MCR алгоритмы > Найти объект с названием CloudLoyalty или где параметр Объект = CloudLoyalty , сменить статус на Неактивен и сохранить.
14. Тестирование
Title
Title
Title
Title
Title
Title
Действие
Ожидаемый результат
Статус
Закрыть заказ из зала без лояльности
Заказ сохранен в ЛК Maxma
Требуется доработка
Закрыть заказ из зала с лояльностью без оплаты бонусами
Заказ сохранен в ЛК Maxma
Закрыть заказ из зала с лояльностью с оплатой бонусами
Заказ сохранен в ЛК Maxma
Закрыть быстрый чек без лояльности
Заказ сохранен в ЛК Maxma
Требуется доработка
Закрыть быстрый чек с лояльностью без оплаты бонусами
Заказ сохранен в ЛК Maxma
Закрыть быстрый чек с лояльностью с оплатой
Заказ сохранен в ЛК Maxma
Title
Title
Title
Title
Title
Title
бонусами
Кнопка повторная авторизация в заказе из зала
Открывается окно с авторизацией клиента
Кнопка повторная авторизация в быстром чеке
Открывается окно с авторизацией клиента
Проверка изменений чека после применения лояльность перед пречеком в заказе из зала
Открывается диалоговое окно на кассе с сообщением, что требуется повторно применить авторизацию
Проверка изменений чека после применения лояльность перед оплатой в быстром чеке
Открывается диалоговое окно на кассе с сообщением, что требуется повторно применить авторизацию
Применить промокод с телефона/карты
Промокод применяется к заказу
Требуется тестирование
Применить промокод без номера телефона/карты
Промокод применяется к заказу
Требуется доработка
Добавить драйвер PDS интерфейса на кассовом сервере.