ess empl patroll

Upload: vgopalr

Post on 31-May-2018

217 views

Category:

Documents


0 download

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;

    /