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

Помогите написать скрипт

Автор Vitaly_Gl, Лютий 28, 2013, 14:09:16

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

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

Vitaly_Gl

Привет всем. Нуждаюсь в помощи написания скрипта для наценки розничной цены в зависимости от приходной. Читал тему о скриптах по наценке, вроде все делал как написано но наценивание не происходит.
Есть определенные цифры по наценке от приходной цены (приход и расход у меня в уе)
при приходной цене до 20уе наценка 25%
                                        от 20 до 30 наценка 20%
                                        от 30 до 100 наценка 15%
                                        от 100 до 1000 наценка 10%
Спасибо.

Creat


Vitaly_Gl

Эту ветку я прочитал и пробовал но наценка не идет ...

admin

Цитата: Vitaly_Gl від Березень 01, 2013, 09:46:13
Эту ветку я прочитал и пробовал но наценка не идет ...

Что именно вы пробовали и запускали?

Vitaly_Gl

Делал 2 файла 999, закидывал их по инструкции. Делал bat файл для запуска программы.

Vitaly_Gl

ALTER PROCEDURE usr_tovar_nacenka
AS
DECLARE VARIABLE v_tovar_id INTEGER;
DECLARE VARIABLE v_cena DOUBLE PRECISION;
DECLARE VARIABLE v_cena_r DOUBLE PRECISION;
DECLARE VARIABLE v_cena_o DOUBLE PRECISION;
DECLARE VARIABLE v_cena_1 DOUBLE PRECISION;
DECLARE VARIABLE v_cena_2 DOUBLE PRECISION;
BEGIN
  FOR
    SELECT
      num,
      cena,
      cena_r,
      cena_o,
      cena_1,
      cena_2
    FROM
      tovar_name
    WHERE
      visible = 1
    INTO
      :v_tovar_id,
      :v_cena,
      :v_cena_r,
      :v_cena_o,
      :v_cena_1,
      :v_cena_2
  DO
  BEGIN
      IF (:v_cena <= 20) THEN
    BEGIN
      UPDATE tovar_name SET cena_r = cena * 1.25 WHERE num = :v_tovar_id AND cena_curr_id = cena_out_curr_id; 
    END
    ELSE
    IF (:v_cena > 20 AND :v_cena <= 30) THEN
    BEGIN
      UPDATE tovar_name SET cena_r = cena * 1.2 WHERE num = :v_tovar_id  AND cena_curr_id = cena_out_curr_id; 
    END
    ELSE
    IF (:v_cena > 30 AND :v_cena <= 100) THEN
    BEGIN
      UPDATE tovar_name SET cena_r = cena * 1.15 WHERE num = :v_tovar_id  AND cena_curr_id = cena_out_curr_id; 
    END
    ELSE
    IF (:v_cena > 100 AND :v_cena <= 1000) THEN
    BEGIN
      UPDATE tovar_name SET cena_r = cena * 1.1 WHERE num = :v_tovar_id  AND cena_curr_id = cena_out_curr_id; 
    END
  END
END;

COMMIT

это то что прописывал в один из файлов

Vitaly_Gl

один из файлов 999 из папки /db/patch/ после запуска исчезает.

admin

Выше вы создали процедуру наценки, а выполняли ее как? Выполнять ее надо как описано в п.3 в ссылке ниже.

Сейчас можно не создавать процедуру через файл, а напрямую создавать в меню Опции : SQL менеджер, как указано тут:
http://www.softbalance.com.ua/forum/index.php/topic,461.msg3162.html#msg3162


Vitaly_Gl

Так тоже делал-наценка не происходит. Так процедура выполнялась вроде при запуске второго файла 999 по пути db/patch_ok

admin

Цитата: Vitaly_Gl від Березень 01, 2013, 10:29:05
Так процедура выполнялась вроде при запуске второго

Нет, вы ее только создали, а запускается она п.3 как описали выше, это для того чтобы вы ее раз сделали, а запускали в любой момент.

admin

А у вас валюта расхода и прихода в справочнике товаров точно одинаковые?

Vitaly_Gl

У меня приходы и расходы в уе

Vitaly_Gl

Можна по пунктам расписать что надо сделать?

admin

Цитата: Vitaly_Gl від Березень 01, 2013, 15:41:06
У меня приходы и расходы в уе

Валюта одинаковая?

Цитата: Vitaly_Gl від Березень 01, 2013, 15:41:25
Можна по пунктам расписать что надо сделать?

Вот тут все по пунктам:
http://www.softbalance.com.ua/forum/index.php/topic,461.msg3162.html#msg3162
более ничего не надо делать.

admin

Начните с простого, не делайте куча условий, сделайте одно условие на одну наценку.