В r_keeper 7 можно добавлять в заказ, как целое блюдо, так и его часть, например, половину или четверть порции.

Для этого в свойствах блюда в параметре Точность для количества указывается количество знаков, которое можно использовать после запятой.

Тогда на кассовой станции сотрудник с помощью цифровой клавиатуры может указать, какую долю блюда он продает.

В статье описано создание функциональной клавиши, с помощью которой дробное количество продаваемого блюда можно будет указывать в один клик (целое, половина или четверть) без ввода значения на цифровой клавиатуре.

Технология работы

В меню r_keeper создаются блюда, в свойствах которых Точность для количества выставляется 1 или 2. В первом случае будет возможность указать половину блюда (0,5), во втором – половину (0,5) или четверть (0,25).

Создаётся скрипт для функциональной клавиши, нажатие на которую открывает диалог с выбором доли блюда: целое, половина или четверть.

Настройки в менеджерской

  1. Откройте справочник Сервис > Скрипты и перейдите в раздел Операции.
  2. Создайте новый скрипт с именем Продажа дробного количества. Вставьте в созданный скрипт код, указанный ниже.

    procedure ProcessOperation1015363(Parameter: integer);

    var

    k:integer;

    kolvo:double;

    CurItem: TCheckItem;

    ed: TObject;

    begin

      if not RKCheck.Valid then Exit;

      if GUI.CheckFormInPayMode then exit; 

      CurItem := RKCheck.CurrentCheckItem;

      ed := TObject(gui.FindComponentByName('Editor'));

      kolvo:=0;

      if SYS.ObjectInheritsFrom(TObject(CurItem), 'TDish') then

         if SYS.ObjectInheritsFrom(CurItem, 'TPortion')=false then

         if trk7menuItem(TDish(curitem).RefItem).QntDecDigits>=1 then

           begin

             if trk7menuItem(TDish(curitem).RefItem).QntDecDigits>=2 then  k:=gui.MessageDlgEx('Половина, четверть или целое блюдо?', mtInformation, mbYes+mbNo+mbCancel, 'Половина;Четверть;Целое')

             else k:=gui.MessageDlgEx('Половина или целое блюдо?', mtInformation, mbYes+mbCancel, 'Половина;Целое') ;

             if k=ID_Yes then kolvo:=0.5;

             if k=ID_No then kolvo:=0.25;

             if k=ID_Cancel then kolvo:=1;

             if kolvo>0 then

               begin

                 TNumEditor(ed).Text := FloatToStr(kolvo);

                 RK7.PerformOperation(rkoEditAmount, 0);

               end;


           end

           else

           begin

             gui.showmessage('Это блюдо не может быть разбито, т.к. продается только целым!');

           end;

    end;

  3. После этого привяжите созданный скрипт к любой пользовательской операции. Для этого:

    1. Откройте справочник Сервис > Операции, внутри этого справочника перейдите в раздел Пользовательские операции

    2. Переименуйте любую свободную операцию в Продажа дробного количества

    3. В свойстве Скрипт выберите ранее созданный скрипт.


  4. Далее создайте новую функциональную клавишу, к которой привяжите пользовательскую операцию из предыдущего шага. Для этого:

    1. Откройте справочник Настройки > Графический интерфейс > Функциональные клавиши и перейдите в раздел Операции с заказом > Селектор операций (можно выбрать и другой раздел).

    2. Создайте новую функциональную клавишу Дробн. Кол-во

    3. Заполните в свойствах функциональной клавиши свойства Операция и Операция пуст., выбрав операцию из предыдущего пункта Продажа дробного количества.

  5. Добавьте функциональную клавишу в селектор для быстрого или классического чека.

    • Для быстрого чека сделайте копию из селектора Быстрый чек: операции, на вкладке Доп или Селектор операций добавьте функциональную клавишу.


      Добавьте созданный селектор в Использование селекторов.

    • Для классического чека сделайте копию из селектора Чек: операции, добавьте функциональную клавишу и назначьте селектор в использование.

Готово. Теперь при добавления блюда, с Точностью для количества равной 1 или 2, у кассира откроется диалоговое окно для выбора доли блюда.