09.05.2024 20:40
Suradias
 
Уважаемые коллеги столкнулся с проблемой создания скидки. Для Frontol 6 нужно сделать скидку на каждый 5 товар в чеке, скидка 100% при условии что он самый дешевый в чеке. Т.е. если в чеке 1 товар за 1000 два товара за 500 и два за 200 то скидка в 100% должна даваться на один из товаров за 200. Само собой если в чеке все 5 товаров по одной цене то скидка на один из 5 товаров должна даваться. Ну или 4 товара за 500, а один за 300 то скидка даётся на тот что за 300. Есть ли возможность организовать это штатными средствами конструктора скидок или нужно скрипт писать? В конструкторе похожего не нашел, Возможно что то проглядел.
13.05.2024 06:43
SmilePunk
 
Цитата:
Suradias Уважаемые коллеги столкнулся с проблемой создания скидки. Для Frontol 6 нужно сделать скидку на каждый 5 товар в чеке, скидка 100% при условии что он самый дешевый в чеке. Т.е. если в чеке 1 товар за 1000 два товара за 500 и два за 200 то скидка в 100% должна даваться на один из товаров за 200. Само собой если в чеке все 5 товаров по одной цене то скидка на один из 5 товаров должна даваться. Ну или 4 товара за 500, а один за 300 то скидка даётся на тот что за 300. Есть ли возможность организовать это штатными средствами конструктора скидок или нужно скрипт писать? В конструкторе похожего не нашел, Возможно что то проглядел.
Не знаю как насчёт штатного конструктора, но в скрипте это легко организовать.
15.05.2024 16:22
Suradias
 
К сожалению скрипт писать не умею. Поэтому и спрашивал про конструктор. Если через конструктор не получится то нужно найти того кто скрипт сможет написать.
16.05.2024 10:52
Shift
 
Если предположить что количество товара в каждой позиции 1, то как-то так:
Код:
function D(curpos)                           
{  
n=5;
disc=100;                    
num=0;
position=frontol.currentDocument.position;
for (
position.index = 1;
position.index <=
position.count;
position.index++
)
{
if (position.sum>curpos.sum) num=num+1;                                                                                  
if (position.sum==curpos.sum)&&(position.index>curpos.index) num=num+1;                                                                                  
}
num=position.count-num;
maxnum=position.count/n;                                                  
if (num>=maxnum) return disc;
return 0;                           
}
16.05.2024 12:06
Suradias
 
Shift, А если потребуется сделать как я написал выше и каждая позиция будет иметь более 1 единицы товара. В чеке может быть и 5 и 10 позиций и 20. Т.е. смысл что если в чеке допустим 10 позиций или 15 позиций то скидка должна идти на 2 или 3 самые дешевые позиции в чеке. Пример:
1 Товар 500 р х 3
2 Товар 300 р х 1
3 Товар 200 р х 4
4 товар 150 р х 1
5 товар 100 р х 1
Итог 10 товаров и скидка 100 % должна идти на 4 товар 150 р х 1 и 5 товар 100 р х 1
Далее пример
1 Товар 500 р х 3
2 Товар 300 р х 1
3 Товар 200 р х 4
4 товар 150 р х 1
5 товар 100 р х 2
Всё тоже самое но товаров 11 и скидка 100% должна уйти на 5 товар 100 р х 2
И так пока не наберётся 15 товаров после которого скидка 100 % должна даваться уже на 3 позиции.
Я понимаю что немного сложно но если бы данное можно было реализовывать через конструктор проблем ды не было.
С данной акцией мня просили помочь т.к. человек вообще не понимает в Frontol. Я бы и рад кому нибудь их спихнуть да вот пока найти не могу кому.
16.05.2024 15:38
Shift
 
Код:
function D(curpos)                           
{  
n=5;
disc=100;                    
num=0;
quantity=0;
position=frontol.currentDocument.position;
for (
position.index = 1;
position.index <=
position.count;
position.index++
)
{
quantity=quantity+position.quantity;
if (position.price>curpos.price) num=num+position.quantity;                                                                                  
if (position.price==curpos.price)&&(position.index>curpos.index) num=num+position.quantity;                                                                                  
}
num=quantity-num;
maxnum=quantity/n;                                                  
if (num>=maxnum) return disc;
for (index=1; index<curpos.quantity; index++)
{
num=num-1;
if (num>=maxnum) return disc*index/curpos.quantity;
}
return 0;                           
}
Ну как-то так, хотя при округлении возможно вылезет копейка.
Да и как поступать если весовуха есть? здесь это не учтено.
16.05.2024 19:58
Suradias
 
Цитата:
Shift
Код:
function D(curpos)                           
{  
n=5;
disc=100;                    
num=0;
quantity=0;
position=frontol.currentDocument.position;
for (
position.index = 1;
position.index <=
position.count;
position.index++
)
{
quantity=quantity+position.quantity;
if (position.price>curpos.price) num=num+position.quantity;                                                                                  
if (position.price==curpos.price)&&(position.index>curpos.index) num=num+position.quantity;                                                                                  
}
num=quantity-num;
maxnum=quantity/n;                                                  
if (num>=maxnum) return disc;
for (index=1; index<curpos.quantity; index++)
{
num=num-1;
if (num>=maxnum) return disc*index/curpos.quantity;
}
return 0;                           
}
Ну как-то так, хотя при округлении возможно вылезет копейка.
Да и как поступать если весовуха есть? здесь это не учтено.
А весового товара нет. Весь товар штучный.
17.05.2024 08:10
Shift
 
А табачок, алкашка?
Часовой пояс GMT +3, время: 18:40.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.