Електронните фактури са част от съвременното счетоводство
Дигитализацията на счетоводството продължава да напредва. Форматите за електронни фактури отдавна са нещо повече от PDF файл, изпратен по имейл.
Истинската електронна фактура съдържа структурирани данни, които могат да се обработват автоматично от счетоводни и ERP системи.
С нашия нов проект с отворен код за Odoo 19 Community искаме да се заемем точно с това.
Разработихме няколко разширения, които предоставяме безплатно на Odoo Community.
Проектът е публично достъпен в 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 съответен ebInterface-6.1-XML.
При това, наред с другото, съответната информация от фактурата в Odoo се пренася в XML структурата:
- Издател на фактурата
- Получател на фактурата
- Редове на фактурата
- Данъци
- Информация за плащането
- Банкови данни
- Данни за фактурата
Генерираният 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 се използва автоматично за клиентски фактури и кредитни известия.
Освен това генерираният ebInterface-XML се прилага като част от фактурата.
Така се получава непрекъснат процес:
Фактура в 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
↓
Генериране на ebInterface XML
↓
Изпращане на фактурата
↓
Автоматично предаване на 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
- допълнителни поддържани случаи на употреба
Едно добро решение за общността не се ражда непременно при първия commit.
То се ражда чрез по-нататъшното развитие от много потребители и разработчици.
Безплатно използване на проекта
Целият изходен код е публично достъпен в GitHub:
GitHub – Odoo 19 Invoice E-Files
Там се намират също информацията за инсталиране и документацията на отделните модули.
За интеграцията на австрийската уеб услуга e-Rechnung.gv.at допълнително е необходима Python библиотеката Zeep.
Нашият принос към един отворен свят на Odoo
С този проект искаме да покажем, че и по-малки собствени разработки могат да създадат добавена стойност за цяла общност.
Първоначално разработихме модулите, за да решим конкретни изисквания.
Сега предоставяме тези решения безплатно на всички потребители на Odoo 19 Community.
Така една индивидуална разработка може да се превърне в решение за общността.
Odoo 19. Отворен код. Електронни фактури. Австрия. И безплатно за общността.
Именно за това публикувахме този проект.