• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

SQL дисконт по товару

Автор Vad, Липень 28, 2015, 17:39:13

Попередня тема - Наступна тема

0 Користувачі і 2 Гостей дивляться цю тему.

cola78

Потрібна допомога.
Як записати таку умову:
Якщо кількість позицій в чеку для товарів з певної групи більша 2,
то на певний товар знижка в 5%

Не кількість товарів, а кількість позицій в чеку, де в кожній позиції хоча б 1 одиниця товару?

nikolllo



Добрий день!
Допоможіть, будь-ласка, з скриптом по бонусній програмі.
Зараз базовий бонус встановлений 7% (0,07).
Планую це змінити і для запуску нової бонусної програми зробити базовий 1% (0,01). Тоді на всі товари в групах товарів з ID: 153, 86, 154, 60, 53, 4, 141, 42, 42, 122, 56, 28 буде нараховуватися базовий бонус 1%.
А збільшені бонуси на групи товарів з ID:
1) 37, 146, 142  бонус 1.5%
2) 97, 118, 49, 50, 136, 103, 135, 166, 167, 138, 139, 137, 112, 158, 51 бонус 2%
3) 150, 126, 164, 67, 75, 89, 79, 99, 78, 68, 113, 133, 148, 134, 106, 107, 110, 111, 157, 62, 147 бонус 3%
4) 152, 163, 129, 33, 140, 91, 119, 116, 121, 87, 101, 104, 104, 64, 27, 95, 88, 155, 160 бонус 4%
5) 165, 127, 100, 38, 115, 132, 109, 156, 84 бонус 5%
6) 98, 105 бонус 6%
7) 58, 71, 59, 35, 36 бонус 8%
Я зрозумів принцип, що базовий залишається 0,01, а при нарахуванні на товари у групах з більшим бонусом до нього буде додаватися різниця між потрібним і базовим.
Тобто на цю групу з ID "1) 37, 146, 142  бонус 1.5%" до базового 0,01 буде додаватися 0,005 і т. д
Наперед вдячний!
Найбільше підходить цей скрипт:

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);

Роман?:)

Вітаю.
Перше повыдомлення не в те тему написав.
А як до цього дисконту додати певну групу клієнтів ?
Щоб кожен раз не додавати в скрипт ІД-окремого клієнта. Зараз їх 10, а згодом на касі буде +-1000.
В мене зараз ось так :

IF(client_id IN (-20, 56, 59, 60,
                  66, 67, 77, 78,
                  79, 83
)) THEN


 
  SELECT
    tn.tov_proizv
  FROM                                                                               
    tovar_name tn
  WHERE
    tn.num = :in_tovar_id
  INTO
    :tmp_str1;
  IF(TRIM(tmp_str1) = 'Brit') THEN       
  BEGIN
    tovar_znig_proc = 10;
  END
  IF(TRIM(tmp_str1) = 'Savory') THEN
  BEGIN
    tovar_znig_proc = 10;
  END

walo

Добрий день. Потрібна допомога. Знайшов потрібні sql дисконти але не знаю як їх об'єднати.
1. При покупці товару з групи 4 одного ID кратно 6 знижка 3%, кратно 12 - 5%, кратно 24 - 10%
2. При покупці товару з групи 9 товар з групи 11 за пів ціни
3. Знижка на товар з групи 30 - 25%

povalnik

Вже зробили ?

Цитата: nikolllo від Травень 09, 2023, 18:04:43Добрий день!
Допоможіть, будь-ласка, з скриптом по бонусній програмі.
Зараз базовий бонус встановлений 7% (0,07).
Планую це змінити і для запуску нової бонусної програми зробити базовий 1% (0,01). Тоді на всі товари в групах товарів з ID: 153, 86, 154, 60, 53, 4, 141, 42, 42, 122, 56, 28 буде нараховуватися базовий бонус 1%.
А збільшені бонуси на групи товарів з ID:
1) 37, 146, 142  бонус 1.5%
2) 97, 118, 49, 50, 136, 103, 135, 166, 167, 138, 139, 137, 112, 158, 51 бонус 2%
3) 150, 126, 164, 67, 75, 89, 79, 99, 78, 68, 113, 133, 148, 134, 106, 107, 110, 111, 157, 62, 147 бонус 3%
4) 152, 163, 129, 33, 140, 91, 119, 116, 121, 87, 101, 104, 104, 64, 27, 95, 88, 155, 160 бонус 4%
5) 165, 127, 100, 38, 115, 132, 109, 156, 84 бонус 5%
6) 98, 105 бонус 6%
7) 58, 71, 59, 35, 36 бонус 8%
Я зрозумів принцип, що базовий залишається 0,01, а при нарахуванні на товари у групах з більшим бонусом до нього буде додаватися різниця між потрібним і базовим.
Тобто на цю групу з ID "1) 37, 146, 142  бонус 1.5%" до базового 0,01 буде додаватися 0,005 і т. д
Наперед вдячний!
Найбільше підходить цей скрипт:

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);