Elektroniska fakturor hör till modern bokföring
Digitaliseringen av bokföringen går stadigt framåt. Elektroniska fakturaformat är sedan länge mer än en PDF-fil som skickas med e-post.
En verklig elektronisk faktura innehåller strukturerade data som bokförings- och ERP-system kan bearbeta automatiskt.
Med vårt nya projekt med öppen källkod för Odoo 19 Community vill vi ta tag i just detta.
Vi har utvecklat flera tillägg som vi tillhandahåller kostnadsfritt för Odoo Community.
Projektet finns offentligt tillgängligt på GitHub:
Odoo 19 Invoice E-Files på GitHub
Vårt fokus ligger särskilt på Österrike, men en del av lösningen är även intressant för företag utanför Österrike.
Tre moduler för elektroniska fakturor
Projektet består för närvarande av tre centrala komponenter:
- ebInterface 6.1 för Österrike
- ZUGFeRD för elektroniska fakturor
- automatisk överföring till e-Rechnung.gv.at
Därmed förenar vi olika krav kring elektroniska fakturor i ett projekt med öppen källkod för Odoo 19 Community.
ebInterface 6.1 – det österrikiska fakturaformatet
En tyngdpunkt i vår utveckling är ebInterface 6.1.
ebInterface är Österrikes standardformat för strukturerade elektroniska fakturor.
Vår modul
l10n_at_ebinterface
skapar utifrån en kundfaktura respektive kreditnota i Odoo en motsvarande ebInterface-6.1-XML.
Därvid förs bland annat de relevanta uppgifterna från Odoo-fakturan över till XML-strukturen:
- Fakturautfärdare
- Fakturamottagare
- Fakturarader
- Skatter
- Betalningsinformation
- Bankuppgifter
- Fakturadata
Den skapade XML-filen länkas direkt till fakturan.
Varför har vi utvecklat en egen modul för detta?
Under utvecklingen upptäckte vi att det för Odoo 19 Community för närvarande inte finns någon motsvarande Odoo-kärnmodul eller OCA-modul för den inhemska österrikiska ebInterface-standarden.
Det var just här vi ville sätta in.
I stället för att utveckla en österrikisk lösning enbart för vår egen installation har vi implementerat den som en fristående modul med öppen källkod.
Därmed kan även resten av Odoo-communityn dra nytta av den.
ZUGFeRD automatiskt med varje faktura
Den andra tyngdpunkten i vårt projekt är ZUGFeRD.
ZUGFeRD kombinerar en PDF-faktura med en strukturerad XML-faktura.
Resultatet är en så kallad hybridfaktura: För människan förblir fakturan läsbar som PDF, medan programvara automatiskt kan tolka de inbäddade strukturerade fakturadata.
Odoo 19 har i grunden redan stöd för ZUGFeRD respektive CII.
I praktiken finns det dock vissa begränsningar.
Vår modul
account_invoice_zugferd_ebinterface_auto
tar därför just här sin utgångspunkt.
ZUGFeRD inte längre bara som alternativ
Vi ville ha ett så automatiserat flöde som möjligt.
Vid en skickad kundfaktura kontrolleras därför inte först om den aktuella kunden har konfigurerats individuellt för ZUGFeRD.
I stället används ZUGFeRD automatiskt för kundfakturor och kreditnotor.
Dessutom bifogas den skapade ebInterface-XML som en del av fakturan.
Därmed uppstår ett genomgående flöde:
Odoo-faktura → PDF → strukturerad e-faktura → utskick
utan att användaren behöver utföra extra steg för varje faktura.
Vi åtgärdar även luckor i Odoo 19 Community
Vid genomförandet stötte vi på några egenheter i Odoo 19-implementeringen.
Bland annat finns det beroenden i CII-exportören som kan orsaka problem utanför vissa landsspecifika installationer.
Vår modul åtgärdar flera av dessa praktiska begränsningar.
Hit hör bland annat:
- saknade fält för Deferred-Revenue-perioder
- den landsspecifika begränsningen av PDF/A-3-konverteringen
- saknade respektive ej angivna bankuppgifter på befintliga fakturor
Därmed ska ZUGFeRD kunna användas på ett tillförlitligt sätt även av företag utanför de ursprungligen avsedda landskonstellationerna.
e-Rechnung.gv.at – direkt överföring till den österrikiska staten
Den tredje komponenten är särskilt intressant för företag som fakturerar offentliga upphandlande myndigheter.
Med
l10n_at_erechnung_gv_at
kan en ebInterface-faktura överföras direkt till den österrikiska e-Rechnung.gv.at-webbtjänsten.
Därmed blir enbart fakturaframställning en automatiserad elektronisk fakturaprocess.
Flödet kan till exempel se ut så här:
Skapa faktura i Odoo
↓
Skapa ebInterface XML
↓
Skicka faktura
↓
Överför ebInterface automatiskt till e-Rechnung.gv.at
Därmed integreras en annars manuell process direkt i Odoo.
Automatisk överföring endast för de kunder som behöver det
Överföringen till e-Rechnung.gv.at aktiveras inte generellt för alla kunder.
I stället kan den aktiveras för den aktuella österrikiska kunden.
För detta lagras de nödvändiga uppgifterna, till exempel
- Leverantörsnummer
- Inköparegrupp / filialnummer
- Orderreferens
hos kunden.
Modulen kontrollerar därvid även om förutsättningarna för en aktivering är uppfyllda.
Test- och produktionsdrift
För e-Rechnung.gv.at kan man välja mellan en test- och produktionsmiljö.
Inloggningsuppgifterna till USP-webbtjänsten lagras i Odoo-inställningarna.
Därmed kan integrationen först förberedas i en testmiljö innan den tas i bruk för produktiv fakturautsändning.
Automatisering i stället för extra arbete
Vårt mål med utvecklingen var inte att ge bokföraren fler knappar.
Tvärtom.
Tanken är:
Så lite manuellt arbete som möjligt.
En faktura skapas i Odoo.
De nödvändiga strukturerade formaten skapas automatiskt.
Vid utskicket bifogas motsvarande filer automatiskt.
Och för korrekt konfigurerade österrikiska kunder kan fakturan dessutom överföras automatiskt till e-Rechnung.gv.at.
Just denna automatisering utgör skillnaden mellan en enkel filexport och en verkligt integrerad e-fakturalösning.
Datakvaliteten döljs inte bara
En viktig punkt i vår implementering är dock också:
En elektronisk faktura kan bara bli så bra som de data den skapas utifrån.
Därför försöker vi inte i det tysta ersätta saknade obligatoriska uppgifter med godtyckliga värden.
Om till exempel obligatorisk information för ZUGFeRD eller ebInterface saknas ska Odoo uppmärksamma användaren på detta.
Hit hör till exempel:
- saknat land hos kunden
- saknad skatteinformation på fakturarader
- saknade bankuppgifter
Enligt vår uppfattning är det bättre än att skicka en formellt skapad men innehållsmässigt felaktig elektronisk faktura.
Öppen källkod för Odoo Community
Även detta projekt tillhandahåller vi kostnadsfritt som öppen källkod.
Varför?
Därför att vi själva drar nytta av programvara med öppen källkod.
Odoo Community erbjuder en utmärkt grund för ERP, bokföring och affärsprocesser. Om vi saknar en funktion i det dagliga arbetet utvecklar vi den.
Och om lösningen även kan vara intressant för andra företag delar vi den med communityn.
För oss är det öppen källkod i praktiken.
Österrikiskt fokus – men inte bara för Österrike
Projektet har en tydlig österrikisk tyngdpunkt.
ebInterface och e-Rechnung.gv.at är framför allt intressanta för österrikiska företag.
ZUGFeRD-stödet är däremot relevant även för företag utanför Österrike.
Projektet är alltså inte enbart en österrikisk lösning.
Just kombinationen av strukturerade fakturadata och ett automatiskt skapat PDF/A-3-dokument kan vara intressant även för andra Odoo-installationer.
För Odoo 19 Community
Modulerna har utvecklats för Odoo 19 Community.
Repositoryt innehåller för närvarande:
- l10n_at_ebinterface
- account_invoice_zugferd_ebinterface_auto
- l10n_at_erechnung_gv_at
Modulerna är beroende av varandra, så att endast de komponenter som behövs måste installeras beroende på användningsfall.
Vårt bidrag till communityn
Vi ser inte det här projektet som en färdig kommersiell programvara, utan som ett bidrag till vidareutvecklingen av Odoo-communityn.
Kanske behöver någon bara ebInterface.
Kanske behöver ett annat företag ZUGFeRD.
Kanske måste ett företag regelbundet skicka fakturor till offentliga upphandlande myndigheter via e-Rechnung.gv.at.
I alla tre fallen kan vårt projekt utgöra en grund.
Och eftersom källkoden är öppet tillgänglig kan varje användare granska, anpassa och vidareutveckla lösningen.
Öppen källkod betyder: bli bättre tillsammans
Vi är övertygade om att öppen källkod ger en stor fördel, särskilt för ERP-system.
Företag har olika krav.
En lösning som fungerar perfekt för ett företag kan behöva anpassas för ett annat.
Med öppen källkod är det möjligt.
Därför uppskattar vi:
- Feedback
- Buggrapporter
- Förbättringsförslag
- Pull requests
- ytterligare användningsfall som stöds
En bra community-lösning uppstår inte nödvändigtvis vid den första committen.
Den uppstår genom vidareutveckling av många användare och utvecklare.
Använd projektet kostnadsfritt
Hela källkoden finns offentligt tillgänglig på GitHub:
GitHub – Odoo 19 Invoice E-Files
Där finns även installationsinformationen och dokumentationen för de enskilda modulerna.
För integrationen av den österrikiska e-Rechnung.gv.at-webbtjänsten krävs dessutom Python-biblioteket Zeep.
Vårt bidrag till en öppen Odoo-värld
Med det här projektet vill vi visa att även mindre egenutvecklingar kan skapa mervärde för en hel community.
Vi utvecklade ursprungligen modulerna för att lösa konkreta krav.
Nu tillhandahåller vi dessa lösningar kostnadsfritt för alla användare av Odoo 19 Community.
Därmed kan en individuell utveckling bli en community-lösning.
Odoo 19. Öppen källkod. Elektroniska fakturor. Österrike. Och kostnadsfritt för communityn.
Det är just därför vi har publicerat det här projektet.