JavaScript salary tool

This tool can be used to calculate the payment after tax & social found.

// Copyright : Bian Junjie
<!DOCTYPE html>
<html>
<head>
<style  type="text/css">
       td{font-size:12px}
       table, td{
	border-width : 1px;
	border-color : #60FFD3;
	border-style : solid;
  border-collapse:collapse;
  border-spacing:0px
}
</style>

<script type="text/javascript"
src="Common_JS.js">
</script>

</head>
<body>

<table>
 <tr>
   <td class="ft">
     税前工资:
   </td>
   <td>
     保险基数:
   </td>

   <td>
     <input id="Sub" type="button" value="submit" onClick="Main_process();">
   </td>
   <td>
     <input id="Clr" type="button" value="reset" onClick="Emp_prm();">
   </td>
 </tr>

 <tr>
   <td>
     <input type="text" id="Insalary">
   </td>
   <td>
     <input type="text" id="Inbase">
   </td>
   <td colspan=2>   </td>
 </tr>
 <tr>
   <td colspan=4 id="outMsg">请输入工资、社保基数   </td>
 </tr>

</table>
</body>

<script type="text/javascript">
//社保、公积金统一基数

    var ENSRATE = 0.205;
//    var ENSRATE = 0.105;
    var CORENSRATE = 0.45;
    var TAXBASE = 3500;
    var Msg;
    var myWindow;

function Main_process(){

    var preSalary = commFunction.getValue("Insalary");
    var ensBase = commFunction.getValue("Inbase");
    if(1 == commFunction.empCheck(preSalary) || 1 == commFunction.empCheck(ensBase)){
       commFunction.writeMsg("outMsg",commFunction.EMPTYVALUE);
       return;
    }
    if(1 == commFunction.NumCheck(preSalary) || 1 == commFunction.NumCheck(ensBase)){
       commFunction.writeMsg("outMsg",commFunction.NONNUM);
       return;
    }

    preSalary = parseFloat(preSalary);
    ensBase = parseFloat(ensBase);

    var urtlSalary = 0;
    var ensTax = 0;
//    var hFound = 3000;
    writeHead();
    while(1){
       if(ensBase - preSalary >=0.0) break;
       ensTax = ensCalc(ensBase);
       urtlSalary = uSalCalc(ensTax,preSalary);
       writeVaule(preSalary,ensBase,urtlSalary,ensTax);
       ensBase += 500;
    }
    writeEnd();
}


function ensCalc(ensbase){

    return ensbase * ENSRATE;

}

function uSalCalc(ens,pSal){

    var usal = pSal - ens - TAXBASE;
    var outSal = 0;
    while(1){
       if(usal <= 0){
            outSal = pSal - ens;
            break;
        }
        if(usal <= 1500.00){
            outSal = pSal - ens - usal*0.03;
            break;
        }
        if(usal <= 4500.00){
            outSal = pSal - ens - usal*0.10 + 105;
            break;
        }
        if(usal <= 9000.00){
            outSal = pSal - ens - usal*0.20 + 555;
            break;
        }
        if(usal <= 35000.00){
            outSal = pSal - ens - usal*0.25 + 1005;
            break;
        }else{
            break;
        }
    }
    return outSal;
}

function Emp_prm(){
    document.getElementById("Insalary").value = "";
    document.getElementById("Inbase").value = "";
    document.getElementById("outMsg").innerHTML = "请输入工资、社保基数";
}

function writeHead(){
   myWindow = window.open('','','width=850,height=500,scrollbars=yes,resizable=no,location=yes');
   myWindow.document.write("<html><head><meta charset=\"gbk\" /><link rel=\"stylesheet\" type=\"text/css\" href=\"CommonCSS.CSS\"/><title>社保、工资计算</title></head><body>");

   myWindow.document.write("<table><tr><th>税前工资</th><th>保险基数</th><th>缴纳社保</th><th>所得税</th><th>税后工资</th><th>公积金</th><th>工资+公积金</th><th>公司缴纳社保数</th></tr>");

}

function writeVaule(preSal,eB,realSal,eT){

   myWindow.document.write("<tr><td>"+preSal.toFixed(2).toString()+"</td><td>"+eB.toFixed(2).toString()+"</td><td>"+eT.toFixed(2).toString()+"</td><td>"+(preSal-eT-realSal).toFixed(2).toString()+"</td><td>"+realSal.toFixed(2).toString()+"</td><td>"+(eB*0.1).toFixed(2).toString()+"</td><td>"+(eB*0.1*2 + realSal).toFixed(2).toString()+"</td><td>"+(eB*CORENSRATE).toFixed(2).toString()+"</td></tr>");

}

function writeEnd(){
   myWindow.document.write("</table></body></html>");
}

</script>

</html>

Outer JavaScript:

//This is collection with common useful functions

  var commFunction = {
        EMPTYVALUE:"输入不能为空",
        NONNUM:"不能输入非数字",
        empCheck: function(InputValue){
                    if(InputValue.length==0 || InputValue.length == undefined){
                        return 1;
                    }else{ return 0;}
                  }
        ,
        NumCheck: function (InputValue){
                    if(isNaN(parseInt(InputValue))){
                              return 1;
                    }else
                     return 0;
                   }
        ,
        getValue: function(id){
                     return document.getElementById(id).value;
                  }
        ,
        writeMsg: function(id,Msg){
                     document.getElementById(id).innerHTML = Msg;
                  } 
        ,
        Zerotrim: function(InputValue){
                     for(var i= 0;;){
                        if(parseInt(InputValue.charAt(i)) == 0)
                            InputValue = InputValue.substr(i+1);
                        if(parseInt(InputValue.charAt(i)) != 0)
	                    break;
                     }
                    // input like '000' will be empty value after trim
                    // give default value make sure no empty value return

                    if(InputValue.length == 0) 
                       InputValue = "0";

                    return InputValue;
                  }
  }

Result: from IE11



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值