Faktury elektroniczne są częścią nowoczesnej księgowości
Cyfryzacja księgowości stale postępuje. Elektroniczne formaty faktur to od dawna coś więcej niż plik PDF wysyłany pocztą e-mail.
Prawdziwa faktura elektroniczna zawiera ustrukturyzowane dane, które mogą być automatycznie przetwarzane przez systemy księgowe i ERP.
Naszym nowym projektem open source dla Odoo 19 Community chcemy zająć się właśnie tym obszarem.
Opracowaliśmy kilka rozszerzeń, które udostępniamy społeczności Odoo bezpłatnie.
Projekt jest publicznie dostępny na GitHubie:
Odoo 19 Invoice E-Files na GitHubie
Skupiamy się przede wszystkim na Austrii, ale część rozwiązania jest interesująca także dla firm spoza Austrii.
Trzy moduły do faktur elektronicznych
Projekt składa się obecnie z trzech głównych komponentów:
- ebInterface 6.1 dla Austrii
- ZUGFeRD dla faktur elektronicznych
- automatyczne przesyłanie do e-Rechnung.gv.at
W ten sposób łączymy różne wymagania dotyczące faktur elektronicznych w jednym projekcie open source dla Odoo 19 Community.
ebInterface 6.1 – austriacki format faktur
Jednym z głównych punktów naszych prac jest ebInterface 6.1.
ebInterface to austriacki standardowy format ustrukturyzowanych faktur elektronicznych.
Nasz moduł
l10n_at_ebinterface
generuje z faktury sprzedaży lub noty kredytowej w Odoo odpowiedni plik XML ebInterface 6.1.
Przy tym do struktury XML przenoszone są m.in. istotne informacje z faktury Odoo:
- wystawca faktury
- odbiorca faktury
- pozycje faktury
- podatki
- informacje o płatności
- dane rachunku bankowego
- dane faktury
Wygenerowany plik XML jest przy tym bezpośrednio powiązany z fakturą.
Dlaczego opracowaliśmy do tego własny moduł?
Podczas prac stwierdziliśmy, że dla Odoo 19 Community nie jest obecnie dostępny odpowiedni moduł rdzenia Odoo ani moduł OCA dla austriackiego natywnego standardu ebInterface.
Właśnie tu chcieliśmy zacząć.
Zamiast opracowywać austriackie rozwiązanie wyłącznie dla własnej instalacji, wdrożyliśmy je jako samodzielny moduł open source.
Dzięki temu skorzystać może także reszta społeczności Odoo.
ZUGFeRD automatycznie przy każdej fakturze
Drugim głównym punktem naszego projektu jest ZUGFeRD.
ZUGFeRD łączy fakturę w formacie PDF z ustrukturyzowaną fakturą XML.
Wynikiem jest tak zwana faktura hybrydowa: dla człowieka faktura pozostaje czytelna jako PDF, a oprogramowanie może automatycznie analizować zawarte w niej ustrukturyzowane dane faktury.
Odoo 19 zasadniczo już oferuje obsługę ZUGFeRD, czyli CII.
W praktyce istnieje jednak kilka ograniczeń.
Nasz moduł
account_invoice_zugferd_ebinterface_auto
zajmuje się więc właśnie tym.
ZUGFeRD już nie tylko jako opcja
Chcieliśmy możliwie jak najbardziej zautomatyzowanego przebiegu.
Przy wysyłanej fakturze sprzedaży nie sprawdza się więc najpierw, czy dany klient został indywidualnie skonfigurowany do ZUGFeRD.
Zamiast tego ZUGFeRD jest stosowany automatycznie dla faktur sprzedaży i not kredytowych.
Dodatkowo wygenerowany XML ebInterface jest dołączany jako składnik faktury.
W ten sposób powstaje spójny proces:
Faktura Odoo → PDF → ustrukturyzowana e-faktura → wysyłka
bez konieczności wykonywania przez użytkownika dodatkowych kroków przy każdej fakturze.
Uzupełniamy przy tym także luki w Odoo 19 Community
Podczas wdrożenia natknęliśmy się na kilka osobliwości w implementacji Odoo 19.
Między innymi w eksporterze CII istnieją zależności, które poza określonymi instalacjami krajowymi mogą prowadzić do problemów.
Nasz moduł usuwa przy tym kilka z tych praktycznych ograniczeń.
Należą do nich m.in.:
- brakujące pola dla okresów Deferred Revenue
- ograniczenie konwersji PDF/A-3 do określonych krajów
- brakujące lub niewprowadzone dane rachunku bankowego w istniejących fakturach
Dzięki temu ZUGFeRD ma być niezawodnie stosowany także przez firmy spoza pierwotnie przewidzianych konfiguracji krajowych.
e-Rechnung.gv.at – bezpośrednie przesyłanie do austriackiego państwa
Trzeci element jest szczególnie interesujący dla firm wystawiających faktury podmiotom publicznym.
Za pomocą
l10n_at_erechnung_gv_at
fakturę ebInterface można przesłać bezpośrednio do austriackiej usługi sieciowej e-Rechnung.gv.at.
W ten sposób samo wystawianie faktur staje się zautomatyzowanym procesem faktur elektronicznych.
Przebieg może wyglądać na przykład tak:
Utworzenie faktury w Odoo
↓
Wygenerowanie XML ebInterface
↓
Wysłanie faktury
↓
Automatyczne przesłanie ebInterface do e-Rechnung.gv.at
W ten sposób proces, który inaczej byłby ręczny, zostaje zintegrowany bezpośrednio w Odoo.
Automatyczne przesyłanie tylko dla potrzebnych klientów
Przesyłanie do e-Rechnung.gv.at nie jest włączane zbiorczo dla każdego klienta.
Zamiast tego można je włączyć u danego austriackiego klienta.
W tym celu wymagane dane, takie jak na przykład
- numer dostawcy
- grupa zakupowa / numer oddziału
- odniesienie do zamówienia
są zapisywane u klienta.
Moduł sprawdza przy tym również, czy spełnione są warunki do aktywacji.
Tryb testowy i produkcyjny
Dla e-Rechnung.gv.at można wybrać między środowiskiem testowym a produkcyjnym.
Dane dostępowe do usługi sieciowej USP zapisuje się w ustawieniach Odoo.
Dzięki temu integrację można najpierw przygotować w środowisku testowym, zanim zostanie użyta do produkcyjnej wysyłki faktur.
Automatyzacja zamiast dodatkowej pracy
Naszym celem przy tworzeniu nie było dawanie księgowym kolejnych przycisków.
Wręcz przeciwnie.
Idea jest taka:
Jak najmniej pracy ręcznej.
Faktura jest tworzona w Odoo.
Potrzebne ustrukturyzowane formaty są generowane automatycznie.
Przy wysyłce odpowiednie pliki są dołączane automatycznie.
A u odpowiednio skonfigurowanych austriackich klientów faktura może być dodatkowo automatycznie przesłana do e-Rechnung.gv.at.
Właśnie ta automatyzacja stanowi różnicę między zwykłym eksportem plików a naprawdę zintegrowanym rozwiązaniem do e-faktur.
Jakość danych nie jest po prostu ukrywana
Ważną cechą naszej implementacji jest jednak także to, że:
Faktura elektroniczna może być tylko tak dobra, jak dane, z których jest generowana.
Dlatego nie próbujemy po cichu zastępować brakujących wymaganych danych dowolnymi wartościami.
Jeśli na przykład brakuje obowiązkowych informacji dla ZUGFeRD lub ebInterface, Odoo ma zwrócić na to uwagę użytkownika.
Należą do tego na przykład:
- brak kraju u klienta
- brak informacji podatkowych w pozycjach faktury
- brak danych rachunku bankowego
Naszym zdaniem lepiej tak, niż wysyłać formalnie wygenerowaną, ale merytorycznie błędną fakturę elektroniczną.
Open source dla społeczności Odoo
Również ten projekt udostępniamy bezpłatnie jako open source.
Dlaczego?
Ponieważ sami korzystamy z oprogramowania open source.
Odoo Community stanowi doskonałą podstawę dla ERP, księgowości i procesów w firmie. Gdy w codziennej pracy brakuje nam jakiejś funkcji, opracowujemy ją sami.
A jeśli rozwiązanie może być interesujące także dla innych firm, udostępniamy je społeczności.
Dla nas to żywy open source.
Austriacki nacisk – ale nie tylko dla Austrii
Projekt ma wyraźnie austriacki charakter.
ebInterface i e-Rechnung.gv.at są interesujące przede wszystkim dla austriackich firm.
Obsługa ZUGFeRD jest natomiast istotna także dla firm spoza Austrii.
Projekt nie jest więc rozwiązaniem wyłącznie austriackim.
Właśnie połączenie ustrukturyzowanych danych faktury z automatycznie generowanym dokumentem PDF/A-3 może być interesujące także dla innych instalacji Odoo.
Dla Odoo 19 Community
Moduły zostały opracowane dla Odoo 19 Community.
Repozytorium zawiera obecnie:
- l10n_at_ebinterface
- account_invoice_zugferd_ebinterface_auto
- l10n_at_erechnung_gv_at
Moduły są od siebie zależne, dzięki czemu w zależności od zastosowania wystarczy zainstalować tylko potrzebne komponenty.
Nasz wkład w społeczność
Nie postrzegamy tego projektu jako gotowego oprogramowania komercyjnego, lecz jako wkład w rozwój społeczności Odoo.
Być może ktoś potrzebuje tylko ebInterface.
Być może inna firma potrzebuje ZUGFeRD.
Być może firma musi regularnie wysyłać faktury podmiotom publicznym przez e-Rechnung.gv.at.
We wszystkich trzech przypadkach nasz projekt może stanowić podstawę.
A ponieważ kod źródłowy jest otwarty, każdy użytkownik może sprawdzić rozwiązanie, dostosować je i rozwijać dalej.
Open source oznacza: wspólnie stawać się lepszymi
Jesteśmy przekonani, że open source daje duże korzyści zwłaszcza w systemach ERP.
Firmy mają różne wymagania.
Rozwiązanie, które doskonale sprawdza się w jednej firmie, w innej może wymagać dostosowania.
Dzięki otwartemu kodowi źródłowemu jest to możliwe.
Dlatego cieszymy się z:
- opinii
- zgłoszeń błędów (Bug Reports)
- propozycji ulepszeń
- Pull Requests
- kolejnych obsługiwanych przypadków użycia
Dobre rozwiązanie społecznościowe nie musi powstać już przy pierwszym commicie.
Powstaje dzięki dalszemu rozwojowi przez wielu użytkowników i programistów.
Korzystaj z projektu bezpłatnie
Cały kod źródłowy jest publicznie dostępny na GitHubie:
GitHub – Odoo 19 Invoice E-Files
Znajdują się tam także informacje o instalacji i dokumentacja poszczególnych modułów.
Do integracji austriackiej usługi sieciowej e-Rechnung.gv.at wymagana jest dodatkowo biblioteka Pythona Zeep.
Nasz wkład w otwarty świat Odoo
Tym projektem chcemy pokazać, że nawet mniejsze własne rozwiązania mogą stworzyć wartość dodaną dla całej społeczności.
Moduły opracowaliśmy pierwotnie, aby rozwiązać konkretne wymagania.
Teraz udostępniamy te rozwiązania bezpłatnie wszystkim użytkownikom Odoo 19 Community.
W ten sposób z indywidualnego rozwiązania może powstać rozwiązanie dla całej społeczności.
Odoo 19. Open source. Faktury elektroniczne. Austria. I bezpłatnie dla społeczności.
Właśnie w tym celu opublikowaliśmy ten projekt.