Получилось :))
Оказывается программа работает только с теми параметрами,которые были у меня в редакторе.
Я думал надо работать с неизвестными данными
var incomeTax = 13;
var contributions = 30;
var calculateExpenses = function (netSalary) {
var dirtySalary = netSalary * (incomeTax/(100-incomeTax));//подсчет НДФЛ от грязной ЗП;
dirtySalary += netSalary;//итого грязная ЗП;
var costSalary = dirtySalary + (dirtySalary/100 * contributions);//грязная ЗП + общий размер взносов;
return Math.round(costSalary);
}
var calculateExpenses = function (netSalary) {
var dirtySalary = netSalary / (1 - (incomeTax / 100));//чистая ЗП
var otherContributions = (dirtySalary/100) * contributions;//Взносы
var total = otherContributions + dirtySalary;
Сразу видно, нет бухгалтеров в треде =)
Ну а раз я пришел, сейчас вам покажу. Для таких подсчетов обычно используют формулу:
x * (100+30,2)/ (100-13)
т.е. x * 130.2 / 87
где 87 это з/п минус подоходный, т.е. 87%, которые уйдут “на руки” 30.2 это начисления, на з/п, которые платит работодатель за работника (из которых 22% - пенсия (ПФР); 5,1% - медстрах (ОМС); 2,9% - отчисления для безработных и декретных (ФСС) и 0,2% за травматизм (ФСС)),
а х - з/п “на руки”
По условию у Кекса бизнес немного нелегальный, так что за травматизм не платит, остается 30% начислений сверх з/п до подоходного налога.
Также в формуле и в числителе и в знаменателе проценты, потому и сократим дробь на них же.
Итак, наша программа:
вот оно
var calculateExpenses = function(netSalary) {
var total = Math.round(netSalary / (100 - incomeTax) * (100 + contributions));
return total;
}
я в упор не понимаю,что это за формулы у вас такие?
dirtySalary = netSalary * (incomeTax/(100-incomeTax))
вот скажите мне: есть чистая ЗП в 70000. сколько будет от нее 13%? 13% от 70 000 = 9100,
Вычисляется несколькими путями: можно 70 000 * 0,13 или можно (70 000 * 13)/100. тоже будет 9100.
Вы же делаете следующее: 70 000*(13/(100-13))=70 000 *(13/87)=70 000 * 0,14942528…
Что это ? и самое страшное для меня,что ваше решение программа принимает. Там не должно быть никаких десятых и прочее. 13% от круглого числа - КРУГЛОЕ число. или я чего-то в жизни не понимаю)
дружище, мы не налоги считаем, а расходы на труд наемного рабочего. вы на солнышке перегрелись, выпейте смуззи и съешьте тех прекрасных французских булок.
перечитайте заодно мой коммент, выше вашего и поймете смысл, который закладывал @gagharut. на es6 у него идеальный пример решения.
Это было 5 месяцев назад,когда я только изучал js
Тут главное не решить задачу,а понять подход к задаче…
Но это придет со временем и с опытом.
Вот сколько не заставь мозгу понимать все это,все равно нужно время.
Вы поймите синтаксис и как он работает.
Тут нету формул,это просто переменные,в которых копируется значение.
Вы для начала поймите как решить задачу математически.
Потом уже поменяйте значения на переменные и решите задачу еще раз,только уже на языке javascript.
То,что в синтаксисе непонятно,листайте назад,используйте гугл и т.д.
Главное не убивайте 2 зайцев одним выстрелом.
Вы потихонечку начините и развивайте поочередно…
Когда 6 месяцев назад еще ничего не понимал и голову ломал.
Так что не переживайте.
Нужно время,мозгу просто нужно время,чтобы реально понимать все это…
у вас есть сумма на руки.
на руки вы получаете деньги уже после налога. значит вы получаете 87% от суммы контракта.
а еще работодатель обязан доплатить взносы в размере 30% от суммы контракта (сверх, из своего кармана).
y = x / 87% ==> получаем сумму контракта, записываем в y.
y * 30% + y ==> получаем полную сумму расходов работодателя
оно же: y * (130%)
делаем подстановку: ( x / 0.87) * 130 / 100
а что такое 0.87? это (100 - incomeTax) / 100.
а что такое 130? это 100 + contributions
Итак: x / ( (100 - incomeTax) / 100 ) * (100 + contributions) / 100
итак дети, кто ходил в школу и умеет переворачивать дроби и выносить за скобку 100?
100 * x / (100 - incomeTax) * (100 + contributions) / 100. охренеть, тут умножаем на сотку и делим на сотку, непорядок:
netSalary / (100 - incomeTax) * (100 + contributions)
Ребята,чем вы себе голову набивайте…
Любую формулу скачивайте из интернета и переставляя переменные работайте с ней…
Тут не требуют от вас создать программу для себя,которая удобно считала налоги ваших же работников.
Вы будете делать заказы, а не считать налоги.
Еще не поняв одну формулу вам закинут другую и заказ еще стоит,потому,что не понятно как работает эта формула…
А если вы будете работать над созданием портала кредитования?
Да там одни формулы…
На работе не будут требовать у вас знание всего и не использовать гугл.
Да пожалуйста,зайдите в гугл,посмотрите и все…
тссс, а то подписку на курсы не будут покупать =)
ну хочет человек понять логику, вот и всё тут. хочет нативный js, ща покажем. понятно что на практике только и успевай jQuery применять.