Как ты мне дорог․ HELP

Сразу видно, нет бухгалтеров в треде =)
Ну а раз я пришел, сейчас вам покажу. Для таких подсчетов обычно используют формулу:

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;
}
4 лайка

я в упор не понимаю,что это за формулы у вас такие?
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 зайцев одним выстрелом.
Вы потихонечку начините и развивайте поочередно…

Я вот 3 мес. назад скинул решение уже на ES6

const calculateExpenses = (netSalary,incomeTax = 13, contributions = 30) => Math.round(netSalary / (100 - incomeTax) * 100 * (contributions/100 + 1));

Когда 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)

я кончил

3 лайка

Ребята,чем вы себе голову набивайте…
Любую формулу скачивайте из интернета и переставляя переменные работайте с ней…
Тут не требуют от вас создать программу для себя,которая удобно считала налоги ваших же работников.
Вы будете делать заказы, а не считать налоги.
Еще не поняв одну формулу вам закинут другую и заказ еще стоит,потому,что не понятно как работает эта формула…
А если вы будете работать над созданием портала кредитования?
Да там одни формулы…
На работе не будут требовать у вас знание всего и не использовать гугл.
Да пожалуйста,зайдите в гугл,посмотрите и все…

тссс, а то подписку на курсы не будут покупать =)
ну хочет человек понять логику, вот и всё тут. хочет нативный js, ща покажем. понятно что на практике только и успевай jQuery применять.

я вот реально не знаю JQuery((
сразу React изучил. Но JQuery тоже надо изучить. Старые проекты в основном на нем написаны

а сейчас есть очень жирная прослойка тех, кто оптимизирует старье, для этого и новые фреймворки надо знать и бодренького-старичка jQuery

Вот так вот получилось, жду критики.
function calculateExpences(netSalary) {
var dirtySalary = netSalary / (100 - incomeTax) * 100;
var cost = dirtySalary * (1 + contributions / 100);
return Math.round(cost);
}Текст "как есть" (без применения форматирования)

1 лайк

Моё решение:

var incomeTax = 13;
var contributions = 30;

var calculateExpenses = function (netSalary) {
    var dirtySalary = netSalary + ((netSalary / (100 - incomeTax)) * incomeTax)
    return Math.round(dirtySalary + (dirtySalary / 100 * contributions))
}

let calculateExpenses = Math.round(netSalary*(contributions+100)/(100-incomeTax));

или
let calculateExpenses = netSalary => Math.round(netSalary*1.49425); :smiley:

var incomeTax = 13;
var contributions = 30;

var calculateExpenses = function(netSalary) {
grossSalary = netSalary / (1 - 0.01 * incomeTax);
totalCosts = Math.round((grossSalary / 100 * contributions) + grossSalary);
return totalCosts;
}

Почти 2 года прошло,боже))

Мой код
let incomeTax = 13;
let contributions = 30;

let calculateExpenses = function (netSalary) {
  let darkSalary = netSalary / ((100 - incomeTax) / 100);
  let allContributions = darkSalary * contributions / 100;
  let allCost = Math.round(darkSalary + allContributions);
  return allCost;
  }

@Hierumo у меня вопрос: как произошло сокращение, никак не соображу(((

формула без сокращения должна выглядеть так?

        netSalary                     100 + contributions
----------------------------  *  ------------------------------
  (100 - incomeTax) * 100             100 - incomeTax

если не сокращать, то
netSalary / ( (100 - incomeTax) / 100 ) * (100 + contributions) / 100
вот тут разжевано

1 лайк

Дошло)) Спасибо!

Мой вариант

var incomeTax = 13;
var contributions = 30;
var calculateExpenses = function (netSlary) {
var expensesWithTax = (netSlary * 100) / (100 - incomeTax);
var netContributions = (expensesWithTax / 100) * contributions;
var finalExpenses = Math.round(expensesWithTax + netContributions);
return finalExpenses;
}