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

Наши программы => УкрСклад => Тема розпочата: Віктор від Січень 05, 2023, 16:28:54

Назва: Скрипт наценка
Відправлено: Віктор від Січень 05, 2023, 16:28:54
   IF(grupa_id_in = 1005) THEN
   BEGIN
     -- наценка 100% на розницу если цена прихода от 0грн до 60 грн округлення до 1 знаку після коми.
   IF (cena_in < 60) THEN
     cena_r_out = ROUND(cena_in *2, 1);
   END
   ELSE
     -- наценка 80% на розницу если цена прихода от 60 грн до 100 грн округлення до 1 знаку після коми.
   IF (cena_in >=60 AND cena_in < 100) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.8, 1);
   END
   ELSE
     -- наценка 70% на розницу если цена прихода от 100 грн до 120 грн округлення до 1 знаку після коми.
   IF (cena_in >= 100 AND cena_in < 120) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.7, 1);
   END
   ELSE   
     -- наценка 62% на розницу если цена прихода от 120 грн округлення до 1 знаку після коми.
   IF (cena_in >= 120) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.62, 1);
   END
   ELSE
   IF(grupa_id_in = 1052) THEN
     -- наценка 100% на розницу если цена прихода от 0грн до 60 грн округлення до 1 знаку після коми.
   IF (cena_in < 60) THEN
   BEGIN
     cena_r_out = ROUND(cena_in *2, 1);
   END
   ELSE
     -- наценка 80% на розницу если цена прихода от 60 грн до 100 грн округлення до 1 знаку після коми.
   IF (cena_in >=60 AND cena_in < 100) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.8, 1);
   END
   ELSE
     -- наценка 70% на розницу если цена прихода от 100 грн до 120 грн округлення до 1 знаку після коми.
   IF (cena_in >= 100 AND cena_in < 120) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.7, 1);
   END
   ELSE   
     -- наценка 62% на розницу если цена прихода от 120 грн округлення до 1 знаку після коми.
   IF (cena_in >= 120) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.62, 1);
   END
--------------
Де тут ошибка
Назва: Re: Скрипт наценка
Відправлено: Віктор від Січень 05, 2023, 16:30:03
тут не работает наценка на    IF(grupa_id_in = 1052) THEN
И вторая END не выставляется..
Назва: Re: Скрипт наценка
Відправлено: molotokk від Січень 05, 2023, 23:24:37
 ELSE
   IF(grupa_id_in = 1052) THEN
     -- наценка 100% на розницу если цена прихода от 0грн до 60 грн округлення до 1 знаку після коми.
   IF (cena_in < 60) THEN
   BEGIN
     cena_r_out = ROUND(cena_in *2, 1);

а "BEGIN" хіба там має бути?
або "THEN" верхній??
Назва: Re: Скрипт наценка
Відправлено: AGSoft від Січень 06, 2023, 22:39:06
Цитата: Віктор від Січень 05, 2023, 16:30:03
тут не работает наценка на    IF(grupa_id_in = 1052) THEN
И вторая END не выставляется..

Не знаю как в отчете, но во многих других языках для сравнения с определенным числом используется символ двойного равно
IF(grupa_id_in == 1052) THEN ...
Попробуйте такой вариант
Назва: Re: Скрипт наценка
Відправлено: molotokk від Січень 07, 2023, 00:22:15
Цитата: AGSoft від Січень 06, 2023, 22:39:06
Цитата: Віктор від Січень 05, 2023, 16:30:03
тут не работает наценка на    IF(grupa_id_in = 1052) THEN
И вторая END не выставляется..

Не знаю как в отчете, но во многих других языках для сравнения с определенным числом используется символ двойного равно
IF(grupa_id_in == 1052) THEN ...
Попробуйте такой вариант

ні, тут без подвоєння має бути
Назва: Re: Скрипт наценка
Відправлено: admin від Січень 09, 2023, 10:26:45
Одне з головних правил - це кількість BEGIN має дорівнювати кількості END. Також форматуйте свій код, робіть відступи, так буде зрозуміліше:
IF(grupa_id_in = 1005) THEN
BEGIN
    -- наценка 100% на розницу если цена прихода от 0грн до 60 грн округлення до 1 знаку після коми.
    IF (cena_in < 60) THEN
    BEGIN     
        cena_r_out = ROUND(cena_in *2, 1);
    END
    ELSE
     -- наценка 80% на розницу если цена прихода от 60 грн до 100 грн округлення до 1 знаку після коми.
    IF (cena_in >=60 AND cena_in < 100) THEN
    BEGIN
        cena_r_out = ROUND(cena_in * 1.8, 1);
    END
END

Назва: Re: Скрипт наценка
Відправлено: Віктор від Січень 13, 2023, 20:27:41
 IF(grupa_id_in = 1005) THEN
   BEGIN
     - націнка 100% на роздріб якщо ціна приходу від 0грн до 60 грн округлення до 1 знаку після комі.
   IF (cena_in < 60) THEN
     cena_r_out = ROUND (cena_in * 2, 1);
   END
   ELSE
     -- націнка 80% на роздріб, якщо ціна приходу від 60 грн до 100 грн округлення до 1 знаку після комі.
   IF (cena_in >=60 AND cena_in < 100) THEN
   BEGIN
     cena_r_out = ROUND(cena_in * 1.8, 1);
   END
   ELSE
     -- націнка 70% на роздріб, якщо ціна приходу від 1 ..... І ТАК ДАЛІ...
Як що багато таких груп, з різними націнками, то чомусь націнка  припадає на першу націнку ( націнка 100% ) а націнка ( націнка 80% ) яка далі в строчці не працює, і далі націнює 100 проц. і не реагує на ЦІНУ ПРИХОДУ
Назва: Re: Скрипт наценка
Відправлено: Віктор від Січень 13, 2023, 20:32:19
Цитата: admin від Січень 09, 2023, 10:26:45
Одне з головних правил - це кількість BEGIN має дорівнювати кількості END. Також форматуйте свій код, робіть відступи, так буде зрозуміліше:
IF(grupa_id_in = 1005) THEN
BEGIN
    -- наценка 100% на розницу если цена прихода от 0грн до 60 грн округлення до 1 знаку після коми.
    IF (cena_in < 60) THEN
    BEGIN     
        cena_r_out = ROUND(cena_in *2, 1);
    END
    ELSE
     -- наценка 80% на розницу если цена прихода от 60 грн до 100 грн округлення до 1 знаку після коми.
    IF (cena_in >=60 AND cena_in < 100) THEN
    BEGIN
        cena_r_out = ROUND(cena_in * 1.8, 1);
    END
END


=======В мене багато ID груп.. і чомусь тоді націнка тільки на першу вимогу тобто 100% .. а далі 80% не реагує, як що ціна більше 60. і все рівно націнює 100 відсотків/
Назва: Re: Скрипт наценка
Відправлено: Віктор від Січень 14, 2023, 10:22:15
Дякую.. помилку знайшов.. сам :)
Назва: Re: Скрипт наценка
Відправлено: molotokk від Січень 14, 2023, 12:02:29
Цитата: Віктор від Січень 14, 2023, 10:22:15
Дякую.. помилку знайшов.. сам :)
МОгли б розказати яка, для інших буде корисно =)