Sei sulla pagina 1di 6

CREATE OR REPLACE PROCEDURE AGVLC.

PB_PW_CONS_RCPT ( AV_BRCH_CODE VARCHAR, AD_ACC_MNTH_YR DATE, AV_ACC_TYPE VARCHAR) IS BEGIN DECLARE LN_DISP_AMOUNT NUMBER; lv_ddo_code VARCHAR2(5); lv_dum_ddo_code VARCHAR2(5); lv_grnt_code VARCHAR2(2); lv_dum_grnt_code VARCHAR2(2); ld_last_acc_mnth_yr DATE; lv_last_acc_type VARCHAR2(1); ln_prgs_amnt_mnth1 NUMBER(14,2) := 0; ln_grnt_amnt NUMBER(14,2); ln_count NUMBER := 0; lex_exp EXCEPTION; ln_error_no NUMBER(1); ln_srl_no NUMBER(10); /* Variable required for error trapping */ LV_PROC_CODE VARCHAR2(15); LV_UNIT_NAME VARCHAR2(100); LV_LOC_NAME VARCHAR2(30); LV_ERROR_MESG VARCHAR2(512); LV_ERROR_DATA VARCHAR2(512); /* Cursor to select all transactions for the given month */ CURSOR lcur_cons IS /* Select from Monthly Cash (receipt) Detail */ select ACC_TYPE, ACC_MNTH_YR, b.BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, RFND_FLAG, DDO_CODE, sum(b.CLAS_AMNT) CLAS_AMNT, b.LINKED_MJR, b.GRNT_CODE from PW_MNTH_ACC a, PW_MNTH_ACC_DTLR b where a.BRCH_CODE = AV_BRCH_CODE and a.ACC_TYPE = AV_ACC_TYPE and a.ACC_MNTH_YR = AD_ACC_MNTH_YR and b.BRCH_CODE = a.BRCH_CODE and b.CRCL_CODE = a.CRCL_CODE and b.DIVN_CODE = a.DIVN_CODE and b.TRNS_MNTH_YR = a.TRNS_MNTH_YR group by ACC_TYPE, ACC_MNTH_YR, b.BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, RFND_FLAG, DDO_CODE, LINKED_MJR, GRNT_CODE UNION ALL /* Select from TE Source */ select ACC_TYPE, ACC_MNTH_YR, BRCH_CODE_SRC BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, decode(TE_SRC_TYPE,'CR','N','DC','Y') RFND_FLAG, DDO_CODE, sum(TE_AMNT), b.LINKED_MJR, b.GRNT_CODE from PW_TE c, PW_TE_SRC b where b.TE_NO = c.TE_NO and c.ACC_MNTH_YR = AD_ACC_MNTH_YR and c.ACC_TYPE = AV_ACC_TYPE and c.BRCH_CODE_SRC = AV_BRCH_CODE and c.TE_SRC_TYPE in ('CR','DC') group by ACC_TYPE, ACC_MNTH_YR, c.BRCH_CODE_SRC, MJR_HEAD,

SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, TE_SRC_TYPE, DDO_CODE, LINKED_MJR, GRNT_CODE UNION ALL /* Select from TE Destination */ select ACC_TYPE, ACC_MNTH_YR, BRCH_CODE_DEST BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, decode(TE_DEST_TYPE,'CR','N','DC','Y') RFND_FLAG, DDO_CODE, sum(TE_AMNT), b.LINKED_MJR, b.GRNT_CODE from PW_TE c, PW_TE_DEST b where b.TE_NO = c.TE_NO and c.ACC_MNTH_YR = AD_ACC_MNTH_YR and c.ACC_TYPE = AV_ACC_TYPE and c.BRCH_CODE_DEST = AV_BRCH_CODE and c.TE_DEST_TYPE in ('CR','DC') group by ACC_TYPE, ACC_MNTH_YR, c.BRCH_CODE_DEST, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, TE_DEST_TYPE, DDO_CODE, LINKED_MJR, GRNT_CODE UNION ALL /* Select from OB Suspense */ select ACC_TYPE, ACC_MNTH_YR, BRCH_CODE, '8658', '00', '102', '02', '0000', '00', '00', 'A', 'NA', 'A', DECODE(DR_CR_FLAG, 'CR', 'N', 'Y') RFND_FLAG, NULL DDO_CODE, sum(SUSP_AMNT), MJR_HEAD, NULL GRNT_CODE from PWP_OBSUS_BS where ACC_MNTH_YR = AD_ACC_MNTH_YR and ACC_TYPE = AV_ACC_TYPE and BRCH_CODE = AV_BRCH_CODE and DR_CR_FLAG in ('CR','DC') group by ACC_TYPE, ACC_MNTH_YR, BRCH_CODE, MJR_HEAD, DR_CR_FLAG UNION ALL /* Select from Annual TE Source */ select ACC_TYPE, ACC_MNTH_YR, BRCH_CODE_SRC BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, decode(FROM_TE_TYPE,'CR','N','DC','Y') RFND_FLAG, DDO_CODE, sum(TE_AMNT_FROM), b.LINKED_MJR_HEAD, b.GRNT_CODE from ML_ATE c, ML_ATE_SRC b where b.TE_NO = c.TE_NO and c.ACC_MNTH_YR = AD_ACC_MNTH_YR and c.ACC_TYPE = AV_ACC_TYPE and c.BRCH_CODE_SRC = AV_BRCH_CODE and c.FROM_TE_TYPE in ('CR','DC') and b.FROM_MODULE_CODE = 'PW' group by ACC_TYPE, ACC_MNTH_YR, c.BRCH_CODE_SRC, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, FROM_TE_TYPE, DDO_CODE, LINKED_MJR_HEAD, b.GRNT_CODE UNION ALL /* Select from Annual TE Destination */ select ACC_TYPE, ACC_MNTH_YR, BRCH_CODE_SRC BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, decode(TO_TE_TYPE,'CR','N','DC','Y') RFND_FLAG, DDO_CODE, sum(TE_AMNT_TO), b.LINKED_MJR_HEAD, b.GRNT_CODE from ML_ATE c, ML_ATE_DEST b where b.TE_NO = c.TE_NO

and c.ACC_MNTH_YR = AD_ACC_MNTH_YR and c.ACC_TYPE = AV_ACC_TYPE and c.BRCH_CODE_DEST = AV_BRCH_CODE and c.TO_TE_TYPE in ('CR','DC') and b.TO_MODULE_CODE = 'PW' group by ACC_TYPE, ACC_MNTH_YR, c.BRCH_CODE_SRC, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG, PLAN_TYPE, COMM_TYPE, TO_TE_TYPE, DDO_CODE, LINKED_MJR_HEAD, b.GRNT_CODE; lr_cons lcur_cons%ROWTYPE; CURSOR LCUR_LAST_CONS IS Select ACC_MNTH_YR, ACC_TYPE, BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, PLAN_TYPE, VOTE_CHRG_FLAG, COMM_TYPE, RFND_FLAG, DDO_CODE, LINKED_MJR, GRNT_CODE , sum(BDGT_AMNT) bdgt_amnt, SUM(PRGS_AMNT_MNTH1) PRGS_AMNT_MNTH1, SUM(CONS_AMNT) CONS_AMNT from PWP_CONS_RCPT where ACC_MNTH_YR = ld_last_acc_mnth_yr and ACC_TYPE = lv_last_acc_type and BRCH_CODE = av_brch_code GROUP BY ACC_MNTH_YR, ACC_TYPE, BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, PLAN_TYPE, VOTE_CHRG_FLAG, COMM_TYPE, RFND_FLAG, DDO_CODE, LINKED_MJR, GRNT_CODE ; BEGIN /* Call common procedure to find out last ACC_TYPE and last ACC_MNTH_YR */ GP_LAST_MNTH_TYPE(AD_ACC_MNTH_YR,AV_ACC_TYPE,ld_last_acc_mnth_yr,lv_last_acc_t ype); DBMS_OUTPUT.PUT_LINE(ld_last_acc_mnth_yr ' ' lv_last_acc_type); /* Delete all old records for the given month and branch */ Delete from PWP_CONS_RCPT

ACC_MNTH_YR = AD_ACC_MNTH_YR ACC_TYPE = AV_ACC_TYPE BRCH_CODE = AV_BRCH_CODE; Call procedure to make commercial type in sync. with master. to be removed later. S. Roy 13/09/99 ******/ --PB_PW_UPD_COMM_RCPT_TEMP; /* Find last serial no in PWP_CONS_PMNT 9/9/99 by Soumen */ select nvl(max(srl_no),0) + 1 into ln_srl_no from PWP_CONS_RCPT ; /* Find Dummy DDO Code */ LV_LOC_NAME := 'Search Dummy DDO'; Select DDO_CODE into lv_dum_ddo_code From ME_DDO Where DDO_TYPE = 'M' And ACTV_FLAG = 'Y' And ROWNUM = 1; /* Find Dummy Grant Code */ LV_LOC_NAME := 'Search Dummy Grant'; Select GRNT_CODE into lv_dum_grnt_code From ME_GRNT Where DUMMY_FLAG = 'Y' And ACTV_FLAG = 'Y' And ROWNUM = 1; -- TRANSFER PREVIOUS DATA for LR_LAST in LCUR_LAST_CONS loop LV_ERROR_DATA := LR_LAST.MJR_HEAD ' ' LR_LAST.SM_HEAD ' ' LR_LAST.MIN_HEAD ' ' LR_LAST.SUB_HEAD ' ' LR_LAST.BDGT_HEAD ' ' LR_LAST.DTL_HEAD ' ' LR_LAST.SOE_HEAD ' ' LR_LAST.DDO_CODE ' ' LR_LAST.GRNT_CODE; LV_LOC_NAME := '2nd Update'; ln_srl_no := ln_srl_no + 1; insert into PWP_CONS_RCPT(SRL_NO, ACC_TYPE, ACC_MNTH_YR, BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG , PLAN_TYPE, COMM_TYPE, RFND_FLAG, DDO_CODE, PRGS_AMNT_MNTH1, CONS_AMNT, BDGT_AMNT, LINKED_MJR, GRNT_CODE) Values ( ln_srl_no, --PWCONSRCPT_SEQ.nextval, AV_ACC_TYPE, AD_ACC_MNTH_YR, AV_BRCH_CODE, LR_LAST.MJR_HEAD, LR_LAST.SM_HEAD, LR_LAST.MIN_HEAD, LR_LAST.SUB_HEAD, LR_LAST.BDGT_HEAD, LR_LAST.DTL_HEAD, LR_LAST.SOE_HEAD, LR_LAST.VOTE_CHRG_FLAG, LR_LAST.PLAN_TYPE, LR_LAST.COMM_TYPE, LR_LAST.RFND_FLAG, LR_LAST.DDO_COD E, LR_LAST.PRGS_AMNT_MNTH1 + LR_LAST.CONS_AMNT, 0, LR_LAST.BDGT_AMNT, LR_LAST.LINKED_MJR,LR_LAST.GRNT_CODE ); end loop; open lcur_cons; fetch lcur_cons into lr_cons; while (lcur_cons%found) loop LV_ERROR_DATA := lr_cons.MJR_HEAD ' ' lr_cons.SM_HEAD ' ' lr_cons.MIN_HEAD ' ' lr_cons.SUB_HEAD ' ' lr_cons.BDGT_HEAD ' ' lr_cons.DTL_HEAD ' ' lr_cons.SOE_HEAD; /* Retrieve progressive amount from last month's data */ If (lr_cons.ACC_MNTH_YR = ld_last_acc_mnth_yr and

where and and /*****

lr_cons.ACC_TYPE = lv_last_acc_type) then ln_prgs_amnt_mnth1 := 0; End If; /* Find DDO_CODE for OB Suspense record */ If lr_cons.ddo_code is NULL Then LV_DDO_CODE := lv_dum_ddo_code; Else LV_DDO_CODE := lr_cons.ddo_code; End If; /* Find GRNT_CODE for OB Suspense record */ If lr_cons.grnt_code is NULL Then LV_GRNT_CODE := lv_dum_grnt_code; Else LV_GRNT_CODE := lr_cons.grnt_code; End If; /********************* Retrieve Grant Amount set ln_bdgt_amnt = Call procedure to retrieve the budget amount from BD_GRANT for the account classification, DDO_CODE, RFND_FLAG */ LV_LOC_NAME := 'Get Budget'; PPBD_GET_BDGT(ad_acc_mnth_yr,lr_cons.MJR_HEAD,lr_cons.SM_HEAD,lr_cons.MIN_HE AD, lr_cons.SUB_HEAD,lr_cons.BDGT_HEAD,lr_cons.DTL_HEAD, lr_cons.SOE_HEAD,lr_cons.PLAN_TYPE,lr_cons.VOTE_CHRG_FLAG, LV_DDO_CODE,LN_ERROR_NO, LN_GRNT_AMNT); IF LN_ERROR_NO = -1 THEN RETURN; END IF; LV_LOC_NAME := '1st Update'; /* Update table if same type of record already exists */ update PWP_CONS_RCPT set CONS_AMNT = CONS_AMNT + nvl(lr_cons.CLAS_AMNT,0), BDGT_AMNT = ln_grnt_amnt where PWP_CONS_RCPT.ACC_TYPE = AV_ACC_TYPE and PWP_CONS_RCPT.ACC_MNTH_YR = AD_ACC_MNTH_YR and PWP_CONS_RCPT.BRCH_CODE = lr_cons.BRCH_CODE and PWP_CONS_RCPT.MJR_HEAD = lr_cons.MJR_HEAD and PWP_CONS_RCPT.SM_HEAD = lr_cons.SM_HEAD and PWP_CONS_RCPT.MIN_HEAD = lr_cons.MIN_HEAD and PWP_CONS_RCPT.SUB_HEAD = lr_cons.SUB_HEAD and PWP_CONS_RCPT.BDGT_HEAD = lr_cons.BDGT_HEAD and PWP_CONS_RCPT.DTL_HEAD = lr_cons.DTL_HEAD and PWP_CONS_RCPT.SOE_HEAD = lr_cons.SOE_HEAD and PWP_CONS_RCPT.PLAN_TYPE = lr_cons.PLAN_TYPE and PWP_CONS_RCPT.VOTE_CHRG_FLAG = lr_cons.VOTE_CHRG_FLAG and PWP_CONS_RCPT.COMM_TYPE = lr_cons.COMM_TYPE and PWP_CONS_RCPT.RFND_FLAG = lr_cons.RFND_FLAG and nvl(PWP_CONS_RCPT.GRNT_CODE,'##') = LV_GRNT_CODE and PWP_CONS_RCPT.DDO_CODE = LV_DDO_CODE and NVL(PWP_CONS_RCPT.LINKED_MJR,'#####') = NVL(lr_cons.LINKED_MJR,'#####'); /* Insert if no such record exists */ if SQL%NOTFOUND then LV_LOC_NAME := '1st Insert'; ln_srl_no := ln_srl_no + 1; insert into PWP_CONS_RCPT(SRL_NO, ACC_TYPE, ACC_MNTH_YR, BRCH_CODE, MJR_HEAD, SM_HEAD, MIN_HEAD, SUB_HEAD, BDGT_HEAD, DTL_HEAD, SOE_HEAD, VOTE_CHRG_FLAG , PLAN_TYPE, COMM_TYPE, RFND_FLAG, DDO_CODE, PRGS_AMNT_MNTH1, CONS_AMNT, BDGT_AMNT, LINKED_MJR, GRNT_CODE)

Values ( ln_srl_no, --PWCONSRCPT_SEQ.nextval, AV_ACC_TYPE, AD_ACC_MNTH_YR, AV_BRCH_CODE, lr_cons.MJR_HEAD, lr_cons.SM_HEAD, lr_cons.MIN_HEAD, lr_cons.SUB_HEAD, lr_cons.BDGT_HEAD,lr_cons.DTL_HEAD,lr_cons.SOE_HEAD, lr_cons.VOTE_CHRG_FLAG, lr_cons.PLAN_TYPE,lr_cons.COMM_TYPE,NVL(lr_cons.RFND_FLAG,'N'), LV_DDO_C ODE, nvl(ln_prgs_amnt_mnth1,0), lr_cons.CLAS_AMNT, ln_grnt_amnt, lr_cons.LINKED_MJR,LV_GRNT_CODE); End if; Ln_count := ln_count + 1; fetch lcur_cons into lr_cons; end loop; /* If main loop executes for atleast once */ /********* 22/10/99 If LN_COUNT <= 0 Then LV_LOC_NAME := 'No Record Selected in Cursor'; RAISE LEX_EXP; End If; **************/ commit; Exception When OTHERS Then IF LCUR_CONS%ISOPEN THEN CLOSE LCUR_CONS; END IF; IF LCUR_LAST_CONS%ISOPEN THEN CLOSE LCUR_LAST_CONS; END IF; Rollback; LV_PROC_CODE := 'PB_PW_CONS_RCPT'; LV_UNIT_NAME := 'PB_PW_CONS_RCPT'; LV_ERROR_MESG := SQLERRM; -- call the package/procedure PPCM_ERROR_TRAP.GP_ERROR_LOG with argument s PPCM_ERROR_TRAP.GP_ERROR_LOG( LV_PROC_CODE, LV_UNIT_NAME, LV_LOC_NAME, LV_ERROR_MESG, LV_ERROR_DATA); Commit; RAISE_APPLICATION_ERROR(-20001,SQLERRM); END; END; /

Potrebbero piacerti anche