external:old:dishmark

Отметка о выдаче блюда в интерфейсе кассы.

Описанный в данном документе скрипт предоставит официантам возможность отмечать выдачу ранее сохраненных блюд заказа.

Небольшой видеоролик, показывающий работу данной функции: https://youtu.be/6NtqDdOf_I8
Внимание!!! Начиная с версий 7.06.02.174 и 7.06.04.109 данный скрипт включен в поставку ПО. При использовании этих (и более старших) версий ничего делать не нужно.

Важно! Во встроенном варианте (который идет в поставке r_keeper) выделение отданных блюд происходит специальным значком в строке с блюдом. В варианте представленном на данной странице - выделение отданных блюд происходит цветом (выделяется вся строка с блюдом).

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

1. В менеджерской станции RK7 в меню «Сервис > Скрипты» добавить новый пользовательский скрипт (Операция) следующего содержания:

procedure ProcessOperation1000455(Parameter: integer);
var
   item:TCheckItem;
   dish:TDish;
   i:integer;
   unis:TStringList;
   cm:TComponent;
begin
  unis:=TStringList.Create();
  unis.text:=RKCheck.CurrentOrder.VisitOtherInfo; //Загружаем текущий список отмеченных блюд
  item :=  RKCheck.CurrentCheckItem;              //Получаем текущую строку в заказе
  try
    if TObject(item) = nil then exit;             //Прерываем операцию, если не выбрана ни одна строчка
 
    if SYS.ObjectInheritsFrom(item, 'TDish') then //Выделено блюдо?
    begin
      dish:=TDish(item);
      i:= unis.indexof(IntToStr(Dish.uni));       //>=0 если блюдо уже в списке отмеченных
      if i> -1 then
      begin
       if gui.MessageDlgEx('Блюдо уже отмечено как выданное.'#13#10'Снять отметку?', mtConfirmation, mbYes+mbNo, 'Да; Нет') = 6 then
         unis.delete(i);                          //Снять отметку
      end
      else
      begin
        if dish.state <> disPrinted then
          GUI.ShowMessage('Операция доступна только для сохраненного блюда.')
        else
         unis.add(IntToStr(Dish.uni));             //Добавить отметку только если блюдо сохранено
      end;
 
      //сохраняем обновленный список отмеченных блюд
      RKCheck.UpdateVisitComment(RKCheck.CurrentOrder.VisitExtraInfo,unis.text);
 
      //Принудительно перерисовываем заказ
      cm:=GUI.FindComponentByName('CheckView');
      if cm <> nil then
      begin
        if SYS.ObjectInheritsFrom(cm, 'TCheckView') then
        begin
          TCheckView(cm).Visible:=False;
          TCheckView(cm).Visible:=True;
        end;
      end;
    end;
  finally
    item:=nil;
    dish:=nil;
    cm:=nil;
    unis.free;
  end;
end;

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

3. Копируем предустановленную форму редактирования заказа и заходим в редактор.

4. В редакторе выбираем компонент «CheckView», расположенный в левой части формы

5. Справа переключаемся на вкладку «События», находим событие «OnGetColors», добавляем обработчик (даблклик)

6. Заменяем созданную процедуру на следующую:

procedure CheckViewOnGetColors(Sender: TObject; CheckItem: TObject; Selected: boolean; var Color, FontColor: TColor);
var
   unis:TStringList;
begin
  unis:=TStringList.Create;
  try
    unis.Text:=RKCheck.CurrentOrder.VisitOtherInfo; //Загружаем список отмеченных блюд
    if not ObjectInheritsFrom(CheckItem,'TDish') then Exit; //Если рисуем не блюдо, то прерываем операцию
    if (unis.indexof(IntToStr(TDish(CheckItem).Uni))>= 0) then //Если блюдо отмечено как выданное, заменяем цвет
    begin
      if Selected then
        Color:=clGreen //Темно зеленый если блюдо выбрано в заказе
      else
        Color:=clLime; //Светло зеленый, если не выбрано
    end;
  finally
    unis.free;
  end;
end;

7. Сохраняем изменения на форме, назначаем данную форму на использование в текущей схеме форм

8. Для верности перезапускаем кассу и наслаждаемся новым функционалом.

Особенность: работник должен иметь право на «Редактирование комментария визита».

  • external/old/dishmark.txt
  • Последнее изменение: 2023/08/31 11:29
  • Алексей Коробов