Расчет JavaScript ежеквартальный биллинг

#javascript #node.js

#javascript #node.js

Вопрос:

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

Например: если владелец / арендатор вводит январь, то счет выставляется за три месяца до марта (январь-февраль-март). Аналогично, если владелец / арендатор вводит в апреле, то выставление счетов за три месяца до июня (апрель-май-июнь) и так далее. Но, если владелец / арендатор входит в феврале, то выставление счетов должно быть пропорционально за 2 месяца до марта (февраль-март). Аналогично, если владелец / арендатор вводит Mei, то выставление счетов должно быть пропорционально за 2 месяца до июня (май-июнь) и так далее. А также, если владелец / арендатор входит в марте, то выставление счетов должно быть пропорционально 1 месяцу только за март. Аналогично, если владелец / арендатор входит в июне, то выставление счетов должно быть пропорционально 1 месяцу только за июнь и так далее.

Ожидаемые результаты:

Если я введу январь, а счет составит 100000. Тогда результат равен 300000

Если я введу февраль, а счет составит 100000. Тогда результат равен 200000

Если я введу March, а счет составит 100000. Тогда результат равен 100000

Вот мой незаконченный код до сих пор:

 const paymentScheme = (month, amount) => {
  const quarterly = [['January', 'February', 'March'],['April', 'May', 'June'],['July', 'Agustus', 'September'],['October', 'November', 'December']];
  const total = 0;

  for (let i = 0; i < quarterly.length; i  ) {
    total  = quarterly[i][1];
  }
console.log(total);
}
paymentScheme('January', 100000)
  

Ответ №1:

 const paymentScheme = (month, amount) => {
  const quarterly = [
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December",
  ];
  const quarter = 3;

  const paymentFactor = quarter - (quarterly.indexOf(month) % quarter);

  const total = paymentFactor * amount;

  console.log(total);
};
paymentScheme("January", 100000);
paymentScheme("February", 100000);
paymentScheme("March", 100000);
paymentScheme("April", 100000);
paymentScheme("May", 100000);
paymentScheme("June", 100000);
paymentScheme("July", 100000);
paymentScheme("August", 100000);
paymentScheme("September", 100000);
paymentScheme("October", 100000);
paymentScheme("November", 100000);
paymentScheme("December", 100000);