ess empl patroll
TRANSCRIPT
-
8/14/2019 ess empl patroll
1/40
-
8/14/2019 ess empl patroll
2/40
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 DATEEMP_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 DATEEMP_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)
-
8/14/2019 ess empl patroll
3/40
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 DATEEMP_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 DATEEMP_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 DATEEMP_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')
-
8/14/2019 ess empl patroll
4/40
into t_from,t_to
from syst_prds
where prd_name='ITAX_YEAR' ;
update itax_plan_mstr
set txp_amnt_plan = 0where txp_from_year= t_from
and txp_to_year = t_to
and txp_emp_pers_nmbr in(select emp_pers_nmbr
from empl_mstrwhere 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 DATETXP_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_yyyymmand 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
-
8/14/2019 ess empl patroll
5/40
-
8/14/2019 ess empl patroll
6/40
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) offfrom empl_mstr, date_mstrwhere
emp_type = 'LIV' and
emp_pers_nmbr = t_pno andto_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
-
8/14/2019 ess empl patroll
7/40
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 DATEATN_UPD_UID VARCHAR2(8)
ATN_ACTG_PNO VARCHAR2(6)
-
8/14/2019 ess empl patroll
8/40
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 contain
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 asfunction 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);
-
8/14/2019 ess empl patroll
9/40
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
-
8/14/2019 ess empl patroll
10/40
) 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);
-
8/14/2019 ess empl patroll
11/40
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(
-
8/14/2019 ess empl patroll
12/40
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;
beginbegin
select /*+ ordered */
sum(decode ( ptm_ptc_trns_indc, 'E', ptm_finl_amnt, ptm_finl_amnt * (-1)))
into retval
-
8/14/2019 ess empl patroll
13/40
from
pay_trns_mstr
, atn_prds, pay_trns_code
where ptm_emp_pers_nmbr= p_pno and
ptm_atp_yymm = p_yymm andptm_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 andatp_prm_ref = pyrl_ref and
ptm_ptc_trns_indc = ptc_trns_indc and
ptm_ptc_code = ptc_code andptc_tax_indc='X' and
ptc_grss_indc = 'X';
exception when no_data_found thenretval :=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 isselect ptm_emp_pers_nmbr tpno,ptm_atp_yymm t_yymm,sum(ptm_finl_amnt) amntfrom pay_trns_mstr
where ptm_emp_pers_nmbr=pno
and ptm_atp_yymm >= fyymmand ptm_atp_yymm
-
8/14/2019 ess empl patroll
14/40
select count(*)
into tnos
from hous_datawhere hdt_emp_pers_nmbr=pno
and hdt_proc_yymm>= fyymm-1 -- should see the last month of itax year also.
and hdt_proc_yymm
-
8/14/2019 ess empl patroll
15/40
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)
-
8/14/2019 ess empl patroll
16/40
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 = pnoand 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;
beginbegin
select f_bsic(pno,proc_yymm) +
nvl(pay_incn_amnt,0) +func_fxd(pno,proc_yymm)
into retval
from pay_mstrwhere 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) +
-
8/14/2019 ess empl patroll
17/40
func_fxd(pno,
proc_yymm)
into retvalfrom 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);
beginbegin
select /*+ ordered */
emp_hou_hous_code
, emp_rent_paid
, hou_txbl_indcinto
hou_cd, rent
, txindc
fromempl_mstr
, hous_code
where emp_pers_nmbr = pno andemp_hou_hous_code=hou_hous_code;
exception when no_data_found then
retval :=0;end;if txindc is null then
retval :=0;
elseretval :=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_mstrwhere scm_itax_tret='G'
and scm_itax_schm '88G' ;
-
8/14/2019 ess empl patroll
18/40
begin
for c1rec in c1
loopexit 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)
thenschm_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 thenreturn 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
-
8/14/2019 ess empl patroll
19/40
itl_to_year=toyy and
substr(itl_para_name,1,7)='STDDED1';
end;elsif grss > 500000 then
begin
select itl_chek_amnt , itl_perc/100into std , prc
from itax_logc
where itl_from_year=frmyy and
itl_to_year=toyy andsubstr(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 asretval 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;
beginbegin
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)
-
8/14/2019 ess empl patroll
20/40
)
)
into retvalfrom
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) andtxp_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 asretval 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 andpay_prm_yymm >= frmprd andpay_prm_yymm = frmprd and
ptm_atp_yymm
-
8/14/2019 ess empl patroll
21/40
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_codewhere 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' andscd_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 asretval 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
selectdecode(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,retval1from empl_mstr
where emp_pers_nmbr =pno;
exception when no_data_found thenretval :=0;
retval1:=0;
-
8/14/2019 ess empl patroll
22/40
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 c1loop
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' thenschm_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
-
8/14/2019 ess empl patroll
23/40
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 Rashidif grss 30000 thenrebt_amnt:=30000;
end if;
elsif grss > 100000 and grss 20000 thenrebt_amnt:=20000;
end if;elsif grss > 150000 and grss 15000 thenrebt_amnt:=15000;
end if;
elserebt_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 retvalfrom
itax_plan_mstr
-
8/14/2019 ess empl patroll
24/40
, svng_code_mstr
, itax_schm_mstr
where txp_emp_pers_nmbr = pno andtxp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) and
txp_scd_svng_code = scd_svng_code andscd_scm_itax_schm = scm_itax_schm and
scm_itax_schm = schm and
scm_itax_tret = 'S' ;
exception when no_data_found thenretval :=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;
beginbegin
select nvl(f_vpf_csh_deposit(pno,'ITAX_YEAR'),0) into retval1 from dual;
exception when no_data_found thenretval1 :=0;
end ;
beginselect /*+ 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
frompay_trns_mstr
, pay_trns_code
, svng_code_mstrwhere ptm_emp_pers_nmbr=pno and
ptm_atp_yymm >= frmprd and
ptm_atp_yymm
-
8/14/2019 ess empl patroll
25/40
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
fromsvng_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 andscd_scm_itax_schm = schm and
scd_svng_code 'CTD' and
scd_ptc_trns_indc = ptc_trns_indc andscd_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_mstrwhere 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)),
-
8/14/2019 ess empl patroll
26/40
-- '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_mstrwhere pay_emp_pers_nmbr=pno
and pay_prm_yymm >= fromyymm
and pay_prm_yymm
-
8/14/2019 ess empl patroll
27/40
conv_type varchar2(2);
pay_proj number(12,2) :=0;
beginbegin
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_mstrwhere 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;
beginselect 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_cnvyfrom pay_mstr
where pay_emp_pers_nmbr=pno
and pay_prm_yymm >= fromyymmand pay_prm_yymm = fromyymm and
ptm_atp_yymm
-
8/14/2019 ess empl patroll
28/40
-
8/14/2019 ess empl patroll
29/40
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 250000 then
return round(21500 + (taxgrs - 250000)*.3) ;
elseselect nvl (itl_lowr_limt, 0),
nvl (itl_perc, 0),
nvl (itl_plus_amnt, 0)into lowr,prc,
plus
from itax_logcwhere itl_from_year = taxfrm and
itl_to_year = taxto and
substr (itl_para_name, 1, 4) = 'SLAB' anditl_lowr_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 ;
beginif grss
-
8/14/2019 ess empl patroll
30/40
elsif grss > 100000 and grss
-
8/14/2019 ess empl patroll
31/40
where ptm_emp_pers_nmbr=pno and
ptm_trns_date between to_date(fromyymm,'yyyymm') and
last_day(to_date(toyymm,'yyyymm')) andptm_ptc_code in ('0107','0108') and
ptm_cncl_indc is null ;
exception when no_data_found thenretval :=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;
beginbegin
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 retvalfrom
itax_plan_mstr
, svng_code_mstr, itax_schm_mstrwhere txp_emp_pers_nmbr = pno and
txp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) andtxp_scd_svng_code = scd_svng_code and
scd_scm_itax_schm = scm_itax_schm and
scm_itax_schm = schm andscm_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 asretval number(10,2) :=0;
begin
-
8/14/2019 ess empl patroll
32/40
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_mstrwhere txp_emp_pers_nmbr = pno and
txp_from_year = substr(prdfrm,1,4) and
txp_to_year =substr(prdto,1,4) andtxp_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;
beginbegin
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 andpay_prm_yymm >= frmprd and
pay_prm_yymm
-
8/14/2019 ess empl patroll
33/40
last_yymm varchar(6);
month_nos number(4);
beginbegin
select sum(etd_unit),sum(etd_amnt),sum(etd_mnth)
into t_unit,t_amnt,t_mnthfrom 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_datawhere 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
-
8/14/2019 ess empl patroll
34/40
where hdt_emp_pers_nmbr=pno
and hdt_proc_yymm=frmprdand 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_amnt1from hous_data
where hdt_emp_pers_nmbr=pno
and hdt_proc_yymm= t_yymmand hdt_vacn_yymm is null
and rownum=1 ;
exception when no_data_found thent_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;
beginbegin
----------- Checking for Total loan balance >= Rs. 20000 --------
select sum(f_loan_bal(lnm_emp_pers_nmbr,lnm_lcd_loan_code,proc_yymm))
into tbalfrom 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 thendeclare
----------- 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,
-
8/14/2019 ess empl patroll
35/40
nvl(f_loan_bal(lnm_emp_pers_nmbr,lnm_lcd_loan_code
,proc_yymm) , 0) loan_bal
from loan_mstr,loan_code_mstrwhere lnm_emp_pers_nmbr = pno
and lnm_sts_code = 'LIV'
and lnm_lcd_loan_code = lcd_loan_codeand (( 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 loopexit when c1%notfound ;
intr_bal:=( c1rec.loan_bal*(10-c1rec.lcd_intr_rate)/1200);
if intr_bal < 0 thenintr_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 thenretval := 0 ;
end;
------ Previous accomulated txbl intr ------begin
select sum(nvl(itx_txbl_intr,0))
-
8/14/2019 ess empl patroll
36/40
into intr_prev
from itax_mstr
where itx_month = prev_yymmand itx_month>= fyymm
and itx_emp_pers_nmbr = pno ;
exceptionwhen 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_pnogroup 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;
-
8/14/2019 ess empl patroll
37/40
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
whereemp_type='LIV'
order by emp_pers_nmbr;
begin
beginif substr(proc_yymm,5,6) in ('02','03') then
p_type := 'F' ;
elsep_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)
-
8/14/2019 ess empl patroll
38/40
+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
-
8/14/2019 ess empl patroll
39/40
, substr (frmym, 1, 4)
, substr (toym, 1, 4)
, taxamnt - rebt);
-- dbms_output.put_line('010 : ' || to_char(sysdate, 'MI:SS'));
beginInsert 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
-
8/14/2019 ess empl patroll
40/40
, 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;
/