Odoo
МодульДекларація з ПДВ в Odoo
Як зібрати декларацію з ПДВ з journal entries Odoo: рядки 1-21, додатки Д1-Д6, експорт у формат ДПС.
Що це і навіщо
Декларація з ПДВ — щомісячний (для більшості) звіт у ДПС про обороти, ставки, ПЗ і ПК. Подається до 20-го числа місяця, наступного за звітним. У ній 25+ рядків, шість додатків Д1-Д6 і свої правила заповнення. Помилка в одному рядку — штраф 510 ₴ (ст. 120 ПКУ). Систематична помилка — 1020 ₴. Тому декларацію хочеться формувати з облікової системи автоматично, а не вручну з зошита.
У стандартному l10n_ua декларації немає. Є тільки англомовний tax report з модуля account_reports (Enterprise), який видає табличку «Sales Tax / Purchase Tax», далеку від форми ДПС. Для реальної роботи треба або Oblik-ERP (там декларація з автозаповненням), або власний модуль поверх.
Як це працює
Механіка проста:
- На кожній
account.taxв Odoo єtax_report_lineчерезaccount.tax.repartition.line. Це адреса: куди в декларації потрапить ця сума. - Коли проводку проводять (Post), Odoo створює
account.move.lineзtax_tag_ids— тегами рядків декларації. - Звіт групує рядки за тегами й видає підсумки.
# Як подивитись, які теги у податку
tax = self.env.ref('l10n_ua.l10n_ua_tax_20')
for line in tax.invoice_repartition_line_ids:
print(line.repartition_type, line.account_id.code, line.tag_ids)
Шлях у меню (з Oblik-ERP): Accounting → Reporting → Tax Report → Ukrainian VAT Declaration. Звіт можна сформувати за період, переглянути порядково, видати XML для подання.
У контексті українського обліку
Структура декларації:
- Рядки 1.1, 1.2, 1.3 — ПЗ за внутрішніми постачаннями (20%, 7%, 0%).
- Рядок 2.1 — експортні постачання (0% по ст. 195.1).
- Рядки 3 — окремі операції (звільнені, поза об’єктом).
- Рядки 10, 11 — ПК від постачальників, ввезення.
- Рядки 14, 15 — коригування ПК, ПЗ.
- Рядки 16-21 — підсумкові розрахунки, до сплати / до відшкодування.
Додатки:
- Д1 — розрахунок коригування (всі вхідні і вихідні РК за період).
- Д2 — інформація про залишок від’ємного значення.
- Д3 — заява на відшкодування.
- Д4 — інформація про відшкодування на банк.
- Д5 — інформація про постачальників і покупців (розшифровка ПК і ПЗ).
- Д6 — інформація про необ’єктні операції.
Д5 — найболючіший. Це постатейний список усіх ПН за період. Зібрати його з Odoo легко (на основі account.move), але на кожному рядку потрібні partner_id, ІПН і номер ПН. Якщо майстер-дата партнерів у тебе розсипана — Д5 не подаси.
Як ми робимо (defense-контекст)
ТОВ «УкрПром-Тех» формує декларацію щомісяця в три кроки:
- Перевірка ПДВ-журналів за період. Журнальні звіти «ПДВ — обов’язки» та «ПДВ — кредит». Кожен запис має мати partner_id, ставку й бути проведеним (posted).
- Звіряння з ЄРПН. Наш модуль тягне з ДПС реєстр зареєстрованих ПН. Звіряємо зі своїми даними: усе, що є в Odoo, має бути й у реєстрі. Розбіжності з’ясовуємо завжди.
- Формування декларації. Кнопка «Generate VAT Declaration» у звітах. Рядки перевіряємо вручну: експорт іде в рядок 2.1, операції за ст. 197.6 — у рядок 3, ввезення послуг від нерезидента — у рядок 7. Після перевірки — експорт XML.
Особливість для оборонних постачань: операції постачання військовим (звільнені від ПДВ за п. 32 підрозд. 2 розд. ХХ ПКУ) ідуть у рядок 3.2. Тут легко переплутати зі звичайним звільненням, тож ми завели окремий fiscal position і окрему ставку «0% — оборонне постачання» з відповідним тегом.
Типові граблі
- Сума у декларації ≠ сума у журналі. Причини: проводки не posted (а draft), tax_tag не виставлено, lock date змінено посеред періоду. Перевіряй
account.move.line.search([('parent_state','!=','posted'),('tax_ids','!=',False)]). - Експортні операції потрапили в рядок 1.1, а не 2.1. Забули fiscal position. Лікувати — переоформити інвойс через сторно або вручну переставити tax_tag (страшно, остання надія).
- Касовий метод, ПДВ не нараховано. На постачальника-комунальника в тебе Cash Basis Tax. Створив Bill — ПДВ повис на 6442 (відстрочений) і в декларацію не потрапить, доки не оплатиш. Це норма. Але якщо забув підв’язати ПН до Bill — не побачиш його в Д5.
- Партнер без ІПН. У Д5 рядок «нерезидент» чи «фізособа» проходить без проблем. Але якщо це юрособа, а ти вписав лише назву — Д5 не пройде валідацію в ДПС. Зроби ІПН обов’язковим полем для партнерів-юросіб.
- Відшкодування заявили, рахунок не той. Д4 вимагає МФО банку. Якщо у компанії заведено кілька банків, а Д4 тягне дефолтний — отримання може заблокуватися на 60 днів. Перевіряй перед поданням.
- РК у Д1 — не той знак. Зменшуюче РК має йти зі знаком «-», збільшуюче — зі знаком «+». Якщо ставка змінюється, потрібен окремий рядок РК: один на сторно старого, другий на правильний. Знак легко переплутати.
Дотичне
- ПН/РК — ПН і РК як основа Д5/Д1
- Податки UA — налаштування податків з тегами
- СЕА ПДВ — ліміт реєстрації, що впливає на декларацію
- Декларація — нормативна сторона декларації
- Декларація ПДВ — алгоритм заповнення
- Декларація ПДВ — декларація як документ
Де цей модуль зустрічається9
- OdooВалютаВалютні рахунки, currency revaluation, курс НБУ як джерело. Дати в експорті: МД, надходження валюти, баланс — …
- OdooКасовий методЯк налаштувати tax_exigibility='on_payment' для постачальників ЗСУ (ст. 187.7) і комуналок (ст. 187.10). Wizar…
- OdooПН/РКЯк Odoo працює з податковими накладними: складання, реєстрація в ЄРПН, моніторинг статусу, типи причини та РК …
- OdooПодатки UAЯк налаштувати account.tax для ПДВ 20%, 7%, 0%, без ПДВ і звільнення — і як зв'язати ставки з fiscal positions…
- OdooСЕА ПДВЯк в Odoo відстежувати ΣНакл — баланс електронного рахунку ПДВ, поповнювати його вчасно й не впиратися в ліміт…
- OdooAccountingЯк Odoo веде подвійний запис: account.move як універсальний документ-проводка, журнали як шафи, account.move.l…
- OdooCronir.cron, model_id, function_id. Які стандартні cron важливі. Як писати власні — для перевірки ЄРПН-статусу, на…
- Odool10n_uaБазовий модуль адаптації Odoo до України: план рахунків, ПДВ-ставки, валюта, дати. Що в коробці є, а чого нема…
- ПДВДеклараціяМісячний звіт, де ПЗ мінус ПК дає суму до сплати. Подати — 20 к.д. після місяця, сплатити — ще 10 к.д. Це два …