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

Наши программы => УкрСклад => Тема розпочата: molotokk від Вересень 10, 2015, 15:51:32

Назва: Округлення цін
Відправлено: molotokk від Вересень 10, 2015, 15:51:32
Доброго дня!
Чи можна якось реалізувати різне округлення цін на різні категорії цін (наприклад - щоб на оптову ціну на молотки округлення було до 1 копійки а на роздрібну ціну до 1 гривні)?
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 10, 2015, 16:06:19
Скриптом можна націнювати та округляти як вам захочеться.
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 10, 2015, 16:18:39
та от проблема в тому, що я в скриптах не дуже розбираюсь =(
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 10, 2015, 16:58:27
Опції - націнка натовари - націнка SQL скриптом.
Там є приклад легко розібратись.
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 10, 2015, 17:20:41
Дякую, буду пробувати...
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 14, 2015, 10:07:12
А може хтось на замовлення написати скрипт???  бо я в цьому не можу роздуплитись.. =(
Назва: Re: Округлення цін
Відправлено: admin від Вересень 14, 2015, 17:26:32
Цитата: molotokk від Вересень 14, 2015, 10:07:12
А може хтось на замовлення написати скрипт???  бо я в цьому не можу роздуплитись.. =(

Давайте по порядку, по одному условию пишите будем помогать вам написать скрипт, заодно и разберетесь. Только пишите по одному условию, после ответа второе и т.д. Просто если будете писать все условия одним большим текстом, ни вы не разберетесь, ни другие пользователи.
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 14, 2015, 17:51:57
Цитата: admin від Вересень 14, 2015, 17:26:32
Цитата: molotokk від Вересень 14, 2015, 10:07:12
А може хтось на замовлення написати скрипт???  бо я в цьому не можу роздуплитись.. =(

Давайте по порядку, по одному условию пишите будем помогать вам написать скрипт, заодно и разберетесь. Только пишите по одному условию, после ответа второе и т.д. Просто если будете писать все условия одним большим текстом, ни вы не разберетесь, ни другие пользователи.

Ситуація:
1. в меню "Націнки на товар" вибрана галочка "Націнки по групах товару"
2. є групи товару "Іграшки", "Госптовари", "Кухонні товари",
3.  на кожну з груп є ціна роздрібна, ціна опт, ціна 1, ціна 2, ціна 3.
4. Округлення різне на кожну ГРУПУ ТОВАРУ (напр. на Іграшки - 100 (1 грн), на госптовари - 25 (25 коп.) і на Кухонні товари - 5 (5 копійок).
ПИТАННЯ - а як мені призначити округлення для РІЗНИХ КАТЕГОРІЙ ЦІН?
наприклад:
Іграшки роздрібна ціна - 100 (1 грн), оптова ціна - 5 (5 копійок)
Госптовари -  роздрібна ціна - 25 (25 копійок), оптова ціна - 1 (1 копійка), ціна 2 - 10 (10 копійок)
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 15, 2015, 09:02:24
Робимо все на копії програми поки не получимо потрібний результат.
1. В меню "Націнки на товар" знімаємо галочки "Націнки по групах товару"
2. Вибираємо сусідню вкладку Націнка SQL скриптом і ставимо галочку Автоматична Націнка SQL скриптом
Номера груп можна подивитись у вкладці  де ви націнювали перед цим.
Округляє в меншу сторону.  Може матиматична реалізація і не найкраща :)

IF(grupa_id_in = 34) THEN
  BEGIN
   -- маємо для групи 34 націнка роздрібна 40% округлення до 1 коп
   -- оптова ціна - 30% округлення до 1грн
   -- ціна 1 округлення до 25 копійок
   -- ціна 2 округлення до 25 копійок в більшу сторону
    cena_r_out = udf_roundto(cena_in * 1.4, 2); 
    cena_o_out = udf_roundto(cena_in * 1.3, 0);
    cena_1_out = udf_roundto(cena_in * 1.2/0.25, 0)*0.25;
    cena_2_out = udf_roundto(cena_in * 1.2/0.25, 0)*0.25+0.25; 
    cena_3_out = udf_roundto(cena_in + 2, 2);
  END
  ELSE
  IF(grupa_id_in IN (35,64,74)) THEN
  BEGIN
    cena_r_out = udf_roundto(cena_in * 1.4, 2); 
    cena_o_out = udf_roundto(cena_in * 1.3, 0);
   END
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 15, 2015, 09:10:34
Цитата: Creat від Вересень 15, 2015, 09:02:24
А якщо груп товарів є всього 10, то по даному скрипту можна округляти ціни для певних вибраних груп, а інші залишаться як були, так?
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 15, 2015, 09:45:17
Це приклад перераховуйте всі групи в скрипті ті що мають однакову націнку і округлення в одну умову і т.д. Основу алгоритмів якусь же вчили в школі.
  IF(grupa_id_in IN (35,64,74)) THEN  - тут можна перерахувати через кому всі групи в яких однаковий алгоритм націнювання і округлення
Якщо 34 то по першій умові, якщо в цьому списку груп (35,64,74) то по другому, для всіх інших по третьому.
Але тут нічого страшного - раз прописали і воно собі працює, цей скрипт зберігається.
Якщо не прописувати третього циклу то всі інші групи не чіпає. Але вам є зміст прописати в скрипті правила націнки та округлення для всіх груп, ти паче що їх всього 10. Раз прописали як правильно націнювати і округляти і забули на певний час.
Вам немає змісту включати то націнку по групах, то націнку скриптом. Треба перейти на націнку скриптом, якщо у вас складніші умови націнки і округлення і ним користуватись.

Робіть все поки на тестовій базі!!!


IF(grupa_id_in = 34) THEN
  BEGIN
   -- маємо для групи 34 націнка роздрібна 40% округлення до 1 коп
   -- оптова ціна - 30% округлення до 1грн
   -- ціна 1 округлення до 25 копійок
   -- ціна 2 округлення до 25 копійок в більшу сторону
    cena_r_out = udf_roundto(cena_in * 1.4, 2); 
    cena_o_out = udf_roundto(cena_in * 1.3, 0);
    cena_1_out = udf_roundto(cena_in * 1.2/0.25, 0)*0.25;
    cena_2_out = udf_roundto(cena_in * 1.2/0.25, 0)*0.25+0.25; 
    cena_3_out = udf_roundto(cena_in + 2, 2);
  END
  ELSE
  IF(grupa_id_in IN (35,64,74)) THEN
  BEGIN
    cena_r_out = udf_roundto(cena_in * 1.4, 2); 
    cena_o_out = udf_roundto(cena_in * 1.3, 0);
   END
ELSE
-- для всіх інших груп от так націнювати і округляти :
   BEGIN
    cena_r_out = udf_roundto(cena_in * 1.4, 2); 
    cena_o_out = udf_roundto(cena_in * 1.3, 0);
   END

Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 15, 2015, 09:55:54
Дякую
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 15, 2015, 10:06:55
Цитата: molotokk від Вересень 15, 2015, 09:55:54
Дякую
Коли зробите і вийде, тоді й подякуєте, але це якихось 10 хвилин роботи і все готово :)
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 18, 2015, 08:43:22
Цитата: Creat від Вересень 15, 2015, 10:06:55
Цитата: molotokk від Вересень 15, 2015, 09:55:54
Дякую
Коли зробите і вийде, тоді й подякуєте, але це якихось 10 хвилин роботи і все готово :)

А можна якось ціну роздрібну і оптову перецінити через націнки по групах, а ціну 1,2,3 - скриптом??
п.с. груп 10 а підгруп  - близько 40, а націнка окрема для кожної підгрупи.
І скриптом треба переціняти лише ціну 1,2,3 для всіх, а щоб інше - через націнку пішло.
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 18, 2015, 10:45:24
Можна. Треба знімати галочку в одній націнці ставити в іншій, натискати призначити ціни, вертати назад. І в автоматичному режимі працювати це не буде. Треба буде запускати скрипт руками кожен раз.
Простіше в скрипті прописати всі 40 груп. А особливо, якщо ці групи можна погрупувати по однакових націнках, округленнях то не буде 40 умов. Але й 40 умов прописати не важко.
Назва: Re: Округлення цін
Відправлено: molotokk від Вересень 18, 2015, 11:19:45
Цитата: Creat від Вересень 18, 2015, 10:45:24
Можна. Треба знімати галочку в одній націнці ставити в іншій, натискати призначити ціни, вертати назад. І в автоматичному режимі працювати це не буде. Треба буде запускати скрипт руками кожен раз.
Простіше в скрипті прописати всі 40 груп. А особливо, якщо ці групи можна погрупувати по однакових націнках, округленнях то не буде 40 умов. Але й 40 умов прописати не важко.
Проблема в тому, що групи регулярно змінюються, змінюється іноді націнка в групах... і для 40+ груп робити це навіть раз в місяць скриптом - вельми не зручно =(
Назва: Re: Округлення цін
Відправлено: Creat від Вересень 18, 2015, 12:02:51
Змінилась група. Змінилась націнка і відразу змінили ці цифри в скрипті, так як перед цим змінювали в таблиці. Я не думаю що розробники захочуть ускладнювати і змінювати націнку по групах, так як є вже додатковий більш універсальний інструмент націнка скриптом.
Теоретично можна написати якусь невеличку програму, яка буде генерувати вам скрипт в залежності від націнок по групах та ще й заокруглення потрібне зробити, але я зараз цього не зможу зробити.
Хоча тут на форумі пробігав подібний макрос в Екселі.
Назва: Re: Округлення цін
Відправлено: TheOK від Вересень 18, 2015, 13:46:38
Цитата: Creat від Вересень 18, 2015, 12:02:51
Теоретично можна написати якусь невеличку програму, яка буде генерувати вам скрипт..
Хоча тут на форумі пробігав подібний макрос в Екселі.
Мне кажется, Ексель наиболее удобен будет в данном случае, как достаточно распространенный инструмент
Назва: Re: Округлення цін
Відправлено: molotokk від Червень 05, 2017, 23:17:34
маю кілька груп товарів, зробив скрипт:
IF(grupa_id_in = 4) THEN
  BEGIN
    cena_r_out = udf_roundto(cena_in * 1.35, 100); 
    cena_o_out = udf_roundto(cena_in * 1.2, 5);
  END
  ELSE
  IF(grupa_id_in = 3) THEN
  BEGIN
    cena_r_out = udf_roundto(cena_in * 1.25, 100); 
    cena_o_out = udf_roundto(cena_in * 1.15, 100);
END

простий, по шаблону.
прихідні ціни в основному в $ а продажні всі в гривні.
той скрипт націнив що роздрібна получилась в гривні але цифра така як для долара, а оптова нормально в гривні: шланг 12мм  вхідна ціна 1$ роздрібна 1.35грн оптова 32грн і т.д.
що я роблю не так?
мені треба щоб в групі 4 націнка була 1.35 і 1.2, а заокруглення до гривні вверх і до 5 копійок вверх відповідно.
Назва: Re: Округлення цін
Відправлено: admin від Червень 12, 2017, 10:40:05
Цитата: molotokk від Червень 05, 2017, 23:17:34
маю кілька груп товарів, зробив скрипт:
IF(grupa_id_in = 4) THEN
  BEGIN
    cena_r_out = udf_roundto(cena_in * 1.35, 100); 
    cena_o_out = udf_roundto(cena_in * 1.2, 5);
  END
  ELSE
  IF(grupa_id_in = 3) THEN
  BEGIN
    cena_r_out = udf_roundto(cena_in * 1.25, 100); 
    cena_o_out = udf_roundto(cena_in * 1.15, 100);
END

простий, по шаблону.
прихідні ціни в основному в $ а продажні всі в гривні.
той скрипт націнив що роздрібна получилась в гривні але цифра така як для долара, а оптова нормально в гривні: шланг 12мм  вхідна ціна 1$ роздрібна 1.35грн оптова 32грн і т.д.
що я роблю не так?
мені треба щоб в групі 4 націнка була 1.35 і 1.2, а заокруглення до гривні вверх і до 5 копійок вверх відповідно.

Посмотрите по ссылке:
http://www.softbalance.com.ua/forum/index.php/topic,2883.msg21980.html#msg21980 (http://www.softbalance.com.ua/forum/index.php/topic,2883.msg21980.html#msg21980)
Назва: Re: Округлення цін
Відправлено: molotokk від Червень 13, 2017, 22:31:31
Дякую, буду дивитись
Назва: Re: Округлення цін
Відправлено: ОлександрСт від Червень 17, 2017, 14:34:58
Добрий день.
основна валюта -долар, національна - гривня!
то як здійснюється націнка для обліку мене майже влаштовує, але
Чи можна округляти ціни тільки коли формуються документи?
Назва: Re: Округлення цін
Відправлено: ОлександрСт від Червень 25, 2017, 11:08:12
Яким чином округляти ціни для прайса, та видаткових накладних??