Скрипт, показывающий при создании каждого нового заказа одно и то же сообщение кассиру

Сообщение нужно отображать после добавления первого блюда в быстрый чек.

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;