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

Скрипт наценка

Автор Віктор, Січень 05, 2023, 16:28:54

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

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

Віктор

   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
--------------
Де тут ошибка

Віктор

тут не работает наценка на    IF(grupa_id_in = 1052) THEN
И вторая END не выставляется..

molotokk

 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" верхній??
підбір та продаж обладнання для торгівлі, допомога в налаштуваннях програми ⇒ "komfort-m.com" ⇒ "t.me/komfortmservice" ⇒ ✆ 097-873-59-01

AGSoft

Цитата: Віктор від Січень 05, 2023, 16:30:03
тут не работает наценка на    IF(grupa_id_in = 1052) THEN
И вторая END не выставляется..

Не знаю как в отчете, но во многих других языках для сравнения с определенным числом используется символ двойного равно
IF(grupa_id_in == 1052) THEN ...
Попробуйте такой вариант
Автоматизація бізнесу заощаджує ваш час. Я знаю, як це зробити.    ✆ +38 050 669 18 76 (viber, telegram)    ✆ +38 098 970 970 1

molotokk

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

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

ні, тут без подвоєння має бути
підбір та продаж обладнання для торгівлі, допомога в налаштуваннях програми ⇒ "komfort-m.com" ⇒ "t.me/komfortmservice" ⇒ ✆ 097-873-59-01

admin

Одне з головних правил - це кількість 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


Віктор

 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 проц. і не реагує на ЦІНУ ПРИХОДУ

Віктор

Цитата: 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 відсотків/

Віктор

Дякую.. помилку знайшов.. сам :)

molotokk

Цитата: Віктор від Січень 14, 2023, 10:22:15
Дякую.. помилку знайшов.. сам :)
МОгли б розказати яка, для інших буде корисно =)
підбір та продаж обладнання для торгівлі, допомога в налаштуваннях програми ⇒ "komfort-m.com" ⇒ "t.me/komfortmservice" ⇒ ✆ 097-873-59-01