Как рассчитать налог с зарплаты

Я работаю над проектом расчета заработной платы, в котором я хочу рассчитать сверхурочную работу, пособие и налог на заработную плату. Я хочу добавить сверхурочные и надбавки к зарплате и вычесть налог из зарплаты.

Следующий скрипт работает со сверхурочными и надбавками, но у меня возникают проблемы с расчетом налога.

Когда я ввожу процент налога, он должен рассчитать сумму налога из зарплаты в поле налога и рассчитать общую сумму. Когда я ввожу налог напрямую, он должен рассчитать процент в поле 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>

процент налога основан на зарплате + сверхурочных + надбавках? или только зарплата?

Syed mohamed aladeen 28.05.2019 12:27

@SyedMohamedAladeen зарплата+сверхурочные

Dishko 28.05.2019 12:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

измените эту строку в функции вычитания налога

prevTotal = $('#total').val() || 9000;

к

prevTotal = parseFloat(salary) + parseFloat(allowance) + parseFloat(over);

Проблема в том, что вы переопределяете общую стоимость после ввода налоговой стоимости. Вместо этого вы должны подсчитывать итоги каждый раз, когда вносите изменения.

Когда я ввожу налог напрямую, он должен вычислять процент в поле taxPercentage и вычислять общую сумму.

Dishko 28.05.2019 12:47
Ответ принят как подходящий

Попробуйте так.

по вашему комментарий мне только прибавили зарплату + со временем.

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>

с прямым вводом общего налога, его расчетом налогового процента, но без расчета общей заработной платы.

Dishko 28.05.2019 13:03

Другие вопросы по теме