Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| external:pro_bonus:98_dop:25_zapret_oplaty_bonusom [2024/01/30 08:53] – Алексей Коробов | 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 - это код валюты " | ||