Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 8.85 KB | None | 0 0
  1. WITH CUOTAS AS
  2. (
  3. SELECT B.PO_REF AS S_SEM_CODIGO,
  4. A.BILL_TO_CUST_ID AS S_ALU_CODIGO,
  5. A.INVOICE AS S_CUO_INVOICE,
  6. Y.ENTRY_TYPE AS ENTRY_TYPE,
  7. Y.ENTRY_REASON AS ENTRY_REASON,
  8. A.BILL_STATUS AS S_CUO_INVOICE_STATUS,
  9. A.INVOICE_AMOUNT AS N_CUO_INVOICE_AMOUNT,
  10. A.INVOICE_DT AS D_CUO_FECHA_EMISION,
  11. CASE WHEN (A.PYMNT_TERMS_CD = 00000)
  12.     THEN  TO_CHAR(A.DUE_DT,'YYYY-MM-DD')  
  13.     ELSE  TO_CHAR(F.DUE_DT,'YYYY-MM-DD')  
  14. END AS D_CUO_FECHA_VENCIMIENTO,
  15. CASE WHEN D.ITEM_STATUS = 'C' THEN NVL(PY.PAYMENT_DT,Y.ACCOUNTING_DT) ELSE NULL END AS D_CUO_FECHA_PAGO,
  16. PY.PAYMENT_METHOD_CDR AS S_CUO_TIPO_PAGO,
  17. B.LINE_SEQ_NUM AS N_CUO_SEQ_LINEA,
  18. B.DESCR AS S_CUO_CONCEPTO,
  19. AVG(B.NET_EXTENDED_AMT) AS N_CUO_MONTO_LINEA,
  20. D.BAL_AMT AS N_CUO_BALANCE,
  21. CASE WHEN C.INSTALL_NBR IS NULL
  22.   THEN 0
  23.   ELSE C.INSTALL_NBR
  24. END AS N_CUO_CUOTA
  25. FROM PS_BI_HDR A
  26. LEFT JOIN PS_BI_LINE B ON A.BUSINESS_UNIT = B.BUSINESS_UNIT AND A.INVOICE = B.INVOICE
  27. LEFT JOIN PS_ITEM_ACTIVITY Y ON B.INVOICE = Y.ITEM AND Y.ITEM_SEQ_NUM = (SELECT MAX(Y_MAX.ITEM_SEQ_NUM)
  28.                                                                           FROM PS_ITEM_ACTIVITY Y_MAX
  29.                                                                           WHERE Y_MAX.ITEM = Y.ITEM)
  30. LEFT JOIN PS_BI_INSTALL_SCHE C ON A.BUSINESS_UNIT = C.BUSINESS_UNIT AND A.INVOICE = C.GENERATED_INVOICE
  31. LEFT JOIN PS_ITEM D ON A.BUSINESS_UNIT = D.BUSINESS_UNIT AND A.INVOICE = D.INVOICE
  32. LEFT JOIN PS_PAY_TRMS_NET E ON E.PYMNT_TERMS_CD = A.PYMNT_TERMS_CD AND E.EFFDT = (SELECT MAX(E_ED.EFFDT)
  33.                                                                                   FROM PS_PAY_TRMS_NET E_ED
  34.                                                                                   WHERE E.SETID = E_ED.SETID
  35.                                                                                   AND E.PYMNT_TERMS_CD = E_ED.PYMNT_TERMS_CD
  36.                                                                                   AND E_ED.EFFDT <= SYSDATE)
  37. LEFT JOIN PS_BI_LINE_NOTE G ON A.BUSINESS_UNIT = G.BUSINESS_UNIT AND A.INVOICE = CASE WHEN SUBSTR(G.TEXT254,1,17) = 'ORIGINAL_INVOICE:'
  38.                                                                                     THEN SUBSTR(G.TEXT254,19,11)
  39.                                                                                     ELSE ' '
  40.                                                                                  END
  41. LEFT JOIN PS_BI_HDR H ON G.BUSINESS_UNIT = H.BUSINESS_UNIT AND G.INVOICE = H.INVOICE
  42. LEFT JOIN PS_BI_LINE_NOTE I ON A.BUSINESS_UNIT = I.BUSINESS_UNIT AND A.INVOICE = I.INVOICE AND B.LINE_SEQ_NUM = I.LINE_SEQ_NUM
  43. LEFT JOIN PS_PAY_TRMS_TIME F ON E.SETID = F.SETID AND F.PAY_TRMS_TIME_ID = E.PAY_TRMS_TIME_ID
  44. LEFT JOIN (SELECT PC.INVOICE, PD.PAYMENT_DT, PD.PAYMENT_METHOD_CDR
  45.             FROM PS_LI_GBL_ARPY_REF PC
  46.             INNER JOIN PS_LI_GBL_ARPY_DTL PD ON PC.PYMNT_REF_ID = PD.PYMNT_REF_ID AND PC.DEPOSIT_BU = PD.DEPOSIT_BU
  47.             WHERE PC.DEPOSIT_BU = 'PER03'
  48. ) PY ON A.INVOICE = PY.INVOICE  
  49. WHERE
  50. /*B.DESCR NOT LIKE '%Mat%'
  51. AND*/ A.BILL_TYPE_ID IN ('B1','F1')
  52. AND A.BILL_STATUS NOT IN ('CAN','HLD','RDY')
  53. AND B.DESCR NOT LIKE '%ADELANT%'
  54. --AND (H.BILL_TYPE_ID = 'D1' OR H.BILL_TYPE_ID = 'D2' OR H.BILL_TYPE_ID IS NULL OR H.BILL_TYPE_ID = '''''')
  55. AND A.INVOICE NOT LIKE 'DUP%'
  56. AND A.INVOICE NOT LIKE 'GAP%'
  57. AND CASE WHEN  I.TEXT254 IS NULL OR  I.TEXT254 = '' OR  I.TEXT254 = ' '
  58.     THEN 'A'
  59.     ELSE (CASE WHEN SUBSTR(I.TEXT254,32,1) IS NULL OR SUBSTR(I.TEXT254,32,1) = '' OR SUBSTR(I.TEXT254,32,1) = ' '
  60.             THEN 'A'
  61.             ELSE (SUBSTR(I.TEXT254,32,1)) END)
  62.           END <> 'M'
  63. AND EXISTS (SELECT 1
  64.             FROM LOE_STVTERM TRM
  65.             WHERE TRM.STVTERM_CODE = B.PO_REF
  66.             AND SUBSTR(TRM.STVTERM_CODE,4,1) IN (4,5)
  67.             AND SYSDATE BETWEEN STVTERM_START_DATE AND STVTERM_END_DATE)
  68. --AND A.BILL_TO_CUST_ID = 'N00009718'
  69. GROUP BY B.PO_REF, A.BILL_TO_CUST_ID, A.INVOICE,Y.ENTRY_TYPE,Y.ENTRY_REASON, A.BILL_STATUS, A.INVOICE_AMOUNT, A.INVOICE_DT,
  70. CASE WHEN (A.PYMNT_TERMS_CD = 00000)
  71.   THEN TO_CHAR(A.DUE_DT,'YYYY-MM-DD')  
  72.   ELSE TO_CHAR(F.DUE_DT,'YYYY-MM-DD')  
  73. END,
  74. D.ITEM_STATUS,
  75. PY.PAYMENT_METHOD_CDR,
  76. PY.PAYMENT_DT,
  77. Y.ACCOUNTING_DT,
  78. B.LINE_SEQ_NUM, B.DESCR, D.BAL_AMT,
  79. CASE WHEN C.INSTALL_NBR IS NULL
  80.   THEN 0
  81.   ELSE C.INSTALL_NBR
  82. END
  83. )
  84.  
  85.  
  86. SELECT pension.S_SEM_CODIGO,
  87. pension.S_ALU_CODIGO,
  88. pension.S_CUO_INVOICE,
  89. pension.ENTRY_TYPE,
  90. pension.ENTRY_REASON,
  91. pension.N_CUO_INVOICE_AMOUNT,
  92. pension.D_CUO_FECHA_EMISION,
  93. pension.D_CUO_FECHA_VENCIMIENTO,
  94. pension.D_CUO_FECHA_PAGO,
  95. pension.S_CUO_TIPO_PAGO,
  96. pension.N_CUO_CUOTA,
  97. (CASE WHEN pension.N_CUO_CUOTA = 0 THEN (CASE WHEN UPPER(S_CUO_CONCEPTO) LIKE '%MATRICULA%' THEN 'MATRICULA' ELSE 'CUOTA INICIAL' END) ELSE 'CUOTA ' || pension.N_CUO_CUOTA END) AS S_CUO_CONCEPTO,
  98. pension.MONTO AS N_CUO_MONTO,
  99. NVL(dscto.MONTO,0) AS N_CUO_DESCUENTO,
  100. NVL(beca.MONTO,0) AS N_CUO_BECA,
  101. CASE WHEN pension.N_CUO_BALANCE IS NULL OR pension.N_CUO_BALANCE > 0 THEN (pension.MONTO + NVL(dscto.MONTO,0) + NVL(beca.MONTO,0)) ELSE pension.N_CUO_BALANCE END AS N_CUO_SALDO
  102. FROM
  103. (
  104.   SELECT S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE, ENTRY_TYPE , ENTRY_REASON ,  N_CUO_INVOICE_AMOUNT, N_CUO_BALANCE, D_CUO_FECHA_EMISION, D_CUO_FECHA_VENCIMIENTO, D_CUO_FECHA_PAGO, S_CUO_TIPO_PAGO, N_CUO_CUOTA, S_CUO_CONCEPTO, SUM(N_CUO_MONTO_LINEA) AS MONTO
  105.   FROM CUOTAS
  106.   WHERE UPPER(S_CUO_CONCEPTO) LIKE '%ARANCEL%' OR UPPER(S_CUO_CONCEPTO) LIKE '%CUOTA%INI%' OR UPPER(S_CUO_CONCEPTO) LIKE '%CUOTA%1%' OR UPPER(S_CUO_CONCEPTO) LIKE '%MATRI%'
  107.   GROUP BY S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE, ENTRY_TYPE , ENTRY_REASON , N_CUO_INVOICE_AMOUNT, N_CUO_BALANCE, D_CUO_FECHA_EMISION, D_CUO_FECHA_VENCIMIENTO, D_CUO_FECHA_PAGO, S_CUO_TIPO_PAGO, N_CUO_CUOTA, S_CUO_CONCEPTO
  108. ) pension
  109. left join (
  110.   SELECT S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE, SUM(N_CUO_MONTO_LINEA) AS MONTO
  111.   FROM CUOTAS
  112.   WHERE UPPER(S_CUO_CONCEPTO) LIKE '%DESCUENTO%'
  113.   GROUP BY S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE
  114. ) dscto ON pension.S_SEM_CODIGO = dscto.S_SEM_CODIGO AND pension.S_ALU_CODIGO = dscto.S_ALU_CODIGO AND pension.S_CUO_INVOICE = dscto.S_CUO_INVOICE
  115. left join (
  116.   SELECT S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE, SUM(N_CUO_MONTO_LINEA) AS MONTO
  117.   FROM CUOTAS
  118.   WHERE UPPER(S_CUO_CONCEPTO) LIKE '%BECA%'
  119.   GROUP BY S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE
  120. ) beca ON pension.S_SEM_CODIGO = beca.S_SEM_CODIGO AND pension.S_ALU_CODIGO = beca.S_ALU_CODIGO AND pension.S_CUO_INVOICE = beca.S_CUO_INVOICE
  121.  
  122.  
  123. UNION
  124.  
  125. SELECT rept2.S_SEM_CODIGO,
  126. rept2.S_ALU_CODIGO,
  127. rept2.S_CUO_INVOICE,
  128. rept2.ENTRY_TYPE ,
  129. rept2.ENTRY_REASON ,
  130. rept2.N_CUO_INVOICE_AMOUNT,
  131. rept2.D_CUO_FECHA_EMISION,
  132. rept2.D_CUO_FECHA_VENCIMIENTO,
  133. rept2.D_CUO_FECHA_PAGO,
  134. rept2.S_CUO_TIPO_PAGO,
  135. rept2.N_CUO_CUOTA,
  136. ' CUOTA ' || rept2.N_CUO_CUOTA || ' ' || REPLACE(REPLACE(UPPER(rept2.S_CUO_CONCEPTO),'CURSOS POR','PENALIDAD POR'),'CUOTA POR','PENALIDAD POR') AS S_CUO_CONCEPTO,
  137. rept2.MONTO AS N_CUO_MONTO,
  138. 0 AS N_CUO_DESCUENTO,
  139. 0 AS N_CUO_BECA,
  140. CASE WHEN rept2.N_CUO_BALANCE IS NULL OR rept2.N_CUO_BALANCE > 0 THEN rept2.MONTO ELSE rept2.N_CUO_BALANCE END
  141. FROM
  142. (
  143.   SELECT S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE, ENTRY_TYPE , ENTRY_REASON , N_CUO_INVOICE_AMOUNT, N_CUO_BALANCE, D_CUO_FECHA_EMISION, D_CUO_FECHA_VENCIMIENTO, D_CUO_FECHA_PAGO, S_CUO_TIPO_PAGO, N_CUO_CUOTA, SUBSTR(S_CUO_CONCEPTO,1,14) S_CUO_CONCEPTO, SUM(N_CUO_MONTO_LINEA) AS MONTO
  144.   FROM CUOTAS
  145.   WHERE UPPER(S_CUO_CONCEPTO) LIKE '%2DA%'
  146.   GROUP BY S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE, ENTRY_TYPE , ENTRY_REASON , N_CUO_INVOICE_AMOUNT, N_CUO_BALANCE, D_CUO_FECHA_EMISION, D_CUO_FECHA_VENCIMIENTO, D_CUO_FECHA_PAGO, S_CUO_TIPO_PAGO, N_CUO_CUOTA, SUBSTR(S_CUO_CONCEPTO,1,14)
  147. ) rept2
  148.  
  149. UNION
  150.  
  151. SELECT rept3.S_SEM_CODIGO,
  152. rept3.S_ALU_CODIGO,
  153. rept3.S_CUO_INVOICE,
  154. rept3.ENTRY_TYPE ,
  155. rept3.ENTRY_REASON ,
  156. rept3.N_CUO_INVOICE_AMOUNT,
  157. rept3.D_CUO_FECHA_EMISION,
  158. rept3.D_CUO_FECHA_VENCIMIENTO,
  159. rept3.D_CUO_FECHA_PAGO,
  160. rept3.S_CUO_TIPO_PAGO,
  161. rept3.N_CUO_CUOTA,
  162. ' CUOTA ' || rept3.N_CUO_CUOTA || ' ' || REPLACE(REPLACE(UPPER(rept3.S_CUO_CONCEPTO),'CURSOS POR','PENALIDAD POR'),'CUOTA POR','PENALIDAD POR') AS S_CUO_CONCEPTO,
  163. rept3.MONTO AS N_CUO_MONTO,
  164. 0 AS N_CUO_DESCUENTO,
  165. 0 AS N_CUO_BECA,  
  166. CASE WHEN rept3.N_CUO_BALANCE IS NULL OR rept3.N_CUO_BALANCE > 0 THEN rept3.MONTO ELSE rept3.N_CUO_BALANCE END
  167. FROM
  168. (
  169.   SELECT S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE,ENTRY_TYPE , ENTRY_REASON , N_CUO_INVOICE_AMOUNT, N_CUO_BALANCE, D_CUO_FECHA_EMISION, D_CUO_FECHA_VENCIMIENTO, D_CUO_FECHA_PAGO, S_CUO_TIPO_PAGO, N_CUO_CUOTA, SUBSTR(S_CUO_CONCEPTO,1,14) S_CUO_CONCEPTO, SUM(N_CUO_MONTO_LINEA) AS MONTO
  170.   FROM CUOTAS
  171.   WHERE UPPER(S_CUO_CONCEPTO) LIKE '%3RA%'
  172.   GROUP BY S_SEM_CODIGO, S_ALU_CODIGO, S_CUO_INVOICE,ENTRY_TYPE , ENTRY_REASON , N_CUO_INVOICE_AMOUNT, N_CUO_BALANCE, D_CUO_FECHA_EMISION, D_CUO_FECHA_VENCIMIENTO, D_CUO_FECHA_PAGO, S_CUO_TIPO_PAGO, N_CUO_CUOTA, SUBSTR(S_CUO_CONCEPTO,1,14)
  173.  
  174. ) rept3
  175. ORDER BY 1,2,3,6;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement