Advertisement
liam_dao

4270

Feb 17th, 2022
5,354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 15.94 KB | None | 0 0
  1. WITH INV_TB AS
  2. (SELECT INV.INVOICE_STATUS, INV.SOURCE_VOUCHER_NO,INV.INVOICE_NO,INV.AGE_DATE,INV.TOTAL_PRE_TAX_AMT,INV.TOTAL_SALES_TAX_HOME_AMT,INV.TOTAL_AFTER_TAX_HOME_AMT,INV.SUPPLIER_INVOICE_NO,INV.SUPPLIER_INVOICE_DATE,INV.INVOICE_TYPE,INV.TOTAL_CERT_AMT,INV.TOTAL_AFTER_TAX_AMT,INV.TOTAL_CERT_HOME_AMT,INV.AR_INVOICE_NO,INV.ADV_PAYMENT_ADD_ON,INV.ADV_PAYMENT_TO_REC,INV.CREDIT_NOTE_NO,CRN.AGE_DATE AS CRN_AGE_DATE,RETENTION_AMT
  3.     FROM PJ_AP_INV_HST_HDR INV
  4.     LEFT JOIN AP_CRN_HST_HDR CRN ON CRN.CREDIT_NOTE_NO = INV.CREDIT_NOTE_NO
  5.     WHERE 1=1
  6. )
  7. ,PJ_SUB_CON_HDR_REV AS
  8. (
  9. SELECT
  10. SUB_CON_CONTRACT_NO,
  11. SUB_CON_CODE,
  12. PROJECT_NO,
  13. SUBJECT,
  14. CLOSED_DATETIME,
  15. TOTAL_AMOUNT_HOME,
  16. TOTAL_AMOUNT,
  17. TOTAL_ORIGINAL_HOME_AMT,
  18. TOTAL_VO_HOME_AMT,
  19. TOTAL_VO_AMT,
  20. OMISSION_AMT,
  21. OMISSION_HOME_AMT,
  22. DIFF_RET_PER_BY_LINE_ITM,
  23. CASE WHEN CLOSED_DATETIME > CAST($P{AS_AT_DATE} AS DATE) THEN 'O'
  24. ELSE STATUS
  25. END AS STATUS,
  26. CURRENCY_CODE,
  27. TOTAL_ORIGINAL_AMT,
  28. RETENTION_PERCENT,
  29. MAX_RETENTION_AMOUNT
  30. FROM PJ_SUB_CON_HDR HDR
  31. WHERE HDR.STATUS <> 'D'
  32. AND ((($P{CONTRACT_STATUS} = 'O' OR $P{CONTRACT_STATUS} = 'B')  AND (HDR.STATUS ='O'  OR (HDR.STATUS = 'H' AND HDR.CLOSED_DATETIME > CAST($P{AS_AT_DATE} AS DATE) AND (HDR.VARIATION_DATE IS NULL OR HDR.VARIATION_DATE <=CAST($P{AS_AT_DATE} AS DATE)) ) )) OR (($P{CONTRACT_STATUS} = 'C'  OR $P{CONTRACT_STATUS} = 'B') AND ((HDR.STATUS = 'H' AND CAST($P{AS_AT_DATE} AS DATE) IS NULL) OR (HDR.STATUS = 'H' AND HDR.CLOSED_DATETIME <=CAST($P{AS_AT_DATE} AS DATE))))
  33. )
  34.  
  35. UNION ALL
  36. SELECT
  37. H.SUB_CON_CONTRACT_NO,
  38. SUB_CON_CODE,
  39. PROJECT_NO,
  40. SUBJECT,
  41. '0001-01-01' AS CLOSED_DATETIME,
  42. TOTAL_AMOUNT_HOME,
  43. TOTAL_AMOUNT,
  44. TOTAL_ORIGINAL_HOME_AMT,
  45. TOTAL_VO_HOME_AMT,
  46. TOTAL_VO_AMT,
  47. OMISSION_AMT,
  48. OMISSION_HOME_AMT,
  49. DIFF_RET_PER_BY_LINE_ITM,
  50. 'O' AS STATUS,
  51. CURRENCY_CODE,
  52. TOTAL_ORIGINAL_AMT,
  53. RETENTION_PERCENT,
  54. MAX_RETENTION_AMOUNT
  55. FROM PJ_SUB_CON_REV_HDR H
  56. JOIN (SELECT SUB_CON_CONTRACT_NO, MAX(REVISION_NO) REVISION_NO FROM PJ_SUB_CON_REV_HDR WHERE DATE(VARIATION_DATE)<=CAST($P{AS_AT_DATE} AS DATE) GROUP BY SUB_CON_CONTRACT_NO) AB ON H.SUB_CON_CONTRACT_NO = AB.SUB_CON_CONTRACT_NO AND H.REVISION_NO = AB.REVISION_NO
  57. AND H.SUB_CON_CONTRACT_NO IN (SELECT SUB_CON_CONTRACT_NO FROM PJ_SUB_CON_HDR WHERE ($P{CONTRACT_STATUS} = 'O' OR $P{CONTRACT_STATUS} = 'B') AND STATUS = 'H' AND CLOSED_DATETIME > CAST($P{AS_AT_DATE} AS DATE)  AND  VARIATION_DATE > CAST($P{AS_AT_DATE} AS DATE))
  58. WHERE 1=1 AND ($P{AS_AT_DATE_PASSED}=1)
  59. )
  60. SELECT H.*
  61. FROM
  62. (SELECT CON.SUB_CON_CONTRACT_NO,
  63.        CON.STATUS,
  64.        CON.SUB_CON_CODE,
  65.        SUP.PARTY_NAME AS SUPPLIER_NAME,
  66.        CON.PROJECT_NO,
  67.        CON.SUBJECT,
  68.        CON.RETENTION_PERCENT,
  69.        CL.CLM_SEQ_NO,
  70.        CL.SUB_CON_CLM_VOUCHER_NO,
  71.        CASE WHEN (CLAIM_STATUS ='X'  AND  (DATE(CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE))) THEN 'O' ELSE CL.CLAIM_STATUS END AS CLAIM_STATUS,
  72.        CL.RESPONSE_DATE AS CLAIM_DATE,
  73.        CL.PAYMENT_DUE_DATE,
  74.        CON.CURRENCY_CODE,
  75.        (CL.THIS_CUL_CLAIM_AMT - CL.CURRENT_CUL_CLAIM_AMT)  AS THIS_CLAIM,
  76.        CL.THIS_CERTIFIED,
  77.        CL.THIS_RETENTION_AMT,
  78.        (CL.THIS_CUL_OTHER_RETENTION -  CL.CUR_CUL_OTHER_RET) AS THIS_OTHER_RET,
  79.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND (CL.SOURCE_TYPE <> 'O' OR CL.SOURCE_TYPE IS NULL) THEN COALESCE(INV.TOTAL_CERT_AMT,0) - COALESCE(CRN.TOTAL_CERT_AMT,0)
  80.        WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.THIS_CERTIFIED,0)
  81.        WHEN CRN.CREDIT_NOTE_NO IS NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.THIS_CERTIFIED,0)
  82.        ELSE COALESCE(INV.TOTAL_CERT_AMT,0) END AS TOTAL_CERT_AMT,
  83.  
  84.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND (CL.SOURCE_TYPE <> 'O' OR CL.SOURCE_TYPE IS NULL) THEN COALESCE(INV.TOTAL_CERT_HOME_AMT,0) - COALESCE(CRN.TOTAL_CERT_HOME_AMT,0)
  85.        WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.THIS_CERTIFIED_HOME_AMT,0)
  86.        WHEN CRN.CREDIT_NOTE_NO IS NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.THIS_CERTIFIED_HOME_AMT,0)
  87.        ELSE COALESCE(INV.TOTAL_CERT_HOME_AMT,0) END TOTAL_CERT_HOME_AMT,
  88.  
  89.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL THEN COALESCE(INV.TOTAL_AFTER_TAX_AMT,0) -COALESCE(CRN.TOTAL_AFTER_TAX_AMT,0) ELSE COALESCE(INV.TOTAL_AFTER_TAX_AMT,0)
  90.        END AS TOTAL_AFTER_TAX_AMT,
  91.  
  92.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND (CL.SOURCE_TYPE <> 'O' OR CL.SOURCE_TYPE IS NULL) THEN COALESCE(INV.RETENTION_AMT,0) - COALESCE(CRN.RETENTION_AMT,0)
  93.        WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.THIS_RETENTION_AMT,0) + COALESCE(CL.THIS_OTHER_RET,0)
  94.        WHEN CRN.CREDIT_NOTE_NO IS NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.THIS_RETENTION_AMT,0)+ COALESCE(CL.THIS_OTHER_RET,0)
  95.        ELSE COALESCE(INV.RETENTION_AMT,0)  END AS RETENTION_AMT,
  96.  
  97.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND (CL.SOURCE_TYPE <> 'O' OR CL.SOURCE_TYPE IS NULL) THEN COALESCE(INV.ADV_PAYMENT_ADD_ON,0) -COALESCE(INV.ADV_PAYMENT_TO_REC,0)-COALESCE(CRN.ADV_PAYMENT_ADD_ON,0) + COALESCE(CRN.ADV_PAYMENT_TO_REC,0)
  98.        WHEN CRN.CREDIT_NOTE_NO IS NOT NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.ADV_PAYMENT_ADD_ON,0) - COALESCE(CL.ADV_PAYMENT_TO_REC,0)
  99.        WHEN CRN.CREDIT_NOTE_NO IS NULL AND CL.SOURCE_TYPE = 'O' THEN COALESCE(CL.ADV_PAYMENT_ADD_ON,0)- COALESCE(CL.ADV_PAYMENT_TO_REC,0)
  100.        ELSE COALESCE(INV.ADV_PAYMENT_ADD_ON,0) -COALESCE(INV.ADV_PAYMENT_TO_REC,0) END AS ADV_PAY_AMT,
  101.  
  102.        COALESCE(APPLY.APPLIED_INV_AMT,0) APPLIED_INV_AMT,
  103.        INV.SUPPLIER_INVOICE_NO,
  104.        INV.SUPPLIER_INVOICE_DATE,
  105.        INV.AR_INVOICE_NO,
  106.        (SELECT SUBSTR(CAST(xml2clob (XMLAGG (xmltext (CONCAT (', ',N_NO)))) AS VARCHAR(1024)),2) AS ALL_IN_ONE FROM
  107.                     (
  108.                     SELECT invoice_no,AR_REC_HST_APL.RECEIPT_VOUCHER_NO AS N_NO FROM AR_REC_HST_APL
  109.                     UNION ALL
  110.                     SELECT invoice_no,AR_CRN_HST_APL.CREDIT_NOTE_NO AS N_NO FROM AR_CRN_HST_APL
  111.                     ) SUB1
  112.         WHERE SUB1.invoice_no = INV.AR_INVOICE_NO
  113.        ) AS BC_AP_NO,
  114.        INV2.TOTAL_AFTER_TAX_AMT OUTSTANDING_AMT,
  115.        PJHDR.CUSTOMER_JOB_NO,
  116.        PJHDR.SUBJECT PROJECT_NAME,
  117.        BC.BACK_CHARGE,
  118.        INV.INVOICE_NO,
  119.        (SELECT SUBSTR(CAST(xml2clob (XMLAGG (xmltext (CONCAT (', ',SUB1.APPLICATION_DATE)))) AS VARCHAR(1024)),2) AS ALL_IN_ONE FROM
  120.                     (
  121.                     SELECT VARCHAR_FORMAT(DATE(APPLICATION_DATE),'dd/mm/yyyy') APPLICATION_DATE,INVOICE_NO
  122.                     FROM AP_PAY_HST_APL APL
  123.                         LEFT JOIN AP_PYC_HST_HDR PYC ON PYC.PAYMENT_CANCELLATION_NO = APL.PAYMENT_CANCELLATION_NO
  124.                         WHERE 1=1
  125.                         AND DATE(APL.APPLICATION_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  126.                         AND(APL.CANCELLED_FLAG IS NULL OR APL.CANCELLED_FLAG = 'N' OR (APL.CANCELLED_FLAG = 'Y' AND DATE(PYC.CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE)))
  127.  
  128.                     ) SUB1
  129.         WHERE SUB1.invoice_no = INV.INVOICE_NO
  130.        ) AS PYM_DATE,
  131.        (SELECT SUBSTR(CAST(xml2clob (XMLAGG (xmltext (CONCAT (', ',SUB1.PAYMENT_VOUCHER_NO)))) AS VARCHAR(1024)),3) AS ALL_IN_ONE FROM
  132.                     (
  133.                     SELECT APL.PAYMENT_VOUCHER_NO,APL.INVOICE_NO
  134.                     FROM AP_PAY_HST_APL APL
  135.                         LEFT JOIN AP_PYC_HST_HDR PYC ON PYC.PAYMENT_CANCELLATION_NO = APL.PAYMENT_CANCELLATION_NO
  136.                         WHERE 1=1
  137.                         AND DATE(APL.APPLICATION_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  138.                         AND(APL.CANCELLED_FLAG IS NULL OR APL.CANCELLED_FLAG = 'N' OR (APL.CANCELLED_FLAG = 'Y' AND DATE(PYC.CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE)))
  139.                     ) SUB1
  140.         WHERE SUB1.invoice_no = INV.INVOICE_NO
  141.        ) AS PYM_NO,
  142.        CRN.CREDIT_NOTE_NO,
  143.        CRN.CRN_AGE_DATE
  144. FROM PJ_SUB_CON_HDR_REV CON
  145.   INNER JOIN MT_PARTY SUP ON CON.SUB_CON_CODE = SUP.PARTY_CODE
  146.   LEFT JOIN PJ_EST_OST_HDR PJHDR ON PJHDR.PROJECT_NO = CON.PROJECT_NO
  147.   LEFT OUTER JOIN
  148.   (SELECT *
  149.     FROM PJ_SUB_CLM_HDR
  150.     WHERE
  151.     ((
  152.         ($P{AS_AT_DATE_PASSED}=1) AND
  153.         (((CLAIM_STATUS IS NULL OR CLAIM_STATUS <> 'X' OR (CLAIM_STATUS ='X'  AND  (DATE(CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE))))
  154.         AND STATUS = 'H'
  155.         AND (
  156.              (RESPONSE_DATE IS NOT NULL AND DATE(RESPONSE_DATE) <= CAST( $P{AS_AT_DATE} AS DATE) )
  157.              OR (RESPONSE_DATE IS NULL AND DATE(CLAIM_DATE) <= CAST( $P{AS_AT_DATE} AS DATE) )
  158.             )
  159.         )
  160.         OR SUB_CON_CLM_VOUCHER_NO IN
  161.                                     (
  162.                                     SELECT SOURCE_VOUCHER_NO FROM INV_TB WHERE (DATE(AGE_DATE)<= CAST($P{AS_AT_DATE} AS DATE) AND (DATE(CRN_AGE_DATE)> CAST($P{AS_AT_DATE} AS DATE) OR CRN_AGE_DATE IS NULL)) OR (DATE(AGE_DATE)> CAST($P{AS_AT_DATE} AS DATE) AND DATE(CRN_AGE_DATE)<= CAST($P{AS_AT_DATE} AS DATE))
  163.                                     )
  164.         )
  165.     )
  166.     OR (
  167.         ($P{AS_AT_DATE_PASSED}=0)
  168.         AND (CLAIM_STATUS IS NULL OR CLAIM_STATUS <> 'X')
  169.     ))
  170.     AND (CLAIM_STATUS IS NULL OR CLAIM_STATUS <> 'A')
  171.     ) CL ON CON.SUB_CON_CONTRACT_NO = CL.SUB_CON_CONTRACT_NO
  172.   LEFT JOIN  INV_TB INV ON INV.SOURCE_VOUCHER_NO = CL.SUB_CON_CLM_VOUCHER_NO AND  (($P{AS_AT_DATE_PASSED}=1 AND DATE(INV.AGE_DATE)<= CAST($P{AS_AT_DATE} AS DATE))
  173.     OR ($P{AS_AT_DATE_PASSED}=0))
  174.     LEFT JOIN  INV_TB CRN ON CRN.SOURCE_VOUCHER_NO = CL.SUB_CON_CLM_VOUCHER_NO AND  (($P{AS_AT_DATE_PASSED}=1 AND DATE(CRN.CRN_AGE_DATE)<= CAST($P{AS_AT_DATE} AS DATE))
  175.     OR ($P{AS_AT_DATE_PASSED}=0)) AND (INV.INVOICE_NO IS NULL OR INV.INVOICE_NO = CRN.INVOICE_NO)
  176.     LEFT JOIN  PJ_AP_INV_OST_HDR INV2 ON INV2.SOURCE_VOUCHER_NO = CL.SUB_CON_CLM_VOUCHER_NO AND  (($P{AS_AT_DATE_PASSED}=1 AND (DATE(INV2.AGE_DATE) <= CAST($P{AS_AT_DATE} AS DATE)))
  177.     OR ($P{AS_AT_DATE_PASSED}=0))
  178.   LEFT JOIN
  179.   (SELECT INVOICE_NO, SUM(APPLIED_INV_AMT) APPLIED_INV_AMT
  180.   FROM AP_PAY_HST_APL APL
  181.     LEFT JOIN AP_PYC_HST_HDR PYC ON PYC.PAYMENT_CANCELLATION_NO = APL.PAYMENT_CANCELLATION_NO
  182.     WHERE 1=1
  183.     AND DATE(APL.APPLICATION_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  184.     AND(APL.CANCELLED_FLAG IS NULL OR APL.CANCELLED_FLAG = 'N' OR (APL.CANCELLED_FLAG = 'Y' AND DATE(PYC.CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE)))
  185.   GROUP BY INVOICE_NO
  186.   ) APPLY ON  APPLY.INVOICE_NO = INV.INVOICE_NO
  187.   LEFT JOIN (SELECT SUB_CON_CLM_VOUCHER_NO, SUM(TOTAL_AMT) AS BACK_CHARGE
  188.                 FROM PJ_SUB_CLM_BACK_CHARGE
  189.                 WHERE IS_APPROVED IS NULL OR IS_APPROVED = 'Y'
  190.                 GROUP BY SUB_CON_CLM_VOUCHER_NO
  191.                     ) BC ON BC.SUB_CON_CLM_VOUCHER_NO = CL.SUB_CON_CLM_VOUCHER_NO
  192. WHERE CON.STATUS <> 'D'
  193.  AND (
  194.         $P{EXCLUDE_ZERO} = 'N'
  195.         OR ($P{EXCLUDE_ZERO} = 'Y' AND  (COALESCE(CON.TOTAL_AMOUNT,0) > 0 OR (COALESCE(CON.TOTAL_AMOUNT,0) = 0 AND CL.SUB_CON_CLM_VOUCHER_NO IS NOT NULL)))
  196.       )
  197. --for invoice type N
  198. UNION ALL
  199. SELECT CON.SUB_CON_CONTRACT_NO,
  200.        CON.STATUS,
  201.        CON.SUB_CON_CODE,
  202.        SUP.PARTY_NAME AS SUPPLIER_NAME,
  203.        CON.PROJECT_NO,
  204.        CON.SUBJECT,
  205.        CON.RETENTION_PERCENT,
  206.        NULL CLM_SEQ_NO,
  207.        INV.INVOICE_NO SUB_CON_CLM_VOUCHER_NO,
  208.        INV.INVOICE_STATUS CLAIM_STATUS,
  209.        INV.AGE_DATE CLAIM_DATE,
  210.        NULL PAYMENT_DUE_DATE,
  211.        CON.CURRENCY_CODE,
  212.        NULL THIS_CLAIM,
  213.        NULL THIS_CERTIFIED,
  214.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL THEN COALESCE(-1*INV.TOTAL_PRE_TAX_AMT,0) - COALESCE(-1*CRN.TOTAL_PRE_TAX_AMT,0) ELSE COALESCE(-1*INV.TOTAL_PRE_TAX_AMT,0) END AS THIS_RETENTION_AMT,
  215.        NULL THIS_OTHER_RET,
  216.        0 TOTAL_CERT_AMT,
  217.        0 TOTAL_CERT_HOME_AMT,
  218.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL THEN COALESCE(INV.TOTAL_AFTER_TAX_AMT,0) -COALESCE(CRN.TOTAL_AFTER_TAX_AMT,0) ELSE COALESCE(INV.TOTAL_AFTER_TAX_AMT,0) END AS TOTAL_AFTER_TAX_AMT,
  219.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL THEN COALESCE(-1*INV.TOTAL_PRE_TAX_AMT,0) - COALESCE(-1*CRN.TOTAL_PRE_TAX_AMT,0) ELSE COALESCE(-1*INV.TOTAL_PRE_TAX_AMT,0) END  AS RETENTION_AMT,
  220.        CASE WHEN CRN.CREDIT_NOTE_NO IS NOT NULL THEN COALESCE(INV.ADV_PAYMENT_ADD_ON,0) -COALESCE(INV.ADV_PAYMENT_TO_REC,0)-COALESCE(CRN.ADV_PAYMENT_ADD_ON,0) +COALESCE(CRN.ADV_PAYMENT_TO_REC,0) ELSE COALESCE(INV.ADV_PAYMENT_ADD_ON,0) -COALESCE(INV.ADV_PAYMENT_TO_REC,0) END AS ADV_PAY_AMT,
  221.        COALESCE(APPLY.APPLIED_INV_AMT,0) APPLIED_INV_AMT,
  222.        INV.SUPPLIER_INVOICE_NO,
  223.        INV.SUPPLIER_INVOICE_DATE,
  224.        INV.AR_INVOICE_NO,
  225.        (SELECT SUBSTR(CAST(xml2clob (XMLAGG (xmltext (CONCAT (', ',N_NO)))) AS VARCHAR(1024)),2) AS ALL_IN_ONE FROM
  226.                     (
  227.                     SELECT invoice_no,AR_REC_HST_APL.RECEIPT_VOUCHER_NO AS N_NO FROM AR_REC_HST_APL
  228.                     UNION ALL
  229.                     SELECT invoice_no,AR_CRN_HST_APL.CREDIT_NOTE_NO AS N_NO FROM AR_CRN_HST_APL
  230.                     ) SUB1
  231.         WHERE SUB1.invoice_no = INV.AR_INVOICE_NO
  232.        ) AS BC_AP_NO,
  233.        INV2.TOTAL_AFTER_TAX_AMT OUTSTANDING_AMT,
  234.        PJHDR.CUSTOMER_JOB_NO,
  235.        PJHDR.SUBJECT PROJECT_NAME,
  236.        BC.BACK_CHARGE,
  237.        INV.INVOICE_NO,
  238.        (SELECT SUBSTR(CAST(xml2clob (XMLAGG (xmltext (CONCAT (', ',SUB1.APPLICATION_DATE)))) AS VARCHAR(1024)),2) AS ALL_IN_ONE FROM
  239.                     (
  240.                     SELECT VARCHAR_FORMAT(DATE(APPLICATION_DATE),'dd/mm/yyyy') APPLICATION_DATE,INVOICE_NO
  241.                     FROM AP_PAY_HST_APL APL
  242.                         LEFT JOIN AP_PYC_HST_HDR PYC ON PYC.PAYMENT_CANCELLATION_NO = APL.PAYMENT_CANCELLATION_NO
  243.                         WHERE 1=1
  244.                         AND DATE(APL.APPLICATION_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  245.                         AND(APL.CANCELLED_FLAG IS NULL OR APL.CANCELLED_FLAG = 'N' OR (APL.CANCELLED_FLAG = 'Y' AND DATE(PYC.CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE)))
  246.                     ) SUB1
  247.         WHERE SUB1.invoice_no = INV.INVOICE_NO
  248.        ) AS PYM_DATE,
  249.        (SELECT SUBSTR(CAST(xml2clob (XMLAGG (xmltext (CONCAT (', ',SUB1.PAYMENT_VOUCHER_NO)))) AS VARCHAR(1024)),3) AS ALL_IN_ONE FROM
  250.                     (
  251.                     SELECT APL.PAYMENT_VOUCHER_NO,APL.INVOICE_NO
  252.                     FROM AP_PAY_HST_APL APL
  253.                         LEFT JOIN AP_PYC_HST_HDR PYC ON PYC.PAYMENT_CANCELLATION_NO = APL.PAYMENT_CANCELLATION_NO
  254.                         WHERE 1=1
  255.                         AND DATE(APL.APPLICATION_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  256.                         AND(APL.CANCELLED_FLAG IS NULL OR APL.CANCELLED_FLAG = 'N' OR (APL.CANCELLED_FLAG = 'Y' AND DATE(PYC.CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE)))
  257.                     ) SUB1
  258.         WHERE SUB1.invoice_no = INV.INVOICE_NO
  259.        ) AS PYM_NO,
  260.        CRN.CREDIT_NOTE_NO,
  261.        CRN.CRN_AGE_DATE
  262. FROM PJ_SUB_CON_HDR_REV CON
  263.   INNER JOIN MT_PARTY SUP ON CON.SUB_CON_CODE = SUP.PARTY_CODE
  264.   LEFT JOIN PJ_EST_OST_HDR PJHDR ON PJHDR.PROJECT_NO = CON.PROJECT_NO
  265.  
  266.   LEFT JOIN INV_TB INV ON INV.SOURCE_VOUCHER_NO = CON.SUB_CON_CONTRACT_NO
  267.                                         AND INV.INVOICE_TYPE='N' AND (($P{AS_AT_DATE_PASSED}=1 AND (DATE(INV.AGE_DATE) <= CAST($P{AS_AT_DATE} AS DATE) ))
  268.     OR ($P{AS_AT_DATE_PASSED}=0))
  269.   LEFT JOIN INV_TB CRN ON CRN.SOURCE_VOUCHER_NO = CON.SUB_CON_CONTRACT_NO AND CRN.INVOICE_TYPE='N' AND (INV.INVOICE_NO IS NULL OR INV.INVOICE_NO = CRN.INVOICE_NO)
  270.   LEFT JOIN  PJ_AP_INV_OST_HDR INV2 ON INV2.SOURCE_VOUCHER_NO = CON.SUB_CON_CONTRACT_NO AND  INV.INVOICE_TYPE='N'
  271.   LEFT JOIN
  272.   (SELECT INVOICE_NO, SUM(APPLIED_INV_AMT) APPLIED_INV_AMT
  273.   FROM AP_PAY_HST_APL APL
  274.     LEFT JOIN AP_PYC_HST_HDR PYC ON PYC.PAYMENT_CANCELLATION_NO = APL.PAYMENT_CANCELLATION_NO
  275.     WHERE 1=1
  276.     AND DATE(APL.APPLICATION_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  277.     AND(APL.CANCELLED_FLAG IS NULL OR APL.CANCELLED_FLAG = 'N' OR (APL.CANCELLED_FLAG = 'Y' AND DATE(PYC.CANCELLATION_DATE) > CAST($P{AS_AT_DATE} AS DATE)))
  278.   GROUP BY INVOICE_NO
  279.   ) APPLY ON  APPLY.INVOICE_NO = INV.INVOICE_NO
  280.   LEFT JOIN (SELECT SUB_CON_CLM_VOUCHER_NO, SUM(TOTAL_AMT) AS BACK_CHARGE
  281.                 FROM PJ_SUB_CLM_BACK_CHARGE
  282.                 WHERE IS_APPROVED IS NULL OR IS_APPROVED = 'Y'
  283.                 GROUP BY SUB_CON_CLM_VOUCHER_NO
  284.                     ) BC ON BC.SUB_CON_CLM_VOUCHER_NO = INV.INVOICE_NO
  285. WHERE CON.STATUS <> 'D'
  286. AND COALESCE(INV.TOTAL_PRE_TAX_AMT,0) <> 0
  287. AND ((
  288.         ($P{AS_AT_DATE_PASSED}=1) AND INV.INVOICE_STATUS ='X' AND
  289.         (
  290.         DATE(INV.AGE_DATE) <= CAST($P{AS_AT_DATE} AS DATE) AND CRN.CRN_AGE_DATE > CAST($P{AS_AT_DATE} AS DATE)
  291.         )
  292.         OR
  293.         (
  294.         DATE(INV.AGE_DATE) > CAST($P{AS_AT_DATE} AS DATE) AND CRN.CRN_AGE_DATE <= CAST($P{AS_AT_DATE} AS DATE)
  295.         )
  296.     )
  297.     OR (
  298.         ($P{AS_AT_DATE_PASSED}=1) AND (INV.INVOICE_STATUS <>'X' OR INV.INVOICE_STATUS IS NULL) AND
  299.         (
  300.         DATE(INV.AGE_DATE) <= CAST($P{AS_AT_DATE} AS DATE)
  301.         )
  302.     )
  303.     OR (
  304.         ($P{AS_AT_DATE_PASSED}=0)
  305.     ))
  306.  AND (
  307.         $P{EXCLUDE_ZERO} = 'N'
  308.         OR ($P{EXCLUDE_ZERO} = 'Y' AND  (COALESCE(CON.TOTAL_AMOUNT,0) > 0 OR (COALESCE(CON.TOTAL_AMOUNT,0) = 0 AND INV.INVOICE_NO IS NOT NULL)))
  309.       )
  310.  
  311. )H
  312. WHERE 1=1
  313. -- add Security Right Control by Project Team Member
  314. -- IS_SUPERVISOR = Y with this FC OR Being a team member
  315. AND (
  316.     $P{IS_SUPERVISOR} = 'Y'
  317.     OR H.PROJECT_NO IN (SELECT PROJECT_NO FROM PJ_EST_OST_TEAM_MEMBER WHERE EMPLOYEE_CODE = $P{THIS_EMP})
  318. )
  319. -- end Security.
  320. $P!{__RPT__FILTER__PARAM}
  321. $P!{__RPT__ORDERBY__PARAM}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement