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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章