Elektroniske fakturaer er en del af moderne bogføring
Digitaliseringen af bogføringen skrider fortsat frem. Elektroniske fakturaformater er for længst mere end en PDF-fil, der sendes pr. e-mail.
En ægte elektronisk faktura indeholder strukturerede data, som regnskabs- og ERP-systemer kan behandle automatisk.
Med vores nye open source-projekt til Odoo 19 Community vil vi netop tage fat her.
Vi har udviklet flere udvidelser, som vi stiller gratis til rådighed for Odoo Community.
Projektet er offentligt tilgængeligt på GitHub:
Odoo 19 Invoice E-Files på GitHub
Vores fokus er især på Østrig, men en del af løsningen er også interessant for virksomheder uden for Østrig.
Tre moduler til elektroniske fakturaer
Projektet består i øjeblikket af tre væsentlige komponenter:
- ebInterface 6.1 til Østrig
- ZUGFeRD til elektroniske fakturaer
- automatisk fremsendelse til e-Rechnung.gv.at
Dermed samler vi forskellige krav til elektroniske fakturaer i ét open source-projekt til Odoo 19 Community.
ebInterface 6.1 – det østrigske fakturaformat
Et tyngdepunkt i vores udvikling er ebInterface 6.1.
ebInterface er det østrigske standardformat til strukturerede elektroniske fakturaer.
Vores modul
l10n_at_ebinterface
genererer ud fra en kundefaktura eller kreditnota i Odoo en tilsvarende ebInterface-6.1-XML.
Her overføres blandt andet de relevante oplysninger fra Odoo-fakturaen til XML-strukturen:
- Fakturaudsteder
- Fakturamodtager
- Fakturalinjer
- Skatter
- Betalingsoplysninger
- Bankforbindelse
- Fakturadata
Den genererede XML-fil knyttes direkte til fakturaen.
Hvorfor har vi udviklet et eget modul til dette?
Under udviklingen har vi konstateret, at der til Odoo 19 Community i øjeblikket ikke findes noget tilsvarende Odoo-kernemodul eller OCA-modul til den østrigske native ebInterface-standard.
Det var netop her, vi ville sætte ind.
I stedet for kun at udvikle en østrigsk løsning til vores egen installation har vi gennemført den som et selvstændigt open source-modul.
Dermed kan også resten af Odoo-fællesskabet få gavn af den.
ZUGFeRD automatisk ved hver faktura
Det andet tyngdepunkt i vores projekt er ZUGFeRD.
ZUGFeRD kombinerer en PDF-faktura med en struktureret XML-faktura.
Resultatet er en såkaldt hybridfaktura: For mennesker forbliver fakturaen læsbar som PDF, mens software automatisk kan aflæse de indeholdte strukturerede fakturadata.
Odoo 19 har grundlæggende allerede indbygget understøttelse af ZUGFeRD og CII.
I praksis er der dog nogle begrænsninger.
Vores modul
account_invoice_zugferd_ebinterface_auto
sætter derfor netop ind her.
ZUGFeRD ikke længere blot som en mulighed
Vi ønskede et så automatiseret forløb som muligt.
Ved en afsendt kundefaktura kontrolleres det derfor ikke først, om den pågældende kunde er konfigureret individuelt til ZUGFeRD.
I stedet anvendes ZUGFeRD automatisk til kundefakturaer og kreditnotaer.
Desuden medsendes den genererede ebInterface-XML som en del af fakturaen.
Dermed opstår der en gennemgående proces:
Odoo-faktura → PDF → struktureret e-faktura → afsendelse
uden at brugeren skal udføre yderligere trin for hver enkelt faktura.
Vi lukker også huller i Odoo 19 Community
Under implementeringen er vi stødt på nogle særegenheder i Odoo 19-implementeringen.
Blandt andet findes der afhængigheder i CII-eksportøren, som uden for bestemte landeinstallationer kan give problemer.
Vores modul afhjælper flere af disse praktiske begrænsninger.
Det omfatter blandt andet:
- manglende felter til Deferred Revenue-perioder
- den landespecifikke begrænsning af PDF/A-3-konverteringen
- manglende eller ikke angivne bankforbindelser på eksisterende fakturaer
Dermed skal ZUGFeRD også kunne anvendes pålideligt af virksomheder uden for de oprindeligt tiltænkte landekonstellationer.
e-Rechnung.gv.at – direkte fremsendelse til den østrigske stat
Den tredje komponent er især interessant for virksomheder, der udsteder fakturaer til offentlige ordregivere.
Med
l10n_at_erechnung_gv_at
kan en ebInterface-faktura sendes direkte til den østrigske e-Rechnung.gv.at-webservice.
Dermed bliver ren fakturaoprettelse til en automatiseret elektronisk fakturaproces.
Forløbet kan for eksempel se sådan ud:
Opret faktura i Odoo
↓
Generér ebInterface XML
↓
Send faktura
↓
Fremsend ebInterface automatisk til e-Rechnung.gv.at
Dermed integreres en ellers manuel proces direkte i Odoo.
Automatisk fremsendelse kun for de kunder, der har brug for det
Fremsendelsen til e-Rechnung.gv.at aktiveres ikke generelt for alle kunder.
I stedet kan den aktiveres hos den pågældende østrigske kunde.
Til dette registreres de nødvendige oplysninger, f.eks.
- Leverandørnummer
- Indkøbergruppe / filialnummer
- Ordrereference
hos kunden.
Modulet kontrollerer her også, om forudsætningerne for en aktivering er opfyldt.
Test- og produktionsdrift
Til e-Rechnung.gv.at kan der vælges mellem et test- og et produktionsmiljø.
Adgangsdata til USP-webservicen registreres i Odoo-indstillingerne.
Dermed kan integrationen først forberedes i et testmiljø, inden den tages i brug til den produktive fakturaafsendelse.
Automatisering i stedet for ekstra arbejde
Vores mål med udviklingen var ikke at give bogholderen flere knapper.
Tværtimod.
Ideen er:
Så lidt manuelt arbejde som muligt.
En faktura oprettes i Odoo.
De nødvendige strukturerede formater genereres automatisk.
Ved afsendelsen vedhæftes de pågældende filer automatisk.
Og hos tilsvarende konfigurerede østrigske kunder kan fakturaen desuden automatisk fremsendes til e-Rechnung.gv.at.
Netop denne automatisering gør forskellen mellem en simpel fileksport og en virkelig integreret e-faktureringsløsning.
Datakvalitet bliver ikke bare skjult
Et vigtigt punkt i vores implementering er dog også:
En elektronisk faktura kan kun være så god som de data, den genereres ud fra.
Derfor forsøger vi ikke i stilhed at erstatte manglende obligatoriske oplysninger med vilkårlige værdier.
Hvis f.eks. obligatoriske oplysninger til ZUGFeRD eller ebInterface mangler, skal Odoo gøre brugeren opmærksom på det.
Det omfatter f.eks.:
- manglende land hos kunden
- manglende skatteoplysninger på fakturalinjer
- manglende bankforbindelse
Det er efter vores opfattelse bedre end at sende en formelt genereret, men indholdsmæssigt forkert elektronisk faktura.
Open source til Odoo Community
Også dette projekt stiller vi gratis som open source til rådighed.
Hvorfor?
Fordi vi selv har gavn af open source-software.
Odoo Community udgør et fremragende fundament for ERP, bogføring og virksomhedsprocesser. Hvis vi i det daglige arbejde mangler en funktion, udvikler vi den.
Og hvis løsningen også kan være interessant for andre virksomheder, stiller vi den til rådighed for fællesskabet.
For os er det levet open source.
Østrigsk fokus – men ikke kun for Østrig
Projektet har et klart østrigsk tyngdepunkt.
ebInterface og e-Rechnung.gv.at er især interessante for østrigske virksomheder.
ZUGFeRD-understøttelsen er derimod også relevant for virksomheder uden for Østrig.
Dermed er projektet ikke udelukkende en østrigsk løsning.
Netop kombinationen af strukturerede fakturadata og et automatisk genereret PDF/A-3-dokument kan også være interessant for andre Odoo-installationer.
Til Odoo 19 Community
Modulerne er udviklet til Odoo 19 Community.
Repositoryet indeholder i øjeblikket:
- l10n_at_ebinterface
- account_invoice_zugferd_ebinterface_auto
- l10n_at_erechnung_gv_at
Modulerne er indbyrdes afhængige, så der alt efter anvendelsestilfælde kun skal installeres de nødvendige komponenter.
Vores bidrag til fællesskabet
Vi ser ikke dette projekt som en færdig kommerciel software, men som et bidrag til videreudviklingen af Odoo-fællesskabet.
Måske har nogen kun brug for ebInterface.
Måske har en anden virksomhed brug for ZUGFeRD.
Måske skal en virksomhed jævnligt sende fakturaer til offentlige ordregivere via e-Rechnung.gv.at.
I alle tre tilfælde kan vores projekt udgøre et grundlag.
Og fordi kildekoden er åbent tilgængelig, kan enhver bruger gennemgå, tilpasse og videreudvikle løsningen.
Open source betyder: at blive bedre sammen
Vi er overbeviste om, at open source giver en stor fordel, især ved ERP-systemer.
Virksomheder har forskellige krav.
En løsning, der fungerer perfekt for én virksomhed, skal måske tilpasses for en anden.
Med en åben kildekode er det muligt.
Derfor glæder vi os over:
- Feedback
- Fejlrapporter
- Forbedringsforslag
- Pull requests
- yderligere understøttede anvendelsestilfælde
En god fællesskabsløsning opstår ikke nødvendigvis med den første commit.
Den opstår gennem videreudvikling fra mange brugere og udvikleres side.
Brug projektet gratis
Den komplette kildekode er offentligt tilgængelig på GitHub:
GitHub – Odoo 19 Invoice E-Files
Her findes også installationsoplysningerne og dokumentationen for de enkelte moduler.
Til integrationen af den østrigske e-Rechnung.gv.at-webservice kræves desuden Python-biblioteket Zeep.
Vores bidrag til en åben Odoo-verden
Med dette projekt vil vi vise, at også mindre egenudviklinger kan skabe merværdi for et helt fællesskab.
Vi udviklede oprindeligt modulerne for at løse konkrete krav.
Nu stiller vi disse løsninger gratis til rådighed for alle brugere af Odoo 19 Community.
Dermed kan en individuel udvikling blive til en fællesskabsløsning.
Odoo 19. Open source. Elektroniske fakturaer. Østrig. Og gratis for fællesskabet.
Netop derfor har vi offentliggjort dette projekt.