Инструкция по настройке
Установка и настройка состоит из двух этапов:
- Настройка в менеджерской части
- Настройка и запуск Farcards
Конфигурация со стороны RK7:
1. Добавить на кассовом сервере PDS Interface с настройками как на скрине:
Название сервера (PDS Server Name) произвольное, главное, чтобы оно совпадало с названием в farcards.ini
Отдельно стоит обратить внимание на настройку "Pass ALL Receipts XML data", если необходимо передавать все чеки(даже без скидочной карты) в процессинг системы лояльности, то нужно выставить "Yes, if possible". Однако надо учитывать, что если на объекте проблемы с интернетом, то при закрытии чеков это может вызывать ошибку. Как временное решение в таком случае, можно изменить значение на "by script".
2. В “Сервис” - ”Интерфейсы” создать новый интерфейс и привязать ранее созданный PDS Interface в разделе «Файлы библиотек», а в разделе «Интерфейс» в поле “Xml dish attributes” указать “2560.CategPath”, подробнее на скрине:
3. В “Сервис” – “Обработка сигналов устройств” – “MCR алгоритмы” добавить новый алгоритм.
В настройках алгоритма необходимо указать область применения «Интерфейс», а в объекте указать ранее созданный интерфейс и выставить галки на типы устройств как на скрине:
В свойство скрипт скопировать убрав дефолтное значение:
begin
Result := (
( Copy( Parameter, 1, 4 ) = '0000' ) or
(( Length( Parameter ) >= 12 ) and ( Length( Parameter ) <= 13 )) or
(( Length( Parameter ) = 11 ) and
(( Copy( Parameter, 1, 1 ) = '7' ) or (Copy( Parameter, 1, 1 ) = '8' ))) or
( Length( Parameter ) = 10 ) or
( Parameter = '76543210' ) or
((Length(Parameter) >= 5) and (Length(Parameter) <= 7))
) and
(GUI.CheckFormInPayMode = false);
end;
4. В меню “Деньги” – “Скидки” создать 3 скидки. Для удобства и порядка можно создать отдельную папку под эти скидки. Для одновременной работы всех скидок необходимо в настройках каждой скидки изначально задать флаг “Комбинировать с любой скидкой”.
Первая скидка процентная для авторизации карты в заказе:
Название для скидки “Карта MB”
Галочки на “Не вручную” и "На заказ"
Детализация на 0 процентов
Вторая скидка суммовая для Бонусов.
Название “Бонусы MB”
Галочки на “Не вручную” и "На блюдо"
В настройках надо указать тип «Сумма», в детализации установить значение 100 000.
Третья скидка суммовая для работы доп. акций.
Название “Скидка MB”
Галочки на “Не вручную” и "На блюдо"
В настройках надо указать тип «Сумма», в детализации установить значение 100 000.
5. В форме редактирования заказа(обычной и для быстрого чека) нужно добавить скрипты.
Перед редактированием формы, нужно проанализировать актуальную схему и её формы на наличие возможных конфликтующих скриптов.
В самом начале обработчика событий формы нужно вставить текст скриптов и указать верные коды скидок:
// Лояльность MindBox
function MBMarkerCode : Integer;
begin
Result := 33; // Скидка для активации карты
end;
function MBBonusCode : Integer;
begin
Result := 25; // Суммовая скидка для бонусов
end;
function MBActionCode : Integer;
begin
Result := 32; // Суммовая скидка для акций
end;
function IsMBMarker(O : TObject) : Boolean;
begin
Result := False;
if SYS.ObjectInheritsFrom(O, 'TDiscountItem') then
begin
Result := TDiscountItem(O).code = MBMarkerCode;
end;
end;
function IsMBDiscount(O : TObject) : Boolean;
var
code : integer;
begin
Result := False;
if SYS.ObjectInheritsFrom(O, 'TCheckItem') then
begin
code := TCheckItem(O).Code;
Result := ( Code = MBBonusCode ) or ( Code = MBActionCode );
end;
end;
procedure CheckMBDiscounts( var HasMarker, HasOther : Boolean );
var
i, j : Integer;
it : TCheckItem;
dish : TDish;
begin
HasMarker := False;
HasOther := False;
for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do
begin
it := RKCheck.CurrentOrder.Sessions.Lines[i];
if it.state <> disDeleted then
begin
if IsMBMarker( it ) then HasMarker := True
else if SYS.ObjectInheritsFrom(it, 'TDish') then
begin
dish := TDish(it);
for j := 0 to dish.discounts.count - 1 do
if IsMBDiscount( dish.discounts.items[j] ) then
begin
HasOther := True;
Break;
end;
end;
end;
if HasMarker and HasOther then Exit;
end;
end;
procedure RemoveMBDiscounts;
var
i, j : Integer;
it : TCheckItem;
dish : TDish;
discount : TCheckItem;
begin
for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do
begin
it := RKCheck.CurrentOrder.Sessions.Lines[i];
if SYS.ObjectInheritsFrom(it,'TDish') and ( it.state <> disDeleted ) then
begin
dish := TDish(it);
j := 0;
while j < dish.discounts.count do
begin
discount := dish.discounts.items[j];
if IsMBDiscount(discount)
then RKCheck.DeleteCheckItem(discount)
else j := j + 1;
end;
end;
end;
end;
procedure CheckAndRemoveMBDiscounts;
var
HasMarker, HasOther : Boolean;
begin
CheckMBDiscounts( HasMarker, HasOther );
if not HasMarker and HasOther then RemoveMBDiscounts;
end;
// лояльность MindBox - конец кода; дальше код в обработчиках
В этой же форме(редактирование заказа и редактирование заказа для быстрого чека) в самом низу добавить данный кусок:
procedure CheckViewOnBeforeCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject; var AAllow: boolean; var AMessage: string);
var
HasMBMarker, HasMBOther, Allow : Boolean;
begin
CheckMBDiscounts( HasMBMarker, HasMBOther );
if HasMBMarker then
begin
Allow := False;
if (AEditType = etRemove) and IsMBMarker(AObjectBef) then Allow := True;
if IsMBDiscount(AObjectAft) then Allow := True;
if SYS.ObjectInheritsFrom(AObjectBef, 'TPayLine') or
SYS.ObjectInheritsFrom(AObjectAft, 'TPayLine')
then Allow := True;
if not Allow then
begin
AMessage := 'Редактирование заказа после применения карты лояльности запрещено.';
AAllow := False;
Exit;
end;
end;
end;
procedure CheckViewOnOrderVerify(Sender: TObject; AVerifyType: TVerifyType; oper: integer; var AContinue: boolean);
begin
CheckAndRemoveMBDiscounts;
end;
Настройка и запуск Farcards
Копируем дистрибутив на компьютер где располагается Midserv, предпочтительно использовать рабочий каталог софта UCS. Проверяем, что в Farcards.ini указано правильное имя для интерфейса.
Далее по пунктам:
1. Запустите конфигуратор
2. Установите пароль при первом запуске и войдите с паролем в настройки. Возможные варианты уже установленных паролей: Gfhjkm1! и 12345
3. Лицензируем экземпляр:
4. Укажите необходимые настройки в конфигураторе.
Настройки для подключения к API передает менеджер Mindbox, стандартная ссылка: https://api.mindbox.ru/v3/operations/sync
Настройки Rkeeper указываются в соответствии с кодами объектов, которые были заведены ранее.
Остальные параметры выставляем по согласованию с заказчиком.
Чуть подробнее про некоторые настройки:
"Использовать скидки на блюдо" - стандартная настройка, лучше использовать именно её, если снять галочку, то скидка будет автоматически распределяться самим r-keeper между блюд и появятся копейки при расчетах.
"Код карты для удаления расчета из заказа" - используется в случае если нужно аннулировать расчет по примененной карте в заказе.
"Автоматически удалять старые расчеты через" - указывается кол-во часов через которые будут удалены рассчитанные скидки в заказах которые не были закрыты. Используется для разблокирования зарезервированных скидок в случае, если карту добавили, но потом удалили из заказа или в целом весь заказ был аннулирован.
"Префикс для ввода mindboxId гостя" - используется при вводе короткого id по схеме префикс+id.
"Диапазон номеров карт" - получается со стороны Mindbox. Длина не может быть менее 12 символов, чтобы не пересекаться с номерами телефонов. Без четкого понимания, что вы делаете, не стоит менять значения по умолчанию.
"Префикс для передачи mindboxId заказа от FastOperator" - этот префикс используется для заказов переданных из системы доставки FastOperator. Выставляется значение автоматически при первом сохранении, менять не рекомендуется.
Логирование по умолчанию используется только для фиксации ошибок.
При возникновении проблем можно воспользоваться расширенным логированием XML, JSON и трафика HTTP. Рекомендую всегда сразу включать все логи.
5. После настройки конфигуратора необходимо установить Farcards службой используя ключ /install и запустить приложение с ключом /desktop для проверки, что ПО корректно запустилось. Для упрощения в дистрибутиве есть батники выполняющие эти действия без необходимости создавать ярлыки.
No Comments