Я работаю над проектом расчета заработной платы, в котором я хочу рассчитать сверхурочную работу, пособие и налог на заработную плату. Я хочу добавить сверхурочные и надбавки к зарплате и вычесть налог из зарплаты.
Следующий скрипт работает со сверхурочными и надбавками, но у меня возникают проблемы с расчетом налога.
Когда я ввожу процент налога, он должен рассчитать сумму налога из зарплаты в поле налога и рассчитать общую сумму. Когда я ввожу налог напрямую, он должен рассчитать процент в поле taxPercentage
и рассчитать общую сумму.
$(document).on('change keyup blur', '.add', function(e) {
add();
});
function add() {
salary = $('#salary').val();
allowance = $('#allowance').val() || 0;
over = $('#over').val() || 0;
prevTotal = $('#total').val() || 9000;
if (allowance > 0 || over > 0) {
total = parseFloat(salary) + parseFloat(allowance) + parseFloat(over);
$('#total').val(total);
} else {
$('#total').val(prevTotal);
}
}
$(document).on('change keyup blur', '.tax', function(e) {
subtracttax();
});
function subtracttax() {
salary = $('#salary').val();
taxPercentage = $('#taxPercentage').val() || 0;
tax = $('#tax').val() || 0;
prevTotal = $('#total').val() || 9000;
if (taxPercentage > 0) {
total = parseFloat(salary) * parseFloat(taxPercentage) / 100;
$('#tax').val(total);
$('#total').val(prevTotal - total);
} else {
$('#total').val(prevTotal);
}
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div>
<label> salary </label>
<input type = "text" id = "salary" value = "9000" />
</div>
<br>
<div>
<label> over Time </label>
<input type = "text" class = "add" id = "over" />
</div>
<br>
<div>
<label> allowance </label>
<input type = "text" class = "add" id = "allowance" />
</div>
<br>
<div>
<label> Tax Percentage</label>
<input type = "text" class = "tax" id = "taxPercentage" />
</div>
<br>
<div>
<label> Total Tax</label>
<input type = "text" class = "tax" id = "tax" />
</div>
<br>
<div>
<label> Total salary</label>
<input type = "text" id = "total" />
</div>
@SyedMohamedAladeen зарплата+сверхурочные
измените эту строку в функции вычитания налога
prevTotal = $('#total').val() || 9000;
к
prevTotal = parseFloat(salary) + parseFloat(allowance) + parseFloat(over);
Проблема в том, что вы переопределяете общую стоимость после ввода налоговой стоимости. Вместо этого вы должны подсчитывать итоги каждый раз, когда вносите изменения.
Когда я ввожу налог напрямую, он должен вычислять процент в поле taxPercentage и вычислять общую сумму.
Попробуйте так.
по вашему комментарий мне только прибавили зарплату + со временем.
calculateTax();
$(document).on('change keyup blur', '.tax', function(e) {
calculateTax();
});
$(document).on('change keyup blur', '.taxVal', function(e) {
calculateTaxPer();
});
function calculateTax() {
salary = $('#salary').val();
allowance = $('#allowance').val() || 0;
over = $('#over').val() || 0;
total = (parseFloat(salary) + parseFloat(allowance) + parseFloat(over)) || 0;
taxPercentage = $('#taxPercentage').val() || 0;
tax = $('#tax').val() || 0;
$('#total').val(total);
if (taxPercentage > 0) {
totalTax = (parseFloat(salary) + parseFloat(over)) * parseFloat(taxPercentage) / 100;
$('#tax').val(totalTax);
$('#total').val(total - totalTax);
return false;
}
}
function calculateTaxPer(){
salary = $('#salary').val();
allowance = $('#allowance').val() || 0;
over = $('#over').val() || 0;
total = (parseFloat(salary) + parseFloat(allowance) + parseFloat(over)) || 0;
taxPercentage = $('#taxPercentage').val() || 0;
tax = $('#tax').val() || 0;
$('#total').val(total);
if (tax > 0){
taxPer = (parseFloat(tax)/(parseFloat(salary) + parseFloat(over)))*100;
$('#taxPercentage').val(taxPer);
$('#total').val(total - tax);
}
}
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div>
<label> salary </label>
<input type = "text" id = "salary" value = "9000" />
</div>
<br>
<div>
<label> over Time </label>
<input type = "text" class = "tax" id = "over" />
</div>
<br>
<div>
<label> allowance </label>
<input type = "text" class = "tax" id = "allowance" />
</div>
<br>
<div>
<label> Tax Percentage</label>
<input type = "text" class = "tax" id = "taxPercentage" />
</div>
<br>
<div>
<label> Total Tax</label>
<input type = "text" class = "taxVal" id = "tax" />
</div>
<br>
<div>
<label> Total salary</label>
<input type = "text" id = "total" />
</div>
с прямым вводом общего налога, его расчетом налогового процента, но без расчета общей заработной платы.
процент налога основан на зарплате + сверхурочных + надбавках? или только зарплата?