Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
external:pro_bonus:98_dop:25_zapret_oplaty_bonusom [2024/01/30 08:50] – Алексей Коробов | external:pro_bonus:98_dop:25_zapret_oplaty_bonusom [2025/02/05 17:44] (текущий) – Александр Ильин | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Либо начисление бонуса, | ====== Либо начисление бонуса, | ||
- | Бывают случаи, | + | Бывают случаи, |
- | Такая задача решается с помощью кассового скрипта, | ||
- | Скрипт, полностью запрещающий оплату бонусами | + | Такая задача |
+ | Скрипт работает как для расчёта по местам, так | ||
+ | При нажатии на кнопку "оплата" | ||
+ | {{: | ||
+ | В зависимости от ответа либо блокируется для оплаты валюта " | ||
+ | Скрипт вставляем в верхнюю часть обработчика (важна последовательность). | ||
+ | Внутри скрипта нужно поменять код валюты оплаты бонусами и код | ||
< | < | ||
- | procedure CheckViewOnBeforeCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject; var AAllow: boolean; var AMessage: string); | + | |
- | var i, currCode:integer; | + | function DiscPres(DiscCode: integer; seatN:string):string; |
- | discPresent:boolean; | + | var |
- | it: TCheckItem; | + | j,i: integer; |
+ | it: tCheckitem; | ||
+ | aga:string; | ||
begin | begin | ||
- | discPresent | + | aga:='' |
- | currCode := 96; | + | for j := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do |
- | for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do | + | begin |
+ | it := RKCheck.CurrentOrder.Sessions.Lines[j]; | ||
+ | if SYS.ObjectInheritsFrom(TObject(it), | ||
+ | if (TDiscountitem(it).state=disdeleted) and (TDiscountitem(it).code=discCode) and(TDiscountItem(it).SeatName=seatN) | ||
+ | end; | ||
+ | result: | ||
+ | end; | ||
+ | procedure DesignFormOnOperation(Sender: | ||
+ | var | ||
+ | k, | ||
+ | CheckView: TCheckView; | ||
+ | it,CurItem: TCheckItem; | ||
+ | d: | ||
+ | isDisk: | ||
+ | sl: TStringList; | ||
begin | begin | ||
- | it := RKCheck.CurrentOrder.Sessions.Lines[i]; | + | diskcode: |
- | if SYS.ObjectInheritsFrom(it, | + | dbg.dbgprint(inttostr(operation)); |
- | if TDiscountItem(it).CalcAmount<>0 then | + | SL:= TStringList.Create; |
- | discPresent | + | if (((operation = rkoCalcOrder) or (operation = rkoBalanceReceipt)or (operation = rkoCalcBySeats)) and(RKCheck.CurrentOrder.BillExists=false)) or (operation = rkoPrintBill) or (operation = rkoPrintSeatBills) then |
+ | begin | ||
+ | CheckView := TCheckView(GUI.FindComponentByName(' | ||
+ | for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do | ||
+ | begin | ||
+ | | ||
+ | if SYS.ObjectInheritsFrom(it, | ||
+ | if (TDiscountItem(it).code= diskcode) and (TDiscountItem(it).state<>disdeleted) | ||
+ | | ||
+ | isDisk:=true; | ||
+ | SL.AddObject(FormatFloat(' | ||
+ | end; | ||
+ | end; | ||
+ | |||
+ | if isdisk then | ||
+ | | ||
+ | for i:= 0 to SL.Count - 1 do | ||
+ | begin | ||
+ | |||
+ | d:= TDiscountitem(SL.Objects[i]); | ||
+ | k: | ||
+ | if k= id_YES then | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | end; | ||
+ | | ||
+ | | ||
+ | end; | ||
end; | end; | ||
- | if SYS.ObjectInheritsFrom(AObjectAft, ' | + | procedure MainSelectorAfterConnectObjectScript(Obj: TObject; Button: TGCustomButton); |
- | if ((TPayLine(AObjectAft).code=currCode) and discPresent) then | + | var |
- | | + | CurrCode, diskcode: |
- | | + | CheckView: TCheckView; |
- | | + | CurItem: TCheckItem; |
- | end; | + | c: TVisualComponent; |
+ | begin | ||
+ | CurrCode:=10; //код валюты "оплата бонусами" | ||
+ | diskcode: | ||
+ | CheckView: | ||
+ | c := GUI.FindComponentByName(' | ||
+ | if CheckView = Nil then Exit; | ||
+ | if SYS.ObjectInheritsFrom(obj, | ||
+ | | ||
+ | | ||
+ | if SYS.ObjectInheritsFrom(TObject(curitem), | ||
+ | begin | ||
+ | | ||
+ | | ||
+ | else button.enabled :=false; | ||
+ | | ||
+ | end; | ||
end; | end; | ||
+ | |||
</ | </ | ||
- | в данном примере 96 - это код валюты " |