Перенос Excel-калькулятора в чистый фронтенд. Работает локально, без фреймворков.
Повторить логику Excel: общая сумма → среднемесячный → среднедневной (делитель 25.3) → итог отпускных.
февраль 2025 … сентябрь 2025
.
YYYY-MM-DD
через запятую (учитываются при автосчёте).Откройте index.html
в браузере.
index.html
.app.js
(Intl.NumberFormat).25.3
— state.divisorDaily
в app.js
.В styles.css
измените переменные:
--text: #212529
--primary: #0d6efd
--white: #ffffff
--light: #f8f9fa
2025-09-10
, период 8
→ блок «Начисления» появляется; подписи: февраль 2025 … сентябрь 2025
(8 строк).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
8
→ остаётся 8 строк, сумма пересчитывается по первым 8 строкам.0
→ Итог: 0.00
.-100
→ поле подсветится, значение обрежется до 0
.2025-06-02
, конец 2025-06-15
, праздники: 2025-06-09
.11
(исключены 2 вс + 1 праздник).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 знака |
(N-1)
месяцев (пример: старт сентябрь 2025
, N=8
→ февраль 2025 … сентябрь 2025
).endMonth = start.getMonth()-1
и корректируйте смещения.