zoukankan      html  css  js  c++  java
  • 个人所得税计算函数 Oracle可用

    create or replace function FN_PersonalIncomeTax(p_IncomeValue number)
                            RETURN number
     /*
    ***************************************************************************************
      过程名称: 计算个人所得税
        过程ID:
          分类:公用
      入口参数:
      出口参数:
                IncomeValue number(18,2) =应税收入
           
       返回值:  应交税额


      关联资源:
        调用方:
      功能描述:
      作者:
      日期
    ****************************************************************************************
    */
    as
        --局部变量
       v_Tax                number(36,2); --应纳个人所得税税额
       v_ChargeAbleTax      number(36,2);--应纳税所得额-扣除标准
       v_Taxrate            number(36,2);--税率
       v_TaxBalance         number(36,2);--速算扣除数

    begin

    /*
    应纳个人所得税税额=(应纳税所得额-扣除标准)*适用税率 - 速算扣除数

    扣除标准2000元/月(2008年3月1日起调高为2000元)

    个人所得税计算公式
    1不超过500元的部分,             税率5%,      速算扣除数为0;
    2超过500元至2000元的部分,       税率10%,     速算扣除数为25
    3超过2000元至5000元的部分,      税率15 %,    速算扣除数为125
    4超过5000元至20000元的部分,     税率20 %,    速算扣除数为375
    5超过20000元至40000元的部分,    税率25%,     速算扣除数为1375
    6超过40000元至60000元的部分,    税率30%,     速算扣除数为3375
    7超过60000元至80000元的部分,    税率35%,     速算扣除数为6375
    8超过80000元至100000元的部分,   税率40%,     速算扣除数为10375
    9超过100000元的部分,            税率45%,     速算扣除数为15375
    */
       v_tax:=0;
       v_ChargeAbleTax :=p_IncomeValue-2000; --扣除标准2000元
     
      if v_ChargeAbleTax< 0  then
         v_Taxrate :=0;v_TaxBalance:=0;
      end if; 
      if v_ChargeAbleTax>0  and v_ChargeAbleTax<=500 then
         v_Taxrate :=0.05;v_TaxBalance:=0;
      end if;
      if v_ChargeAbleTax>500  and v_ChargeAbleTax<=2000 then
        v_Taxrate :=0.1;v_TaxBalance:=25;
      end if;
      if v_ChargeAbleTax>2000  and v_ChargeAbleTax<=5000  then
         v_Taxrate :=0.15;v_TaxBalance:=125;
      end if;
      if v_ChargeAbleTax>5000  and v_ChargeAbleTax<=20000  then
         v_Taxrate :=0.2;v_TaxBalance:=375;
      end if;
      if v_ChargeAbleTax>20000  and v_ChargeAbleTax<=40000  then
         v_Taxrate :=0.25;v_TaxBalance:=1375;
      end if;
      if v_ChargeAbleTax>40000  and v_ChargeAbleTax<=60000  then
         v_Taxrate :=0.3;v_TaxBalance:=3375;
      end if;
      if v_ChargeAbleTax>60000  and v_ChargeAbleTax<=80000  then
         v_Taxrate :=0.35;v_TaxBalance:=6375;
      end if;
      if v_ChargeAbleTax>80000  and v_ChargeAbleTax<=100000  then
         v_Taxrate :=0.4;v_TaxBalance:=10375;
      end if;
      if v_ChargeAbleTax>100000 then
         v_Taxrate :=0.45;v_TaxBalance:=15375;
      end if;
     


       v_tax:=v_ChargeAbleTax*v_Taxrate-v_TaxBalance;
      
       return v_tax;

    EXCEPTION
        WHEN OTHERS THEN
              RETURN v_tax; --SQL 错误
    end;
    /

  • 相关阅读:
    CDQ分治
    2-sat
    整体二分
    apache性能优化
    apache反向代理出现502调整
    hadoop学习笔记肆--元数据管理机制
    ssh 免密码登录配置,及其原理
    extjs 中的一些鲜为人知的属性(深渊巨坑)
    hadoop学习笔记叁--简单应用
    hadoop学习笔记贰 --HDFS及YARN的启动
  • 原文地址:https://www.cnblogs.com/tiasys/p/1495096.html
Copyright © 2011-2022 走看看