PDA

Просмотр полной версии : Скрипт для автоматического добавления блюда в заказ, при превышении определенной суммы заказа



dctr
25.11.2015, 16:31
Добрый день! Помогите с написанием скрипта, который будет автоматически добавлять блюдо в заказ, если сумма заказа больше определенной суммы. Заранее большое спасибо!

satan
25.11.2015, 17:09
Взял с трекера, немного изменил, не проверял, но работать должно:
Форма "редактирование заказа", объект CheckView, событие "onCurItemChenged" .


procedure CheckViewCurItemChangedScript(Sender: TObject);
var Categ: TClassificatorGroup;
it: TCheckItem;
grSum:double;
i,cnt,dishCode:integer;

begin

dishCode:=1000191; // 1000191 - Here paste your code of dish

grSum:=0;
cnt:=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 //Check dish lines only
begin
grSum:= grSum + TDish(it).Price*TDish(it).Quantity;;
if it.code=dishCode then cnt:=1; //
end;
end;
if cnt<1 then
if grSum > 600 then RKCheck.CreateCheckItem(rkrefMenuItems, intToStr(dishCode), '1');
end;

dctr
25.11.2015, 19:02
Что-то не работает в режиме быстрого чека(( Хотя вроде бы все правильно, создал новую схему, добавил обработчик события для формы 800x600 редактирования заказа быстрый чек, указал использование данной схемы для конкретной станции. Что может быть не так?

satan
25.11.2015, 21:06
как будет чуть свободного времени проверю у себя

satan
26.11.2015, 19:11
Исправил, у меня работает, в т.ч. в быстром чеке

dctr
26.11.2015, 20:03
А что надо исправить?)

satan
26.11.2015, 20:15
grSum:= grSum + TDish(it).Price*TDish(it).Quantity;

почему-то в оригинальном скрипте, с трекера считали сумму цен блюд в каждой строке, может там задача так стояла, я уже не помню.
Сейчас при сумме заказа больше 600 рублей (проверка в конце скрипта) добавляется блюдо с кодом, указанным в начале скрипта. Но: 1. Удалить его не получится, если сумма блюд заказа не стала меньше или равной 600руб.
2. Если сумма блюд заказа стала меньше 600 рублей, блюдо само не удалится, надо удалять руками.

dctr
28.11.2015, 16:24
Спасибо, сегодня попробую.

dctr
16.12.2015, 20:20
Спасибо, все работает!