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