Перейти до основного контенту
База знань · виробничий облік USD41,42 ПДВ20% МЗП8 000

Облік · Середній

Закриття місяця в Odoo — чеклист з 10 пунктів

Покрокова процедура місячного циклу від перевірки первинки до Lock Date. Для головбуха ТОВ «УкрПром-Тех» на Odoo: що, в якому порядку і як перевірити, що нічого не пропустили.

Час
40 хв на читання, 3–5 робочих днів на сам цикл
Модуль Odoo
Accounting → Operations / Settings → Fiscal Periods → Lock Date
Читання
~8 хв
  • закриття місяця
  • lock date
  • ПДВ
  • currency revaluation
  • розподіл ЗВВ

Кінець місяця — це момент, коли розрізнені проводки за тридцять днів треба звести в одну картину, якій можна довіряти: подати декларацію з ПДВ і ЄСВ, а тоді закрити період, щоб ніхто вже не переписав минуле заднім числом. Цей чеклист веде вас через увесь цикл по порядку — від перевірки первинки до Lock Date — так, щоб на кожному кроці ви бачили, що саме перевіряєте і чому це не можна пропустити. Зробите за ним — матимете сальдо, яке поясните рядок за рядком, і звітність із тих самих даних, що залишаться в системі назавжди.

Результат

Після цього чеклисту у вас:

  • Усі первинні документи за місяць проведені, звірені й залоковані.
  • Сальдо рахунків 23, 91, 362, 632 — у стані, який ви можете пояснити рядок за рядком.
  • Декларація з ПДВ і звіт ЄСВ сформовані з тих самих даних, що залишаться в системі назавжди.
  • На період виставлено Lock Date — заднім числом без сліду вже ніхто нічого не виправить.

За зрілою процедурою це 5–7 робочих днів. За кривою — 20–25 і нерви до Нового року.

Передумови

  • Працюєте на Odoo 17/18 з модулями Accounting, Manufacturing, Inventory, кастомізацією l10n_ua_oblik.
  • Маєте права групи Accounting / Advisor або вище (для Lock Date).
  • Завантажений курс НБУ за всі дні місяця (cron Update Currency Rate, frequency = daily).
  • ЄРПН-конектор працює, вхідні ПН підтягуються в account.move.
  • Налаштовані аналітичні рахунки за цехами/SKU (інакше розподіл ЗВВ не порахується).

Як це зробити

1. Закрийте первинку (1–3 числа)

Найперше — переконатися, що всі акти, накладні, рахунки за місяць у системі. Не «закрив місяць», коли акт від 28-го прийшов 5-го наступного. Тоді документ проводиться датою 28-го, лок ще не стояв — операція коректна.

Запустіть звіт Reporting → Accounting → Audit Reports → General Ledger з фільтром «Draft only» — побачите всі непроведені account.move. Кожен або проведіть, або сторнуйте з обґрунтуванням.

Окремо пройдіться по банківських виписках. Якщо account.bank.statement лежить у статусі «New» без reconciled = true — банк не зведений. У Bank Reconciliation має бути «0 transactions to reconcile» по всіх рахунках компанії.

2. Звірте з контрагентами (3–5 числа)

Через Partner Ledger (Reporting → Partner Ledger) — звірка по кожному ключовому контрагенту. Дебіторка > 100 000 ₴ і кредиторка > 100 000 ₴ підписуються актами звірки. Це не формальність — у ТОВ «УкрПром-Тех» три кейси, коли наша 631 показувала на 80 000 ₴ менше, ніж у контрагента, і виявили це саме на звірці.

3. Інвентаризація запасів і НЗВ (5–7 числа)

Через Inventory → Operations → Physical Inventory на 31-ше число. Окремо — Акт інвентаризації НЗВ за наказом керівника (комісія: голова, начальник цеху, бухгалтер). Розбіжності оформте як stock.move з типом «Inventory Adjustment».

Деталі — у статті Закриття НЗВ.

4. Нарахуйте амортизацію (7–8 числа)

Через Accounting → Operations → Assets: усі необоротні активи зі статусом running мають нараховану амортизацію за місяць. Cron Generate Assets Entries має пройти без помилок. Перевірте, що сальдо 131 збільшилось на очікувану суму.

Дт 23 / Кт 131 — по цеху · амортизація виробничого обладнання Дт 91 / Кт 131 — по цеху · амортизація приміщень цеху Дт 92 / Кт 131 — по офісу · амортизація адмінОЗ

5. Перевіряйте першу подію по ПДВ (8–10 числа)

Через звіт Кастомний модуль → ПДВ → Перша подія: вибірка account.move, де vat_event_date > invoice_date або відсутня вхідна ПН за зареєстрованою постачальником закупівлею.

Червоні прапорці:

  • Аванс отриманий, ПН не виписана. Дивіться account.payment зі сторони in, де move_type = 'in_invoice' ще не існує. ПН треба виписати датою авансу. Сила законуПКУ 187.1
  • Товар отриманий, ПН від постачальника не зареєстрована. Якщо більше 15 днів — ПК під ризиком. ПКУ 201.10

Деталі — у гайді Перша подія в закупівлі.

6. Розподіліть ЗВВ і закрийте 91 (10–15 числа)

Запустіть wizard wizard.zvv.distribution (кастомізація). Він читає планову потужність зі mrp.workcenter.capacity, фактичну — з виконаних mrp.production, рахує коефіцієнт завантаження і робить:

Дт 23 / Кт 91 — за нормальною потужністю · змінні + постійні в межах норми Дт 902 / Кт 91 — понад норму · нерозподілені постійні ЗВВ Сила законуП(С)БО 16.16

Контроль: сальдо 91 на 31-ше = 0. Якщо ні — wizard не пройшов до кінця або є непроведені проводки на 91. Не закривайте місяць з ненульовим 91 — це ознака недопрацьованого циклу.

7. Закрийте НЗВ і випуск ГП (15–17 числа)

Собівартість випуску = НЗВ початковий + Витрати місяця – НЗВ кінцевий (за актом інвентаризації).

Дт 26 / Кт 23 — за актом випуску · оприбуткування ГП на склад

Деталі — у статті Закриття НЗВ. Якщо у вас одне з трьох SKU випадає в збиток — це або помилка в базі розподілу, або реальна проблема ціноутворення. Не «розмазуйте» так, щоб виглядало рівно.

8. Currency revaluation (17–18 числа)

Через Accounting → Operations → Unrealized Currency Gains/Losses на 31-ше число. Перерахунок усіх валютних залишків (362, 316, 314, 632 у валюті) за курсом НБУ на дату балансу.

Дт 362 / Кт 714 — курсова + · ревальвація монетарних статей Дт 945 / Кт 362 — курсова – · девальвація монетарних статей

Сила законуП(С)БО 21 Деталі — в окремому гайді Курсові різниці на дату балансу.

9. Сформуйте і подайте звітність (19–20 числа)

  • Декларація з ПДВ через vat.declaration.wizard або l10n_ua.declaration. Звірте підсумкові суми ПЗ і ПК з оборотами 641.
  • Звіт ЄСВ через l10n_ua.esv.report. Звірте з оборотами 651.
  • Управлінський P&L через Reporting → Profit and Loss. Покажіть керівнику, щоб впіймати «не може бути».

Подача — до 20-го числа. ПКУ 49.18

10. Виставте Lock Date (21–25 числа)

Після подачі і прийняття квитанції №2 — закрийте період.

Accounting → Settings → Fiscal Periods → Lock Date:

  • period_lock_date (для всіх крім головбуха) — 31 травня.
  • fiscalyear_lock_date (для всіх взагалі) — лишається кварталом раніше.
  • tax_lock_date — окремо для ПДВ-операцій, теж 31 травня.

Після цього account.move.create з date <= lock_date піднімає UserError. Будь-яке коригування — або через відкат локу головбухом (з аудиторським логом), або через out_refund / in_refund поточною датою.

Перевірка

Перед тим як ставити Lock Date — пройдіться по списку. Кожне має бути «так».

  • У General Ledger немає account.move зі станом Draft за період.
  • Усі банківські виписки звірені (Bank Reconciliation = 0 transactions).
  • Підписані акти звірки за контрагентами з оборотом > 100 000 ₴ за місяць.
  • Акт інвентаризації НЗВ підписаний комісією, відображений у бухгалтерії.
  • Сальдо 91 на 31-ше число = 0.
  • На 902 списані нерозподілені постійні ЗВВ — сума обґрунтована коефіцієнтом завантаження.
  • Усі вхідні ПН за зареєстрованими постачальником закупівлями знайдені в ЄРПН і підвантажені.
  • Усі вихідні ПН на «першу подію» (відвантаження або аванс) виписані.
  • Currency revaluation запущено, сальдо валютних рахунків — за курсом 31-го числа.
  • Декларація з ПДВ сформована, її підсумок збігається з оборотами 641 за місяць.
  • Декларація з ПДВ подана, квитанція №2 отримана.
  • Звіт ЄСВ поданий, квитанція №2 отримана.
  • Lock Date виставлено на 31-ше число місяця.

Якщо щось пішло не так

Сальдо 91 не нуль після wizard’а. Подивіться через Reporting → General Ledger → Filter: Account = 91. Якщо є рядки після дати запуску wizard’а — або хтось додав ЗВВ заднім числом, або cron MRP: Cost Distribution доспрацьовував. Перезапустіть wizard.

Декларація не сходиться з обліком. Найчастіша причина — реєстрація ПН в ЄРПН датою, відмінною від account.move.invoice_date. Звіряйте поле vat_event_date (кастомне) з фактичною датою з ЄРПН.

Currency revaluation створив проводки за курсом, не за НБУ. Перевірте, чи в res.currency.rate на 31-ше число є запис від nbu. Якщо cron впав — підвантажте курс вручну через Settings → Currencies → USD → Rates.

Lock Date ставиться, але хтось встиг провести account.move після цього. Це нормально, якщо дата документа > lock_date. Лок захищає минуле, не поточне. Поточні операції йдуть як завжди.

Треба правити закритий період. Робіть це тільки через формалізовану процедуру: довідка про коригування → відкат локу головбухом → правка → новий лок. У mail.message account.move залишається лог. Аудитор побачить.

Дотичне