Le fatture elettroniche fanno parte della contabilità moderna
La digitalizzazione della contabilità continua ad avanzare. I formati di fattura elettronica sono ormai molto più di un file PDF inviato per e-mail.
Una vera fattura elettronica contiene dati strutturati che possono essere elaborati automaticamente da sistemi di contabilità ed ERP.
Con il nostro nuovo progetto open source per Odoo 19 Community vogliamo intervenire proprio qui.
Abbiamo sviluppato diverse estensioni che mettiamo gratuitamente a disposizione della community di Odoo.
Il progetto è disponibile pubblicamente su GitHub:
Odoo 19 Invoice E-Files su GitHub
Il nostro focus è in particolare l'Austria, ma una parte della soluzione è interessante anche per le aziende al di fuori dell'Austria.
Tre moduli per le fatture elettroniche
Attualmente il progetto si compone di tre componenti principali:
- ebInterface 6.1 per l'Austria
- ZUGFeRD per le fatture elettroniche
- trasmissione automatica a e-Rechnung.gv.at
In questo modo riuniamo in un unico progetto open source per Odoo 19 Community diversi requisiti legati alle fatture elettroniche.
ebInterface 6.1 – il formato di fattura austriaco
Uno dei punti centrali del nostro sviluppo è ebInterface 6.1.
ebInterface è il formato standard austriaco per le fatture elettroniche strutturate.
Il nostro modulo
l10n_at_ebinterface
genera da una fattura cliente o da una nota di credito in Odoo il corrispondente XML ebInterface 6.1.
A tal fine, tra l'altro, le informazioni rilevanti della fattura Odoo vengono trasferite nella struttura XML:
- Emittente della fattura
- Destinatario della fattura
- Righe di fattura
- Imposte
- Informazioni di pagamento
- Coordinate bancarie
- Dati della fattura
Il file XML generato viene collegato direttamente alla fattura.
Perché abbiamo sviluppato un modulo dedicato?
Durante lo sviluppo abbiamo constatato che per Odoo 19 Community non è attualmente disponibile alcun modulo del core di Odoo né alcun modulo OCA per lo standard nativo austriaco ebInterface.
Volevamo intervenire proprio qui.
Invece di sviluppare una soluzione austriaca soltanto per la nostra installazione, l'abbiamo realizzata come modulo open source autonomo.
In questo modo anche il resto della community di Odoo può trarne vantaggio.
ZUGFeRD automaticamente con ogni fattura
Il secondo punto centrale del nostro progetto è ZUGFeRD.
ZUGFeRD combina una fattura PDF con una fattura XML strutturata.
Il risultato è la cosiddetta fattura ibrida: per le persone la fattura rimane leggibile come PDF, mentre il software può analizzare automaticamente i dati di fattura strutturati in essa contenuti.
In linea di principio Odoo 19 supporta già ZUGFeRD ovvero CII.
Nella pratica, tuttavia, esistono alcune limitazioni.
Il nostro modulo
account_invoice_zugferd_ebinterface_auto
interviene quindi proprio qui.
ZUGFeRD non più solo come opzione
Volevamo un flusso il più automatizzato possibile.
Per una fattura cliente inviata non si verifica quindi prima se il rispettivo cliente sia stato configurato singolarmente per ZUGFeRD.
Al contrario, ZUGFeRD viene utilizzato automaticamente per le fatture cliente e le note di credito.
Inoltre l'XML ebInterface generato viene allegato come parte integrante della fattura.
Ne risulta un processo continuo:
Fattura Odoo → PDF → e-fattura strutturata → invio
senza che l'utente debba eseguire passaggi aggiuntivi per ogni fattura.
Colmiamo anche lacune di Odoo 19 Community
Durante l'implementazione ci siamo imbattuti in alcune particolarità dell'implementazione di Odoo 19.
Tra l'altro esistono dipendenze nell'esportatore CII che, al di fuori di determinate installazioni specifiche per paese, possono causare problemi.
Il nostro modulo risolve diverse di queste limitazioni pratiche.
Tra queste:
- campi mancanti per i periodi di Deferred Revenue
- la limitazione specifica per paese della conversione in PDF/A-3
- coordinate bancarie mancanti o non impostate nelle fatture esistenti
In questo modo ZUGFeRD dovrebbe poter essere utilizzato in modo affidabile anche dalle aziende al di fuori delle configurazioni nazionali originariamente previste.
e-Rechnung.gv.at – trasmissione diretta allo Stato austriaco
Il terzo componente è particolarmente interessante per le aziende che emettono fatture a committenti pubblici.
Con
l10n_at_erechnung_gv_at
una fattura ebInterface può essere trasmessa direttamente al web service e-Rechnung.gv.at austriaco.
In questo modo la semplice emissione delle fatture diventa un processo di fatturazione elettronica automatizzato.
Il flusso può ad esempio essere il seguente:
Creare la fattura in Odoo
↓
Generare l'XML ebInterface
↓
Inviare la fattura
↓
Trasmettere automaticamente ebInterface a e-Rechnung.gv.at
In questo modo un processo altrimenti manuale viene integrato direttamente in Odoo.
Trasmissione automatica solo per i clienti necessari
La trasmissione a e-Rechnung.gv.at non viene attivata in modo generalizzato per ogni cliente.
Può invece essere attivata sul singolo cliente austriaco.
A tal fine vengono registrate le informazioni necessarie, ad esempio
- Numero fornitore
- Gruppo acquirenti / numero di filiale
- Riferimento d'ordine
presso il cliente.
Il modulo verifica inoltre se sono soddisfatti i presupposti per l'attivazione.
Modalità di test e di produzione
Per e-Rechnung.gv.at è possibile scegliere tra un ambiente di test e uno di produzione.
Le credenziali di accesso al web service USP vengono registrate nelle impostazioni di Odoo.
In questo modo l'integrazione può essere preparata dapprima in un ambiente di test, prima di essere impiegata per l'invio produttivo delle fatture.
Automazione invece di lavoro aggiuntivo
Il nostro obiettivo nello sviluppo non era dare al contabile ulteriori pulsanti.
Anzi, al contrario.
L'idea è:
Il minor lavoro manuale possibile.
Una fattura viene creata in Odoo.
I formati strutturati necessari vengono generati automaticamente.
Al momento dell'invio i relativi file vengono allegati automaticamente.
E per i clienti austriaci configurati di conseguenza, la fattura può inoltre essere trasmessa automaticamente a e-Rechnung.gv.at.
Proprio questa automazione fa la differenza tra una semplice esportazione di file e una soluzione di fatturazione elettronica realmente integrata.
La qualità dei dati non viene semplicemente nascosta
Un punto importante della nostra implementazione è tuttavia anche questo:
Una fattura elettronica può essere buona solo quanto i dati da cui viene generata.
Per questo non cerchiamo di sostituire in silenzio i dati obbligatori mancanti con valori qualsiasi.
Se ad esempio mancano informazioni obbligatorie per ZUGFeRD o ebInterface, Odoo deve richiamare l'attenzione dell'utente.
Rientrano in questi casi, ad esempio:
- paese mancante nel cliente
- informazioni fiscali mancanti nelle righe di fattura
- coordinate bancarie mancanti
A nostro avviso è meglio così, piuttosto che inviare una fattura elettronica generata formalmente ma sbagliata nel contenuto.
Open source per la community di Odoo
Anche questo progetto lo mettiamo a disposizione gratuitamente come open source.
Perché?
Perché anche noi traiamo vantaggio dal software open source.
Odoo Community offre una base eccellente per ERP, contabilità e processi aziendali. Se nel lavoro quotidiano ci manca una funzione, la sviluppiamo.
E se la soluzione può essere interessante anche per altre aziende, la mettiamo a disposizione della community.
Per noi questo è open source vissuto.
Focus sull'Austria – ma non solo per l'Austria
Il progetto ha un chiaro focus austriaco.
ebInterface ed e-Rechnung.gv.at sono interessanti soprattutto per le aziende austriache.
Il supporto a ZUGFeRD è invece rilevante anche per le aziende al di fuori dell'Austria.
Il progetto non è quindi una soluzione esclusivamente austriaca.
Proprio la combinazione di dati di fattura strutturati e di un documento PDF/A-3 generato automaticamente può essere interessante anche per altre installazioni di Odoo.
Per Odoo 19 Community
I moduli sono stati sviluppati per Odoo 19 Community.
Attualmente il repository contiene:
- l10n_at_ebinterface
- account_invoice_zugferd_ebinterface_auto
- l10n_at_erechnung_gv_at
I moduli dipendono l'uno dall'altro, per cui, a seconda del caso d'uso, è sufficiente installare solo i componenti necessari.
Il nostro contributo alla community
Non vediamo questo progetto come un software commerciale finito, ma come un contributo allo sviluppo della community di Odoo.
Forse a qualcuno serve solo ebInterface.
Forse un'altra azienda ha bisogno di ZUGFeRD.
Forse un'azienda deve inviare regolarmente fatture a committenti pubblici tramite e-Rechnung.gv.at.
In tutti e tre i casi il nostro progetto può offrire una base.
E poiché il codice sorgente è liberamente disponibile, ogni utente può verificare, adattare e sviluppare ulteriormente la soluzione.
Open source significa: migliorare insieme
Siamo convinti che l'open source offra un grande vantaggio proprio nei sistemi ERP.
Le aziende hanno esigenze diverse.
Una soluzione che funziona perfettamente per un'azienda può dover essere adattata per un'altra.
Con un codice sorgente aperto questo è possibile.
Per questo ci fa piacere ricevere:
- Feedback
- Bug report
- Suggerimenti di miglioramento
- Pull request
- ulteriori casi d'uso supportati
Una buona soluzione per la community non nasce necessariamente con il primo commit.
Nasce dallo sviluppo continuo da parte di molti utenti e sviluppatori.
Usare il progetto gratuitamente
L'intero codice sorgente è pubblicamente disponibile su GitHub:
GitHub – Odoo 19 Invoice E-Files
Lì si trovano anche le informazioni di installazione e la documentazione dei singoli moduli.
Per l'integrazione del web service austriaco e-Rechnung.gv.at è inoltre necessaria la libreria Python Zeep.
Il nostro contributo a un mondo Odoo aperto
Con questo progetto vogliamo dimostrare che anche piccoli sviluppi interni possono creare valore aggiunto per un'intera community.
Inizialmente abbiamo sviluppato i moduli per risolvere esigenze concrete.
Ora mettiamo queste soluzioni gratuitamente a disposizione di tutti gli utenti di Odoo 19 Community.
In questo modo da uno sviluppo individuale può nascere una soluzione per la community.
Odoo 19. Open source. Fatture elettroniche. Austria. E gratuito per la community.
Proprio per questo abbiamo pubblicato questo progetto.