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

Як зробити націнку на товар, виходячи з його параметрів?

Автор Олег Александрук, Листопад 05, 2016, 19:38:09

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

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

Олег Александрук

Мені потрібно написати SQL скрипт з націнкою товару такого типу:

cena_r_out = cena_in + значення параметра "довжина" * 20

може хтось знайє який код параметра "довжина", чи може якось по іншому поступити?

maxmokry

Для получения перечня полей просто выполните select * from tovar_name
Тип поля "длинна" сейчас не помню, но если текстовое, то его нужно приводить через cast

Кстати, есть мысль написать внешнюю программку, которая будет производить наценку по пользовательским формулам из информации в дополнительных полях и полях параметров.

Интересно кому?

Формулы для товара типа
5%+6, - добавить 5% от стоимости + 6 единиц валюты

Для категорий:
100:8%;150:7%+5;1000:6%;100000:5%
До 100 - наценка 8%
От 100 до 150 - 7% + 5
От 150 до 1000 - 6%
От 1000 и выше - 5%

Могу послушать соображения по поводу других вариантов формул :)
[url="http://goo.gl/ciUwjI"]http://goo.gl/ciUwjI[/url] - Синхронизация УС с VirtueMart, [url="http://goo.gl/Uh3GBC"]http://goo.gl/Uh3GBC[/url] - Интернет-магазин на базе укрсклада без импорта/экспорта

maxmokry

Цитата: Олег Александрук від Листопад 05, 2016, 19:38:09
Мені потрібно написати SQL скрипт з націнкою товару такого типу:

cena_r_out = cena_in + значення параметра "довжина" * 20

може хтось знайє який код параметра "довжина", чи може якось по іншому поступити?
Поле TOV_LENGTH, есть еще TOV_WIDTH и TOV_HEIGHT. Формат - число с двойной точностью. Так что CAST при составлении мат-формулы в SQL не нужен
[url="http://goo.gl/ciUwjI"]http://goo.gl/ciUwjI[/url] - Синхронизация УС с VirtueMart, [url="http://goo.gl/Uh3GBC"]http://goo.gl/Uh3GBC[/url] - Интернет-магазин на базе укрсклада без импорта/экспорта

admin

Цитата: Олег Александрук від Листопад 05, 2016, 19:38:09
Мені потрібно написати SQL скрипт з націнкою товару такого типу:

cena_r_out = cena_in + значення параметра "довжина" * 20

може хтось знайє який код параметра "довжина", чи може якось по іншому поступити?

Вам же за день до этого на поддержке ответили, зачем дубляж на форуме?
http://www.softbalance.com.ua/forum/index.php/topic,426.0.html

Это перенаправленное письмо:
От: УкрСклад
Кому: Вікторія
Дата: 4 листопада 2016 р., 16:36:11
Тема: Fwd: Запит до програмістів

===8<==============Оригинал текста письма===============
Приветствую Вас,

04.11.2016 в 10:15, Вы писали:

ВА> Потрібно прописати формулу націнки на товар ( чохли для телефонів)
ВА> Ситуація така: роздрібна ціна продажу має розраховуватись по формулі:
ВА> ціна закупки + діагональ екрану ( я заповнюю стовпчик дожина) * 20 грн
ВА> оптова ціна продажу:
ВА> ціна закупки + діагональ екрану ( я заповнюю стовпчик дожина) * 10 грн
ВА> Як нам вирішити це питання?

Сделать такое штатными функциями (меню Опции : Наценка на товары)
нельзя. Только самописными скриптам, вот один из примеров:
http://www.softbalance.com.ua/forum/index.php?topic=461.0
В вашем случае пример скрипта:
UPDATE tovar_name SET cena_r = cena + tov_length + 20;
UPDATE tovar_name SET cena_o = cena + tov_length + 10;

--
С уважением, Дмитрий Котельников
  Служба поддержки УкрСклад.
===8<===========Окончание оригинала теста письма========

Олег Александрук

Написав
IF(grupa_id_in = 8) THEN
BEGIN
cena_r_out = cena_in + tov_length * 20;
END

вибиває таке

admin

Цитата: Олег Александрук від Листопад 07, 2016, 10:51:48
Написав
IF(grupa_id_in = 8) THEN
BEGIN
cena_r_out = cena_in + tov_length * 20;
END

вибиває таке

Все верно, выше же писали в меню Опции : Наценка на товары такое работать не будет штатно.

Цитата: Олег Александрук від Листопад 07, 2016, 10:51:48
Сделать такое штатными функциями (меню Опции : Наценка на товары)
нельзя. Только самописными скриптам, вот один из примеров:

http://www.softbalance.com.ua/forum/index.php?topic=461.0

Олег Александрук

Та писати то писали, але я трохи баран в тих справах, через шо, мені такі довгі фрази легко не даються  ;D
а за посиланням переходив, але нічого або не знайшов, або не зрозумів  :)

admin

Цитата: Олег Александрук від Листопад 07, 2016, 16:15:07
Та писати то писали, але я трохи баран в тих справах, через шо, мені такі довгі фрази легко не даються  ;D
а за посиланням переходив, але нічого або не знайшов, або не зрозумів  :)

Если одноразово, вот что надо запустить в меню Опции : SQL менеджер:

EXECUTE BLOCK
AS
BEGIN
  UPDATE tovar_name SET cena_r = cena + tov_length + 20 WHERE tip IN (8);
  UPDATE tovar_name SET cena_o = cena + tov_length + 10 WHERE tip IN (8);
END


Это наценка по условиям выше по 8 группе.