Амортизація основних засобів і нематеріальних активів
Окремої кнопки розрахунку амортизації немає — нарахування виконує регламент «Бухгалтерія → Закриття місяця» за обраний період (як у 1С). Регламент ідемпотентний: повторне закриття того самого місяця не задвоює знос. Стор
Як нараховується (з 2026-08: лише «Закриття місяця»)
Окремої кнопки розрахунку амортизації немає — нарахування виконує регламент «Бухгалтерія → Закриття місяця» за обраний період (як у 1С). Регламент ідемпотентний: повторне закриття того самого місяця не задвоює знос. Сторінка «Амортизація» у розділі «Необоротні активи» — журнал створених документів нарахування. Детальніше про життєвий цикл активу: «fixed-assets-lifecycle».
Як працює прямолінійний метод
Формула
amortizable = primary_cost - liquidation_value
monthly = amortizable / useful_life_months
де:
primary_cost— первісна (балансова) вартість активуliquidation_value— ліквідаційна вартість (скільки залишиться у кінці)useful_life_months— корисний термін експлуатації у місяцях
Приклад
Купили офісний принтер за 10 000 грн. Корисний термін — 5 років (60 міс), ліквідаційна вартість — 1 000 грн.
amortizable = 10000 - 1000 = 9000 грн
monthly = 9000 / 60 = 150 грн/міс
Кожен місяць у calc-документі ви побачите 150 грн на цей принтер, поки 9000 не спишуться повністю (60 місяців).
Hybrid формула для імпортованих/модернізованих активів
Якщо актив імпортовано з 1С з накопиченим списанням
(accumulated_depreciation > 0, але elapsed_periods = 0), наша
формула використовує залишковий термін:
remaining_amount = depreciable - accumulated_depreciation
remaining_months = useful_life_months - elapsed_periods
monthly_by_remaining = remaining_amount / remaining_months
monthly_by_total = depreciable / useful_life_months
monthly = max(monthly_by_remaining, monthly_by_total)
Це не помилка — це свідома логіка. Без неї імпортовані активи амортизувалися б на 12+ зайвих місяців. З max() ми гарантуємо що сумарна амортизація = depreciable, але швидше списується.
⚠️ Незначна розбіжність з 1С — 1С УТП тут обирає одну формулу (не max). Якщо ви порівнюєте місяць-у-місяць, можуть бути копійки різниці. Сума за весь термін експлуатації — однакова.
Інші методи (реалізовано 2026-06-01)
| Метод | стандарт бухобліку | Коли використовувати | Status |
|---|---|---|---|
| Зменшення залишкової (DECLINING_BALANCE) | п.26.2 | Швидше списання у перші роки. Тех. устаткування що швидко зношується. | ✅ Потребує liquidation_value > 0 |
| Прискорене зменшення (ACCELERATED_DECLINING) | п.26.3 | Подвоєна швидкість. Найшвидше списання. | ✅ |
| Кумулятивний (CUMULATIVE) | п.26.4 | Плавне швидке списання, без різких піків. | ✅ |
| Виробничий (PRODUCTION) | п.26.5 | Прив'язано до фактичного виробництва. | ⚠️ Поля додано, але actual_volume per period — окрема порція |
З 2026-06-01 всі 5 методів активні у довіднику. Для PRODUCTION поки що працює тільки скіп (немає UI для введення фактичного обсягу виробництва за місяць — окрема порція).
Формули детально
DECLINING_BALANCE (Зменшення залишкової):
annual_rate = 1 - (LiquidationValue / PrimaryCost) ^ (1/N_years)
monthly = (PrimaryCost - AccumulatedDepreciation) × annual_rate / 12
⚠️ Працює тільки коли liquidation_value > 0. Якщо 0 — формула
некоректна (степінь 0). Виставлено CHECK у БД + skip_reason у service.
Приклад: primary=10000, liquidation=1000, useful_life=3 роки.
- annual_rate = 1 - (1000/10000)^(1/3) = 1 - 0.4642 = ~0.5358 (53.58%/рік)
- monthly у перший місяць = 10000 × 0.5358 / 12 = ~446.50 грн
Списання поступово зменшується (бо зменшується remaining_value).
ACCELERATED_DECLINING (Прискорене зменшення):
annual_rate = 2 / N_years (подвоєна straight-line norm)
monthly = (PrimaryCost - AccumulatedDepreciation) × annual_rate / 12
Приклад: primary=10000, useful_life=5 років.
- annual_rate = 2/5 = 0.40 (40%/рік)
- monthly у перший місяць = 10000 × 0.40 / 12 = 333.33 грн
CUMULATIVE (Кумулятивний):
sum_of_years = N × (N+1) / 2
year_rate[k] = (N - k + 1) / sum_of_years (k = поточний рік)
year_amount = (PrimaryCost - LiquidationValue) × year_rate
monthly = year_amount / 12
Приклад: 5 років.
- sum_of_years = 5×6/2 = 15
- Рік 1: rate = 5/15 = 33.3%, monthly = 9000/3 = 250 грн
- Рік 2: rate = 4/15 = 26.7%, monthly = 200 грн -...
- Рік 5: rate = 1/15 = 6.7%, monthly = 50 грн
Сума за весь термін = depreciable (9000). Працює завжди (не залежить від liquidation).
PRODUCTION (Виробничий):
⚠️ MVP: формула готова, але actual volume per period вводиться вручну
у calc-документі — UI ще не реалізовано. Карта активу має поля
planned_production_volume + production_uom_code.
planned_amount_per_unit = (PrimaryCost - LiquidationValue) / planned_volume
monthly = planned_amount_per_unit × actual_volume_this_month
Типові питання
Q: Чому амортизація 150.00 грн на місяць — а у 1С 149.97?
A: Округлення. Раніше Python використовував банкірське округлення (0.005 → 0.00), а 1С — математичне (0.005 → 0.01). З 2026-06-01 (TD-B-P5.3) ми перейшли на ROUND_HALF_UP, що збігається з 1С.
Q: Імпортував актив з 1С з накопиченим списанням 5000 грн. Чому наша система списує його швидше за 1С?
A: Hybrid формула (див. вище). Сума амортизації за весь термін — однакова, але розподілена за менше місяців. Бухгалтерсько коректно, законом не заборонено.
Q: Чи можу я перейти з STRAIGHT_LINE на DECLINING_BALANCE серед року?
A: Технічно стандарт бухобліку п.28 дозволяє змінити метод у разі зміни очікуваних економічних вигод. Практично — потрібен наказ керівника система підтримує всі 5 методів — змінити можна.
Чому розрахунок може трохи відрізнятись від 1С
-
Округлення копійок — з 2026-06-01 узгоджено (ROUND_HALF_UP). До цієї дати — могло бути ±1 коп/міс/актив.
-
Hybrid формула для імпортованих активів — наша інновація. Сума однакова, місяці різні.
-
Liquidation value — деякі клієнти вказують 0 у 1С (тоді формула працює як від primary_cost). У нас 0 теж дозволений.
Сумарна амортизація за весь термін — точно однакова. Розподіл по місяцях може коливатися на копійки.
- ~~TD-B-P5.3.1: ROUND_HALF_UP~~ ✅ ЗАКРИТО 2026-06-01
- ~~TD-B-P5.3.2: DECLINING_BALANCE~~ ✅ ЗАКРИТО 2026-06-01
- ~~TD-B-P5.3.3: ACCELERATED_DECLINING~~ ✅ ЗАКРИТО 2026-06-01
- ~~TD-B-P5.3.4: CUMULATIVE~~ ✅ ЗАКРИТО 2026-06-01
- ⚠️ TD-B-P5.3.5: PRODUCTION — поля + dispatch є, але actual_volume per period не реалізовано (TD-B-P5.3.5b — при client need)