0% found this document useful (0 votes)
51 views40 pages

Objective: This Procedure Accepts Current Year and Month According To That It Updates Emp - Type DEL'

This document contains summaries of several payroll related procedures in Oracle. The procedures update tables with payroll information, insert attendance records, and populate date tables for new employees. Key points: - Proc_syst_cntl_upd updates a control table with the current year and month. - Proc_del_emp updates employee records to set their status to 'deleted' if their separation date matches the input date. - Proc_atn_prds_upd inserts payroll period records, updates attendance periods, and inserts related data for a given time period. - Proc_date_ins inserts date records into a date master table for a given month to populate dates for new employees. - Proc_ofab

Uploaded by

vgopalr
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views40 pages

Objective: This Procedure Accepts Current Year and Month According To That It Updates Emp - Type DEL'

This document contains summaries of several payroll related procedures in Oracle. The procedures update tables with payroll information, insert attendance records, and populate date tables for new employees. Key points: - Proc_syst_cntl_upd updates a control table with the current year and month. - Proc_del_emp updates employee records to set their status to 'deleted' if their separation date matches the input date. - Proc_atn_prds_upd inserts payroll period records, updates attendance periods, and inserts related data for a given time period. - Proc_date_ins inserts date records into a date master table for a given month to populate dates for new employees. - Proc_ofab

Uploaded by

vgopalr
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 40

Pay roll for settlement employees.

• Proc_syst_cntl_upd(‘yyyymm’)

Objective of this procedure :-

The objective of this procedure is to update colomn with current year and month ctl_para_name = 'YYYYMM'
from table syst_cntl.

Code :

create procedure proc_syst_cntl_upd(yymm in varchar2)


as
begin
update syst_cntl
set ctl_valu=yymm
where ctl_form_name='WAGSJRNL'
and ctl_para_name = 'YYYYMM';
end;

syst_cntl table :

CTL_FORM_NAME VARCHAR2(40)
CTL_PARA_NAME VARCHAR2(40)
CTL_VALU VARCHAR2(40)
CTL_ENTR_DATE DATE
CTL_ENTR_UID VARCHAR2(8)
CTL_UPD_DATE DATE
CTL_UPD_UID VARCHAR2(8)

• Proc_del_emp(‘yyyymm)

Objective : This procedure accepts current year and month according to that it updates emp_type = ‘DEL’
and emp_pydy=2.where emp_san_date = the input date.

Code :

create or replace PROCEDURE PROC_DEL_EMP (yymm in varchar2)


is
t_from varchar2(4) ;
t_to varchar2(4) ;
begin
begin
update empl_mstr
set emp_type='DEL',
emp_pydy=2
where emp_type='LIV' and
emp_san_date=to_date(yymm,'yyyymm') and
emp_sep_sepc_code is not null;
END;

Table empl_mstr
EMP_PERS_NMBR NOT NULL VARCHAR2(6)
EMP_TTL_TITL_CODE VARCHAR2(8)
EMP_FRST_NAME NOT NULL VARCHAR2(20)
EMP_LAST_NAME VARCHAR2(20)
EMP_FTHR_FRST_NAME VARCHAR2(20)
EMP_FTHR_LAST_NAME VARCHAR2(20)
EMP_BLD_GRP VARCHAR2(3)
EMP_SEX_CODE CHAR(1)
EMP_MRTL_STS CHAR(1)
EMP_PAN VARCHAR2(20)
EMP_APPT_DATE DATE
EMP_BRTH_DATE DATE
EMP_INCR_DATE DATE
EMP_ID_MARK VARCHAR2(50)
EMP_TYPE VARCHAR2(3)
EMP_SEP_SEPC_CODE VARCHAR2(2)
EMP_PYDY NUMBER(2)
EMP_CTG_CATG_CODE CHAR(1)
EMP_PRFT_CNTR_CODE CHAR(1)
EMP_WRKS_CODE CHAR(1)
EMP_DIV_DIVN_CODE CHAR(1)
EMP_DSB_SUB_CODE CHAR(1)
EMP_FNC_FUNC_CODE CHAR(1)
EMP_DPT_DEPT_CODE VARCHAR2(3)
EMP_SEC_SECN_CODE VARCHAR2(2)
EMP_DPT_WORK_DEPT VARCHAR2(3)
EMP_GRD_GRAD_CODE VARCHAR2(3)
EMP_INC_INCN_GRP VARCHAR2(3)
EMP_DSG_DESG_CODE VARCHAR2(3)
EMP_LAST_PROM_DATE DATE
EMP_LAST_TRFR_DATE DATE
EMP_SAN_DATE DATE
EMP_EXTN_YRS NUMBER(1)
EMP_OFF_CODE CHAR(1)
EMP_HIER_NMBR NUMBER(7)
EMP_HOU_HOUS_CODE CHAR(1)
EMP_TEFB_INDC CHAR(1)
EMP_TOFB_INDC CHAR(1)
EMP_COOP_INDC CHAR(1)
EMP_TWU_INDC CHAR(1)
EMP_ITG_ITCG_CODE VARCHAR2(3)
EMP_MGN_MGZN_CODE VARCHAR2(2)
EMP_DUTY_CODE CHAR(1)
EMP_ESF_INDC CHAR(1)
EMP_DPU_DEPU_CODE CHAR(1)
EMP_CARD_NMBR VARCHAR2(6)
EMP_HOD_INDC CHAR(1)
EMP_RPAD_PERS_NMBR VARCHAR2(6)
EMP_RPFN_PERS_NMBR VARCHAR2(6)
EMP_UCM_INDC CHAR(1)
EMP_CDR_CDRE_CODE VARCHAR2(5)
EMP_DA_INDC CHAR(1)
EMP_PF_INDC CHAR(1)
EMP_EPF_INDC CHAR(1)
EMP_OT_FACT NUMBER(2,1)
EMP_SLC_SLRY_CODE CHAR(1)
EMP_PENS_FCTR NUMBER(5,2)
EMP_BSIC_RATE NUMBER(8)
EMP_DA_RATE NUMBER(8,2)
EMP_PERS_PAY_RATE NUMBER(8,2)
EMP_INCN_PROT_ALLW NUMBER(8,2)
EMP_SPL_PROT_ALLW NUMBER(8,2)
EMP_CONV_ALLW NUMBER(8,2)
EMP_HRA NUMBER(8,2)
EMP_LTA_AMNT NUMBER(8,2)
EMP_VEHC_TYPE CHAR(1)
EMP_VEHC_NMBR VARCHAR2(10)
EMP_VEHC_REGN_DATE DATE
EMP_FPF_ACCT_NMBR VARCHAR2(5)
EMP_SAN_MEMB_NMBR VARCHAR2(10)
EMP_BNK_BANK_CODE VARCHAR2(3)
EMP_BANK_ACCT_NMBR VARCHAR2(15)
EMP_LAST_BSIC_RATE NUMBER(8)
EMP_BANK_LDGR_NMBR VARCHAR2(8)
EMP_LAST_BSIC_CHNG DATE
EMP_LAST_PERS_NMBR VARCHAR2(6)
EMP_GRD_LAST_GRAD VARCHAR2(3)
EMP_NEXT_KIN VARCHAR2(20)
EMP_REL_NEXT_KIN_REL VARCHAR2(2)
EMP_RLG_RLGN_CODE VARCHAR2(2)
EMP_NID_NATL_ID VARCHAR2(20)
EMP_NTL_NATL_CODE VARCHAR2(20)
EMP_CST_CSTE_CODE VARCHAR2(3)
EMP_APP_APPT_CODE VARCHAR2(2)
EMP_ENTR_DATE DATE
EMP_ENTR_UID VARCHAR2(8)
EMP_UPD_DATE DATE
EMP_UPD_UID VARCHAR2(8)
EMP_TRNG_CMPL_DATE DATE
EMP_GRD_SUBS_CODE VARCHAR2(3)
EMP_BOND_INDC CHAR(1)
EMP_BOND_STRT_DATE DATE
EMP_BOND_END_DATE DATE
EMP_SRTY_PERS_NMBR VARCHAR2(6)
EMP_BOND_AMNT NUMBER(8,2)
EMP_STLD_DATE DATE
EMP_RENT_PAID NUMBER(7,2)
EMP_CLB_CLUB_CODE VARCHAR2(2)
EMP_MENTOR VARCHAR2(6)
EMP_ACCESS_STRING VARCHAR2(30)
EMP_CLUSTER_CODE VARCHAR2(2)
EMP_CCN_CODE VARCHAR2(5)

It updates another field txp_amnt_plan = 0 from table itax_plan_mstr .

Code:
Begin
select to_char(prd_from,'yyyy') ,to_char(prd_to,'yyyy')
into t_from,t_to
from syst_prds
where prd_name='ITAX_YEAR' ;

update itax_plan_mstr
set txp_amnt_plan = 0
where txp_from_year= t_from
and txp_to_year = t_to
and txp_emp_pers_nmbr in(select emp_pers_nmbr
from empl_mstr
where emp_type='LIV'
and emp_san_date is not null
);
end ;

end;

Table : Itax_plan_mstr

TXP_FROM_YEAR NOT NULL VARCHAR2(4)


TXP_TO_YEAR NOT NULL VARCHAR2(4)
TXP_REF NOT NULL NUMBER(6)
TXP_EMP_PERS_NMBR NOT NULL VARCHAR2(6)
TXP_SCD_SVNG_CODE NOT NULL VARCHAR2(5)
TXP_AMNT_ACTL NOT NULL NUMBER(10,2)
TXP_AMNT_PLAN NOT NULL NUMBER(10,2)
TXP_ENTR_DATE DATE
TXP_ENTR_UID VARCHAR2(8)
TXP_UPD_DATE DATE
TXP_UPD_UID VARCHAR2(8)
TXP_DESC VARCHAR2(100)

• Proc_atn_prds_upd(yyyymm)

Objective : This procedure will inserting values in table pyrl_mstr and pydy_mstr and updating atn_prds table
Fields are atp_prm_yymm=t_yyyymm and atp_prm_ref=99. where atp_yymm=t_yyyymm
and atp_ref in (99,1).

Code :

create or replace
procedure proc_atn_prds_upd(t_yyyymm in varchar2) as
mnth varchar2(10) := to_char(add_months(to_date(t_yyyymm,'yyyymm'),1),'MON-YYYY');
begin
insert into pyrl_mstr(prm_yymm,prm_ref,prm_rem,prm_prc_pyrl_code,prm_entr_date,
prm_entr_uid,prm_upd_date,prm_upd_uid,prm_rmks)
values(t_yyyymm,99,'Monthly Salary','M',sysdate,'HRM',null,null,
'NB: Excess recovery of Income Tax for the current month, if any, should be
brought to our notice by 8th '||mnth||'.');
insert into pydy_mstr
values(t_yyyymm,99,1,null,null,sysdate,'HRM',null,null);
update atn_prds
set atp_prm_yymm=t_yyyymm,
atp_prm_ref=99
where atp_yymm=t_yyyymm
and atp_ref in (99,1);
end;

Table : pyrl_mstr

PRM_YYMM NOT NULL VARCHAR2(6)


PRM_REF NOT NULL NUMBER(2)
PRM_REM VARCHAR2(20)
PRM_PRC_PYRL_CODE CHAR(1)
PRM_ENTR_DATE DATE
PRM_ENTR_UID VARCHAR2(8)
PRM_UPD_DATE DATE
PRM_UPD_UID VARCHAR2(8)
PRM_RMKS VARCHAR2(1000)
PRM_GLR_DEBT_MH VARCHAR2(2)
PRM_GLR_DEBT_SH VARCHAR2(2)

Table ; pydy_mstr

PDM_PRM_YYMM NOT NULL VARCHAR2(6)


PDM_PRM_REF NOT NULL NUMBER(2)
PDM_PYDY NOT NULL NUMBER(2)
PDM_GRSS_DATE DATE
PDM_NET_DATE DATE
PDM_ENTR_DATE DATE
PDM_ENTR_UID VARCHAR2(8)
PDM_UPD_DATE DATE
PDM_UPD_UID VARCHAR2(8)

Table : atn_prds

ATP_YYMM NOT NULL VARCHAR2(6)


ATP_REF NOT NULL NUMBER(2)
ATP_DESC VARCHAR2(20)
ATP_CLOS_DATE DATE
ATP_PRM_YYMM VARCHAR2(6)
ATP_PRM_REF NUMBER(2)
ATP_ENTR_DATE DATE
ATP_ENTR_UID VARCHAR2(8)
ATP_UPD_DATE DATE
ATP_UPD_UID VARCHAR2(8)

• Proc_date_ins(‘yyyymm’)

Objective : This procedure will inserting date into date_mstr table when new employee entry will made .

Code :

create or replace procedure proc_date_ins ( t_yymm in varchar2 )


is
curr_date date default to_date(t_yymm, 'yyyymm');
begin
while curr_date between to_date(t_yymm, 'yyyymm') and
last_day(to_date(t_yymm, 'yyyymm'))
loop
insert into date_mstr values (curr_date, sysdate, substr(user, 1, 8),
null, null );
curr_date := curr_date + 1;
end loop;
end;
/

Table : Date_Mstr

DTM_DATE NOT NULL DATE


DTM_ENTR_DATE DATE
DTM_ENTR_USID VARCHAR2(8)
DTM_UPD_DATE DATE
DTM_UPD_USID VARCHAR2(8)

First A/c. Dept. made some entry, after that check working dept in empl profile screen check duty code in empl code detl
screen.

• Proc_ofab_updt(‘yyyymm’,pno)

Objective : This procedure will update the off days in atn_mstr table for new joined employees. It will take date
from empl_mstr and date_mstr tables in a cursor.

Code :

create or replace procedure proc_ofab_updt (t_yymm in varchar2,


t_pno in varchar2)
as
cursor c1 is select t_yymm, 99, emp_pers_nmbr, dtm_date,
decode (emp_off_code,to_char(dtm_date,'d'),8,
0) off
from empl_mstr, date_mstr
where
emp_type = 'LIV' and
emp_pers_nmbr = t_pno and
to_char(dtm_date,'yyyymm') = t_yymm and
dtm_date not in ( select atn_date from atn_mstr
where atn_emp_pers_nmbr = t_pno
and atn_atp_yymm = t_yymm );
begin
for c1rec in c1 loop
exit when c1%notfound;
insert into atn_mstr (atn_atp_yymm, atn_atp_ref, atn_emp_pers_nmbr,
atn_date, atn_off_hrs, atn_abs_fhlf_hrs,
atn_abs_shlf_hrs)
values (t_yymm,99,t_pno,c1rec.dtm_date, c1rec.off, 4, 4);
end loop;
end;

Table : atn_mstr

ATN_DATE NOT NULL DATE


ATN_EMP_PERS_NMBR NOT NULL VARCHAR2(6)
ATN_ATP_YYMM NOT NULL VARCHAR2(6)
ATN_ATP_REF NOT NULL NUMBER(2)
ATN_IN_BADG_READ VARCHAR2(2)
ATN_OUT_BADG_READ VARCHAR2(2)
ATN_IN_TIME NUMBER(4)
ATN_OUT_TIME NUMBER(4)
ATN_SFT_SHFT_CODE VARCHAR2(2)
ATN_LATE_MNTS NUMBER(4)
ATN_ERLY_MNTS NUMBER(4)
ATN_SFT_EDIT_SHFT_CODE VARCHAR2(2)
ATN_FHLF_HRS NUMBER(5,2)
ATN_SHLF_HRS NUMBER(5,2)
ATN_LEAV_FHLF_HRS NUMBER(5,2)
ATN_LEAV_SHLF_HRS NUMBER(5,2)
ATN_HPAY_FHLF_HRS NUMBER(5,2)
ATN_HPAY_SHLF_HRS NUMBER(5,2)
ATN_LWP_FHLF_HRS NUMBER(5,2)
ATN_LWP_SHLF_HRS NUMBER(5,2)
ATN_ABS_FHLF_HRS NUMBER(5,2)
ATN_ABS_SHLF_HRS NUMBER(5,2)
ATN_SPLV_FHLF_HRS NUMBER(5,2)
ATN_SPLV_SHLF_HRS NUMBER(5,2)
ATN_LVIN_FHLF_HRS NUMBER(5,2)
ATN_LVIN_SHLF_HRS NUMBER(5,2)
ATN_SATN_FHLF_HRS NUMBER(5,2)
ATN_SATN_SHLF_HRS NUMBER(5,2)
ATN_OFF_HRS NUMBER(5,2)
ATN_OFF_NINC_HRS NUMBER(5,2)
ATN_GRD_ACTG_GRAD VARCHAR2(3)
ATN_INC_ACTG_INCN VARCHAR2(3)
ATN_DPT_WORK_DEPT VARCHAR2(3)
ATN_OT_HRS NUMBER(5,2)
ATN_AUTO_LEAV_INDC CHAR(1)
ATN_ENTR_DATE DATE
ATN_ENTR_UID VARCHAR2(8)
ATN_EDIT_DATE DATE
ATN_EDIT_UID VARCHAR2(8)
ATN_UPD_DATE DATE
ATN_UPD_UID VARCHAR2(8)
ATN_ACTG_PNO VARCHAR2(6)
• Pac_itax_calc.proc_itax_calc(‘p’,yyyymm,’200203’,’200302’) Financial Year.

Objective : As per name this procedure will calculate the Income Tax for the month . It is a package which contains
number of functions i.e. function f_cded_txbl_grss, function func_txbl_hrd, function func_grss_for_tax etc.

Code :

create or replace
package pac_itax_calc as
function f_cded_txbl_grss (
PYRL_ref IN number
, P_PNO IN VARCHAR2
, P_YYMM IN VARCHAR2
) return number;
pragma restrict_references(f_cded_txbl_grss,wnds,wnps,rnps);
function func_txbl_hrd(
pno in varchar2
, prcyymm in varchar2
, proc_yymm in varchar2
, fyymm in varchar2
, tyymm in varchar2
, instl in number
) return number;
pragma restrict_references(func_txbl_hrd,wnds,wnps,rnps);
function func_grss_for_tax(
type in char
, pno in varchar2
, prjmnth in number
, frmprd in varchar2
, toprd in varchar2
, prcyyyymm in varchar2
, proc_yymm in varchar2
) return number;
pragma restrict_references(func_grss_for_tax,wnds,wnps,rnps);
function func_paygrs(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number;
pragma restrict_references(func_paygrs,wnds,wnps,rnps);
function func_sal(
pno in varchar2
, prcyyyymm in varchar2
, proc_yymm in varchar2
, prjmnth in number
) return number;
pragma restrict_references(func_sal,wnds,wnps,rnps);
function func_hra_proj(
pno in varchar2
, yyyymm in varchar2
) return number;
pragma restrict_references(func_hra_proj,wnds,wnps,rnps);
function func_grss_rebt(
type in char
, prdfrm in varchar2
, prdto in varchar2
, pno in varchar2
, prcyymm in varchar2
, prjnmnt in number
) return number;
pragma restrict_references(func_grss_rebt,wnds,wnps,rnps);
function func_inst_mnth(
pers_nmbr in varchar2
, itax_from_period in varchar2
, itax_to_period in varchar2
, current_period in varchar2
) return number;
pragma restrict_references(func_inst_mnth,wnds,wnps,rnps);
function func_std_dedn(
grss in number
, frmyy in varchar2
, toyy in varchar2
) return number;
pragma restrict_references(func_std_dedn,wnds,wnps,rnps);
function func_totl_svng(
type in char
, prdfrm in varchar2
, prdto in varchar2
, pno in varchar2
, prcyymm in varchar2
, prjnmnt in number
) return number;
pragma restrict_references(func_totl_svng,wnds,wnps,rnps);
function func_plnsvg(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
) return number;
pragma restrict_references(func_plnsvg,wnds,wnps,rnps);
function func_svgact(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number;
pragma restrict_references(func_svgact,wnds,wnps,rnps);
function func_svgprj(
pno in varchar2
, prjnmnt in number
, prcyymm in varchar2
) return number;
pragma restrict_references(func_svgprj,wnds,wnps,rnps);
function func_svg_pay_prj(
pno in varchar2
, prjnmnt in number
, prcyymm in varchar2
) return number;
pragma restrict_references(func_svg_pay_prj,wnds,wnps,rnps);
function func_rebt(
type in char
, prdfrm in varchar2
, prdto in varchar2
, pno in varchar2
, prcyymm in varchar2
, prjnmnt in number
, grss in number
) return number;
pragma restrict_references(func_rebt,wnds,wnps,rnps);
function func_plnsvg_rebt(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
, schm in varchar2
) return number;
pragma restrict_references(func_plnsvg_rebt,wnds,wnps,rnps);
function func_svgact_rebt(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
, schm in varchar2
) return number;
pragma restrict_references(func_svgact_rebt,wnds,wnps,rnps);
function func_svgprj_rebt(
pno in varchar2
, prjnmnt in number
, prcyymm in varchar2
, schm in varchar2
) return number;
pragma restrict_references(func_svgprj_rebt,wnds,wnps,rnps);
function func_tax_cnvy_paid(
pno in varchar2
, proc_yymm in varchar2
, fromyymm in varchar2
, toyymm in varchar2
) return number;
pragma restrict_references(func_tax_cnvy_paid,wnds,wnps,rnps);
function func_txbl_conv(
pno in varchar2
, proc_yymm in varchar2
) return number;
pragma restrict_references(func_txbl_conv,wnds,wnps,rnps);
function func_nontax_conv(
pno in varchar2
, proc_yymm in varchar2
, fromyymm in varchar2
, toyymm in varchar2
, inst in number
) return number ;
pragma restrict_references(func_nontax_conv,wnds,wnps,rnps);
function func_txbl_lta(
pno in varchar2
, frmyymm in varchar2
, toyymm in varchar2
) return number;
pragma restrict_references(func_txbl_lta,wnds,wnps,rnps);
function func_non_tax_hra(
pno in varchar2
, fromyymm in varchar2
, toyymm in varchar2
) return number;
pragma restrict_references(func_non_tax_hra,wnds,wnps,rnps);
function func_tax_comp(
p_pno varchar2
, grss number
, taxfrm varchar2
, taxto varchar2
) return number;
pragma restrict_references(func_tax_comp,wnds,wnps,rnps);
function func_surcharge_comp(
grss number
, taxfrm varchar2
, taxto varchar2
, taxamnt number
) return number;
pragma restrict_references(func_surcharge_comp,wnds,wnps,rnps);
function func_tax_rcvd(
pno in varchar2
, fromyymm in varchar2
, toyymm in varchar2
) return number ;
pragma restrict_references(func_tax_rcvd,wnds,wnps,rnps);
function func_pln_rebt(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
, schm in varchar2
) return number;
pragma restrict_references(func_pln_rebt,wnds,wnps,rnps);
function func_grss_plus(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
) return number;
pragma restrict_references(func_grss_plus,wnds,wnps,rnps);
function func_svg_pay_act(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number;
pragma restrict_references(func_svg_pay_act,wnds,wnps,rnps);
function func_txbl_elec(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number ;
pragma restrict_references(func_txbl_elec,wnds,wnps,rnps);
function func_txbl_waterchrg(
pno in varchar2
, prcyyyymm in varchar2
, procyymm in varchar2
, frmprd in varchar2
, toprd in varchar2
, instl in number
) return number ;
pragma restrict_references(func_txbl_waterchrg,wnds,wnps,rnps);
function func_txbl_loan(
pno in varchar2
, prev_yymm in varchar2
, proc_yymm in varchar2
, fyymm in varchar2
) return number ;
pragma restrict_references(func_txbl_loan,wnds,wnps,rnps);
function func_pf_perq(
p_pno in varchar2
) return number ;
pragma restrict_references(func_pf_perq,wnds,wnps,rnps);
function func_88d(
p_pno varchar2
, grss number
, taxfrm varchar2
, taxto varchar2
) return number ;
pragma restrict_references(func_88d,wnds,wnps,rnps);
procedure proc_itax_calc(
type in char
, proc_yymm in varchar2
, frmym in varchar2
, toym in varchar2
);
end pac_itax_calc;
/
create or replace
package body pac_itax_calc as
function f_cded_txbl_grss (
PYRL_ref IN number
, P_PNO IN VARCHAR2
, P_YYMM IN VARCHAR2
) return number as
retval number(9,2) :=0;
begin
begin
select /*+ ordered */
sum(decode ( ptm_ptc_trns_indc, 'E', ptm_finl_amnt
, ptm_finl_amnt * (-1)))
into retval
from
pay_trns_mstr
, atn_prds
, pay_trns_code
where ptm_emp_pers_nmbr= p_pno and
ptm_atp_yymm = p_yymm and
ptm_trns_date < add_months(to_date(p_yymm, 'YYYYMM'), 1) and
ptm_cncl_indc is null and
ptm_atp_yymm = atp_yymm and
ptm_atp_ref = atp_ref and
atp_prm_ref = pyrl_ref and
ptm_ptc_trns_indc = ptc_trns_indc and
ptm_ptc_code = ptc_code and
ptc_tax_indc='X' and
ptc_grss_indc = 'X';
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0);
end;
/*
** Taxble hrd changed on 25mar2002
*/
function func_txbl_hrd(
pno in varchar2
, prcyymm in varchar2
, proc_yymm in varchar2
, fyymm in varchar2
, tyymm in varchar2
, instl in number
) return number as
cursor c1 is
select ptm_emp_pers_nmbr tpno,ptm_atp_yymm t_yymm,sum(ptm_finl_amnt) amnt
from pay_trns_mstr
where ptm_emp_pers_nmbr=pno
and ptm_atp_yymm >= fyymm
and ptm_atp_yymm <= tyymm
and ptm_atp_ref = 99
and ptm_ptc_code= '0402'
and ptm_ptc_trns_indc='R'
and ptm_cncl_indc is null
-- and (ptm_syst_indc is null or ptm_syst_indc<>'R')
group by ptm_emp_pers_nmbr,ptm_atp_yymm;
retval number(12,2):= 0;
tnos number(4) ;
proj_amnt1 number(8,2);
proj_amnt number(8,2);
paygrss number(8,2) := 0;
hrd_actl number(8,2) := 0;
prev_actl number(8,2) := 0;
t_fctr number(5,2) := 1;
t_fctr1 number(5,2) := 1;
begin
begin
select count(*)
into tnos
from hous_data
where hdt_emp_pers_nmbr=pno
and hdt_proc_yymm>= fyymm-1 -- should see the last month of itax year also.
and hdt_proc_yymm<= tyymm ;
end;
if tnos =0 then
retval:=0;
else
begin
select (pac_itax_calc.func_sal(pno,prcyymm,proc_yymm,instl)+
abs(func_hrd_grss_plus(pno,fyymm,tyymm,'P')))*(.2)
into proj_amnt1
from dual;
select (sum(hdt_totl_rent)*instl)
into proj_amnt
from hous_data
where hdt_emp_pers_nmbr = pno
and hdt_proc_yymm = prcyymm
and hdt_vacn_yymm is null ;
if proj_amnt is null then
proj_amnt :=0 ;
else
proj_amnt := proj_amnt1-nvl(proj_amnt,0) ;
end if ;
exception when no_data_found then
proj_amnt := 0 ;
end;
begin
paygrss := 0 ;
for c1rec in c1 loop
exit when c1%notfound;
/* -- added on 29/07/2004 by rashid -- */
Begin
select (last_day(to_date(c1rec.t_yymm,'yyyymm'))-hdt_allt_date)/30
into t_fctr
from hous_data
where hdt_emp_pers_nmbr = c1rec.tpno
and hdt_proc_yymm = c1rec.t_yymm
and to_char(hdt_allt_date,'yyyymm')=hdt_proc_yymm
and rownum < 2 ;
exception when no_data_found then
t_fctr := 1 ;
end ;
---- end ----
-- dbms_output.put_line('yyyymm:'||c1rec.t_yymm||'fctr:'||t_fctr);
----dbms_output.put_line('yyyymm'||c1rec.t_yymm);
/* -- added on 01/04/2006 by rashid
begin
select (to_date(c1rec.t_yymm,'yyyymm')-hdt_vacn_date)/30
into t_fctr1
from hous_data
where hdt_emp_pers_nmbr = c1rec.tpno
and hdt_proc_yymm = c1rec.t_yymm
and HDT_VACN_YYMM=hdt_proc_yymm
and rownum < 2 ;
exception when no_data_found then
t_fctr1 := 1 ;
end ; */
-- dbms_output.put_line('yyyymm:'||c1rec.t_yymm||'fctr1:'||t_fctr1);
hrd_actl:= nvl(pac_itax_calc.func_paygrs(c1rec.tpno,c1rec.t_yymm
,c1rec.t_yymm)*t_fctr*
(.2),0)-c1rec.amnt;
-- dbms_output.put_line(hrd_actl);
paygrss := paygrss+hrd_actl ;
end loop ;
end;
/* --- added on 10/08/2004 by rashid --- */
retval:= nvl(proj_amnt,0)+nvl(paygrss,0) ;
if pno = '304538' then
retval := retval - 3187 ;
elsif
pno = '304756' then
retval := retval - 715 ;
end if;
end if ;
return nvl(retval,0);

end;
function func_grss_for_tax(
type in char
, pno in varchar2
, prjmnth in number
, frmprd in varchar2
, toprd in varchar2
, prcyyyymm in varchar2
, proc_yymm in varchar2
) return number as
retval number(10,2):=0;
begin
select nvl(pac_itax_calc.func_paygrs(pno,frmprd,toprd),0) +
nvl(pac_itax_calc.func_sal(pno,prcyyyymm,proc_yymm,prjmnth ),0) +
nvl(pac_itax_calc.f_cded_txbl_grss(99,pno,proc_yymm),0) +
(nvl(pac_itax_calc.func_hra_proj(pno,proc_yymm),0) * prjmnth) +
nvl(pac_itax_calc.func_txbl_conv(pno,proc_yymm)*prjmnth,0)+
nvl(pac_itax_calc.func_txbl_hrd(pno,prcyyyymm,proc_yymm,frmprd
,toprd,prjmnth),0) +
nvl(pac_itax_calc.func_txbl_waterchrg(pno,prcyyyymm,proc_yymm
,frmprd,toprd,prjmnth),0) +
nvl(pac_itax_calc.func_txbl_elec(pno,frmprd,toprd),0) +
nvl(pac_itax_calc.func_tax_cnvy_paid(pno,proc_yymm
,frmprd,toprd),0) +
nvl(pac_itax_calc.func_txbl_loan(pno,prcyyyymm,proc_yymm,frmprd)
,0) +
nvl(pac_itax_calc.func_txbl_lta(pno,frmprd,toprd),0) +
-- nvl(pac_itax_calc.func_pf_perq(pno),0) +
nvl(pac_itax_calc.func_grss_plus(pno,frmprd,toprd,type),0)
into retval
from dual;
return nvl(round(retval),0);
end;
function func_paygrs(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number as
retval number(9,2) :=0;
begin
begin
select sum (nvl (pay_work_bsic, 0) +
nvl (pay_leav_bsic , 0) +
nvl (pay_work_da , 0) +
nvl (pay_leav_da , 0) +
nvl (pay_actg_amnt , 0) +
nvl (pay_incn_amnt , 0) +
nvl (pay_actg_incn_amnt , 0) +
nvl (pay_prot_amnt , 0) +
nvl (pay_enc_amnt , 0) +
nvl (pay_csft_amnt , 0) +
nvl (pay_ot_amnt , 0) +
nvl (func_cded_ern_txbl (pay_prm_ref,
pay_emp_pers_nmbr,
pay_prm_yymm),0))
into retval
from pay_mstr
where pay_emp_pers_nmbr = pno
and pay_prm_yymm between frmprd and toprd;
exception when no_data_found then
retval :=0;
end;
return retval;
end;
function func_sal(
pno in varchar2
, prcyyyymm in varchar2
, proc_yymm in varchar2
, prjmnth in number
) return number as
retval number(10,2) :=0;
begin
begin
select f_bsic(pno,proc_yymm) +
nvl(pay_incn_amnt,0) +
func_fxd(pno,proc_yymm)
into retval
from pay_mstr
where pay_emp_pers_nmbr = pno
and pay_prm_yymm = prcyyyymm
and pay_prm_ref=99;
exception when no_data_found then
select f_bsic(pno,proc_yymm) +
func_fxd(pno,
proc_yymm)
into retval
from dual;
end;
return nvl(retval * prjmnth,0);
end;
function func_hra_proj(
pno in varchar2
, yyyymm in varchar2
) return number as
retval number :=0;
hou_cd char(1);
rent number :=0;
txindc char(1);
begin
begin
select /*+ ordered */
emp_hou_hous_code
, emp_rent_paid
, hou_txbl_indc
into
hou_cd
, rent
, txindc
from
empl_mstr
, hous_code
where emp_pers_nmbr = pno and
emp_hou_hous_code=hou_hous_code;
exception when no_data_found then
retval :=0;
end;
if txindc is null then
retval :=0;
else
retval :=f_hra(pno,yyyymm,rent,hou_cd) ;
end if;
return nvl(retval,0);
end;
function func_grss_rebt(
type in char
, prdfrm in varchar2
, prdto in varchar2
, pno in varchar2
, prcyymm in varchar2
, prjnmnt in number
) return number as
schm_amnt number(10,2) :=0;
totl_amnt number(10,2) :=0;
retval number(10,2) :=0;
cursor c1 is select * from itax_schm_mstr
where scm_itax_tret='G'
and scm_itax_schm <> '88G' ;
begin
for c1rec in c1
loop
exit when c1%notfound;
select nvl(pac_itax_calc.func_pln_rebt(pno,prdfrm,prdto,type,
c1rec.scm_itax_schm),0)
into schm_amnt
from dual;
if nvl(schm_amnt,0) > nvl(c1rec.scm_itax_limt,0)
then
schm_amnt:=nvl(c1rec.scm_itax_limt,0);
end if;
totl_amnt := nvl(totl_amnt,0) +nvl(schm_amnt,0);
end loop;
return nvl(round(totl_amnt),0);
end;
/*
** func_san_yymm removed and func_san_date added on 30-7-99 ra/bsj
*/
function func_inst_mnth(
pers_nmbr in varchar2
, itax_from_period in varchar2
, itax_to_period in varchar2
, current_period in varchar2
) return number as
project_months number (3, 0) := 0;
san_period varchar2 (6);
begin
san_period := to_char( func_san_date (pers_nmbr)-1,'yyyymm');
if san_period > itax_to_period then
return months_between (to_date (itax_to_period, 'yyyymm'),
to_date (current_period, 'yyyymm'));
elsif san_period < current_period then
return 0;
else
return months_between (to_date (san_period, 'yyyymm'),
to_date (current_period, 'yyyymm'));
end if;
end;
function func_std_dedn(
grss in number
, frmyy in varchar2
, toyy in varchar2
) return number as
retval number(10,2) :=0;
std number(10,2) :=0;
prc number(10,2) :=0;
begin
if grss <= 500000 then
begin
select itl_chek_amnt , itl_perc/100
into std , prc
from itax_logc
where itl_from_year=frmyy and
itl_to_year=toyy and
substr(itl_para_name,1,7)='STDDED1';
end;
elsif grss > 500000 then
begin
select itl_chek_amnt , itl_perc/100
into std , prc
from itax_logc
where itl_from_year=frmyy and
itl_to_year=toyy and
substr(itl_para_name,1,7)='STDDED2';
end;
else std := 0;
end if;
if grss*prc < std then
retval:=grss*prc;
else
retval := std;
end if;
return nvl(retval,0);
end;
function func_totl_svng(
type in char
, prdfrm in varchar2
, prdto in varchar2
, pno in varchar2
, prcyymm in varchar2
, prjnmnt in number
) return number as
retval number(10,2) :=0;
begin
select nvl(pac_itax_calc.func_plnsvg(pno,prdfrm,prdto,
type),0) +
nvl(pac_itax_calc.func_svgact(pno,prdfrm,prdto),0) +
nvl(pac_itax_calc.func_svgprj(pno,prjnmnt,prcyymm),0) +
nvl(pac_itax_calc.func_svg_pay_prj(pno,prjnmnt,
prcyymm),0)
into retval
from dual;
return nvl(round(retval,0),0);
end;
function func_plnsvg(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
) return number as
retval number(10,2) :=0;
begin
begin
select /*+ ordered index(itax_plan_mstr itax_plan_mstr_ak1) */
sum(decode(type,'P',nvl(txp_amnt_plan,0) +
nvl(txp_amnt_actl,0),
nvl(txp_amnt_actl,0)
)
)
into retval
from
itax_plan_mstr
, svng_code_mstr
, itax_schm_mstr
where txp_emp_pers_nmbr = pno and
txp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) and
txp_scd_svng_code = scd_svng_code and
scd_scm_itax_schm = scm_itax_schm and
scm_itax_tret = 'S';
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0);
end;
function func_svgact(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number as
retval number(10,2) :=0;
retval1 number(10,2) :=0;
retval2 number(10,2) :=0;
begin
begin
select sum( nvl(pay_pf_cntb_amnt,0)+ nvl(pay_teps_amnt,0))
into retval
from pay_mstr
where pay_emp_pers_nmbr=pno and
pay_prm_yymm >= frmprd and
pay_prm_yymm <= toprd;
exception when no_data_found then
retval :=0;
end;
begin
select sum(decode ( ptm_ptc_trns_indc, 'R', ptm_finl_amnt,
ptm_finl_amnt * (-1)))
into retval1
from pay_trns_mstr
where ptm_emp_pers_nmbr= pno and
ptm_atp_yymm >= frmprd and
ptm_atp_yymm <= toprd and
ptm_atp_ref in(1,97,99) and
ptm_cncl_indc is null and
ptm_ptc_code in('0101','0103','0801','0802','0808','0809','0810');
exception when no_data_found then
retval1 :=0;
end;
begin
select nvl(f_vpf_csh_deposit(pno,'ITAX_YEAR'),0) into retval2 from dual;
exception when no_data_found then
retval2 :=0;
end ;
return (nvl(retval,0)+nvl(retval1,0)+nvl(retval2,0));
end;
function func_svgprj(
pno in varchar2
, prjnmnt in number
, prcyymm in varchar2
) return number as
retval number(10,2) :=0;
begin
begin
select /*+ ordered */
sum(nvl(svg_inst_amnt,0)) * (prjnmnt )
into retval
from svng_mstr,svng_code_mstr,pay_trns_code
where svg_emp_pers_nmbr = pno and
nvl(svg_mtty_date,add_months(to_date(prcyymm,'yyyymm'),1))
> to_date(prcyymm,'yyyymm') and
svg_scd_svng_code = scd_svng_code and
scd_svng_code <> 'CTD' and
scd_ptc_trns_indc = ptc_trns_indc and
scd_ptc_code = ptc_code;
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0) ;
end;
function func_svg_pay_prj(
pno in varchar2
, prjnmnt in number
, prcyymm in varchar2
) return number as
retval number(10,2) :=0;
retval1 number(10,2) :=0;
proc_yymm varchar2(6) := to_char(add_months(to_date(prcyymm,'yyyymm'),1),'yyyymm');
begin
begin
select
decode(emp_pf_indc,'X',
(f_bsic(emp_pers_nmbr,proc_yymm)+
f_da(emp_pers_nmbr,proc_yymm)) * .12,0),
decode(emp_ctg_catg_code,'N',(decode(emp_pf_indc,'X',
(f_bsic(emp_pers_nmbr,proc_yymm)+
f_da(emp_pers_nmbr,proc_yymm)) * .02,0)),
'S',(decode(emp_pf_indc,'X',
(f_bsic(emp_pers_nmbr,proc_yymm)+
f_da(emp_pers_nmbr,proc_yymm)) * .02,0)),0)
into retval,retval1
from empl_mstr
where emp_pers_nmbr =pno;
exception when no_data_found then
retval :=0;
retval1:=0;
end;
return nvl((round(retval,0) +round(retval1,0)) * (prjnmnt ),0);
end;
function func_rebt(
type in char
, prdfrm in varchar2
, prdto in varchar2
, pno in varchar2
, prcyymm in varchar2
, prjnmnt in number
, grss in number
) return number as
a88a_amnt number(10,2) :=0;
schm_amnt number(10,2) :=0;
rebt_amnt number(10,2) :=0;
totl_amnt number(10,2) :=0;
retval number(10,2) :=0;
cursor c1 is
select *
from itax_schm_mstr
where scm_itax_tret = 'S';
begin
for c1rec in c1
loop
select nvl (pac_itax_calc.func_plnsvg_rebt(
pno
, prdfrm
, prdto
, type
, c1rec.scm_itax_schm
), 0) +
nvl (pac_itax_calc.func_svgact_rebt (
pno
, prdfrm
, prdto
, c1rec.scm_itax_schm
), 0) +
nvl (pac_itax_calc.func_svgprj_rebt (
pno
, prjnmnt
, prcyymm
, c1rec.scm_itax_schm
), 0)
into schm_amnt
from dual;
if c1rec.scm_itax_schm = '88' then
schm_amnt := nvl(schm_amnt,0) +
nvl(pac_itax_calc.func_svg_pay_act(pno,prdfrm,prdto),0) +
nvl(pac_itax_calc.func_svg_pay_prj(pno,prjnmnt,prcyymm),0);
end if;
if nvl(schm_amnt,0) > nvl(c1rec.scm_itax_limt,0) then
schm_amnt:=nvl(c1rec.scm_itax_limt,0);
end if;
if c1rec.scm_itax_schm ='88A' then
a88a_amnt :=nvl(schm_amnt,0);
end if;
totl_amnt := nvl(totl_amnt,0) + nvl(schm_amnt,0);
end loop;
if totl_amnt > 70000 then
totl_amnt := nvl(totl_amnt,0) - nvl(a88a_amnt,0) ;
if totl_amnt > 70000 then
totl_amnt :=70000 + nvl(a88a_amnt,0) ;
else
totl_amnt :=totl_amnt + nvl(a88a_amnt,0);
end if;
end if;
--- included on 29th May 2002 by Rashid
if grss <= 100000 then
rebt_amnt :=nvl(totl_amnt,0) * .30;
if rebt_amnt>30000 then
rebt_amnt:=30000;
end if;
elsif grss > 100000 and grss <= 150000 then
rebt_amnt :=nvl(totl_amnt,0) * .20;
if rebt_amnt>20000 then
rebt_amnt:=20000;
end if;
elsif grss > 150000 and grss <= 500000 then
rebt_amnt :=nvl(totl_amnt,0) * .15;
if rebt_amnt>15000 then
rebt_amnt:=15000;
end if;
else
rebt_amnt:= 0 ;
end if;
-- dbms_output.put_line('total ' || to_char(totl_amnt));
-- dbms_output.put_line('rebt ' || to_char(rebt_amnt));
return nvl(round(rebt_amnt,0),0);
end;
function func_plnsvg_rebt(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
, schm in varchar2
) return number as
retval number(10,2) :=0;
begin
begin
select /*+ ordered index(itax_plan_mstr itax_plan_mstr_ak1) */
sum(decode(type,'P',nvl(txp_amnt_plan,0) +
nvl(txp_amnt_actl,0),
nvl(txp_amnt_actl,0)
)
)
into retval
from
itax_plan_mstr
, svng_code_mstr
, itax_schm_mstr
where txp_emp_pers_nmbr = pno and
txp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) and
txp_scd_svng_code = scd_svng_code and
scd_scm_itax_schm = scm_itax_schm and
scm_itax_schm = schm and
scm_itax_tret = 'S' ;
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0);
end;
function func_svgact_rebt(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
, schm in varchar2
) return number as
retval number(10,2) :=0;
retval1 number(10,2) :=0;
begin
begin
select nvl(f_vpf_csh_deposit(pno,'ITAX_YEAR'),0) into retval1 from dual;
exception when no_data_found then
retval1 :=0;
end ;
begin
select /*+ ordered index(pay_trns_mstr pay_trns_mstr_ak3) */
sum(decode(ptm_ptc_trns_indc,'R',nvl(ptm_finl_amnt,0),
'E',nvl(ptm_finl_amnt,0) * -1
)
)
into retval
from
pay_trns_mstr
, pay_trns_code
, svng_code_mstr
where ptm_emp_pers_nmbr=pno and
ptm_atp_yymm >= frmprd and
ptm_atp_yymm <= toprd and
ptm_cncl_indc is null and
ptm_ptc_trns_indc = ptc_trns_indc and
ptm_ptc_code = ptc_code and
ptm_ptc_code = scd_ptc_code and
scd_scm_itax_schm = schm and
scd_svng_code <> 'CTD';
exception when no_data_found then
retval :=0;
end;
if schm='88' then
return (nvl(retval,0)+nvl(retval1,0));
else
return (nvl(retval,0));
end if;
end;
function func_svgprj_rebt(
pno in varchar2
, prjnmnt in number
, prcyymm in varchar2
, schm in varchar2
) return number as
retval number(10,2) :=0;
begin
begin
select /*+ ordered */
sum(nvl(svg_inst_amnt,0))
into retval
from
svng_mstr
, svng_code_mstr
, pay_trns_code
where svg_emp_pers_nmbr =pno and
nvl(svg_mtty_date,add_months(to_date(prcyymm,'yyyymm'),1))
> to_date(prcyymm,'yyyymm') and
svg_scd_svng_code = scd_svng_code and
scd_scm_itax_schm = schm and
scd_svng_code <> 'CTD' and
scd_ptc_trns_indc = ptc_trns_indc and
scd_ptc_code = ptc_code ;
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0) * nvl(prjnmnt,0);
end;
function func_tax_cnvy_paid(
pno in varchar2
, proc_yymm in varchar2
, fromyymm in varchar2
, toyymm in varchar2
) return number as
retval number(10,2) :=0;
pay_cnvy number(9,2) :=0;
ptm_cnvy_ern number(9,2) :=0;
ptm_cnvy_ded number(9,2) :=0;
conv_type varchar2(2);
ctg varchar2(2);
begin
select emp_ctg_catg_code into ctg from empl_mstr
where emp_pers_nmbr = pno ;
if ctg in('S','N') then
retval := 0 ;
else
begin
select sum(decode(pay_cnvy_type,'2',
(decode(sign(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-800),1,
(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-800),0)),
-- '4',
-- (decode(sign(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-1200),1,
-- (nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-1200),0)),
0))
into pay_cnvy
from pay_mstr
where pay_emp_pers_nmbr=pno
and pay_prm_yymm >= fromyymm
and pay_prm_yymm <= proc_yymm ;
exception when no_data_found then
pay_cnvy := 0 ;
end;
retval := nvl(pay_cnvy,0) ;
end if;
return nvl(retval,0);
end;
function func_txbl_conv(
pno in varchar2
, proc_yymm in varchar2
) return number as
retval number(10,2) :=0;
conv_type varchar2(2) ;
begin
begin
select f_vhtp(pno,proc_yymm) into conv_type from dual;
if conv_type = '2' then
select f_conv(pno,proc_yymm)-800 into retval from dual;
if retval < 0 then
retval := 0;
end if;
/* elsif conv_type = '4' then
select f_conv(pno,proc_yymm)-1200 into retval from dual;
if retval < 0 then
retval := 0;
end if; */
else
retval := 0;
end if;
exception when no_data_found then
retval := 0 ;
end;
return retval;
end ;
function func_nontax_conv(
pno in varchar2
, proc_yymm in varchar2
, fromyymm in varchar2
, toyymm in varchar2
, inst in number
) return number as
retval number(10,2) :=0;
pay_cnvy number(9,2) :=0;
ptm_cnvy_ern number(9,2) :=0;
ptm_cnvy_ded number(9,2) :=0;
conv_type varchar2(2);
pay_proj number(12,2) :=0;
begin
begin
select decode(pay_cnvy_type,'2',
(decode(sign(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-800),1,
800*inst,(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0))*inst)),
'4',
(decode(sign(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-1200),1,
1200*inst,(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0))*inst)),
0)
into pay_proj
from pay_mstr
where pay_emp_pers_nmbr=pno
and pay_prm_yymm = to_char(to_date(proc_yymm,'yyyymm')-1,'yyyymm')
and pay_prm_ref = 99 ;
exception when no_data_found then
pay_cnvy := 0 ;
end;

begin
select sum(decode(pay_cnvy_type,'2',
(decode(sign(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-800),1,
800,(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)))),
'4',
(decode(sign(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)-1200),1,
1200,(nvl(pay_cnvy_amnt,0)+nvl(pay_actg_conv_amnt,0)))),
0))
into pay_cnvy
from pay_mstr
where pay_emp_pers_nmbr=pno
and pay_prm_yymm >= fromyymm
and pay_prm_yymm <= toyymm
and pay_prm_ref in(99,1);
exception when no_data_found then
pay_cnvy := 0 ;
end;

begin
select sum(decode(ptm_ptc_trns_indc,'E',nvl(ptm_finl_amnt,0),
'R',nvl(ptm_finl_amnt,0) * -1))
into ptm_cnvy_ern
from pay_trns_mstr
where ptm_emp_pers_nmbr = pno and
ptm_atp_yymm >= fromyymm and
ptm_atp_yymm <= toyymm and
ptm_ptc_code in('1010','1017','1023') and
ptm_cncl_indc is null ;
exception when no_data_found then
ptm_cnvy_ern :=0;
end;
retval :=nvl(ptm_cnvy_ern,0) + nvl(pay_cnvy,0)+nvl(pay_proj,0);
return nvl(retval,0);
end;
function func_txbl_lta(
pno in varchar2
, frmyymm in varchar2
, toyymm in varchar2
) return number as
retval number(10,2) :=0;
ltfrm date;
ltto date;
ltacnt number(4) :=0;
begin
select count(*) into ltacnt
from lta_mstr
where lta_emp_pers_nmbr = pno and
lta_sts ='L' and
lta_advn_indc is null and
lta_aplc_date between to_date(frmyymm,'yyyymm') and
to_date(toyymm,'yyyymm');
if ltacnt = 0 then
retval :=0;
else
select sum(lta_paid_amnt - lta_clam_amnt)
into retval
from lta_mstr
where lta_emp_pers_nmbr = pno and
lta_sts = 'L' and
lta_advn_indc is null and
lta_aplc_date between to_date(frmyymm,'yyyymm') and
to_date(toyymm,'yyyymm');
if retval < 0 then
retval :=0;
end if;
end if;
return nvl(retval,0);
end;
function func_non_tax_hra(
pno in varchar2
, fromyymm in varchar2
, toyymm in varchar2
) return number as
retval number(10,2) :=0;
begin
begin
select sum(decode(ptm_ptc_trns_indc,'E',nvl(ptm_finl_amnt,0),
'R',nvl(ptm_finl_amnt,0) * -1
)
)
into retval
from pay_trns_mstr
where ptm_emp_pers_nmbr=pno
and ptm_atp_yymm >= fromyymm
and ptm_atp_yymm <= toyymm
and ptm_ptc_code = '1032';
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0);
end;
function func_tax_comp(
p_pno varchar2
, grss number
, taxfrm varchar2
, taxto varchar2
) return number as
lowr number(10,2) :=0;
prc number(10,2) :=0;
plus number(10,2) :=0;
taxgrs number(10,2) :=0;
t_sex char(1) ;
begin
taxgrs := round (nvl (grss, 0), -1);
select emp_sex_code
into t_sex
from empl_mstr
where emp_pers_nmbr=p_pno ;
if t_sex = 'F' and taxgrs <= 135000 then
return 0 ;
elsif t_sex = 'F' and taxgrs <= 150000 and taxgrs> 135000 then
return round((taxgrs - 135000)*.1) ;
elsif t_sex = 'F' and taxgrs <= 250000 and taxgrs > 150000 then
return round(1500 + (taxgrs - 150000)*.2) ;
elsif t_sex = 'F' and taxgrs > 250000 then
return round(21500 + (taxgrs - 250000)*.3) ;
else
select nvl (itl_lowr_limt, 0),
nvl (itl_perc, 0),
nvl (itl_plus_amnt, 0)
into lowr,
prc,
plus
from itax_logc
where itl_from_year = taxfrm and
itl_to_year = taxto and
substr (itl_para_name, 1, 4) = 'SLAB' and
itl_lowr_limt <= taxgrs and
itl_uppr_limt >= taxgrs ;
return round (nvl (plus, 0) + ((taxgrs - lowr) * prc * .01));
end if;
exception when no_data_found then
return (0);
end;
function func_88d( p_pno varchar2,grss number , taxfrm varchar2 , taxto varchar2)
return number as
t_x number(7,2) := 0 ;
t_y number(7,2) := 0 ;
retval number(7,2) := 0 ;
begin
if grss <= 100000 then
retval := func_tax_comp( p_pno,grss , taxfrm , taxto ) ;
elsif grss > 100000 and grss <= 111240 then
t_x := func_tax_comp( p_pno,grss , taxfrm , taxto ) ;
t_y := grss - 100000 ;
retval := t_x - t_y ;
else
retval := 0 ;
end if;
return (retval);
end ;

function func_surcharge_comp(
grss number
, taxfrm varchar2
, taxto varchar2
, taxamnt number
) return number as
taxgrs number(10,2) :=0;
surcharge number(10,2) :=0;
surcharge_perc number(10,2) :=0;
begin
taxgrs := round (nvl (grss, 0), -1);
if taxgrs <= 1000000 then
surcharge := 0 ;
else
begin
select taxamnt * nvl (itl_surcharge_perc, 0) * .01
into surcharge_perc
from itax_logc
where itl_lowr_limt <= taxgrs and
itl_uppr_limt >= taxgrs and
itl_from_year = taxfrm and
itl_to_year = taxto and
substr (itl_para_name, 1, 4) = 'SLAB';
exception when no_data_found then
surcharge_perc := 0 ;
end ;
surcharge := least(taxgrs-1000000,surcharge_perc) ;
end if;
return nvl(round(surcharge),0);
end;
function func_tax_rcvd(
pno in varchar2
, fromyymm in varchar2
, toyymm in varchar2
) return number as
retval number(10,2) :=0;
retval1 number(10,2) :=0;
begin
begin
/* changed on 31-03-2000 by rashid */
select sum(decode(ptm_ptc_trns_indc,'R',nvl(ptm_finl_amnt,0)
,nvl(ptm_finl_amnt,0) * -1))
into retval
from pay_trns_mstr
where ptm_emp_pers_nmbr=pno and
ptm_trns_date between to_date(fromyymm,'yyyymm') and
last_day(to_date(toyymm,'yyyymm')) and
ptm_ptc_code in ('0107','0108') and
ptm_cncl_indc is null ;
exception when no_data_found then
retval :=0;
end;
select f_vchr_tax_recv(pno) into retval1 from dual;
retval := retval+retval1 ;
return nvl(retval,0);
end;
function func_pln_rebt(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
, schm in varchar2
) return number as
retval number(10,2) :=0;
begin
begin
select /*+ ordered index(itax_plan_mstr itax_plan_mstr_ak1) */
sum(decode(type,'P',nvl(txp_amnt_plan,0) +
nvl(txp_amnt_actl,0),
nvl(txp_amnt_actl,0)
)
)
into retval
from
itax_plan_mstr
, svng_code_mstr
, itax_schm_mstr
where txp_emp_pers_nmbr = pno and
txp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) and
txp_scd_svng_code = scd_svng_code and
scd_scm_itax_schm = scm_itax_schm and
scm_itax_schm = schm and
scm_itax_tret = 'G';
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0);
end;
/* added on 15-02-2002' */
function func_grss_plus(
pno in varchar2
, prdfrm in varchar2
, prdto in varchar2
, type in char
) return number as
retval number(10,2) :=0;
begin
begin
select /*+ ordered index(itax_plan_mstr itax_plan_mstr_ak1) */
sum(decode(type,'P',nvl(txp_amnt_plan,0) +
nvl(txp_amnt_actl,0),
nvl(txp_amnt_actl,0)
)
)
into retval
from
itax_plan_mstr
where txp_emp_pers_nmbr = pno and
txp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) and
txp_amnt_actl< 0 ;
exception when no_data_found then
retval :=0;
end;
return nvl(abs(retval),0);
end;
function func_svg_pay_act(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number as
retval number(10,2) :=0;
begin
begin
select sum(nvl(pay_pf_cntb_amnt,0) +
nvl(pay_teps_amnt,0) +
nvl(f_any_cded_recv(pay_prm_ref,pay_emp_pers_nmbr,
pay_prm_yymm,'0101'),0) +
nvl(f_any_cded_recv(pay_prm_ref,pay_emp_pers_nmbr,
pay_prm_yymm,'0103'),0))
into retval
from pay_mstr
where pay_emp_pers_nmbr=pno and
pay_prm_yymm >= frmprd and
pay_prm_yymm <= toprd;
exception when no_data_found then
retval :=0;
end;
return nvl(retval,0);
end;
function func_txbl_elec(
pno in varchar2
, frmprd in varchar2
, toprd in varchar2
) return number as
retval number(10,2) :=0;
t_unit number(10,2) :=0;
unitpmnth number(10,2) :=0;
t_amnt number(10,2) :=0;
t_amnt1 number(10,2) :=0;
t_mnth number(6,2) ;
last_yymm varchar(6);
month_nos number(4);
begin
begin
select sum(etd_unit),sum(etd_amnt),sum(etd_mnth)
into t_unit,t_amnt,t_mnth
from elec_data
where etd_emp_pers_nmbr = pno
and etd_proc_yymm >= frmprd
and etd_proc_yymm <> '200409' ;
unitpmnth := t_unit/nvl(t_mnth,1) ;
t_amnt1:= unitpmnth*t_mnth*(1.64) ;
retval := nvl(t_amnt1,0)-nvl(t_amnt,0) ;
exception when no_data_found then
retval := 0;
end ;
if pno = '071366' then
retval := 0 ;
end if;
return nvl(retval,0);
end ;
--------- Taxble Water Charges calculation by Rashid on 26/12/2001 -------
function func_txbl_waterchrg(
pno in varchar2
, prcyyyymm in varchar2
, procyymm in varchar2
, frmprd in varchar2
, toprd in varchar2
, instl in number
) return number as
retval number(10,2) :=0;
t_unit number(10,2) :=0;
t_amnt number(10,2) :=0;
t_amnt1 number(10,2) :=0;
t_yymm varchar2(6) ;
t_inst number;
begin
select count(*) into t_unit
from hous_data
where hdt_proc_yymm = procyymm ;
if t_unit > 0 then
t_yymm := procyymm ;
t_inst := instl-1 ;
if t_inst < 0 then
t_inst := 0 ;
end if;
else
t_yymm := prcyyyymm ;
t_inst := instl ;
end if ;
begin
select sum(((hdt_hous_area*5.75)/100)-(hdt_watr_chrg))
into t_amnt
from hous_data
where hdt_emp_pers_nmbr=pno
and hdt_proc_yymm<=t_yymm
and hdt_proc_yymm>=frmprd
and hdt_vacn_yymm is null ;
exception when no_data_found then
t_amnt:=0 ;
end;
begin
select (((hdt_hous_area*5.75)/100)-(hdt_watr_chrg))*t_inst
into t_amnt1
from hous_data
where hdt_emp_pers_nmbr=pno
and hdt_proc_yymm= t_yymm
and hdt_vacn_yymm is null
and rownum=1 ;
exception when no_data_found then
t_amnt1:=0 ;
end;
retval := nvl(t_amnt1,0)+nvl(t_amnt,0) ;
if pno = '071366' then
retval := 0 ;
end if;
return nvl(retval,0);
end ;
--------- Taxble Loan Interest calculation by Rashid on 26/12/2001 -------
function func_txbl_loan(pno in varchar2
,prev_yymm in varchar2
,proc_yymm in varchar2
,fyymm in varchar2)
return number is
tbal number(10,2) := 0;
retval number(10,2) := 0;
intr_bal number(8,2) := 0;
intr_bal1 number(8,2) := 0;
intr_eta number(8,2) := 0;
intr_eta1 number(8,2) := 0;
intr_prev number(8,2) := 0;

begin
begin
----------- Checking for Total loan balance >= Rs. 20000 --------
select sum(f_loan_bal(lnm_emp_pers_nmbr,lnm_lcd_loan_code,proc_yymm))
into tbal
from loan_mstr
where lnm_emp_pers_nmbr = pno
and lnm_lcd_loan_code not in('01','02','03','04','18','21','22',
'39','40')
and lnm_sts_code = 'LIV' ;
if tbal > 20000 then
declare
----------- Records of NHB loans and 2/4 wheeler Loans --------------
cursor c1 is select lnm_aplc_nmbr aplc,lnm_emp_pers_nmbr,lnm_prnc_amnt,
lnm_loan_yrop,lnm_lcd_loan_code,lnm_to_date,
lnm_intr_due,lcd_intr_rate,
nvl(f_loan_bal(lnm_emp_pers_nmbr,lnm_lcd_loan_code
,proc_yymm) , 0) loan_bal
from loan_mstr,loan_code_mstr
where lnm_emp_pers_nmbr = pno
and lnm_sts_code = 'LIV'
and lnm_lcd_loan_code = lcd_loan_code
and (( lcd_lcl_calc_code='P'
and lcd_loan_code not in('03','04','18','21','22',
'39','40','54')
)
or lcd_loan_code in('06','14')
);
----------- Records of ETA type loans and WellDone Loans ------------
cursor c2 is select lnm_aplc_nmbr aplc,lnm_emp_pers_nmbr,lnm_prnc_amnt,
lnm_loan_yrop,lnm_lcd_loan_code,lnm_to_date,
lnm_intr_due,lcd_intr_rate,
nvl(f_loan_bal(lnm_emp_pers_nmbr,lnm_lcd_loan_code
,proc_yymm) , 0) loan_bal
from loan_mstr,loan_code_mstr
where lnm_emp_pers_nmbr = pno
and lnm_sts_code = 'LIV'
and lnm_lcd_loan_code = lcd_loan_code
and (( lcd_lcl_calc_code='E'
and lcd_loan_code not in('06','14')
)
or lcd_loan_code in('19','38','54')
);
begin
for c1rec in c1 loop
exit when c1%notfound ;
intr_bal:=( c1rec.loan_bal*(10-c1rec.lcd_intr_rate)/1200);
if intr_bal < 0 then
intr_bal:=0;
end if;
intr_bal1 := intr_bal+intr_bal1 ;
end loop ;
for c2rec in c2 loop
exit when c2%notfound ;
intr_eta:=c2rec.loan_bal*(13-c2rec.lcd_intr_rate)/1200;
if intr_eta < 0 then
intr_eta:=0;
end if;
intr_eta1 := intr_eta+intr_eta1 ;
end loop ;
end ;
retval := nvl(intr_bal1,0)+nvl(intr_eta1,0);
else retval := 0;
end if;
exception when no_data_found then
retval := 0 ;
end;
------ Previous accomulated txbl intr ------
begin
select sum(nvl(itx_txbl_intr,0))
into intr_prev
from itax_mstr
where itx_month = prev_yymm
and itx_month>= fyymm
and itx_emp_pers_nmbr = pno ;
exception
when no_data_found then
intr_prev :=0;
end ;
-------------- end -----------------------
retval:= nvl(retval,0)+nvl(intr_prev,0) ;
return (retval) ;
end ;
function func_pf_perq(p_pno in varchar2)
return number is
retval number(10,2) ;
begin
select sum(intr_amnt)
into retval
from pf_perq
where pno = p_pno
group by pno;
return nvl(retval,0) ;
exception
when no_data_found then
retval := 0 ;
return nvl(retval,0) ;
end ;
procedure proc_itax_calc(
type in char
, proc_yymm in varchar2
, frmym in varchar2
, toym in varchar2
) is
grss number (10, 2) := 0;
inst number (7, 2) := 0;
stnd_dedn number (10, 2) := 0;
taxamnt number (10, 2) := 0;
grssrebt number (10, 2) := 0;
splrebt number (10, 2) := 0;
rebt number (10, 2) := 0;
surcharge number (10, 2) := 0;
txbl_conv number (10,2) := 0;
txbl_elec number (10,2) := 0;
txbl_acco number (10,2) := 0;
txbl_loan number (10,2) := 0;
txbl_watr number (10,2) := 0;
nontxbl_conv number (10,2) := 0;
txbl_hrd number (10,2) := 0;
txbl_pf number (10,2) := 0;
p_type varchar2(1) ;
t_grss_paid number(17,2):= 0;
t_grss_proj number(17,2):= 0;
t_88d number (7, 2) := 0;
t_svng number (8, 2) := 0;
prcyyyymm varchar2(6) := to_char(add_months(to_date(proc_yymm,'yyyymm'),-1),
'yyyymm') ;
cursor c1 is select *
from empl_mstr
where
emp_type='LIV'
order by emp_pers_nmbr;
begin
begin
if substr(proc_yymm,5,6) in ('02','03') then
p_type := 'F' ;
else
p_type := 'P' ;
end if;
end ;
for c1rec in c1
loop
exit when c1%notfound;
-- dbms_output.put_line('001 : ' || 'Pno-'||c1rec.emp_pers_nmbr);
inst := pac_itax_calc.func_inst_mnth(
c1rec.emp_pers_nmbr
, frmym
, toym
, prcyyyymm
);
dbms_output.put_line('002 : ' || 'Instl-'||to_char(inst));
grss := pac_itax_calc.func_grss_for_tax(
p_type
, c1rec.emp_pers_nmbr
, inst
, frmym
, toym
, prcyyyymm
, proc_yymm);
-- dbms_output.put_line('003 : ' || 'Grss-'||to_char(grss));
txbl_conv := pac_itax_calc.func_txbl_conv(c1rec.emp_pers_nmbr,proc_yymm)*inst
+nvl(pac_itax_calc.func_tax_cnvy_paid(c1rec.emp_pers_nmbr,proc_yymm
,frmym
,toym
),0)
+nvl(f_itax_plan_conv(c1rec.emp_pers_nmbr,frmym,p_type,'CONV'),0);

-- dbms_output.put_line('004 : ' || 'conv-'||to_char(txbl_conv));


txbl_elec := pac_itax_calc.func_txbl_elec(c1rec.emp_pers_nmbr,frmym,toym)
+nvl(f_itax_plan_conv(c1rec.emp_pers_nmbr,frmym,p_type,'ELECT'),0);
txbl_acco := pac_itax_calc.func_txbl_hrd(c1rec.emp_pers_nmbr,prcyyyymm,proc_yymm
,frmym,toym,inst)
+nvl(f_itax_plan_conv(c1rec.emp_pers_nmbr,frmym,p_type,'ACCOM'),0);
txbl_loan := pac_itax_calc.func_txbl_loan(c1rec.emp_pers_nmbr,prcyyyymm
,proc_yymm,frmym)
+nvl(f_itax_plan_conv(c1rec.emp_pers_nmbr,frmym,p_type,'LNINT'),0);
txbl_watr := pac_itax_calc.func_txbl_waterchrg(c1rec.emp_pers_nmbr,prcyyyymm,
proc_yymm,frmym,toym,inst)
+nvl(f_itax_plan_conv(c1rec.emp_pers_nmbr,frmym,p_type,'WATER'),0);
nontxbl_conv:=pac_itax_calc.func_nontax_conv(c1rec.emp_pers_nmbr,prcyyyymm
,frmym
,toym
,inst
);
txbl_pf := 0 ; -- (changed on 26/06/2004)
/* nvl(func_pf_perq(c1rec.emp_pers_nmbr),0)
+nvl(f_itax_plan_conv(c1rec.emp_pers_nmbr,frmym,p_type,'PFINT'),0) ;
*/
t_grss_paid:= nvl(pac_itax_calc.func_paygrs(c1rec.emp_pers_nmbr,frmym,toym),0)
+nvl( f_gplus(c1rec.emp_pers_nmbr),0) ;
t_grss_proj:= pac_itax_calc.func_sal(c1rec.emp_pers_nmbr,prcyyyymm,proc_yymm,inst);
-- dbms_output.put_line('004 : ' || 'nonconv-'||to_char(nontxbl_conv));

/* stnd_dedn := pac_itax_calc.func_std_dedn (
grss
, substr (frmym, 1, 4)
, substr (toym, 1, 4)
); */
stnd_dedn := 0 ;
-- dbms_output.put_line('004 : ' || 'stnd_dedn-'||to_char(stnd_dedn));
t_svng := pac_itax_calc.func_totl_svng(
p_type
, frmym
, toym
, c1rec.emp_pers_nmbr
, prcyyyymm
, inst );
if t_svng > 100000 then
t_svng := 100000 ;
end if ;
splrebt := pac_itax_calc.func_grss_rebt (
p_type
, substr (frmym, 1, 4)
, substr (toym, 1, 4)
, c1rec.emp_pers_nmbr
, prcyyyymm
, inst
);
grssrebt := nvl(splrebt,0)+nvl(t_svng,0) ;

taxamnt := pac_itax_calc.func_tax_comp(
c1rec.emp_pers_nmbr
, grss - stnd_dedn - grssrebt
, substr (frmym, 1, 4)
, substr (toym, 1, 4)
);
-- dbms_output.put_line('006 : ' || 'taxamnt-'||to_char(taxamnt));
t_88d := 0 ;
rebt := 0 ;
-- dbms_output.put_line('007 : ' || to_char(sysdate, 'MI:SS'));
surcharge := pac_itax_calc.func_surcharge_comp (
grss - stnd_dedn - grssrebt
, substr (frmym, 1, 4)
, substr (toym, 1, 4)
, taxamnt - rebt
);
-- dbms_output.put_line('010 : ' || to_char(sysdate, 'MI:SS'));
begin
Insert into itax_mstr (
ITX_MONTH
, ITX_EMP_PERS_NMBR
, ITX_GRSS_SAL
, ITX_STND_DEDN
, ITX_TOTL_SVNG
, ITX_REBT_SVNG
, ITX_CONV_ALLW
, ITX_TXBL_CONV
, ITX_TXBL_LTA
, ITX_NON_TXBL_HRA
, ITX_TOTL_TAX
, ITX_SURCHARGE
, ITX_TAX_RCVD
, ITX_CERT_NMBR
, ITX_SPCL_REBT
, ITX_TXBL_ACCO
, ITX_TXBL_INTR
, ITX_TXBL_ELEC
, ITX_TXBL_WATERCHRG
, ITX_STATUS
, ITX_CATG
, ITX_TXBL_PF
, ITX_GRSS_PAID
, ITX_GRSS_PROJ
, ITX_88D
) values(
proc_yymm
, c1rec.emp_pers_nmbr
, grss - grssrebt
, stnd_dedn
, t_svng
, rebt
,0 -- nontxbl_conv
,0 -- txbl_conv
, pac_itax_calc.func_txbl_lta(
c1rec.emp_pers_nmbr
, frmym,toym)
, pac_itax_calc.func_non_tax_hra(
c1rec.emp_pers_nmbr
, frmym
, toym
) + nvl(f_any_cded(
99
, c1rec.emp_pers_nmbr
, prcyyyymm
, '1032'
),0)*inst
, taxamnt
, surcharge
, nvl(pac_itax_calc.func_tax_rcvd(c1rec.emp_pers_nmbr,frmym,toym),0)
,0
, splrebt
, txbl_acco
, txbl_loan
, txbl_elec
, txbl_watr
, '1LIV'
, c1rec.emp_ctg_catg_code
, txbl_pf
, t_grss_paid
, t_grss_proj
, t_88d
);
end;
---- dbms_output.put_line('011 : ' || to_char(sysdate, 'MI:SS'));
commit;
end loop;
end proc_itax_calc;
end pac_itax_calc;
/

You might also like