Ви постачаєте товар військовій частині, і це постачання звільнене від ПДВ за ст. 197.6. Перемикати ставку руками на кожному замовленні — дорога до помилок: рано чи пізно хтось забуде, і ПН піде з 20% замість звільнення. Тут ми один раз налаштуємо фіскальну позицію, прив’яжемо її до контрагента — і Odoo сам підставлятиме звільнення та тип причини «09» на кожному SO. Менше ручної роботи, менше шансів помилитися у звітності.
Результат
Партнер «Військова частина А-1234» має призначену фіскальну позицію «Оборона-197.6». Будь-який новий sale.order на цього контрагента автоматично підставляє ставку «Без ПДВ — звільнено за ст. 197.6», на згенерованому інвойсі заповнюється l10n_ua_pn_reason_code='09', а в декларації обсяг лягає у рядок 5 (звільнені постачання), не в рядок 1.1. Бухгалтеру не доводиться щоразу руками перемикати податок — fiscal position робить це автоматично і пам’ятає про теги декларації.
Передумови
- Перша ПН вже виставляється з Odoo (див. Перша вихідна ПН).
- Підписаний договір зі ЗСУ або з військовою частиною за ⚖Сила законуЗУ 808-IX (Прозоро.МО чи прямий договір під час воєнного стану за Постановою КМУ №1275).
- Товар входить до переліку КМУ №224 товарів оборонного призначення — це передумова для застосування звільнення за ПКУ ст. 197.6.
- В Odoo заведений
res.partnerвійськової частини з ЄДРПОУ (або умовним кодом А-XXXX) і ознакою «бюджетна установа». - Створено податок «Без ПДВ — звільнено 197.6» (
account.taxзamount=0,type_tax_use='sale', тегами для рядка 5 декларації). - Розуміння того, що звільнення — не нульова ставка. ПК на матеріали доведеться компенсувати через ПКУ ст. 198.5 або розподілити за ПКУ ст. 199.
Як це зробити
1. Створіть фіскальну позицію
Фіскальна позиція — це набір правил, за якими Odoo підмінює податки й рахунки для певних контрагентів. Почнемо з порожньої.
Accounting → Configuration → Fiscal Positions → New. Поля:
- Name —
Оборона-197.6 (постачання ЗСУ). Назва осмислена, бо у звітах бачитимете саме її. - Country — лишаємо порожнім (Україна, бо постачання внутрішнє).
- Detect Automatically — поки що не вмикаємо. Auto-apply за країною спрацює на всіх українських партнерів і поламає інші продажі.
- Notes — короткий запис: «Застосовується до постачання за переліком КМУ №224 для ЗСУ і прирівняних формувань. Тип причини ПН — 09. Потребує компенсуючих ПЗ за 198.5/199.»
2. Додайте мапінг податків
Вкладка Tax Mapping. Натисніть Add a line і заповніть:
| Tax on Product | Tax to Apply |
|---|---|
20% продаж | Без ПДВ — звільнено 197.6 |
7% продаж | Без ПДВ — звільнено 197.6 |
14% продаж | Без ПДВ — звільнено 197.6 |
Якщо у вас є кастомні ставки (наприклад, 20% продаж — defense-аналітика), додайте і їх. Правило: будь-яка ставка продажу 20/7/14 → звільнення. Закупівельні ставки не чіпаємо — вхідний ПК ми обробляємо окремо через компенсуючі ПЗ.
3. Додайте мапінг рахунків (опційно, але рекомендую)
Вкладка Account Mapping:
| Account on Product | Account to Use |
|---|---|
701 Дохід від реалізації | 7012 Дохід від реалізації — оборонне замовлення |
901 Собівартість реалізованої продукції | 9012 Собівартість — оборонне замовлення |
Це дає реальну рентабельність оборонних контрактів окремо у P&L, без аналітичних танців. На рівні journal items усе ляже на потрібні субрахунки.
4. Збережіть і прив’яжіть до партнера
Збережіть позицію. Відкрийте Contacts → Військова частина А-1234, вкладка Sales & Purchase. У полі Fiscal Position виберіть Оборона-197.6 (постачання ЗСУ).
Прив’язку видно на формі партнера у полі property_account_position_id. Це властивість компанії (тобто діє в межах вашої company у multi-company середовищі) — потрібно повторити для кожної компанії, якщо їх кілька.
5. Перевірте на тестовому SO
Створіть sale.order на цього партнера. Додайте продукт зі стандартною ставкою «20% продаж». Збережіть. Подивіться на колонку Taxes у рядку:
- Має стояти
Без ПДВ — звільнено 197.6, не20% продаж. - У підсумку SO має бути 0 ПДВ.
- На поле
fiscal_position_idSO має бути автозаповнене з партнера.
Якщо ставка не змінилася — отже, в мапінгу tax_src_id не збігається з податком, що стоїть на продукті. Звіряйте за ID, а не за назвою: у базі може існувати кілька «20% продаж» з різними id.
6. Підтвердьте інвойс і простежте за ПН
Згенеруйте інвойс із SO. На account.move:
- Рядки автоматично з податком «Без ПДВ — звільнено 197.6».
- На формі ПН/ЄРПН значення
l10n_ua_pn_reason_code—09. Якщо у вашому модулі це поле не виставляється автоматично, додайте серверне правило: приfiscal_position_id.name ilike 'Оборона-197.6'ставити09. - Обсяг постачання потрапляє в рядок 5 декларації (звільнені постачання), не в рядок 1.1.
Підпишіть КЕП і надішліть до ЄРПН. Реєстрація — за тими самими 15 календарними днями (ПКУ ст. 201.10); звільнення від ПДВ не звільняє від реєстрації.
7. Нарахуйте компенсуючі ПЗ на матеріали
Це окремий крок наприкінці місяця, який часто забувають. На вартість матеріалів і послуг, що пішли у звільнене постачання, потрібно нарахувати компенсуючі ПЗ за ПКУ ст. 198.5 п. «г».
Проводка:
Дт 949 / Кт 6415 — 120 000 ₴ · компенсуючі ПЗ за матеріалами на оборонне постачання, ст. 198.5 п. «г»В Odoo це робиться через окремий wizard l10n_ua.compensating_vat (якщо встановлений) або ручною journal entry в журналі «Різне». Підставою буде зведена ПН на власне підприємство з типом причини «09» і ознакою «компенсуючі ПЗ».
Перевірка
- Тест-SO на цивільного партнера — нічого не змінилося, ставка лишається 20%. Це підтверджує, що fiscal position діє локально, а не на всю систему.
- Тест-SO на військову частину — ставка автоматично перемикається на «Без ПДВ — звільнено», в інвойсі сума ПДВ = 0.
- Аналітика P&L — після проведення інвойсу дохід ліг на субрахунок 7012, а не 701. Якщо ні — перевірте Account Mapping.
- ПН у ЄРПН — тип причини «09», обсяг постачання у звільнених рядках. Квитанція №2 з фіскальним номером.
- Декларація з ПДВ за місяць — рядок 5 містить обсяг постачання ЗСУ. Рядок 4.1 містить компенсуючі ПЗ за 198.5 на матеріальну частину.
- Сальдо 6415 після всіх проводок: компенсуючі ПЗ нараховані, навіть якщо за самим постачанням ПЗ нульове.
Якщо щось пішло не так
Ставка не підставилась. На партнері справді стоїть позиція, але SO підтягнув стандартні 20%. Причини: (1) на продукті встановлена кастомна ставка 20% продаж — defense, якої немає в мапінгу — додайте її; (2) SO був створений до того, як ви прив’язали FP — на існуючих рядках треба перевибрати продукт або скористатися кнопкою Recompute Taxes на інвойсі.
Auto-apply увімкнули — все зламалось. Якщо випадково увімкнули Detect Automatically і не вказали ані країну, ані групу — позиція почала підставлятися на всіх. Швидкий фікс: вимкніть auto-apply на цій позиції, перевиставте FP вручну на справді оборонних партнерах. Для існуючих SO у статусі draft зробіть Recompute Taxes.
ПН пройшла зі ставкою 20%, не з «09». Не спрацював код причини. Перевірте, що для вашого модуля fiscal position тригерить l10n_ua_pn_reason_code='09'. Якщо такого правила немає — додайте server action на account.move._post(): якщо fiscal_position_id.l10n_ua_reason_code заповнений, копіювати його у поле причини. На вже зареєстровану ПН доведеться скласти РК зі знаком мінус (код 301) і нову правильну ПН.
Забули компенсуючі ПЗ. Аудитор знайде це першим. На камеральній — донарахування ПЗ за 198.5, штраф за ПКУ ст. 123, пеня. Якщо помітили самі до перевірки — самостійно подайте уточнюючий розрахунок за період звільненого постачання з нарахуванням компенсуючих ПЗ. Штраф у такому разі — 3% від суми (самостійне виявлення), а не 25%.
На партнері кілька fiscal positions. Одна для ВТП-експорту, друга для постачання ЗСУ. Це нормально, але в Odoo на партнері можна вказати лише одну property_account_position_id. Виходи: (1) поділіть на двох контрагентів (рідко доцільно); (2) лишайте на партнері основну позицію, на окремих SO вручну змінюйте на іншу.
Дотичне
- Оборонні закупівлі — облік постачання ЗСУ — повна статтева розгортка, включно з Прозоро.МО і ДСЕКУ.
- Fiscal Position — як Odoo підмінює податки — механіка моделі
account.fiscal.position. - Експорт з типом причини «07» — інша fiscal position з нульовою ставкою (не плутати зі звільненням).
- Вихідна податкова накладна — реквізити ПН для постачання ЗСУ.
- Податкові зобов’язання з ПДВ — як ПЗ і компенсуючі ПЗ потрапляють у декларацію.