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

Наценка на товары и курс валюты

Автор isian1, Лютий 16, 2014, 12:57:35

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

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

isian1

Здравствуте форумчане!  С недавного времени начал активно внедрять программу в роботу фирмы и столкнулся с множеством проблем и недоработок которые пользователю нужно устранять самому ("К разработчикам нет никаких претензий ,  так как я понимаю что на свои деньги программа и так очень даже хороша") 
Программа работает в сетевом режиме .  В новой версии программы есть наценка скриптом , я его с осилил но не до конца вот могу поделится если кому надо:
Написал скрипт с помощью инструкций разработчиков :  в зависимости от входящей цены (в у.е) олтдельная наценка (если товар закупка 1 у.е. то наценка на розницу 100% , цена 1 -70% и т.д)и перевод  в гривну :

IF (cena_in <= 1 ) THEN (если вх. цена меньше или равняется 1 долару)
  BEGIN
     -- вычисляем курс для валюты с ID = 1 (в нашем случае это долар )
     SELECT
      kurs
    FROM
      currency
    WHERE
      num =1
    INTO
      :valuta_kurs;
    -- наценка 100% розничной, 30% оптовой, 60% цена 1, 70% цена 2, 60% цена 3, для приходной цены до 1 (у.е), округление до двух знаков после запятой 
    cena_r_out = udf_roundto((cena_in * 2)*valuta_kurs, 2);
    cena_o_out = udf_roundto((cena_in * 1.3)*valuta_kurs, 2);
    cena_1_out = udf_roundto((cena_in * 1.6)*valuta_kurs, 2);
    cena_2_out = udf_roundto((cena_in * 1.7)*valuta_kurs, 2);
    cena_3_out = udf_roundto((cena_in * 1.8)*valuta_kurs, 2);
  END
  ELSE
  IF (cena_in > 1 AND cena_in <= 5) THEN
  BEGIN
     -- вычисляем курс для валюты с ID = 1 (в нашем случае это долар )
     SELECT
      kurs
    FROM
      currency
    WHERE
      num =1
    INTO
      :valuta_kurs;
    --  наценка 50% розничной, 20% оптовой, 30% цена 1, 35% цена 2, 40% цена 3 , при приходной цене от 1 до 5 у.е. и персчет в гривну.), два знака после запятой
    cena_r_out = udf_roundto((cena_in * 1.5)*valuta_kurs, 2);
    cena_o_out = udf_roundto((cena_in * 1.2)*valuta_kurs, 2);
    cena_1_out = udf_roundto((cena_in * 1.3)*valuta_kurs, 2);
    cena_2_out = udf_roundto((cena_in * 1.35)*valuta_kurs, 2);
    cena_3_out = udf_roundto((cena_in * 1.4)*valuta_kurs, 2);
  END
 
Вот таким скриптом мне считает программа весь склад , но есть проблема , а точнее две:
1) есть товар на который я ставлю свою цену: ну например программа считает 50% - а мне нужно 30% - нуя ее и ввожу вручную - и она ставится...:) , но тут вытекает другая проблема:
2) Меняется курс долара (закупка у нас по курсу долара) я его ввожу в валюте например с 8,5 меняю на 9,0 и делаю переоценку склада ........ и тот товар на который я поставил 30% вручную программа поставила запрограмированих 50%
  - таких товаров многовато (практически в каждой групе по несколько ) и оцениваются они не потому что  я так захотел , а так построилася цена на рынке и тут уже вопрос не о  зарабатывании денег а о репутации , конкурентоспособности магазина .

Кто как реализовал наценку относитель курса ???

Creat

А навіщо при зміні курсу проводити заново націнку?
І так повинно працювати просто по новому курсу.
Ну а для націнки.
Зробити для цих товарів окремі групі зі своїми товарами і туди включити відповідні товари
тобто
група 30%
група 50%
і в скрипті зробити аналіз, що для цих груп робити відповідні націнки.

isian1

При смене курса склад не переоценивается , задавал этот вопрос даже на техподдержку - сказали нужно переоценивать склад .
А создавать групы 30% 40% и т.д. неудобно ,особенно когда количество товаров больше 3-5 тыс.

Creat

Я не про те.
Якщо валюту розхідну поставити долар, то при виписці в гривнях буде рахувати по встановленому вами курсу.
Цитата: isian1 від Лютий 16, 2014, 12:57:35
  - таких товаров многовато (практически в каждой групе по несколько ) и оцениваются они не потому что  я так захотел , а так построилася цена на рынке и тут уже вопрос не о  зарабатывании денег а о репутации , конкурентоспособности магазина .
Декілька в кожній групі -  це не так і багато.
Але якось програма повинна зрозуміти що саме на ці товари треба особливу націнку. В задумці розробників це якраз особлива група.

Я також працював над таким питанням. Я пробував задіяти додаткові поля в довіднику товарів, але скрипт націнки не бачить ці поля. Я пробував якраз вказати в додатковому полі товару що націнка для нього саме 30%, але коли звертався з скрипта то він не бачить цього поля.

Але мені здається що вам повинна підійти якраз розхідна валютна ціна. Тоді ви змінюєте просто курс і більше нічого робити не треба, програма сама при виписці в гривні перерахує курс.

isian1

Интересно , сегодня попробую  спасибо большое за помощь .
А насчет товара со своей ценной - если он дешевле стандартной наценки то его можно продавать по дисконту (Цена1,цена2,цена3) - одна из них сто процентов подойдет.

Creat

Ну скакати по цінах 1,2,3 при виписці документів для одного клієнта це взагалі не вихід. Це ж треба ще пам'ятати що саме для цього товару треба вибрати іншу ціну. Це точно не варіант.

Якщо всі ціни не використовуються то можна спробувати так
Всім встановити ціну 3 рівну 0 , присвоїти для цих певних товарів якусь специфічну ціну наприклад ціну 3 - 3000000
і тоді в скрипті перевіряти якщо в товару ціна 3 = 300000 то використовувати відповідну націнку 30% і т.д.
Це реально і не складно.
Тоді й вибирати легко відсортував всі товари з ціною 3 = 3000000 і розумієш що в них націнка 30%, ціна3 = 4000000 націнка 40% і т.д.
 

admin

#6
Это перенаправленное письмо:
От: УкрСклад
Кому: isian1
Дата: 17 лютого 2014 р., 9:41:34
Тема: Подскажите пожалуйста

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

16.02.2014 в 9:13, Вы писали:

К> Здравствуйте !
К>  У меня наценка стоит SQL скриптом и если я нажму кнопку назначить
К> новые цены то программа назначит на все товары , Вопрос : "А если
К> на складе 100-200 товаров в которых наценка стоит своя , не
К> стандартная например 15 или 20% а назначенная вручную , то тогда
К> программа поменяет ее цену относительно автоматической настройки
К> или скриптом или по группам.

Исключите в скрипте эти группы товаров, вот пример исключения групп
34, 35:

IF(grupa_id_in NOT IN (34,35)) THEN
BEGIN
  -- наценки на товары кроме групп 34,35
END


исключение по ID товаров так

IF(tovar_id_in NOT IN (246,332)) THEN
BEGIN
  -- наценки на товары кроме 246,332
END



К> А хотелось бы что бы цена (розница,
К> опт, цена1,цена2,цена3) увеличилась на увеличение или уменьшение
К> курса . Подскажите пожалуйста как это можно сделать или скрипт какой.

Чтобы цена зависела от курса надо укатывать ее в справочнике в валюте,
а не в гривне. Для примера если товар стоит 10 долларов, при выписке
документа, когда указываете гривну, программа пересчитывает по курсу
вашу цену, вчера был курс 8.00, программа посчитала 80, а сегодня стал
курс 9.00, программа посчитала 90. А если укажите в справочнике для
товара цену 80 грн., то неважно какой курс товар как стоил 80, так и
будет стоить.

Вот старая тема когда также задавали вопросы в 2008 году:
http://www.softbalance.com.ua/forum/index.php/topic,400.0.html

К>      P.S. предпочитаю писать электронку так как на звонки не хочется отнимать ваше время.

Главное не дублируйте сообщения на форум и на поддержку.

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

isian1

У меня цена прихода стоит сейчас в доларе , расход в гривне ( и это прописано в скрипте ) .  Из скрипта убираю перевод в гривну и ставлю расход в доларе . Валюту выписки ставлю в гривне непосредственно при продаже .  неудобно - особенно с окна касира ,

isian1

Цитата: Creat від Лютий 17, 2014, 09:31:12
Ну скакати по цінах 1,2,3 при виписці документів для одного клієнта це взагалі не вихід. Це ж треба ще пам'ятати що саме для цього товару треба вибрати іншу ціну. Це точно не варіант.

Я не так маю на увазі : на ціннику на цей товар ставлю "акція" так як він по меншій ціні , потім вписую нового клієнта з именем Акция и ставлю йому ціну та яка потрібна наприклад Ціна2. И продаю всім як для клиєнта акция.

isian1

А как  поставить  выписку в гривне в Окне касира , если на товар  расход в доларе  ?

Creat

Ви поставте валюту розходу долар і ціни встановіть в доларах. А у вікні касира для продажу буде перераховувати в гривнях по встановленому вами курсу. Заведіть пробний товар і спробуйте.

isian1

пробовал пять минут назад - если приход и расход в доларах то и в окне касира долар , как поменять незнаю ...

Creat

#12
В таблиці показує ціну в доларах, а в документ вибивиє перераховану в гривнях ціну.
Хіба що в довіднику валют у вас як основна встановлено долар. Змініть на гривню і все буде ОК.

isian1

Сорри ....  поставил основную валюту в гривнах считает и в окне касира и в расходных по курсу :) ,  Спасибо за подсказку .
Проанализировал все моменты - для электроники лучше и приход и расход ставить в доларах , тогда можно уйти от необходимости после каждой смены курса переоценивать склад ,а следовательно и цены которые ставятся не по скрипту ,а вручную тоже слетать не будут . А то что приходит в гривнах особо от курса не зависит.
 

isian1

#14
Теперь надо на всех товарах поставить валюту расхода "долар" - это как то можно скриптом ? сума уже стоит нужная , а вот валюта грн и поэтому в расходках и в окне касира ранее неперсчитывало.

несилен в скриптах , вот таким скриптом должно  весь товар который валюта захода грн первести в дол:
П.С.: получилось  :)
UPDATE
  tovar_name
SET
  cena_curr_id = 1
WHERE
  cena_curr_id = 0
если id грн=0 а id $=1
и для расхода :

UPDATE
  tovar_name
SET
  cena_out_curr_id = 1
WHERE
  cena_out_curr_id = 0
Может кому пригодится  ;) .
А вот как прописать что бы для разных валют считало разные наценки , наценка которую переделал :

IF (cena_in <= 1 ) THEN
  BEGIN
    -- наценка 100% розничной, 30% оптовой, 60% цена 1, 70% цена 2, 60% цена 3, для приходной цены до 1 (у.е), округление до двух знаков после запятой 
    cena_r_out = udf_roundto(cena_in * 2, 2);
    cena_o_out = udf_roundto(cena_in * 1.3, 2);
    cena_1_out = udf_roundto(cena_in * 1.6, 2);
    cena_2_out = udf_roundto(cena_in * 1.7, 2); 
    cena_3_out = udf_roundto(cena_in * 1.8, 2);
   END