Advertisement
Valik888

Untitled

Jan 29th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.81 KB | None | 0 0
  1. -- THIRD                      
  2.     -- Реструтуризации либо не должно быть вообще,
  3.     -- либо сроки  реструктуризации должны соблюдаться
  4.     IF isconditionspass = TRUE THEN
  5.                 isrestruct := TRUE;
  6.                 FOR balance IN (
  7.                     SELECT
  8.                     *
  9.                     FROM n_balances b
  10.                     WHERE     b.account_id = given_id
  11.                         AND   b.DATA       = given_month
  12.                         AND   service_id   BETWEEN 900 AND 999
  13.                 ) LOOP
  14.                    
  15.                     factsaldo := balance.summ;
  16.                    
  17.                     BEGIN
  18.                         SELECT
  19.                         NVL(RSlist.SUMMA, 0) INTO calcSaldo
  20.                         FROM
  21.                         n_restructuring_service_list RSlist
  22.                         JOIN n_restructuring_service rs ON rs.ID = rslist.n_restructuring_service_id
  23.                         WHERE rs.account_id        = given_id
  24.                             AND   rslist.DATA      = given_month
  25.                             AND   rs.service_id_in = balance.service_id;   
  26.                     EXCEPTION WHEN NO_DATA_FOUND THEN
  27.                         calcsaldo := 0;
  28.                     END;
  29.                     isResructPlanPass := factsaldo <= calcsaldo;
  30.                     DBMS_OUTPUT.put_line('####REST '||factsaldo||' '||calcsaldo);
  31.                 END LOOP;
  32.  
  33.         IF isrestruct = FALSE THEN
  34.             DBMS_OUTPUT.put_line('[ok]никакой реструкторизации');
  35.         ELSE
  36.             IF isResructPlanPass THEN
  37.                 DBMS_OUTPUT.put_line('[ok]реструктуризация, factsaldo <= calcsaldo '||factsaldo||' <= '|| calcsaldo);
  38.             ELSE
  39.                 DBMS_OUTPUT.put_line('[BREAK]реструктуризация, factsaldo > calcsaldo '||factsaldo||' > '||calcsaldo);
  40.                 isConditionsPass :=FALSE;
  41.             END IF;
  42.         END IF;
  43.     END IF;
  44.    
  45.     -- FOUR
  46.     -- Проверяем оплату до 20 числа прошлого месяца
  47.     IF isConditionsPass = TRUE THEN
  48.         SELECT NVL(SUM(p.summ),0) INTO saldo FROM n_payments p
  49.         WHERE   p.account_id  = given_id
  50.             AND p.service_id  = 100
  51.             AND (p.vid = 1 OR p.vid = 9)
  52.             AND TRUNC(p.DATA, 'mm') = given_month               -- (текущий - 1) месяц
  53.             AND EXTRACT(DAY FROM  p.DATA) <= 20;                -- берём отплаты до 20го числа включительно
  54.            
  55.         SELECT NVL(SUM(nb.summ), 0) INTO payment FROM n_balances nb
  56.         WHERE   nb.account_id = given_id
  57.             AND nb.service_id BETWEEN 101 AND 126
  58.             AND TRUNC(nb.DATA,'mm') = previous_month;  
  59.            
  60.         SELECT NVL(SUM(na.summ), 0) INTO tmp FROM n_accruals na
  61.         WHERE   na.account_id = given_id
  62.             AND TRUNC(na.DATA,'mm') = given_month
  63.             AND na.service_id = 100
  64.             AND na.summ      <= 0;
  65.        
  66.         IF ((payment+tmp) - saldo) <= 0 THEN
  67.             DBMS_OUTPUT.put_line('[ok]разница платежа и сальдо <= 0! ('||payment||'+('||tmp||') - '||saldo||'='||((payment+tmp) - saldo)||')');
  68.         ELSE
  69.             DBMS_OUTPUT.put_line('[BREAK]разница платежа и сальдо > 0! ('||payment||'+('||tmp||') - '||saldo||'='||((payment+tmp) - saldo)||')');
  70.             isConditionsPass := FALSE;
  71.         END IF;
  72.     END IF;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement