PDA

Просмотр полной версии : Удаляем наценку, если проводим определенную скидку



mnekin
27.06.2014, 12:13
Удаляем наценку, если проводим определенную скидку
RK7.5.2.409

Имеется наценка "Обслуживание 10%", которая действует только на официантов и рассчитывается от суммы заказа.
Имеется набор скидок (5%, 10%, Сотрудник, Приват), который рассчитывается от суммы заказа.
Это все работает.

Теперь задача.
Необходимо удалять наценку при проведении скидок "Сотрудник" и "Приват". Как?
"Композиция скидок" не работает с наценками.

satan
27.06.2014, 13:13
http://tracker.ucs.ru:8080/redmine/issues/20459?tab=history_comments
на основании этого сделать не получится?

mnekin
28.06.2014, 11:12
http://tracker.ucs.ru:8080/redmine/issues/20459?tab=history_comments
на основании этого сделать не получится?

Опыта работы со скриптами очень мал, так что пока не получилось.

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

mnekin
30.06.2014, 19:07
В общем отработал по второму варианту, работает как надо и ни каких прав не надо.
У меня в условии 2 скидки под кодами 5 и 6.
Скрипт создать в "Правила применения скидок", например "Авто с удал. наценки". В использовании для наценки вместо "Автоматически" указываем свое создание "Авто с удал. наценки".
Вот скрипт без первой строки:

var i: integer;
it: TCheckItem;
begin
UsageParameters.UsageMode := umAuto;
for i := 0 to RKCheck.CurrentOrder.Sessions.LinesCount - 1 do begin
it := RKCheck.CurrentOrder.Sessions.Lines[i];
if SYS.ObjectInheritsFrom(TObject(it), 'TDiscountItem') and ((it.CODE = 5) or (it.CODE = 6))
then
Begin
UsageParameters.UsageMode := umDeny;
Exit;
End;
end;
end;