0% found this document useful (0 votes)
67 views5 pages

dcpr2 Ver2

This document defines a package body in Oracle that contains procedures and cursors for retrieving and summarizing transaction data. It declares parameters, opens a cursor to query transaction tables, and contains procedures to calculate values like beginning balances, inflows, outflows, and ending balances for a given date and account code. The results are formatted into a delimited string to return to the caller.

Uploaded by

jake
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
67 views5 pages

dcpr2 Ver2

This document defines a package body in Oracle that contains procedures and cursors for retrieving and summarizing transaction data. It declares parameters, opens a cursor to query transaction tables, and contains procedures to calculate values like beginning balances, inflows, outflows, and ending balances for a given date and account code. The results are formatted into a delimited string to return to the caller.

Uploaded by

jake
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 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