You are on page 1of 5

CREATE OR REPLACE PACKAGE BODY CUSTOM.

FIN_DCPR2_PACK
AS
P_SOL_ID VARCHAR2(10);
P_DATE DATE;--VARCHAR2 (30);
P_GLCODE VARCHAR2 (30);

CURSOR D1 is

SELECT VIEW_1.TRAN_AMT,
VIEW_1.TRAN_PARTICULAR_CODE,
VIEW_1.PART_TRAN_TYPE,
VIEW_1.GL_SUB_HEAD_CODE,
VIEW_1.DTH_INIT_SOL_ID,
VIEW_1.DebitAmount
- (SELECT SUM(D2.TRAN_AMT) FROM TBAADM.DCTD_ACLI D2
WHERE D2.TRAN_PARTICULAR_CODE like '%R'
AND
SUBSTR(D2.TRAN_PARTICULAR_CODE,1,LENGTH(D2.TRAN_PARTICULAR_CODE)-1) =
VIEW_1.TRAN_PARTICULAR_CODE
AND D2.PSTD_FLG = 'Y'
AND D2.DEL_FLG = 'N'
AND D2.DTH_INIT_SOL_ID =
DECODE(P_SOL_ID,'ALL',D2.DTH_INIT_SOL_ID,P_SOL_ID)
AND D2.TRAN_DATE = P_DATE
AND D2.PART_TRAN_TYPE = 'D'
) DebitAmount2 ,

VIEW_1.CreditAmount
- (SELECT SUM(D2.TRAN_AMT) FROM TBAADM.DCTD_ACLI D2
WHERE D2.TRAN_PARTICULAR_CODE like '%R'
AND
SUBSTR(D2.TRAN_PARTICULAR_CODE,1,LENGTH(D2.TRAN_PARTICULAR_CODE)-1) =
VIEW_1.TRAN_PARTICULAR_CODE
AND D2.PSTD_FLG = 'Y'
AND D2.DEL_FLG = 'N'
AND D2.DTH_INIT_SOL_ID =
DECODE(P_SOL_ID,'ALL',D2.DTH_INIT_SOL_ID,P_SOL_ID)
AND D2.TRAN_DATE = P_DATE
AND D2.PART_TRAN_TYPE = 'C'
) CreditAmount2 ,
VIEW_1.TRANCOUNT
FROM

(
SELECT NVL(SUM(D.TRAN_AMT),0) TRAN_AMT,
D.TRAN_PARTICULAR_CODE AS TRAN_PARTICULAR_CODE,
D.PART_TRAN_TYPE,
D.GL_SUB_HEAD_CODE,
--D.SOL_ID,
DTH_INIT_SOL_ID,
--Decode (D.PART_TRAN_TYPE,'D', SUM(TRAN_AMT),NULL)
as "DebitAmount",
NVL(Decode (D.PART_TRAN_TYPE,'D',
SUM(TRAN_AMT),NULL) -SUM(CASE WHEN D.TRAN_PARTICULAR_CODE =
SUBSTR(D.TRAN_PARTICULAR_CODE,1,LENGTH(D.TRAN_PARTICULAR_CODE)-1) THEN TRAN_AMT
ELSE 0 END),0) DebitAmount,
-- Decode (D.PART_TRAN_TYPE,'C',SUM(TRAN_AMT),NULL)
as "CreditAmount",
NVL(Decode (D.PART_TRAN_TYPE,'C',
SUM(TRAN_AMT),NULL) -SUM(CASE WHEN D.TRAN_PARTICULAR_CODE =
SUBSTR(D.TRAN_PARTICULAR_CODE,1,LENGTH(D.TRAN_PARTICULAR_CODE)-1) THEN TRAN_AMT
ELSE 0 END),0) CreditAmount,
COUNT(*) AS TRANCOUNT
--,
SUBSTR(D.TRAN_PARTICULAR_CODE,LENGTH(D.TRAN_PARTICULAR_CODE),1)
FROM TBAADM.DCTD_ACLI D,TBAADM.GAM G
WHERE D.DTH_INIT_SOL_ID =
DECODE(P_SOL_ID,'ALL',D.DTH_INIT_SOL_ID,P_SOL_ID)
AND D.TRAN_DATE = P_DATE
--AND G.SCHM_CODE =
DECODE(P_GLCODE,'ALL',G.SCHM_CODE,P_GLCODE )
AND G.SOL_ID = D.SOL_ID
AND G.GL_SUB_HEAD_CODE = D.GL_SUB_HEAD_CODE
AND G.ACID = D.ACID
AND D.PSTD_FLG = 'Y'
AND D.DEL_FLG = 'N'
-- AND
SUBSTR( D.TRAN_PARTICULAR_CODE,1,LENGTH(D.TRAN_PARTICULAR_CODE),1) != 'R'
--AND NVL(D.TRAN_AMT,0) > 0
AND G.SCHM_CODE IN ('COH','COCI','CIB')
--and rownum <10
GROUP BY
D.PART_TRAN_TYPE,D.TRAN_PARTICULAR_CODE,D.GL_SUB_HEAD_CODE,D.DTH_INIT_SOL_ID
ORDER BY D.PART_TRAN_TYPE DESC
) VIEW_1
WHERE
VIEW_1.TRAN_PARTICULAR_CODE NOT LIKE '%R'
;
PROCEDURE FIN_DCPR2_PROC (
inp_str IN VARCHAR2 ,
out_retcode OUT NUMBER,
out_rec OUT VARCHAR2)
AS
vTRAN_AMT NUMBER;
vTRAN_PARTICULAR_CODE VARCHAR2(25);
vPART_TRAN_TYPE VARCHAR2(21);
vDebitAmount NUMBER;
vCreditAmount NUMBER;
vREF_DESC VARCHAR2(250);
vINFLOW NUMBER;
vOUTFLOW NUMBER;
vBEGBAL NUMBER;
vTOTALFUNDBAL NUMBER;
vENDBAL NUMBER;
V_DATE1 VARCHAR2(21);
vGL_SUB_HEAD_CODE VARCHAR2(25);
vSOL_ID VARCHAR2(21);
vGL_SUBHEAD_DESC VARCHAR2(50);
vSOLIDDesc varchar2(100);
vTRAN_COUNT NUMBER;

loc_outarr tbaadm.basp0099.arraytype;
BEGIN
out_rec :=NULL;
out_retcode := 0;
tbaadm.basp0099.forminputarr (inp_str, loc_outarr);

P_SOL_ID := loc_outarr(0);
P_DATE := TO_DATE(loc_outarr(1),'DD-MM-YYYY');
P_GLCODE := loc_outarr(2);
SELECT TO_CHAR(P_DATE,'Month DD, YYYY') INTO V_DATE1 FROM DUAL;
--SELECT TO_DATE(P_DATE,'DD-MM-YYYY') INTO P_DATE FROM DUAL;

IF (NOT D1%ISOPEN)
THEN
OPEN D1;
END IF;
IF (D1%ISOPEN)
THEN
FETCH D1
INTO
vTRAN_AMT,
vTRAN_PARTICULAR_CODE,
vPART_TRAN_TYPE,
vGL_SUB_HEAD_CODE,
vSOL_ID,
vDebitAmount,
vCreditAmount,
vTRAN_COUNT
;
IF (D1%FOUND)
THEN

BEGIN
SELECT R.REF_DESC into vREF_DESC
FROM TBAADM.RCT R
WHERE R.REF_REC_TYPE = 'DD'
AND R.REF_CODE = vTRAN_PARTICULAR_CODE;
exception
when no_data_found then
vREF_DESC:='';
END;
--
Begin -- Get Crame / Aguinaldo SOL DESCRIPTION
SELECT SOL_DESC into vSOLIDDesc
FROM TBAADM.SOL
WHERE SOL_ID=vSOL_ID;
exception
when NO_DATA_FOUND
then vSOLIDDesc:='N/A';
End;
BEGIN
SELECT SUM(TRAN_AMT) INTO vINFLOW
FROM TBAADM.DCTD_ACLI D
WHERE D.SOL_ID = vSOL_ID
AND GL_SUB_HEAD_CODE =
vGL_SUB_HEAD_CODE
AND D.PART_TRAN_TYPE = 'D'
AND D.TRAN_DATE = P_DATE
AND D.PSTD_FLG = 'Y'
AND D.DEL_FLG = 'N';
exception
when no_data_found then
vINFLOW:=0;
-- vOUTFLOW := 0;

END;
BEGIN
SELECT SUM(TRAN_AMT) INTO vOUTFLOW
FROM TBAADM.DCTD_ACLI D
WHERE D.SOL_ID = vSOL_ID
AND GL_SUB_HEAD_CODE =
vGL_SUB_HEAD_CODE
AND D.PART_TRAN_TYPE = 'C'
AND D.TRAN_DATE = P_DATE
AND D.PSTD_FLG = 'Y'
AND D.DEL_FLG = 'N';
exception
when no_data_found then
vINFLOW:=0;
-- vOUTFLOW := 0;

END;

BEGIN
-- to fetch begining balance
SELECT NVL(( TOT_DR_BAL - TOT_CR_BAL),0) INTO vBEGBAL
FROM(SELECT * FROM TBAADM.GSTT G
WHERE GL_SUB_HEAD_CODE = vGL_SUB_HEAD_CODE
AND G.SOL_ID = vSOL_ID--NVL(P_SOL_ID,G.SOL_ID)
AND G.END_BAL_DATE < P_DATE
ORDER BY BAL_DATE DESC )
WHERE ROWNUM < 2;
exception
when NO_DATA_FOUND
then vBEGBAL:=0;
when OTHERS
then vBEGBAL:=0;
END;

BEGIN
BEGIN
SELECT GL_SUB_HEAD_DESC INTO vGL_SUBHEAD_DESC FROM TBAADM.GSH
WHERE SOL_ID = vSOL_ID
AND GL_SUB_HEAD_CODE = vGL_SUB_HEAD_CODE;
exception
when NO_DATA_FOUND
then vGL_SUBHEAD_DESC:=0;
when OTHERS
then vGL_SUBHEAD_DESC:=0;
END;

END;

IF (SUBSTR(vTRAN_PARTICULAR_CODE,LENGTH(vTRAN_PARTICULAR_CODE),1) ='R') THEN


BEGIN
vDebitAmount := vDebitAmount *(-1);
vCreditAmount := vCreditAmount *(-1);
END;
END IF;

vTOTALFUNDBAL := NVL(vBEGBAL,0) + NVL(vINFLOW,0);


vENDBAL := NVL(vTOTALFUNDBAL,0) - NVL(vOUTFLOW,0);
out_rec :=(
NVL(vTRAN_AMT,0)||'|'||
vTRAN_PARTICULAR_CODE||'|'||
vPART_TRAN_TYPE||'|'||
NVL(vDebitAmount,0)||'|'||
NVL(vCreditAmount,0)||'|'||
vREF_DESC||'|'||
NVL(vINFLOW,0)||'|'||
NVL(vOUTFLOW,0)||'|'||
NVL(vBEGBAL,0)||'|'||
NVL(vTOTALFUNDBAL,0)||'|'||
NVL(vENDBAL,0)||'|'||
V_DATE1 ||'|'||
vGL_SUB_HEAD_CODE ||'|'||
vSOLIDDesc||'|'||vGL_SUBHEAD_DESC ||'|'||
vTRAN_COUNT||'|'||
vSOL_ID
);
ELSE
CLOSE D1;
out_retcode := 1;
RETURN;
END IF;
END IF;
END FIN_DCPR2_PROC;
END FIN_DCPR2_PACK;
/

You might also like