external:pro_bonus:98_dop:25_zapret_oplaty_bonusom

Либо начисление бонуса, либо оплата бонусами

Бывают случаи, когда программа лояльности предполагает запрет на оплату бонусами в заказе, где они начисляются. Т. е. можно либо оплатить заказ или его часть бонусами, либо начислить бонусы.

Такая задача решается с помощью кассового скрипта, размещаемого на форме «Редактирование заказа» и/или «Редактирование заказа (быстрый чек)».

Скрипт, полностью запрещающий оплату бонусами при наличии в заказе любой скидки (или начисления бонусов, как частного случая скидки):

procedure CheckViewOnBeforeCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject; var AAllow: boolean; var AMessage: string);
var i, currCode:integer;
discPresent:boolean;
it: TCheckItem;
begin
discPresent := false; 
currCode := 96; 
for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do
begin
it := RKCheck.CurrentOrder.Sessions.Lines[i];
if SYS.ObjectInheritsFrom(it, 'TDiscountItem') then
if TDiscountItem(it).CalcAmount<>0 then
discPresent := true;
end;

if SYS.ObjectInheritsFrom(AObjectAft, 'TPayLine') then
        if ((TPayLine(AObjectAft).code=currCode) and discPresent) then  
        begin    
          AAllow := false;
          AMessage := 'Для оплаты бонусами удалите скидки из заказа';
        end; 
end;

в данном примере 96 - это код валюты «Оплата бонусами».

  • external/pro_bonus/98_dop/25_zapret_oplaty_bonusom.txt
  • Последнее изменение: 2024/01/30 08:53
  • Алексей Коробов