Конфигурация на българската локализация
Модул l10n_bg_tax_admin за Odoo 18 — фискални позиции, данъци, протоколи, митници
Съдържание
- Обща архитектура
- Фискални позиции
- Картографиране на данъчни действия
- Конфигурация на данъци
- НАП тагове → клетки
- Счетоводни сметки
- Линии на разпределение
- Шаблони
- Работни потоци
- OSS (Едно гише)
- SQL Двигател (reports_audit)
- EE — vat_reports
- CE — report_vat
1. Обща архитектура
Модулът управлява обработката на данъчни документи чрез три слоя:
Ниво 1: Фискална позиция
account.fiscal.position
Определякой данък да замени кой. Автоматично прилагане по държава, група, приоритет.
Ниво 2: Картографиране на данъчни действия
account.fiscal.position.tax.action
Определякой документда генерира: протокол митница частен стандарт
Ниво 3: Данъци
Линии на разпределение
Определякак да се запишеи в кои NRA клетки да се поставят (чрез тагове).
2. Фискални позиции
Приоритетна йерархия
| Последователност | Фискална позиция | Държава / Група | Кога да се прилага |
|---|---|---|---|
| 0 | OSS B2C (по държава) | Специфична страна от ЕС | B2C продажби в ЕС с регистрация по OSS |
| 10 | Вътрешен | 🇧🇬 България | Транзакции с български контрагенти |
| 20 | ЕС B2C | 🇪🇺 Група Европа | Продажби на физически лица в ЕС (без OSS) |
| 30 | ЕС B2B | 🇪🇺 Група Европа | Сделки с компании от ЕС (B2B) |
| 40 | Извън ЕС | 🌍 Неограничено | Внос/износ извън ЕС |
| 60 | 0% Чл. 69(2) | 🇪🇺 Група Европа | Доставки до друга страна от ЕС |
| 61 | 0% Чл. 82(2) | 🇪🇺 Група Европа | Услуги, получени от ЕС |
Важно:Последователността определя приоритета. По-ниска стойност = по-висок приоритет. OSS (последователност=0) се прилага преди ЕС B2B (последователност=30).
ЕС B2B (последователност=30) — GP
Продажби(изходящи фактури)
| Данък върху добавената стойност | → | Заменен с | Етикет |
|---|---|---|---|
| 20% ДДС | → | 0% ЕС (ВОДА) | +15 |
| 20% Лично ползване | → | 0% ЕС (ВОДА) | +15 |
| 9% ДДС | → | 0% ЕС (ВОДА) | +15 |
| 9% Лично ползване | → | 0% ЕС (ВОДА) | +15 |
| 0% Освободен | → | 0% ЕС (ВОДА) | +15 |
Покупки(входящи фактури)
| Данък върху добавената стойност | → | Заменен с | Тип |
|---|---|---|---|
| 20% OTC (без DK) | → | 20% EU PTC (ICA) | група |
| 20% FTC (пълен DC) | → | 20% EU PTC (ICA) | група |
| 20% PTC (частичен DC) | → | 20% EU PTC (ICA) | група |
ICA (Вътрешнообщностно придобиване):Групов данък с две деца — вземания и задължения — които се самоотменят чрез сметка 430000.
Извън ЕС (seq=40) — Вход/Износ
Продажби(експорт)
| Данък върху добавената стойност | → | Заменен с | Етикет |
|---|---|---|---|
| 20% ДДС | → | 0% EX (Експорт) | +14 |
| 20% Лично ползване | → | 0% EX | +14 |
| 9% ДДС | → | 0% EX | +14 |
| 0% Освободен | → | 0% EX | +14 |
Покупки(вноски)
| Данък върху добавената стойност | → | Заменен с | Тип |
|---|---|---|---|
| 20% OTC | → | Митническа тарифа + ДДС | мито+ДДС |
| 20% FTC | → | Митническа тарифа + ДДС | мито+ДДС |
| 20% PTC | → | Митническа тарифа + ДДС | мито+ДДС |
Митническа тарифа + ДДС:Групов данък с customs_ratechild (мито) и percentchild (20% ДДС върху митническата стойност).0% Чл. 69(2)— Място извън България
| Всички данъци върху продажбите | → | 0% По чл. 69(2) |
|---|---|---|
| Попада вклетка 23от справката-декларация (етикет +23) |
0% Чл. 82(2)— Получени услуги от ЕС
| Всички данъци върху продажбите | → | 0% ПТК Чл. 80(2) |
|---|---|---|
| Обратен данък с етикет +12_2 →клас 12 |
5. Етикети → Клетки от ДДС декларация
Всеки етикет (account.account.tag) съответства на конкретна клетка отДДС декларацията(чл. 125, ал. 1).
Раздел А — Данък начислен (Журнал на продажбите)
| Етикет | Клетка | Описание в справката-декларация | Какво попада |
|---|---|---|---|
| +11 | клас 11 | ДДС върху облагаемите доставки с ставка 20% | Данъчна основа на всички продажби с 20% ДДС |
| +12_1 | клас 12 | ДО на ВОП и доставки по чл. 82, ал. 2-5 | Данъчна основа на общия данък върху доходите (ДОД) |
| +12_2 | клас 12 | ДО на ВОП и доставки по чл. 82, ал. 2-5 | Получени услуги от ЕС по чл. 82(2) |
| +13 | клас 13 | ДДС върху облагаемите доставки с ставка 9% | Продажби с 9% ДДС (туризъм) |
| +14 | клас 14 | ДО на доставки по чл. 28, 140, 146 и чл. 173 | Износи, доставки на злато |
| +15 | клас 15 | Транспорт по вода | Вътрешнообщностни доставки (продажби на компании от ЕС) |
| +17 | клас 17 | ДО на услуги по чл. 21, ал. 2 | Услуги с получател в друга държава от ЕС (VIES) |
| +19 | клас 19 | ТО на освободени доставки | Освободени доставки (чл. 38-50 от Закона за ДДС) |
| +21 | клас 21 | Данък, начислен за доставки по чл. 11 | ДДС 20% = чл.11 × 20% |
| +22 | клас 22 | Данък, начислен за общи търговски дейности и доставки по клас 12 | Обратен данък (GPL, чл. 82, чл. 84) |
| +23 | клас 23 | График на доставките по чл. 69, ал. 2 | Място на изпълнение в друга държава от ЕС |
| +24 | клас 24 | Данък, начислен за доставки по чл. 13 | ДДС 9% = чл.13 × 9% |
| +25 | клас 25 | ТО на тристранни сделки от посредник | Тристранни сделки по чл. 15 от Закона за ДДС |
Раздел Б — Данъчен кредит (Журнал за покупки)
| Етикет | Клетка | Описание в справката-декларация | Какво попада |
|---|---|---|---|
| +30 | клас 30 | ТО на получени доставкибез право на ДК | Покупки на гише (OTC) |
| +31 | клас 31 | ТО на получени доставкис право на пълен ДК | Покупки с пълен данъчен кредит (FTC) |
| +32 | клас 32 | Към получените доставкис право на частичен ДК | Покупки с частичен данъчен кредит (ПДК) |
| +33 | клас 33 | Годишна корекция по чл. 73, ал. 8 | Корекция при промяна на коефициент |
| +41 | клас 41 | ДДС с право на пълен ДДС | Дължим ДДС = кл.31 × ставка |
| +42 | клас 42 | ДДС с право на частичен данъчен кредит | Дължим ДДС = кл.32 × ставка |
| +43 | клас 43 | Годишна корекция по чл. 73, ал. 8 | Корекция на дължимия ДДС |
Резултатни клетки (автоматично изчислени)
| Клетка | Описание | Формула |
|---|---|---|
| клас 20 | Общо дължим данък | кл.21 + кл.22 + кл.24 |
| клас 40 | Общо данъчен кредит | кл.41 + кл.42 + кл.43 |
| клас 50 | ДДС за внос | кл.20 − кл.40(ако ≥ 0) |
| клас 60 | Възстановяване на ДДС | кл.40 − кл.20(ако кл.40 > кл.20) |
| клас 70 | Входящ данък — ефективно | кл.50 (ако няма приспадане) |
| клас 80 | ДДС за възстановяване по чл. 92 | Ускорено възстановяване |
| клас 81 | ДДС за възстановяване по чл. 92, ал. 3 | Натрупани 2+ периода |
| клас 82 | ДДС за възстановяване по чл. 92, ал. 4 | Спешно възстановяване |
+ = фактура, − = възстановяване. Odoo 18: tax_negate. Редовете в сиво не са конфигурирани в демото, но са част от декларацията.
9. Работни потоци
Поток 1:Вътрешнообщностно придобиване (ВОП)
- Постъпила фактура от доставчик от ЕС
- Автоматично FPЕС B2B
- Данък → 20% ЕС ПДК (ВОП)
- TAM:l10n_bg_move_type=протокол
- Публикация →протокол(10-цифрен номер)
Ден на продажба:
клас 12.1 + клас 22Дата на покупка:
клас 31 + клас 41Поток 2:Внос от трета страна
- Постъпила фактура от извън ЕС
- Автоматично FPИзвън ЕС
- Данък → Митническа тарифа + ДДС
- TAM:l10n_bg_move_type=митница
- Setl10n_bg_currency_rate
- Публикация →митническа декларация
Подкуп= customs_base × tariff_rate
DDS= customs_base × 20%Поток 3:Услуга от ЕС (чл. 82(2))
- Постъпила фактура от доставчик на услуги от ЕС
- FP0% чл. 82(2)
- Данък → 0% ПДК чл. 80(2)
- TAM:l10n_bg_move_type=протокол
- Записване →протокол
Ден на продажба:
клас 12.2 + клас 22Дата на покупка:
клас 31 + клас 41Поток 4:Лично ползване
- Входяща фактура за актив за лично ползване
- TAM:l10n_bg_move_type=private
- Данък: 20% Лично ползване
- Задайте personal_km и total_km
- Коефициент = (лично / общо) × 100
- Основата = оригинал × (коефициент / 100)
- Публикувай →account.move.bg.private
10. OSS (Едно гише)
OSS елементите автоматично заменят българските ДДС ставки с тарифите надържавата на получателяза B2C продажби.
| Държава | Код | Стандартен | Намален | BG 20% → | BG 9% → |
|---|---|---|---|---|---|
| 🇩🇪 Германия | ОТ | 19% | 7% | 19% ДДС | 7% ДДС DE |
| 🇫🇷 Франция | FR | 20% | 5.5% | 20% ДДС FR | 5.5% ДДС FR |
| 🇦🇹 Австрия | AT | 20% | 10% | 20% И ДДС | 10% И ДДС |
| 🇮🇹 Италия | IT | 22% | 4% | 22% ДДС IT | 4% ДДС IT |
| 🇭🇺 Унгария | HU | 27% | 5% | 27% ДДС HU | 5% ДДС HU |
| 🇷🇴 Румъния | RO | 21% | 11% | 21% РО ДДС | 11% РО ДДС |
| 🇬🇷 Гърция | ГР | 24% | 13% | 24% ГР ДДС | 13% ГР ДДС |
| 🇵🇱 Полша | ПЛ | 23% | 8% | 23% ПЛ ДДС | 8% ПЛ ДДС |
| 🇪🇸 Испания | ИС | 21% | 10% | 21% ЕС ДДС | 10% ЕС ДДС |
| 🇳🇱 Нидерландия | NL | 21% | 9% | 21% NL ДДС | 9% NL ДДС |
| 🇧🇪 Белгия | БЕ | 21% | 6% | 21% ДДС | 6% ДДС |
| 🇸🇪 Швеция | SE | 25% | 6% | 25% SE ДДС | 6% SE ДДС |
| 🇩🇰 Дания | ДК | 25% | 25% | 25% ДК ДДС | 25% ДК ДДС |
| 🇫🇮 Финландия | БЕ | 25.5% | 10% | 25.5% FI ДДС | 10% FI ДДС |
| 🇸🇰 Словакия | СК | 23% | 19% | 23% СК ДДС | 19% УК ДДС |
| 🇨🇿 Чехия | CZ | 21% | 12% | 21% CZ ДДС | 12% чешки ДДС |
OSS елементите също имат seq=0a конкретна страна → прилагане преди EU B2B (seq=30). Данъчна група: OSS XX.X%, последователност 1000.
11. SQL двигател — l10n_bg_reports_audit
Модулът l10n_bg_reports_audit предоставя6-слойна SQL йерархияот модели на само за четене ( _auto=False) за изчисляване на данни за ДДС.
Йерархия на SQL модели
| Слой | Модел | Функция | GROUP BY |
|---|---|---|---|
| 1 | account.bg.calc.sales.line | Извлича тагове от account_move_linesales | move_id, дата |
| 1 | account.bg.calc.purchases.line | Извлича тагове от account_move_linepurchases | move_id, дата |
| 2 | account.bg.info.sale.line | Пълна информация за документ (продажба) | move_id + партньор |
| 2 | account.bg.info.purchases.line | Пълна информация за документ (покупка) | move_id + партньор |
| 3 | account.bg.vat.result.declar | Изчислява cl. 50, 60, 70-82 (ДДС за вход/възстановяване) | move_id |
| 4 | account.bg.vat.calc.declar | Комбинира продажби + покупки + резултат | компания, период |
| 5 | account.bg.vat.info.declar | Краен отчет с данни за компанията | компания, период |
| 6 | account.bg.calc.vies.line | VIES редове по партньор (таг 15, 17, 25) | партньор, период |
Ключови SQL изчисления
Извличане на тагове(Слой 1)
Всеки таг се извлича от account_account_tag, използвайки CASE:
SUM(CASEWHEN am.state = 'cancel' THEN 0.00Когато aat.tag_name = 11 И НЕ negateТогава aml.balanceИначе 0.00Край) * -1 КАТО account_tag_11
tag_name се извлича от името:REGEXP_REPLACE(name#>>'{en_US}', '\D','','g')::numeric
Формули за декларация(Слой 4)
| клас 10 | Σ(11 + 12_1 + 12_2 + 13 + 14 + 15 + 16) |
| клас 20 | Σ(21 + 22 + 23 + 24) |
| клас 40 | Σ(41 + 42 × коеф.33 + 43) |
| клас 50 | Ако (кл.20 - кл.40) > 0 Тогава ABS |
| клас 60 | Ако (кл.20 - кл.40) < 0 Тогава ABS |
кл.50/60 зависи от l10n_bg_odoo_compatible: ако е True — изчислено от SQL, ако е False — от декларирани стойности.
Информационни тагове — метаданни на документа
Продажби лог(info_tag_0-9)
| info_tag_0 | Идентификатор на компанията (ДДС / УИК) |
| info_tag_1 | Данъчен период (YYYYMM) |
| info_tag_2 | Код на клон |
| info_tag_3 | Номер на реда (ROW_NUMBER) |
| info_tag_4 | Тип на документа (01, 02, 03...) |
| info_tag_5 | Номер на документа |
| info_tag_6 | Дата на документа |
| info_tag_7 | ДДС номер на получателя |
| info_tag_8 | Име на получателя (многоезично) |
| info_tag_9 | Описание (наратив) |
Дневник на покупките(info_tag_1-10)
| info_tag_1 | Данъчен период (YYYYMM) |
| info_tag_2 | Идентификатор на компанията |
| info_tag_3 | Код на клон |
| info_tag_4 | Сериен номер |
| info_tag_5 | Тип документ |
| info_tag_6 | Номер на документа |
| info_tag_7 | Дата на документа |
| info_tag_8 | Данъчен номер на доставчика |
| info_tag_9 | Име на доставчика |
| info_tag_10 | Описание на доставката |
12. EE — l10n_bg_vat_reports (Enterprise)
На базата на account_reportsa рамка с персонализирани обработчици. Авто-инсталация на l10n_bg+ account_reports.
Поток от данни
SQL изгледи
_table_query
_build_l10n_bg_query()
dictfetchall()
_create_report_line()
× N реда
WEB / PDF
CSV / ZIP
4 отчета с с handler класове
Декларация
Секции A/B/C/D
50+
Клетки PDF в портретен формат
Declaration.txt
Дата на покупка
16 колони
80/страница
PDF в ландшафтен формат
Purchases.txt
Ден на продажба
26 колони
80/страница
PDF в ландшафтен формат
Prodagbi.txt
НАЧИНИ
6 колони
По партньор
PDF в портретен формат
Vies.txt
Формати за експортиране
| Формат | Метод | Кодиране | Шифроване | Описание |
|---|---|---|---|---|
| УЕБ | Компоненти на фронтенда | — | — | Интерактивен изглед с детайли за документите |
| _export_to_pdf_base() | — | — | QWeb → wkhtmltopdf, пейзаж за дневници | |
| CSV | get_l10n_bg_csv() | CP1251 | — | Фиксирана ширина, формат на НАП |
| ZIP | l10n_bg_export_csvs_zip() | CP1251 | AES-256 (pyzipper) | 4 CSV файла, без Zip64 |
Форматиране на CSV полета:parce_str_15() за текст 15 символа, parce_fload_15_2() за суми 15 символа с 2 десетични знака, parce_date_10() за дата dd/mm/yyyy. КодиранеCP1251(Windows-1251) за съвместимост с Националната агенция за приходите.
13. CE — l10n_bg_report_vat (Общност)
Подход, базиран на магьосник —не зависиот . account_reportsUses account_financial_report++ report_csv.report_zip
Процес: Магьосник → Доклад → Експорт
Магьосник
Дата от/до
на базата на
_print_report()
Избор на формат
_get_l10n_bg_results()
SQL изгледи
PDF / CSV
ZIP / XLSX
Сравнение на EE срещу CE
| Аспект | EE (l10n_bg_vat_reports) | CE (l10n_bg_report_vat) |
|---|---|---|
| Рамка | account_reports + персонализирани обработчици | Магьосник + account_financial_report |
| UI модел | Вграден преглед на отчети с инструментариум | Модален магьосник → Печат/Изтегляне |
| Интерактивност | Живо филтриране, задълбочаване | Ръчно стартиране на магьосника |
| Достъп до данни | Handler _get_dynamic_lines_data() | Mixin_get_l10n_bg_results() |
| SQL изгледи | Идентични— и двете usel10n_bg_reports_audit | |
| PDF експортиране | QWeb → wkhtmltopdf | QWeb → wkhtmltopdf |
| CSV експортиране | get_l10n_bg_csv() | report.report_csv.abstract |
| ZIP експортиране | pyzipper AES-256 | report.report_zip.abstract + криптиране |
| XLSX | — | report.report_xlsx.abstract(деактивиран) |
| Табовете | Отделни записи на отчети | Bootstrap nav-tabs в QWeb |
| Зависимости | account_reports (само EE) | account_financial_report, report_csv, report_zip(BAЩА) |
| Цена | Включено в EE лицензия | 250 EUR (OPL-1) |
CE модели на отчети (5-ти клас)
BGVATQwebReport
Основен QWeb PDF/HTML отчет. Пътища към 4 под-шаблона чрез active_tabcontext.
- declar → Портрет
- sales → Пейзаж
- purchase→ Пейзаж
- vies→ Пейзаж
BgVat*Csv(4-ти клас)
report.report_csv.abstractТе също наследяват l10n.bg.export.file.
- BgVatDeclarationCsv→ Deklar.txt
- BgVatSalesCsv → Prodagbi.txt
- BgVatPurchaseCsv→ Pokupki.txt
- BgVatViesCsv → Vies.txt
BgVatBookZip
Наследява report.report_zip.abstract. Генерира ZIP с 4 CSV файла.
- Извиква get_l10n_bg_csv()
- prepare_zip_payload() за криптиране
- Интеграция с l10n_bg_bank_wallet
Ключ:SQL моделите на изгледите саобщиза EE и CE. Единствената разлика е в слоя на представяне — EE използва framework за account_reports, CE използва wizard + OCA библиотеки за отчети.
Генерирано от анализа на модули l10n_bg_tax_admin, l10n_bg_reports_audit, l10n_bg_vat_reports, l10n_bg_report_vat — Българска локализация за Odoo 18