Електронні рахунки – невід'ємна частина сучасної бухгалтерії
Цифровізація бухгалтерського обліку триває. Формати електронних рахунків давно вже є чимось більшим, ніж PDF-файл, надісланий електронною поштою.
Справжній електронний рахунок містить структуровані дані, які бухгалтерські системи та ERP-системи можуть обробляти автоматично.
Нашим новим проєктом із відкритим кодом для Odoo 19 Community ми хочемо взятися саме за це.
Ми розробили кілька розширень, які безкоштовно надаємо спільноті Odoo.
Проєкт публічно доступний на GitHub:
Odoo 19 Invoice E-Files на GitHub
Наш акцент – насамперед на Австрії, однак частина рішення цікава й для компаній за межами Австрії.
Три модулі для електронних рахунків
Наразі проєкт складається з трьох основних компонентів:
- ebInterface 6.1 для Австрії
- ZUGFeRD для електронних рахунків
- автоматична передача до e-Rechnung.gv.at
Так ми поєднуємо різні вимоги щодо електронних рахунків в одному проєкті з відкритим кодом для Odoo 19 Community.
ebInterface 6.1 – австрійський формат рахунків
Одним із ключових напрямів нашої розробки є ebInterface 6.1.
ebInterface – це австрійський стандартний формат для структурованих електронних рахунків.
Наш модуль
l10n_at_ebinterface
створює з клієнтського рахунку чи кредит-ноти в Odoo відповідний XML ebInterface 6.1.
При цьому до XML-структури переносяться, зокрема, відповідні дані з рахунку Odoo:
- Виставник рахунку
- Одержувач рахунку
- Позиції рахунку
- Податки
- Платіжна інформація
- Банківські реквізити
- Дані рахунку
Створений XML-файл при цьому безпосередньо пов'язується з рахунком.
Чому ми розробили для цього власний модуль?
Під час розробки ми з'ясували, що для Odoo 19 Community наразі немає відповідного модуля ядра Odoo чи модуля OCA для австрійського нативного стандарту ebInterface.
Саме тут ми й хотіли докласти зусиль.
Замість того, щоб розробляти австрійське рішення лише для власної інсталяції, ми реалізували його як окремий модуль із відкритим кодом.
Так від нього може отримати користь і решта спільноти Odoo.
ZUGFeRD автоматично з кожним рахунком
Другий ключовий напрям нашого проєкту – ZUGFeRD.
ZUGFeRD поєднує PDF-рахунок зі структурованим XML-рахунком.
Результатом є так званий гібридний рахунок: для людини рахунок залишається читабельним у вигляді PDF, тоді як програмне забезпечення може автоматично обробляти вбудовані структуровані дані рахунку.
Odoo 19 загалом уже підтримує ZUGFeRD, тобто CII.
Проте на практиці існує низка обмежень.
Наш модуль
account_invoice_zugferd_ebinterface_auto
тому діє саме тут.
ZUGFeRD – більше не лише як опція
Ми прагнули максимально автоматизованого процесу.
Тому для надісланого клієнтського рахунку не перевіряється, чи налаштований конкретний клієнт окремо для ZUGFeRD.
Натомість ZUGFeRD автоматично використовується для клієнтських рахунків і кредит-нот.
Крім того, створений XML ebInterface додається як складова рахунку.
Так виникає наскрізний процес:
Рахунок Odoo → PDF → структурований електронний рахунок → надсилання
без потреби для користувача виконувати додаткові кроки для кожного рахунку.
Ми також усуваємо прогалини в Odoo 19 Community
Під час реалізації ми натрапили на низку особливостей у реалізації Odoo 19.
Зокрема, в експортері CII існують залежності, які поза межами певних країнових інсталяцій можуть призводити до проблем.
Наш модуль усуває кілька таких практичних обмежень.
До них, серед іншого, належать:
- відсутні поля для періодів відкладеного доходу (Deferred Revenue)
- обмеження конвертації в PDF/A-3 залежно від країни
- відсутні або не задані банківські реквізити в наявних рахунках
Таким чином ZUGFeRD можна буде надійно використовувати і в компаніях за межами країнових конфігурацій, передбачених спочатку.
e-Rechnung.gv.at – пряма передача австрійській державі
Третя складова особливо цікава для компаній, які виставляють рахунки державним замовникам.
За допомогою
l10n_at_erechnung_gv_at
рахунок ebInterface можна передати безпосередньо до австрійського вебсервісу e-Rechnung.gv.at.
Так просте створення рахунків перетворюється на автоматизований процес електронного рахункообігу.
Процес може виглядати, наприклад, так:
Створити рахунок в Odoo
↓
Згенерувати XML ebInterface
↓
Надіслати рахунок
↓
Автоматично передати ebInterface до e-Rechnung.gv.at
Так інакше ручний процес безпосередньо інтегрується в Odoo.
Автоматична передача лише для потрібних клієнтів
Передача до e-Rechnung.gv.at не вмикається вибірково для кожного клієнта.
Натомість її можна ввімкнути для конкретного австрійського клієнта.
Для цього в картці клієнта зберігаються потрібні дані, як-от
- номер постачальника
- група покупців / номер філії
- посилання на замовлення
у картці клієнта.
Модуль також перевіряє, чи виконано умови для активації.
Тестовий і робочий режим
Для e-Rechnung.gv.at можна вибрати між тестовим і робочим середовищем.
Облікові дані для вебсервісу USP зберігаються в налаштуваннях Odoo.
Так інтеграцію можна спочатку підготувати в тестовому середовищі, перш ніж використовувати її для робочого надсилання рахунків.
Автоматизація замість додаткової роботи
Наша мета під час розробки полягала не в тому, щоб дати бухгалтеру ще більше кнопок.
Навпаки.
Ідея така:
Якомога менше ручної роботи.
Рахунок створюється в Odoo.
Потрібні структуровані формати створюються автоматично.
Під час надсилання відповідні файли додаються автоматично.
А для належним чином налаштованих австрійських клієнтів рахунок додатково може автоматично передаватися до e-Rechnung.gv.at.
Саме ця автоматизація й відрізняє простий експорт файлів від справді інтегрованого рішення для електронних рахунків.
Якість даних не просто маскується
Важливий момент нашої реалізації, однак, такий:
Електронний рахунок може бути лише настільки якісним, наскільки якісні дані, з яких він створюється.
Тому ми не намагаємося мовчки підміняти відсутні обов'язкові дані якимись значеннями.
Якщо, наприклад, бракує обов'язкової інформації для ZUGFeRD чи ebInterface, Odoo має звернути на це увагу користувача.
До цього, зокрема, належать:
- відсутня країна в картці клієнта
- відсутня податкова інформація в позиціях рахунку
- відсутні банківські реквізити
На нашу думку, це краще, ніж надсилати формально створений, але хибний за змістом електронний рахунок.
Відкритий код для спільноти Odoo Community
Цей проєкт ми також надаємо безкоштовно з відкритим кодом.
Чому?
Тому що ми й самі користуємося перевагами програмного забезпечення з відкритим кодом.
Odoo Community пропонує чудову основу для ERP, бухгалтерії та бізнес-процесів. Якщо в щоденній роботі нам не вистачає якоїсь функції, ми її розробляємо.
А якщо рішення може бути цікавим і для інших компаній, ми надаємо його спільноті.
Для нас це живий відкритий код.
Австрійський фокус – але не лише для Австрії
Проєкт має чіткий австрійський акцент.
ebInterface та e-Rechnung.gv.at цікаві насамперед австрійським компаніям.
Підтримка ZUGFeRD, навпаки, актуальна і для компаній за межами Австрії.
Тож проєкт – не виключно австрійське рішення.
Саме поєднання структурованих даних рахунку з автоматично створеним документом PDF/A-3 може бути цікавим і для інших інсталяцій Odoo.
Для Odoo 19 Community
Модулі розроблено для Odoo 19 Community.
Наразі репозиторій містить:
- l10n_at_ebinterface
- account_invoice_zugferd_ebinterface_auto
- l10n_at_erechnung_gv_at
Модулі залежать один від одного, тому залежно від сценарію використання потрібно встановлювати лише потрібні компоненти.
Наш внесок у спільноту
Ми розглядаємо цей проєкт не як готове комерційне програмне забезпечення, а як внесок у розвиток спільноти Odoo.
Можливо, комусь потрібен лише ebInterface.
Можливо, іншій компанії потрібен ZUGFeRD.
Можливо, компанії потрібно регулярно надсилати рахунки державним замовникам через e-Rechnung.gv.at.
У всіх трьох випадках наш проєкт може стати основою.
А оскільки вихідний код відкритий, кожен користувач може перевірити рішення, адаптувати його та розвивати далі.
Відкритий код означає: ставати кращими разом
Ми переконані, що відкритий код дає особливо велику перевагу саме в ERP-системах.
Компанії мають різні вимоги.
Рішення, яке ідеально працює для однієї компанії, для іншої, можливо, доведеться адаптувати.
З відкритим вихідним кодом це можливо.
Тому ми будемо раді:
- відгукам
- повідомленням про помилки (Bug Reports)
- пропозиціям щодо покращень
- Pull Requests
- підтримці додаткових сценаріїв використання
Хороше рішення для спільноти не обов'язково з'являється з першого коміту.
Воно виникає завдяки розвитку силами багатьох користувачів і розробників.
Безкоштовно користуватися проєктом
Весь вихідний код публічно доступний на GitHub:
GitHub – Odoo 19 Invoice E-Files
Там також розміщено інформацію щодо встановлення та документацію окремих модулів.
Для інтеграції австрійського вебсервісу e-Rechnung.gv.at додатково потрібна бібліотека Python Zeep.
Наш внесок у відкритий світ Odoo
Цим проєктом ми хочемо показати, що навіть невеликі власні розробки можуть створювати додаткову цінність для цілої спільноти.
Спочатку ми розробили ці модулі, щоб вирішити конкретні завдання.
Тепер ми безкоштовно надаємо ці рішення всім користувачам спільноти Odoo 19 Community.
Так індивідуальна розробка може стати рішенням для спільноти.
Odoo 19. Відкритий код. Електронні рахунки. Австрія. І безкоштовно для спільноти.
Саме для цього ми опублікували цей проєкт.