====== Либо начисление бонуса, либо оплата бонусами ====== Бывают случаи, когда программа лояльности предполагает запрет на оплату бонусами в заказе, где они начисляются. Т. е. можно либо оплатить заказ или его часть бонусами, либо начислить бонусы. Такая задача решается с помощью кассового скрипта, размещаемого на форме "Редактирование заказа" и/или "Редактирование заказа (быстрый чек)". **Скрипт, полностью запрещающий оплату бонусами при наличии в заказе любой скидки** (или начисления бонусов, как частного случая скидки): 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 - это код валюты "Оплата бонусами".