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

Дисконт для всіх фірм крім однієї

Автор user4567, Травень 03, 2023, 20:01:21

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

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

user4567

Добрий день!

Хтось знає як встановити дисконт для всіх Фірм за виключенням однієї Фірми?

HumanKM

що Ви називаєте фірмою?
Якщо мова про клієнта і про дисконт при продажу - то можемо обсудити
телефон в підписі
вайбер 050-557-46-26

user4567

Цитата: HumanKM від Травень 03, 2023, 20:12:56що Ви називаєте фірмою?
Фірма - це те, що показується в Довідники - Вибір активної фірми (F4 hotkey).

В розділі "Дисконти" бачу можливість "SQl дисконт за сумою". По ідеї можна створити будь-який SQL-запит.
Але як відфільтрувати щоб дисконти працювали для всіх Фірм окрім одної (фірма ритуальних послуг де знижки зовсім недоречні)?

molotokk

Цитата: user4567 від Травень 03, 2023, 20:32:44
Цитата: HumanKM від Травень 03, 2023, 20:12:56що Ви називаєте фірмою?
Фірма - це те, що показується в Довідники - Вибір активної фірми (F4 hotkey).

В розділі "Дисконти" бачу можливість "SQl дисконт за сумою". По ідеї можна створити будь-який SQL-запит.
Але як відфільтрувати щоб дисконти працювали для всіх Фірм окрім одної (фірма ритуальних послуг де знижки зовсім недоречні)?
Думаю, що можна через sql запит прописати дисконти і як умову виключення - дану активну фірму по ID
підбір та продаж обладнання для торгівлі, допомога в налаштуваннях програми ⇒ "komfort-m.com.ua" ⇒ "t.me/komfortmservice" ⇒ ✆ 097-873-59-01

user4567

#4
Цитата: molotokk від Травень 04, 2023, 00:00:26Думаю, що можна через sql запит прописати дисконти і як умову виключення - дану активну фірму по ID
В мене хід думок був таким же. Проблема в тому, що не зрозуміло як достукатись до того ID фірми. В розділі "SQl дисконт за сумою" є така довідка:
-- Входящие переменные: 
  -- client_id - ID клиента
  -- in_doc_suma_value - сумма документа 
  -- in_cln_suma_value - накопительная сумма клиента 
  -- in_date - дата 
  -- in_time - время 
  -- in_weekday_1 - если понедельник = 1, иначе 0 
  -- in_weekday_2 - если вторник = 1, иначе 0 
  -- in_weekday_3 - если среда = 1, иначе 0 
  -- in_weekday_4 - если четверг = 1, иначе 0 
  -- in_weekday_5 - если пятница = 1, иначе 0 
  -- in_weekday_6 - если суббота = 1, иначе 0 
  -- in_weekday_7 - если воскресенье = 1, иначе 0 
  -- all_znig_proc - сумма всех скидок 
  -- doc_suma_proc - скидка по сумме документа 
  -- cln_suma_proc - скидка по накопительной сумме клиента 
  -- date_proc - скидка по дате 
  -- weekday_proc - скидка по дням недели 
  -- time_proc - скидка по времени 
  -- cln_proc - скидка клиента из справочника
  -- all_bonus - сумма всех бонусов 
  -- doc_suma_bonus - бонусы по сумме документа 
  -- cln_suma_bonus - бонусы по накопительной сумме клиента 
  -- date_bonus - бонусы по дате 
  -- time_bonus - бонусы по времени 
  -- Исходящие переменные: 
  -- all_znig_proc_out - сумма всех скидок 
  -- doc_suma_proc_out - скидка по сумме документа 
  -- cln_suma_proc_out  - скидка по накопительной сумме клиента 
  -- date_proc_out - скидка по дате 
  -- weekday_proc_out - скидка по дням недели 
  -- time_proc_out - скидка по времени 
  -- cln_proc_out - скидка клиента из справочника
  -- all_bonus_out - сумма всех бонусов 
  -- doc_suma_bonus_out - бонусы по сумме документа 
  -- cln_suma_bonus_out - бонусы по накопительной сумме клиента 
  -- date_bonus_out - бонусы по дате 
  -- time_bonus_out - бонусы по времени 
  ------------------------------------------------------------------------------ 
  -- Пример: если общая скидка больше 30%, тогда установить скидку 30%, т.е. не больше 30% 
  /*
  IF(doc_suma_proc > 0 OR cln_suma_proc > 0 OR cln_proc > 0) THEN
  BEGIN
    IF(doc_suma_proc > cln_suma_proc) THEN
    BEGIN
      IF(doc_suma_proc > cln_proc) THEN
        all_znig_proc_out = doc_suma_proc;
    END
    ELSE
    BEGIN
      IF(cln_suma_proc > cln_proc) THEN
        all_znig_proc_out = cln_suma_proc;
      ELSE
        all_znig_proc_out = cln_proc;
    END         
  END
  */
Всі змінні з приклада - це ті, що розраховуються прямо в чеку. Не зрозуміло як витягнуть ID фірми. В БД бачу, що поле NUM для потрібної фірми дорівнює "1518" (збігається з ID фірми в табличці). Не зрозуміло в якому форматі в SQL-запит саме в цьому місці передавати це (як саме ім'я змінної "ID фірми").

admin

Цитата: user4567 від Травень 03, 2023, 20:01:21Добрий день!

Хтось знає як встановити дисконт для всіх Фірм за виключенням однієї Фірми?

-- взнаємо ID активної фірми в змінну tmp_int1
SELECT
  vc.firma_id
FROM
  vkas_check vc
WHERE
  vc.num = :in_doc_id
INTO
  tmp_int1;
-- Для всіх, крім фірми з ID=17, дисконт 20%   
IF(tmp_int1 !=17) THEN
BEGIN
  all_znig_proc_out = 20;
END

user4567

Цитата: admin від Травень 04, 2023, 14:49:40-- взнаємо ID активної фірми в змінну tmp_int1
SELECT
  vc.firma_id
FROM
  vkas_check vc
WHERE
  vc.num = :in_doc_id
INTO
  tmp_int1;
-- Для всіх, крім фірми з ID=17, дисконт 20%   
IF(tmp_int1 !=17) THEN
BEGIN
  all_znig_proc_out = 20;
END
Дуже дякую! Працює!