Редактирование заказа (быстрый чек)
Скрипт, показывающий при создании каждого нового заказа одно и то же сообщение кассиру
Сообщение нужно отображать после добавления первого блюда в быстрый чек.
procedure CheckViewOnAfterCheckViewEdit(Sender: TObject; AEditType: TEditType; AObjectBef, AObjectAft: TObject);
var i, CntDish: integer;
it: TCheckItem;
begin
if SYS.ObjectInheritsFrom(AObjectAft, 'TDish') then
begin
CntDish := 0;
for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do begin
it := RKCheck.CurrentOrder.Sessions.Lines[i];
if SYS.ObjectInheritsFrom(TObject(it), 'TDish') then
CntDish := CntDish + 1;
end;
if CntDish = 1 then
gui.ShowMessage('New QuickCheck');
end;
end;Скрипт, выводящий остаток карты PDS
Алгоритм:
1. Нужно вывести остаток карты PDS в форму редактирования заказа в быстром чеке.
2. Остаток должен вычисляться так: Остаток на карты - сумма заказа.
3. Если вычисленный остаток - минус, показывать сумму в красном.
На форму редактирования быстрого чека добавить userGLabel1 и userTimer1.
И добавить следующие скрипты в форму:
procedure show_rest_sum;
var i: integer;
Limit, restsum: double;
CardCode: string;
McrPay: TMcrPay;
label_rest: TObject;
begin
Limit := 0;
restsum := 0;
CardCode := '';
for i := 0 to RKCheck.CurrentOrder.Sessions.McrPays.ItemCount - 1 do begin
McrPay := TMcrPay(RKCheck.CurrentOrder.Sessions.McrPays.Items[i]);
Limit := Limit + McrPay.MaxAmount;
CardCode := McrPay.CardNum;
end;
if CardCode = '' then Exit
else
begin
restsum:=Limit-RKCheck.CurrentOrder.ToPaySum;
label_rest := TObject(gui.FindComponentByName('userGLabel1'));
if SYS.ObjectInheritsFrom(TObject(label_rest), 'TGLabel') then
begin
TGLabel(label_rest).Caption := FloatToStr(restsum);
if restsum >=0 then
TGLabel(label_rest).Color := clBlue
else
TGLabel(label_rest).Color := clRed;
end;
end;
end;
procedure CheckViewOnOrderVerify(Sender: TObject; AVerifyType: TVerifyType; oper: integer; var AContinue: boolean);
var
label_rest: TObject;
begin
if AVerifyType = vtNewQuickCheck then
if RKCheck.CurrentOrder.IsEmpty then
begin
label_rest := TObject(gui.FindComponentByName('userGLabel1'));
if SYS.ObjectInheritsFrom(TObject(label_rest), 'TGLabel') then
begin
TGLabel(label_rest).Caption := '0';
TGLabel(label_rest).Color := clBlue;
end;
end;
end;
procedure userTimer1OnTimer(Sender: TObject);
begin
if not RKCheck.Valid then Exit;
if (GUI.CheckFormInPayMode) then exit;
if SYS.ObjectInheritsFrom(RKCheck.CurrentCheckItem, 'TPrintCheckItem') then Exit;
show_rest_sum;
end;Скрипт, для вывода кнопки «Тип Гостя» в Главное Меню
Необходимо добавить кнопку «Питание персонала» в главное меню. При нажатии открывается режим «Быстрый чек» и тип гостей «Персонал».
Скрипт для селектора на главном меню:
procedure ProcessOperation1001774(Parameter: integer); begin RKCheck.StrTag := 'Personal'; RK7.PerformOperation(rkoQuickCheck,0); end;
В форме «Новый заказ (быстрый чек)» у объекта GuestTypeEditor в событии OnShow указать скрипт:
procedure GuestTypeEditorOnShowScript(Sender: TObject);
begin
if RKCheck.StrTag = 'Personal' then
begin
RK7.PerformRefObject ( RK7.FindItemByCode(rkrefGuestTypes, 1) ); // указать код типа гостя
RKCheck.StrTag := '';
RK7.PostOperation(rkoEnter,0);
end;
end;