Quando emetti qualche fattura al mese, puoi caricarle a mano nello Spațiul Privat Virtual, il portale online dell’ANAF (l’agenzia fiscale romena). Quando ne emetti decine al giorno, dall’ERP o dal negozio online, il caricamento manuale diventa una mansione a sé, e gli errori arrivano proprio nei momenti di maggior lavoro. Un’integrazione e-Factura sposta questo lavoro nel programma: la fattura si emette una volta sola e il resto del percorso lo fa il software.
e-Factura è il sistema nazionale romeno di fatturazione elettronica. Le fatture arrivano al sistema come file XML strutturati, attraverso un’interfaccia di programmazione messa a disposizione dall’ANAF, e per ogni fattura il sistema restituisce uno stato e una risposta. Chi è obbligato a trasmettere, quali documenti ed entro quando sono domande per il tuo commercialista: noi costruiamo lo strumento, non interpretiamo la legge.
Il percorso di una fattura, dall’emissione alla risposta dell’ANAF
Il programma salva la fattura e, a partire dai suoi dati, costruisce il file XML nella struttura richiesta dal sistema. Il file parte attraverso l’interfaccia ANAF, che ne conferma la ricezione. Più tardi arriva l’esito: la fattura ha superato la validazione oppure è stata respinta, con gli errori riscontrati.
La cosa che si dimentica più spesso è che l’esito non arriva subito. Il programma deve tornare a chiedere, a intervalli ragionevoli, e non deve considerare la fattura «trasmessa» solo perché il file è partito. Per questo ogni fattura ha un suo stato: da inviare, in attesa, accettata, respinta, da reinviare.
- Il controllo preliminare: campi obbligatori mancanti, codici fiscali scritti male, totali che non tornano.
- Il monitoraggio dello stato: il programma interroga il sistema finché non riceve un esito definitivo.
- L’archiviazione della risposta: il file restituito dal sistema viene salvato accanto alla fattura.
- L’avviso: la persona giusta viene informata quando una fattura è stata respinta o è rimasta bloccata.
Un’integrazione e-Factura si giudica da come gestisce gli errori
Gli errori tecnici (sistema non disponibile, tempo di risposta scaduto) si risolvono con nuovi tentativi automatici, a intervalli sempre più lunghi. Gli errori di contenuto, cioè le fatture respinte in fase di validazione, non si riparano da soli: arrivano a qualcuno del tuo team, con il messaggio ricevuto, spiegato per quanto possibile in parole comprensibili, e con un collegamento diretto alla fattura.
Resta il caso più antipatico: la connessione cade proprio dopo l’invio e non sai se la fattura è arrivata. Il programma deve prima capire che cosa è successo e solo dopo reinviare. Altrimenti manda una seconda volta un documento già ricevuto, e il modo in cui il sistema tratta i duplicati è cambiato nel tempo e va verificato al momento del progetto.
Le domande da chiarire prima della prima riga di codice
Il lavoro comincia con un incontro a cui è bene che partecipi anche il commercialista: quali tipi di documenti emetti (fatture, storni, fatture in valuta, acconti), da quanti programmi partono e chi ne risponde. Sempre in questa fase si stabilisce chi ottiene l’accesso all’interfaccia: l’autorizzazione la fa, con il proprio certificato digitale, una persona che ha già accesso allo Spațiul Privat Virtual per conto dell’azienda, non il programmatore.
Segue l’inventario dei dati. Il formato strutturato richiede informazioni che molti programmi più datati non tengono separate: il distretto e la località in campi distinti, l’unità di misura scelta da un elenco di codici, l’aliquota IVA su ogni riga. La pulizia delle anagrafiche fa parte del progetto e spesso richiede più tempo della programmazione.
- Le prove: invii nell’ambiente di test, dove è disponibile, senza effetti sulle fatture reali.
- L’avvio sorvegliato: le fatture reali partono in automatico, ma per un certo periodo qualcuno le controlla ogni giorno.
- La consegna: documentazione, schermata di monitoraggio e una persona del tuo team che sa che cosa significa ogni stato.
Code, log e il posto in cui gira tutto
Di solito scriviamo il collegamento come modulo separato, in PHP con Laravel o in Python, che dialoga con il tuo programma attraverso il database o tramite un’API (una porta attraverso cui due programmi si scambiano dati senza intervento umano). Il programma di fatturazione resta intatto, e l’invio può essere aggiornato quando cambiano i requisiti tecnici.
Gli invii passano da una coda di job, cioè un elenco di lavori eseguiti uno dopo l’altro, in background, senza dipendere dal browser di nessuno. Ogni passaggio viene scritto in un log: che cosa è stato inviato, quando, che cosa ha risposto il sistema. Le credenziali di accesso sono tenute in forma cifrata e, quando il loro rinnovo richiede una persona, il programma avvisa per tempo.
Quando non ti serve uno sviluppo su misura
Se usi un comune programma di fatturazione, acquistato sul mercato, molto probabilmente ha già l’invio incluso. Non ha senso pagare per qualcosa scritto da zero; al massimo vale la pena collegarlo al tuo negozio o al tuo ERP.
Lo sviluppo su misura ha senso quando le fatture nascono in un tuo sistema o quando hai più fonti di fatturazione. Una cosa vale in ogni caso: l’automazione trasmette quello che riceve. Una fattura sbagliata nel programma arriva sbagliata anche nel sistema, solo più in fretta.
Domande frequenti
Quanto tempo serve per collegare un programma al sistema e-Factura?
Dipende da quanti programmi emettono fatture, da quanto sono puliti i dati su clienti e prodotti e da quanti tipi di documenti hai. L’invio è di solito più prevedibile della preparazione dei dati.
Che cosa succede se l’ANAF cambia i requisiti tecnici?
La struttura del file e le regole di validazione vengono aggiornate di tanto in tanto, quindi il modulo va mantenuto, non solo installato. Lo costruiamo con le regole raccolte in un unico punto, facile da modificare.
Il programma può decidere da solo quali fatture trasmettere?
Può applicare regole stabilite da te insieme al commercialista, per esempio in base al tipo di cliente o di documento. I casi che non rientrano in nessuna regola restano in attesa, in mano a una persona.
Questa è la descrizione di un progetto tipo: mostra come affrontiamo di solito un lavoro di questo genere e non presenta un progetto realizzato per un cliente specifico. Ogni progetto reale parte dalla situazione della tua azienda; fasi, tempi e prezzo si definiscono dopo il primo colloquio.