Помогите с SQL скриптом, т.к. никогда с ними не работал, то выставить скидку на группу товара не получается. Покажите хотя бы тот же скрипт, что в примере, только как его там правильно прописать, что бы он работал.
С этим разобрался, удалил все лишнее и работает (а ларчик просто открывался).
Теперь стал такой вопрос: надо, чтобы скидка устанавливалась только когда покупается несколько единиц товара из этой группы (разного или одинакового), и действовала только на этот товар.
Как это можно решить скриптом?
На поддержке спрашивали, может кому интересно:
--Каждый 4-ый товар скидка 100%, для товара с ID 53
IF(in_tovar_id IN (53)) THEN
BEGIN
tovar_znig_proc = ((TRUNC(in_tovar_kolvo/4)*in_tovar_cena)/(in_tovar_kolvo*in_tovar_cena))*100;
END
Всем привет! Помогите разобраться с этими скриптами. Пытаюсь разобраться сам, не пойму, с чего даже начинать. Купил программу Укрсклад, пока тестировал пользовалися только расходной накладной. Теперь пытаюсь запустить окно касира, но в окне можно работать только с одной ценой(какую выставишь), а у меня при покупке трех товаров (в группах 1.2.3)цена товара уменьшаеться на 10%(т.е если 1 или2*100, если 3*100-10%). В окне оператора, как мне объяснили на гор.линии, нужно пользоваться дисконтом и написать скрипт. Читаю второй день форум, ничего не пойму. где писать , как применить. Помогите с информацией, пожалуйста.
Вопрос1. Где и как можно узнать номер группы товара? Вот к примеру: Комплекты, Махровые изделия, Одеяла,пледы, подушки.
Цитата: IVANOVICH від Жовтень 27, 2016, 23:28:44
Вопрос1. Где и как можно узнать номер группы товара? Вот к примеру: Комплекты, Махровые изделия, Одеяла,пледы, подушки.
Очень удобно смотреть в меню Опции : Наценки на товары, или в окне которое вы показали (справочник Товаров) включите колонку ID группы (правой кнопкой на таблице Выбор колонок).
Спасибо большое, с этим разобрался.
Еще вопрос. Если нужно в скрипте на скидку указать ID группы где используется скидка, указывать группу 28 или нужно указывать 29 и 31?
Цитата: IVANOVICH від Жовтень 28, 2016, 21:14:24
Еще вопрос. Если нужно в скрипте на скидку указать ID группы где используется скидка, указывать группу 28 или нужно указывать 29 и 31?
Если товар в 29 или 31 группе надо именно их указать, скрипт не поймет дерево если вы укажите 28 группу. 28 надо указывать если товар есть именно в главной 28 группе, а не в 29 и 31.
Цитата: IVANOVICH від Жовтень 27, 2016, 22:31:31
Всем привет! Помогите разобраться с этими скриптами. Пытаюсь разобраться сам, не пойму, с чего даже начинать. Купил программу Укрсклад, пока тестировал пользовалися только расходной накладной. Теперь пытаюсь запустить окно касира, но в окне можно работать только с одной ценой(какую выставишь), а у меня при покупке трех товаров (в группах 1.2.3)цена товара уменьшаеться на 10%(т.е если 1 или2*100, если 3*100-10%). В окне оператора, как мне объяснили на гор.линии, нужно пользоваться дисконтом и написать скрипт. Читаю второй день форум, ничего не пойму. где писать , как применить. Помогите с информацией, пожалуйста.
Как я понимаю это ваше сообщение на поддержке?
Это перенаправленное письмо:
От: УкрСклад
Кому: Денис
Дата: 31 жовтня 2016 р., 12:28:44
Тема: дисконт
===8<==============Оригинал текста письма===============
Приветствую Вас,
26.10.2016 в 23:28, Вы писали:
ДК> Вітаю! Привожу пример. Есть 10 групп товаров. В группе 1, 2, 3
ДК> есть скидка, при покупке трех одинаковых товаров цена , на все три
ДК> и более товара одного артикула уменьшаеться на 5%. Если продается
ДК> другой артикул в количестве меньше трех единиц, скидки нет.
IF(in_tovar_kolvo >= 3 AND in_group_id IN (1,2,3)) THEN
tovar_znig_proc = 5;
ДК> В
ДК> группе 8 при покупки одного артикула больше 10 метров скидка в
ДК> цене на этот артикул 10%. Ну как то так. Спасибо жду ответа.
IF(in_tovar_kolvo > 10 AND in_group_id IN (8)) THEN
tovar_znig_proc = 10;
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Як зробити:
Якщо сума по конкретних групах більше 1000грн тоді знижка 10% на товари із цих груп ?
Цитата: weee від Квітень 10, 2017, 22:22:19
Як зробити:
Якщо сума по конкретних групах більше 1000грн тоді знижка 10% на товари із цих груп ?
Для этого надо дорабатывать get_vkas_check_info, т.к. она не вытаскивает цену.
1. Меняем get_vkas_check_info (актуально для версий 6.59.2 и ниже, т.к. в след. версиях уже будет такая процедура). Заходим в меню Опции : SQL менеджер и выполняем след. код:
ALTER PROCEDURE get_vkas_check_info
(
in_doc_id INTEGER
)
RETURNS
(
tovar_id INTEGER,
group_id INTEGER,
sklad_id INTEGER,
tov_kolvo DOUBLE PRECISION,
tov_cena DOUBLE PRECISION
)
AS
BEGIN
FOR
SELECT
vc_.tovar_id,
tn.tip AS group_id,
vc_.sklad_id,
vc_.tov_kolvo,
vc_.nac_tov_cena
FROM
vkas_check_ vc_
JOIN tovar_name tn ON (vc_.tovar_id = tn.num)
WHERE
vc_.pid = :in_doc_id
INTO
:tovar_id,
:group_id,
:sklad_id,
:tov_kolvo,
:tov_cena
DO
BEGIN
SUSPEND;
END
END
2. В меню Справочники : Дисконты : SQL дисконт по товару, используем скрипт:
IF(in_group_id IN (7)) THEN
BEGIN
SELECT
SUM(vc.tov_kolvo*vc.tov_cena)
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.group_id IN (7)
INTO
:tmp_float1;
IF(tmp_float1 > 1000) THEN
BEGIN
tovar_znig_proc = 10;
END
END
Показано для группы 7, если надо свой ID группы, поменяйте, если надо несколько пишите через запятую.
Также сегодня помогали клиенту на поддержке делать SQL дисконт, может кому будет интересно:
Это перенаправленное письмо:
От: УкрСклад
Кому: PHONE
Дата: 13 квітня 2017 р., 12:10:08
Тема: SQL-дисконт
===8<==============Оригинал текста письма===============
Приветствую Вас,
23.03.2017 в 17:26, Вы писали:
PP> Скорее всего я Вас не правльно понял. Товары с группы 7 и 5
PP> могут быть с разными кодами, и как итог:
PP> если с группы 7 товаров - 3 шт, с группы 5 - 2 шт, товар с id
PP> 4640 - 2 шт, то скидки будет две на товар с id 4640.
PP> Пример №1:
PP> группа 7 - чехол леново, чехол нокиа, чехол самсунг - всего три товара с группы 7
PP> группа 5 - защитное стекло леново, защитное стекло самсунг - всего 2 товара с группы 5
PP> товара с id 4640 - в чеке две шт (так как покупают два стекла то
PP> и услуги только две в чеке будет).
PP> Как итог условие в чеке выполнилось всего два раза - значит две скидки на товар с id 4640.
PP> Пример №2
PP> группа 7 - чехол леново, чехол нокиа - всего 2 товара с группы 7
PP> группа 5 - защитное стекло леново, защитное стекло самсунг,
PP> защитное стекло нокиа - всего 3 товара с группы 5
PP> товара с id 4640 - в чеке 3 шт (так как покупают три стекла то и услуги три в чеке будет).
PP> Как итог условие в чеке выполнилось всего два раза - значит две
PP> скидки на товар с id 4640, и один товар с id 4640 по полной стоимости.
PP> Если что не так не судите строго, я не программист. Вы професионалы в этом деле.
PP> Спасибо
Так и было в прошлом скрипте, проблема при добавлении доп. строк. Вот
попробуйте след. скрипт:
IF(in_tovar_id IN (4640)) THEN
BEGIN
SELECT
COUNT(vc.tov_kolvo),
SUM(CASE
WHEN vc.group_id = 5 THEN vc.tov_kolvo
END) AS sum5,
SUM(CASE
WHEN vc.group_id = 7 THEN vc.tov_kolvo
END) AS sum7
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.tovar_id IN (4640) OR
vc.group_id IN (5,7)
INTO
:tmp_int1,
:tmp_float1,
:tmp_float2;
IF(tmp_float2 < tmp_float1) THEN
tmp_float1 = tmp_float2;
IF(tmp_int1 >= 3) THEN
BEGIN
tovar_znig_proc = ( (((in_tovar_cena-1.00)*tmp_float1))/(in_tovar_cena*in_tovar_kolvo) )*100;
END
END
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Олександр
Дата: 10 травня 2017 р., 16:55:41
Тема: Питання по SQL дисконтам
===8<==============Оригинал текста письма===============
Приветствую Вас,
10.05.2017 в 10:10, Вы писали:
ОД> Якщо кількість товару в чеку більше 3 то ціна з колонки "Оптова
ОД> ціна", якщо менше 3 то "Роздрібна ціна". Як написати SQL?
ОД> (перелопатив весь форум і сам перепробував - нічого не виходить). Допоможіть будь-ласка.
-- если кол-во товара (1,2) больше 3 использовать оптовую цену
IF(in_tovar_id IN (1,2) AND :in_tovar_kolvo > 3) THEN
SELECT
(1-(tn.cena_o/tn.cena_r))*100
FROM
tovar_name tn
WHERE
tn.num = :in_tovar_id
INTO
:tovar_znig_proc;
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Дмитрий В
Дата: 21 серпня 2017 р., 15:57:39
Тема: Акция 1+1=3
===8<==============Оригинал текста письма===============
Приветствую Вас,
21.08.2017 в 10:13, Вы писали:
ДВ> Здравствуйте еще раз,
ДВ> в продолжении телефонного разговора, подскажите, пожалуйста, как
ДВ> реализовать акцию, например есть позиция - пиво 1, при покупке
ДВ> двух литров этой позиции 3й литр был в подарок (за 1 коп)? Также,
ДВ> нужно это делать только под ограниченный список позиций, а не на весь ассортимент.
В меню Справочники : Дисконты :
-- если кол-во товара (33115, 758) больше 2 использовать на третий товар цену 1 копейка
IF(in_tovar_id IN (33115, 758) AND :in_tovar_kolvo >= 3) THEN
tovar_znig_proc = ( (((in_tovar_cena-0.01)))/(in_tovar_cena*in_tovar_kolvo) )*100;
-- если кол-во товара (33115, 758) больше 2 использовать на КАЖДЫЙ третий товар цену 1 копейка
IF(in_tovar_id IN (33115, 758) AND in_tovar_kolvo >= 3) THEN
tovar_znig_proc = ( ((in_tovar_cena-0.01)*TRUNC(in_tovar_kolvo/3))/(in_tovar_cena*in_tovar_kolvo) )*100;
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Дмитрий В
Дата: 25 вересня 2017 р., 11:04:59
Тема: Акция -25% на 1 литр пива
===8<==============Оригинал текста письма===============
Приветствую Вас,
21.09.2017 в 13:24, Вы писали:
ДВ> Добрый день,
ДВ> Подскажите, пожалуйста, как нам прописать в программе следующую акцию:
ДВ> Есть несколько акционных позиций (например, 3 вида пива) нам
ДВ> нужно, чтобы на 1 литр одной из позиций, даже если в чеке будут
ДВ> все 3 позиции, была скидка 25% и только на 1 литр, даже если этой позиции будет больше в чеке.
ДВ> Также, нужно, чтобы эта акция активировалась по штрих-коду,
ДВ> например, как карта клиента либо же другим способом, какие еще возможны?
В меню Справочники : Дисконты : SQL дисконт по товару, используйте
след. скрипт:
IF(client_id IN (25,26)) THEN
BEGIN
SELECT
FIRST 1
vc.tovar_id
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.tovar_id IN (13654,13656,13661)
INTO
:tmp_int1;
IF(tmp_int1 = in_tovar_id) THEN
BEGIN
tovar_znig_proc = ( (in_tovar_cena*0.25)/(in_tovar_cena*in_tovar_kolvo) )*100;
END
END
Скрипт активизируется для клиентов с ID = 25,26, для товаров с ID =
13654,13656,13661, скидка 25% дается на цену товара для первого
товара из списка. Замените на свои ID.
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: олександр
Дата: 12 грудня 2017 р., 11:08:30
Тема:
===8<==============Оригинал текста письма===============
Приветствую Вас,
11.12.2017 в 18:59, Вы писали:
он> Як правильно прописати SQL дисконт по сумме
он> Наприклад ID клієнта 50; день народження записано в
он> додатково-12.12.2017; і повернення має бути бонусами 10%, а не знижка
1. Переименуйте поле Дополнительно из справочника Клиента в "День
Рождения", делается это в меню Опции : Параметры : Справочники :
Справочник Клиенты. ОБЯЗАТЕЛЬНО в этом поле вы должны корректно
записывать дату в формате dd.mm.yyyy, например 11.12.2017.
2. В меню Справочники : Дисконты : SQL дисконт по сумме, используйте
скрипт:
SELECT
dopoln
FROM
client
WHERE
num = :client_id
INTO
:tmp_str1;
IF(TRIM(tmp_str1) != '') THEN
BEGIN
tmp_date1 = CAST(tmp_str1 AS DATE);
IF(EXTRACT(DAY FROM tmp_date1) = EXTRACT(DAY FROM CURRENT_DATE) AND EXTRACT(MONTH FROM tmp_date1) = EXTRACT(MONTH FROM CURRENT_DATE)) THEN
all_bonus_out = 0.1;
END
Важно знать что бонус 10% будет складываться с основным бонусом
который идет у вас в настройках меню Опции : Параметры : Окно кассира
: Коэффициент расчета бонуса, например если там 1%, то всего будет
11%, вам надо это учитывать и выставлять нужный % для доп. бонусов в
скрипте.
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Не совсем SQL дисконт, но тоже интересный скрипт для наценок, может кому интересно будет.
Это перенаправленное письмо:
От: УкрСклад
Кому: Victoriya
Дата: 13 грудня 2017 р., 13:00:46
Тема: Націнка по виробнику
===8<==============Оригинал текста письма===============
Приветствую Вас,
13.12.2017 в 9:43, Вы писали:
VM> наприклад виробник
VM> BCGUMA - націнити по всіх групах на 7,5%
VM> ABE - 12%
VM> SOLGY- 7.9%
VM> Якщо варіант скрипту націнки лише на роздріб ціну,
VM> та варіантк скрипту на націнку на роздріб,опт та ціну1
VM> наприклад виробник
VM> BCGUMA - націнити по всіх групах на 7,5% роздріб, 7%опт, та 7,3% ціна 1
VM> ABE - 12%роз 11% опт та 11,5%ціна1
VM> SOLGY- 7.9%розд,- 7,2%опт, 7,6ціна1
В меню Опции : Наценки на товары : Наценки SQL скриптом, введите след.
текст, после:
------------------------------------------------------------------------------
SELECT
tn.tov_proizv
FROM
tovar_name tn
WHERE
tn.num = :tovar_id_in
INTO
:tmp_str1;
IF(TRIM(tmp_str1) = 'BCGUMA') THEN
BEGIN
cena_r_out = ROUND(cena_in * 1.075, 2);
cena_o_out = ROUND(cena_in * 1.07, 2);
cena_1_out = ROUND(cena_in * 1.073, 2);
END
ELSE
IF(TRIM(tmp_str1) = 'ABE') THEN
BEGIN
cena_r_out = ROUND(cena_in * 1.12, 2);
cena_o_out = ROUND(cena_in * 1.11, 2);
cena_1_out = ROUND(cena_in * 1.115, 2);
END
ELSE
IF(TRIM(tmp_str1) = 'SOLGY') THEN
BEGIN
cena_r_out = ROUND(cena_in * 1.079, 2);
cena_o_out = ROUND(cena_in * 1.072, 2);
cena_1_out = ROUND(cena_in * 1.076, 2);
END
Все остальные наценки по аналогии.
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Николай
Дата: 20 грудня 2017 р., 14:54:09
Тема: Fwd: скрипт для рождественских и новогодних продаж для окна кассира.
===8<==============Оригинал текста письма===============
Приветствую Вас,
19.12.2017 в 12:29, Вы писали:
НС> Вы нам давали скрипт для "черной пятницы".
НС> А теперь мы придумали по-сложнее...
НС> Срок действия акции - 18.12.2017 - 7.01.2018
НС> Внизу Id товара и размер скидки (есть процентная и числовая).
НС> 2 - 15%
НС> 50 - 277,00
НС> 51 - 15%
НС> 53 - 15%
НС> 54 - 262,00
НС> 55 - 15%
НС> 57 - 277,00
В меню Справочники : Дисконты : SQL дисконт по товару, используйте
след. скрипт:
IF(in_date >= '18.12.2017' AND in_date <= '07.01.2018') THEN
BEGIN
IF(in_tovar_id IN (2, 51, 53, 55)) THEN
tovar_znig_proc = 15;
ELSE
IF(in_tovar_id IN (50, 57)) THEN
tovar_znig_proc = ( (277)/(in_tovar_cena*in_tovar_kolvo) )*100;
ELSE
IF(in_tovar_id IN (54)) THEN
tovar_znig_proc = ( (262)/(in_tovar_cena*in_tovar_kolvo) )*100;
END
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад <info@ukrsklad.com>
Кому: Дмитрий В <dmytro.dvs@gmail.com>
Дата: 5 лютого 2018 р., 12:15:23
Тема: Акция -50% на второй литр
===8<==============Оригинал текста письма===============
Приветствую Вас,
02.02.2018 в 17:57, Вы писали:
ДВ> На каждый второй должна быть скидка, но с учетом того, что вес
ДВ> может быть не ровно 2, а от 1,8 до 2 примерно.
ДВ>> ID 22, 23.
ДВ>>> Подскажите, пожалуйста, как реализовать акцию -50% на второй кг(под вторым
ДВ>>> кг имеется в виду вес от 1,8 до 2,1).
ДВ>>> Такая акция нужна для нескольких позиций, но, чтобы скидка была только при
ДВ>>> покупке 2 кг одной и той же позиции.
Скидка 50% на каждый второй товар (кол-во от 1.8 до 2.0), в меню
Справочник : Дисконты : SQL дисконт по товару, используйте скрипт:
IF(in_tovar_id IN (33717) AND in_tovar_kolvo >= 1.8) THEN
BEGIN
IF ( ROUND(((in_tovar_kolvo/2)-TRUNC(in_tovar_kolvo/2)),1) >= 0.9 ) THEN
tovar_znig_proc = ( (in_tovar_cena*0.5*(TRUNC(in_tovar_kolvo/2))+(in_tovar_cena*0.5)*((in_tovar_kolvo)-TRUNC(in_tovar_kolvo)))/(in_tovar_cena*in_tovar_kolvo) )*100;
ELSE
tovar_znig_proc = ( (in_tovar_cena*0.5*(TRUNC(in_tovar_kolvo/2)))/(in_tovar_cena*in_tovar_kolvo) )*100;
END
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Василь
Дата: 12 березня 2018 р., 16:09:22
Тема: SQL
===8<==============Оригинал текста письма===============
Приветствую Вас,
09.03.2018 в 11:32, Вы писали:
ВШ> Доброго дня.
ВШ>
ВШ> допоможіть будь ласка зі скриптом.
ВШ> Цікавить таке:
ВШ> при продажі товару з ID 555 нараховувалось + 5 бонусів до бонсуного рахунку клієнта.
ВШ> Наперед вдячний.
ВШ> Шеременда Василь 0976846622
Т.к. бонусы начисляются только на сумму от чека, то мы можем узнать
какой коэффициент надо использовать чтобы получить определенную сумму
от суммы чека, это просто арифметика.
В меню Справочники : Дисконты : SQL дисконт по сумме используйте
скрипт:
SELECT
FIRST 1
vc.tov_kolvo
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.tovar_id IN (555)
INTO
:tmp_float1;
IF(tmp_float1 IS NOT NULL AND tmp_float1 >= 1) THEN
BEGIN
all_bonus_out = (tmp_float1 * 5) / in_doc_suma_value;
END
Этот скрипт начисляет 5 бонусов на каждую единицу продукции в чеке,
все остальные бонусы перетираются. Также не забывайте что любой бонус
всегда складывается с общим бонусом что установлен в меню Опции :
Параметры : Окно кассира.
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад <info@ukrsklad.com>
Кому: phone
Дата: 21 травня 2018 р., 15:43:57
Тема: Fwd: Дисконт
===8<==============Оригинал текста письма===============
Приветствую Вас,
13.05.2018 в 10:36, Вы писали:
ВВ> Добрый день
ВВ> Прошу помочь в ситуации, необходимос создать дисконт
ВВ> Если в чеке есть товар с id 4651; 4652; 6846 то на один товар с id
ВВ> 6154(стоимостью 99 грн) скидка 98,99 грн.
ВВ> Спасибо
В меню Справочники : Дисконты : SQL дисконт по товару, используем скрипт:
SELECT
COUNT(vc.tovar_id)
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.tovar_id IN (4651,4652,6846)
INTO
:tmp_int1;
IF(:tmp_int1 = 3 AND :in_tovar_id = 6154) THEN
tovar_znig_proc = ( (in_tovar_cena-1.00)/(in_tovar_cena*in_tovar_kolvo) )*100;
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: andrj
Дата: 25 травня 2018 р., 14:09:56
Тема: дисконт
===8<==============Оригинал текста письма===============
Приветствую Вас,
25.05.2018 в 11:55, Вы писали:
a> Товар сортується по ціні із найбільшої до найменшої,потім кожен 3 -50%.
В меню Справочники : Дисконты : SQL дисконт по товару, используем скрипт:
-- колво всего в документе
SELECT
SUM(vc.tov_kolvo)
FROM
get_vkas_check_info(:in_doc_id) AS vc
INTO
:tmp_int1;
-- на сколько делать скидку
tmp_float1 = CAST (:tmp_int1/3 AS INTEGER);
SELECT
COUNT(vc.tovar_id)
FROM
get_vkas_check_info(:in_doc_id) AS vc
INTO
:tmp_int1;
-- проход от дешевых до дорогих
FOR
SELECT
vc.tovar_id,
vc.tov_kolvo
FROM
get_vkas_check_info(:in_doc_id) AS vc
ORDER BY
vc.tov_cena
INTO
:tmp_int3, -- tovar_id
:tmp_float2 -- tov_kolvo
DO
BEGIN
IF(tmp_float1 != 0) THEN
BEGIN
IF(tmp_float1 >= tmp_float2) THEN
BEGIN
tmp_float1 = tmp_float1 - tmp_float2;
IF(in_tovar_id = tmp_int3) THEN
BEGIN
tovar_znig_proc = ( (in_tovar_cena/2*tmp_float2)/(in_tovar_cena*in_tovar_kolvo) )*100;
BREAK;
END
END
ELSE
BEGIN
IF(in_tovar_id = tmp_int3) THEN
BEGIN
tovar_znig_proc = ( (in_tovar_cena/2*tmp_float1)/(in_tovar_cena*in_tovar_kolvo) )*100;
BREAK;
END
END
END
END
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Александр
Дата: 3 липня 2019 р., 17:07:36
Тема: Fwd: Бонусы
===8<==============Оригинал текста письма===============
Приветствую Вас,
03.07.2019 в 16:15, Вы писали:
АС> Подскажите есть ли возможность установить следующее:
АС> 1. В опциях окна кассира установить коэффициент по бонусам 0,01
АС> 2. На группы с id 410, 420 (я в скрипт пропишу все группы кроме 429)
АС> установить коэффициент 0,04
АС> И в рузельтате на группу 429 будет начисляться бонус 0,01, а на все
АС> остальные суммырующийся бонус 0,01+0,04=0,05
Так можно:
SELECT
SUM(vc.tov_kolvo*vc.tov_cena)
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.group_id IN (429)
INTO
:tmp_float1; -- сумма товаров для бонуса=0.1
tmp_float2 = in_doc_suma_value - tmp_float1; -- сумма товаров для бонуса=0.4
all_bonus_out = (((tmp_float2 * 0.04)+(tmp_float1 * 0.01) )/in_doc_suma_value);
Пример сумма 100 грн, группы НЕ РАВНО 429 = 60 грн, РАВНО 429 = 40 грн
40 грн * 0.01 = 0,4 грн
60 грн * 0.04 = 2.4 грн
0.4+2.4 = 2.8 грн.
Расчет выше:
((60*0.04)+(40*0.01))/100 = *2.4+0.4)/100 = коэффициент бонуса 0.028
Будет для считать для группы 429 основной 0.1+ из скрипта 0.1
all_bonus_out = (((tmp_float2 * 0.04)+(tmp_float1 * 0.01) )/in_doc_suma_value);
если надо просто 0.1, то так:
all_bonus_out = ((tmp_float2 * 0.04)/in_doc_suma_value);
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Это перенаправленное письмо:
От: УкрСклад
Кому: Александр
Дата: 25 вересня 2019 р., 11:20:55
Тема: Fwd: Скрипт на скидку
===8<==============Оригинал текста письма===============
Приветствую Вас,
21.09.2019 в 13:27, Вы писали:
АС> Добрый день помогите пожалуйста реализовать следующую акцию:
АС> При покупке смартфона клиент получает в подарок защитное стекло.
АС> Иными словами: если в чеке есть товар с группы 429 то на один товар с
АС> группы 417 скидка 99%.
АС> Заранее спасибо
В подарок нельзя, а за 1 гривну можно.
Скидки, почти аналогичные вашим прошлым:
https://www.softbalance.com.ua/forum/index.php/topic,3533.msg26480.html#msg26480 (https://www.softbalance.com.ua/forum/index.php/topic,3533.msg26480.html#msg26480)
Как мы поняли, на каждый товар из группы 429, скидка соответствующий из 417
-- группа товаров
SELECT
SUM(vc.tov_kolvo)
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.group_id = (429)
INTO
:tmp_int1;
-- группа товаров подарков
SELECT
SUM(vc.tov_kolvo)
FROM
get_vkas_check_info(:in_doc_id) AS vc
WHERE
vc.group_id = (417)
INTO
:tmp_int2;
IF(:tmp_int1 > :tmp_int2) THEN
tmp_int1 = tmp_int2;
IF(tmp_int1 != 0 AND :in_group_id = 417) THEN
tovar_znig_proc = ( (in_tovar_cena*tmp_int1-1.00)/(in_tovar_cena*in_tovar_kolvo) )*100;
--
С уважением, Дмитрий Котельников
Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========
Це перенаправлений лист:
Від: УкрСклад
Кому: Маргарита
Дата: 14 листопада 2024 р., 16:36:43
Тема: Налаштування знижки
===8<=================Оригінал листа=================
Вітаю,
13.11.2024 в 11:34, Ви звертались:
МФ> Добрий день. Підкажіть будь ласка. Як прописати знижку:
МФ> Для клієнтів з групи «Оптові клієнти» знижка 10% на весь асортимент крім
МФ> офісного паперу, на офісний папір знижка мінус 5 грн від ціни.
В меню Довідники : Дисконти : SQL дисконт по товару, використовуйте
скрипт:
-- tmp_int1 - Група Клієнтів
SELECT
c.tip
FROM
client c
WHERE
c.num = :client_id
INTO
:tmp_int1;
-- Наприклад, товари з ID 677,678 - це товари на які треба винятково зробити знижку 5 грн
-- Якщо треба -5 грн на групу товарів, використовуйте змінну in_group_id, замість in_tovar_id
IF(in_tovar_id IN (677,678)) THEN
tovar_znig_proc = ( (5.00*in_tovar_kolvo)/(in_tovar_cena*in_tovar_kolvo) )*100;
ELSE
-- Наприклад, групи Клієнтів з ID 5 і 7 - це оптові покупці
IF(tmp_int1 IN (5,7)) THEN
tovar_znig_proc = 10;
--
Служба підтримки УкрСклад.
===8<=======Закінчення оригіналу тексту листа========
Це перенаправлений лист:
Від: УкрСклад
Кому: Дмитрий
Дата: 15 листопада 2024 р., 9:38:40
Тема: Товар за 1 коп при сумі чека більше 300 грн
===8<=================Оригінал листа=================
Вітаю,
14.11.2024 в 17:22, Ви звертались:
ДВ> Добрий день,
ДВ> підкажіть, будь ласка, як прописати таку акцію, товар з ID 1448 буде за 1
ДВ> коп, якщо сума чеку більше 300 грн?
-- tmp_float1 - сума документу
SELECT
SUM(vc.tov_kolvo*tov_cena)
FROM
get_vkas_check_info(:in_doc_id) AS vc
INTO
:tmp_float1;
-- Наприклад, товари з ID 677,678 - це товари на які треба винятково зробити знижку
IF(in_tovar_id IN (677,678) AND tmp_float1 > 300) THEN
tovar_znig_proc = ( ((in_tovar_cena-0.01)*in_tovar_kolvo)/(in_tovar_cena*in_tovar_kolvo) )*100;
--ВАЖЛИВО, якщо у вас є інші знижки на інші товари, їх треба враховувати в умові tmp_float1 > 300
--
Служба підтримки УкрСклад.
===8<=======Закінчення оригіналу тексту листа========