action-MCFR

Калькулятор отпускных (HTML/CSS/JS)

Перенос Excel-калькулятора в чистый фронтенд. Работает локально, без фреймворков.

Цель

Повторить логику Excel: общая сумма → среднемесячный → среднедневной (делитель 25.3) → итог отпускных.

Поля ввода

Поля вывода

Как запустить

Откройте index.html в браузере.

Где менять тексты/единицы/округления

Как заменить цвета

В styles.css измените переменные:

Тест-чеклист

  1. Показ «Начислений»
    Поставьте дату начала 2025-09-10, период 8 → блок «Начисления» появляется; подписи: февраль 2025 … сентябрь 2025 (8 строк).
  2. База из Excel (с периодом 12)
    Дата начала 2025-09-10, период 12. Введите по месяцам:
    [818181.82, 1500000, 3000000, 1500000, 1500000, 3000000, 1500000, 3000000, 1500000, 1500000, 1500000, 1500000]
    Премии: 2 000 000, Дни: 18.
    Ожидаемо:
    • Общая: 23 818 181.82
    • Среднемес.: 1 984 848.49
    • Среднедневн.: 78 452.51
    • Итог ≈ 1 412 145.17
  3. Изменение периода
    С теми же данными уменьшите период до 8 → остаётся 8 строк, сумма пересчитывается по первым 8 строкам.
  4. Граничный случай: 0 дней
    Дни: 0 → Итог: 0.00.
  5. Недопустимый ввод
    В одном месяце введите -100 → поле подсветится, значение обрежется до 0.
  6. Автосчёт дней
    Включите автосчёт, даты: начало 2025-06-02, конец 2025-06-15, праздники: 2025-06-09.
    Ожидаемо: оплачиваемых 11 (исключены 2 вс + 1 праздник).
  7. Проверка отображения
    Очистите дату начала → «Начисления» снова спрячется.
  8. Большой период
    Период 24 → 24 строки; подписи корректно включают годы.

Док-блок: «Карта формул»

| Excel диапазон/ячейка | JS формула/правило | Примечание | |—|—|—| | период (N мес.) | labels = monthsInclStart(startDate, N) | от раннего к стартовому (включая старт) | | суммы | total = months.reduce(+)+bonuses | ≥ 0 | | средний мес. | avgMonthly = total / monthsCount | делитель ≥ 1 | | средний день | avgDaily = avgMonthly / 25.3 | 2 знака | | итог | vacationPay = paidDays * avgDaily | 2 знака |

Допущения