Это старая версия документа!
Отметка о выдаче блюда в интерфейсе кассы.
Описанный в данном документе скрипт предоставит официантам возможность отмечать выдачу ранее сохраненных блюд заказа.
Небольшой видеоролик, показывающий работу данной функции: https://youtu.be/6NtqDdOf_I8
Внимание!!! Начиная с версий 7.06.02.174 и 7.06.04.109 данный скрипт включен в поставку ПО. При использовании этих (и более старших) версий ничего делать не нужно.
Если вы используете этот скрипт на более младших версиях, то при обновлении на версии указанные выше рекомендуется отключить наш скрипт и использовать встроенный, т.к. они начинают конфликтовать между собой.
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. Для верности перезапускаем кассу и наслаждаемся новым функционалом.
Особенность: работник должен иметь право на «Редактирование комментария визита». запишите пожалуйста в вики