Быстрая продажа дробного количества блюда
В r_keeper 7 можно добавлять в заказ, как целое блюдо, так и его часть, например, половину или четверть порции.
Для этого в свойствах блюда в параметре Точность для количества указывается количество знаков, которое можно использовать после запятой.
Тогда на кассовой станции сотрудник с помощью цифровой клавиатуры может указать, какую долю блюда он продает.
В статье описано создание функциональной клавиши, с помощью которой дробное количество продаваемого блюда можно будет указывать в один клик (целое, половина или четверть) без ввода значения на цифровой клавиатуре.
Технология работы
В меню r_keeper создаются блюда, в свойствах которых Точность для количества выставляется 1 или 2. В первом случае будет возможность указать половину блюда (0,5), во втором – половину (0,5) или четверть (0,25).
Создаётся скрипт для функциональной клавиши, нажатие на которую открывает диалог с выбором доли блюда: целое, половина или четверть.
Настройки в менеджерской
- Откройте справочник Сервис > Скрипты и перейдите в раздел Операции.
Создайте новый скрипт с именем Продажа дробного количества. Вставьте в созданный скрипт код, указанный ниже.
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;

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

Далее создайте новую функциональную клавишу, к которой привяжите пользовательскую операцию из предыдущего шага. Для этого:
Откройте справочник Настройки > Графический интерфейс > Функциональные клавиши и перейдите в раздел Операции с заказом > Селектор операций (можно выбрать и другой раздел).
Создайте новую функциональную клавишу Дробн. Кол-во
Заполните в свойствах функциональной клавиши свойства Операция и Операция пуст., выбрав операцию из предыдущего пункта Продажа дробного количества.

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

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