Это старая версия документа!
Разный процент оплаты для разных счетов
Бывает ситуация, когда часть счетов должна иметь ограничения на оплату бонусами, а часть - не должна.
При этом стандартная настройка подразумевает, что в r_keeper всего одна валюта для оплаты бонусами и у неё задаётся процент.
Сделать две отдельные валюты и две отдельные скидки - для гостей и для персонала.
В интерфейсе ProBonus для групп счетов гостей и персонала в поле «Шаблон для API» указать созданные скидки
В скрипт вписать коды скидок и валют соответственно.
Скрипт на форму редактирования заказа:
//ищет скидку бонусной карты
function FindBonusDiscount(DiscCode :integer) :boolean;
var
i :integer;
it: TCheckItem;
begin
result := false;
for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do
begin
it := RKCheck.CurrentOrder.Sessions.Lines[i];
if SYS.ObjectInheritsFrom(TObject(it), 'TDiscountItem') then
begin
//Если дана картой ПДС и неудаленная
if (TDiscountItem(it).State <> disDeleted) then //если активна
//if (TDiscountItem(it).ChargeSource = chsInterface) then //если Добавлена интерфейсом
begin
dbg.dbgprint('найдена бонусная скидка ' + TDiscountItem(it).Name + ' код скидки ' + IntToStr(TDiscountItem(it).Code) + ' элемент № ' + IntToStr(TDiscountItem(it).Number));
if (TDiscountItem(it).Code = DiscCode) then
result := true;
end;
end;
end;
if result then dbg.dbgprint('FindBonusDiscount true ' + IntToStr(DiscCode));
if result then dbg.dbgprint('FindBonusDiscount false ' + IntToStr(DiscCode));
end;
//фильтр пдс-оплат: для каждого интерфейса только последняя примененная в заказе карта и только одной валютой
procedure MainSelectorOnSuitableObjectScript(Sender: TBasePanel; Obj: TObject; var Suitable: boolean);
begin
if GUI.CheckFormInPayMode then // если сейчас режим оплаты
if Suitable then //если валюта доступна
//Персонализированные уже авторизованные валюты
if (SYS.ObjectInheritsFrom(Obj, 'TMcrPay') OR SYS.ObjectInheritsFrom(Obj, 'TMcrCoupon')) then
begin
dbg.dbgprint('TMcrPay(Obj).Code ' + IntToStr(TMcrPay(Obj).Code) + ' ' + TMcrPay(Obj).Name);
if TMcrPay(Obj).Code = 101 then Suitable := FindBonusDiscount(26); //валюта с кодом 101 только если есть скидка с кодом 26
if TMcrPay(Obj).Code = 102 then Suitable := FindBonusDiscount(25); //валюта 102 только если есть скидка 25
end;
//Неперсонализированные валюты
if SYS.ObjectInheritsFrom(Obj, 'TCurrency') then
begin
dbg.dbgprint('TCurrency(Obj).Code ' + IntToStr(TCurrency(Obj).Code) + ' ' + TCurrency(Obj).Name);
if TCurrency(Obj).Code = 101 then Suitable := FindBonusDiscount(26); //валюта 101 только если есть скидка 26
if TCurrency(Obj).Code = 102 then Suitable := FindBonusDiscount(25); //валюта 102 только если есть скидка 25
end;
end;
Добавить страницу в книгу
Удалить страницу из книги
Показать или изменить шаблон книги (
Помощь