Advertisement
Valik888

Untitled

Jan 12th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.52 KB | None | 0 0
  1.     -- THIRD                       n_accountservice
  2.     FOR service_ IN (SELECT * FROM n_balances        n WHERE n.account_id = given_id ) LOOP
  3.         IF service_.service_id = 901 OR service_.service_id = 902 THEN
  4.             isrestruct := TRUE;
  5.             SELECT
  6.                 NVL(SUM(b.summ), 0) INTO factsaldo
  7.                 FROM
  8.                 n_balances b
  9.                 WHERE b.account_id = given_id
  10.                 AND   b.DATA = ADD_MONTHS(TRUNC(given_month,'mm'),-1);
  11.             SELECT
  12.                 NVL(SUM(rservice.summa_pay), 0) INTO calcSaldo
  13.                 FROM
  14.                 n_restructuring_service rservice
  15.                 WHERE rservice.account_id = given_id
  16.                     AND rservice.DATE_END >= ADD_MONTHS(TRUNC(given_month,'mm'),-1);
  17.  
  18. --              dbms_output.put_line('factsaldo '||factsaldo||', calcSaldo '||calcSaldo);
  19.         END IF;
  20.     END LOOP;
  21.         IF isrestruct = FALSE THEN
  22.             DBMS_OUTPUT.put_line('[ok]никакой реструкторизации');
  23.         ELSE
  24.             IF calcsaldo <= factsaldo THEN
  25.                 DBMS_OUTPUT.put_line('[ok]реструктуризация, n_balances <= factsaldo '||calcsaldo||' <= '||factsaldo);
  26.             ELSE
  27.                 DBMS_OUTPUT.put_line('[BREAK]реструктуризация, calcsaldo > factsaldo '||calcsaldo||' > '||factsaldo);
  28.             END IF;
  29.         END IF;
  30.     -- FOUR Проверяем оплату до 20 числа прошлого месяца
  31.         SELECT NVL(SUM(p.summ),0) INTO saldo FROM n_payments p
  32.         WHERE   p.account_id = given_id
  33.             AND p.service_id  =100
  34.             AND (p.vid = 1 OR p.vid = 9)
  35.             AND TRUNC(p.DATA, 'mm') = TRUNC(given_month, 'mm')  -- текущий -1 месяц
  36.             AND EXTRACT(DAY FROM  p.DATA) <= 20;                -- берём отплаты до 20го числа включительно
  37.            
  38.         SELECT NVL(SUM(nb.summ), 0) INTO payment FROM n_balances nb
  39.         WHERE nb.account_id = given_id
  40.             AND nb.service_id BETWEEN 101 AND 126
  41.             AND TRUNC(nb.DATA,'mm') = ADD_MONTHS(TRUNC(given_month,'mm'), -1);
  42.         IF (payment - saldo) <= 0 THEN
  43.             DBMS_OUTPUT.put_line('[ok]разница платежа и сальдо <= 0! ('||payment||' - '||saldo||'='||(payment-saldo)||')');
  44.         ELSE
  45.             DBMS_OUTPUT.put_line('[BREAK]разница платежа и сальдо > 0! ('||payment||' - '||saldo||'='||(payment-saldo)||')');
  46.         END IF;
  47.  
  48. END ten_percent_sale;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement