Fatturazione Elettronica - Nomenclatura file da trasmettere

Buona sera,

Nel 2019 emettere fatture elettroniche in formato xml, anche per i privati. Fino ad oggi è stata gestita solo per coloro che hanno rapporti di fatturazione/lavoro con la PA.

Con riferimento alla nomenclatura del file da trasmettere le specifiche tecniche prevedono la seguente sintassi:

Codice paese - Identificativo univoco del soggetto trasmittente (Partita Iva) - Progressivo univoco del file. es:
IT9999999999_00001.xml

Il progressivo univoco è rappresentato da una stringa alfanumerica di lunghezza massima di 5 caratteri con valori ammessi (a-z)-(0-9).
Non è specificato se questo progressivo univoco può ricominciare da 1 Ogni anno oppure no. E vi sono controlli che indicano se un file con lo stesso numero progressivo è stato inviato , inoltre in caso di errori il file deve essere sostituito con un nuovo file con un diverso numero progressivo.
5 caratteri anche se combinati con lettere e numeri prima o poi originano un numero progressivo destinato a ripetersi.
Sapete se effetivamente se questo numero progressivo univoco può ricominciare da 00001 ogni anno?
Nelle specifiche tecniche e sul sito dell’Agenzia non è specificato nulla in proposito.

Grazie

Angelo Vinci

3 Mi Piace

secondo me allo stato attuale non è possibile ricominciare daccapo ma è una mia libera interpretazione. Infatti per il momento io ho risolto mettendo nella numerazione file anche 2 caratteri numerici che identificano l’anno di invio.
saluti
paolo

I due caratteri che identificano l’anno sono compresi nei 5 caratteri?
così diventerebbero appena 999 Fatture in un anno…

si sono compresi nei 5 caratteri…il limite che dici esiste

Riporto una parte dell’allegato A - specifiche tecniche: “Il progressivo univoco del file ha il solo scopo di differenziare il nome dei file trasmessi al Sistema di Interscambio da parte del medesimo soggetto; non deve necessariamente seguire una stretta progressività e può presentare anche stili di numerazione differenti.”
Le combinazioni disponibili sono 60.466.176 se non vengono distinte le maiuscole dalle minuscole.
Saluti
Keti

Ho consultato la specifica qui e in effetti non si trova risposta alla domanda che poni.

In realtà la fatturazione elettronica tra privati è attiva dal 2017 per le aziende e le partite IVA individuali che hanno aderito su base volontaria. Diventerà obbligatoria dal 2019.

Nella pratica io uso dal 2017 il portale Fatture e Corrispettivi che fornisce strumenti per generare e trasmettere queste fatture elettroniche, e che funziona decentemente.
Esso assegna i nomi dei files automaticamente, incrementando il progressivo univoco, e al 1 gennaio 2018 è ripartito da 1.
Quindi empiricamente una risposta l’abbiamo.

Tuttavia nell’uso mi è capitato più volte di generare per errore files con nomi duplicati che poi vengono respinti.
Non mi è chiaro quali circostanze hanno causato questo baco del portale, forse succede se il soggetto trasmittente trasmette come delegato di più aziende …

Tra l’altro il file XML che rappresenta la fattura contiene un campo ProgressivoInvio definito come:

progressivo che il soggetto trasmittente attribuisce al file che inoltra al Sistema di Interscambio per una propria finalità di identificazione univoca

che secondo l’XSD della fatturaPA (non trovo l’XSD della fattura tra privati) è di tipo String10Type così definito:

<xs:simpleType name="String10Type">
  <xs:restriction base="xs:normalizedString">
    <xs:pattern value="(\p{IsBasicLatin}{1,10})" />
  </xs:restriction>
</xs:simpleType>

quindi da 1 a 10 caratteri del blocco Unicode Basic Latin.

Anche se con 5 caratteri alfanumerici si possono codificare (26+10)^5-1 = 60.466.175 di fatture e quindi il sistema attuale funziona, a mio parere il nome del file usato per la trasmissione dovrebbe essere completamente libero da vincoli.
Il portale potrebbe archiviare il contenuto identificandolo con una chiave surrogata e dimenticarsi del nome del file usato per la trasmissione. La chiave surrogata (es. UUID) può essere usata anche per dare un nome al file inoltrato al soggetto ricevente.

1 Mi Piace

Grazie a tutti per le risposte, @Simevo forse hai ragione una risposta l’abbiamo come da te indicato e a mio avviso credo sia la strada più corretta,

Purtroppo con sistema operativo Windows standard non si possono usare sia lettere maiuscole che minuscole e quindi il numero massimo a cui si puo’ arrivare usando lettere e numeri è come avete già indicato di 60.466.176, compresi eventuali reinvii.
Fino a quando si trattava solo di PA questa codifica era più che sufficiente, ma ora che riguarda tutte le fatture emesse da un’azienda può essere insufficiente, soprattutto nel caso grandi volumi e se considerassimo che il numero deve essere univoco negli anni, ma spero nelle indicazioni di Simevo.

Invio un aggiornamento in merito a questo argomento dopo aver ricevuto una telefonata da un tecnico dell’Agenzia delle Entrate, visto che presentato la stessa domanda al centro assistenza Online nella sezione Fatture e corrispettivi Elettronici.

Il tecnico mi ha confermato che per ora non è previsto che il numero progressivo ricominci da 1 ogni anno. Strano perchè come ci ha descritto Simevo il numero progressivo nel 2018 è ripartito da 1.

Comunque sempre secondo il tecnico, per ora si partirà considerando il progressivo a 5 caratteri e con la possibilità appunto di generare combinazioni sino a 60.466.175, poi se sarà necessario prenderanno in considerazione di apportare qualche modifica, (mi ha fatto l’esempio che potrebbero introdurre la possibilità di utilizzare anche i caratteri speciali, oltre alle lettere e numeri per aumentare le combinazioni… ).
A quanto mi ha descritto questo problema per ora non è sentito e interverranno solo se si verificherà l’esigenza…

A mio parere non hanno considerato bene la cosa, penso a Soggetti come le compagnie di telecomunicazioni che emettono fatture per centinaia di migliaia di utenti ogni anno o alle grandi catene di distribuzione e vendita di prodotti elettronici, per non parlare delle tv Private, che fatturano a milioni di abbonati ogni anno, per cui nel giro di qualche anno emetterebbero giocoforza file con numero progressivo duplicato.

Vedremo.

2 Mi Piace

Salve,

nella mia esperienza di gestione di un canale di trasmissione/ricezione con SDI ho usato lettere maiuscole, minuscole e cifre numeriche per l’identificativo il che porta a circa 900 milioni di combinazioni. Naturalmente ci possono essere collisioni sui file system non case sensitive come quelli usati su Windows e su macOS (a meno che non si attivi l’opzione case sensitive).
In genere non ci sono problemi su Linux.

Le combinazioni potrebbero essere un po’ di più considerando che si possono fare anche codici più corti di 5 caratteri, ad esempio IT9999999999_0001.xml e IT9999999999_001.xml vengono considerati due nomi validi diversi.

Sono abbasta sicuro che l’indentificativo non può essere azzerato ogni anno per cui a lungo andare il problema arriverà. Auspicherei che in futuro venga presa in considerazione l’idea di inserire almeno l’anno nel nome del file.

s.

Concordo, in pieno con la soluzione di inserire l’anno nel nome del file

A.

Ho ricontrollato e in effetti col 2018 non è ripartito da 1, forse lo avrei voluto veder ripartire da 1 ma non è così :scream:.

Grazie @AVI e al tecnico dell’Agenzia delle Entrate per avermi fatto ricontrollare ! Tra l’altro non possiamo invitarla/o a partecipare su questo forum ? La discussione sta diventando interessante.

Il file XML della fattura serve a scopo di archiviazione quindi è essenziale che il nome sia univoco.
Sfruttare sia le lettere maiuscole che quelle minuscole può risolvere il problema di chi trasmette ma rischia di causare confusione e/o perdita di dati in chi riceve, se chi riceve non salva l’allegato su un filesystem case-sensitive.
In questo senso i vincoli attualmente imposti dal sistema sul nome file sono insufficienti e pericolosi: dovrebbe essere case insensitive !

L’ideale sarebbe usare nel nome del file la chiave primaria, che è il campo ProgressivoInvio, ma non è possibile perché il blocco Unicode Basic Latin non può essere usato per il nome file su nessun file system (contiene ad esempio :\/)

Riguardo alla possibilità di inserire l’anno nel nome del file, mi sembra un duplicato e mantiene il concetto di “codice parlante” per il nome del file che non funziona: la chiave primaria vera resta una sola (il campo ProgressivoInvio) che può contenere anche l’anno es. 2018/57442300/T

Riassunto della mia proposta:

  1. per la trasmissione si deve poter qualsiasi nome file, anche ripetuto, in modo da lasciare a chi trasmette la massima libertà e ridurre il rischio che la trasmissione venga respinta

  2. Il sistema di interscambio identifica la trasmissione con una chiave surrogata (es. UUID) e si dimentica del nome del file usato per la trasmissione

  3. La chiave surrogata viene usata per assegnare il nome al file inoltrato al soggetto ricevente, es. IT9999999999_03862950-6959-11e8-b566-0800200c9a66.xml, garantendo che sia univoco per chi riceve.

1 Mi Piace

chissà se il Team si può fare promotore di questa proposta di invitare “ufficialmente” Agenzia delle Entrate o Sogei a intervenire su questioni relative alla Fattura Elettronica in questo forum che mi pare possa essere la sede “ufficiale” visto che siamo in casa Agid ?!

1 Mi Piace

ciao
mi collego al thread perché, oltre ad avere il problema sul numero da inserire nel nome del file (che saranno pure 60.000.000 di possibilità, ma a lungo andare finiscono e poi non ho ancora chiaro come generare questo numero) avrei bisogno di un chiarimento.
nel caso in cui si debba riemettere una fattura (per esempio perché è sbagliato il codice PA) io potrei utilizzare lo stesso documento perché, in fondo, la fattura è corretta.
Fermo restando che il numero nel nome del file deve essere aggioranto, il Progressivo invio all’interno del file DEVE restare uguale alla prima emissione o può essere aggiornato?
grazie a tutti
Francesca

La mia esperienza è la seguente: se mandi un file col nome duplicato, il SDI lo respinge a priori senza guardarci dentro.

Ma se lo rinomini e lo ritrasmetti senza mutare il contenuto, guarda il contenuto e lo valida verificando tra l’altro che:

  • FatturaElettronica.FatturaElettronicaHeader.DatiTrasmissione.ProgressivoInvio sia unico
  • FatturaElettronica.FatturaElettronicaBody.DatiGenerali.DatiGeneraliDocumento.Numero sia unico per tutte i corpi fattura contenuti

Io ho usato questa tecnica per ritrasmettere dei files respinti dal SDI causa nome file duplicato.

Ribadisco che il vincolo sul nome file unico è inutile perchè tutti i dati della fattura sono dentro al file XML, il nome del file dovrebbe essere lasciato all’utente e sostituito da una chiave surrogata generata dal SDI.

grazie per la risposta.
quindi, in caso di reinvio posso decidere se aggiornare o meno il campo ProgressivoInvio.
il problema è sul nome del file che, ad ogni invio, mangia una combinazione.
Nello sviluppare la procedura, per evitare problemi di dimensioni del file, abbiamo optato per la creazione di un file per documento, ma abbiamo aziende che fanno un numero decisamente elevato di fatture al mese, e, se un numeratore di 10 cifre inserito in automatico sul documento ci lascia tranquilli fino alla pensione, il nome del file mi preoccupa, anche perché l’idea , soprattutto nella fatturazione di fine mese è una schedulazione automatica della procedura.
Alla fine, basterebbe aggiungere al nome file semplicemente l’anno: ITPartitaiva_19_XXXXX.
speriamo che all’agenzia qualcuno rifletta…
Grazie ancora
Francesca

1 Mi Piace

non so cosa intendi per numero elevato ma immagino siano tante.
al momento io ho optato per una combinazione [a-z][A-Z][0-9] a 62 caratteri (sempre che ci sia distinzione tra maiuscole e minuscole).
sono più di 619.132.832 combinazioni. scrivo “più di” perché in realtà non serve compilare tutti i campi. (ITPartitaiva_A.xml )
La faccio semplicistica, ma da qui a 40 anni sarebbero 22 milioni di fatture all’anno. Potrebbero essere un problema se avete decine di aziende che fanno oltre le 50 mila (+5 mila per errori) fatture mensili.
Ma considerando la struttura di 20 anni fa e quello che ci sarà tra 20 anni, andrà rifatto tutto da zero sicuramente.

Devo elaborare 50.000.000 di fatture all’anno e avrei pensato questo:

Vorrei utilizzare combinazioni [a-z][A-Z][0-9] a 62 caratteri per un totale di 916 milioni.

Vorrei procedere nel seguente modo:

  1. generare la sequenza alfanumerica a partire da una sequence numerica oracle e da un algoritmo di conversione Numero–> sequenza alfanumerica

  2. Creare lo zip da inviare allo SDI tramite classe java e aggiungendo ogni fattura con nome file avente suffisso la sequenza alfanumerica generata al punto 1 . (tramite classe java i problemi di duplicazione non esisterebbero sia su windows che su liux)

  3. leggere lo zip di notifiche ricevute dallo SDI tramite classe java applicando a ciascun nome file la funzione inversa utilizzata al punto 1 ( ovvero generando la stringa numerica di partenza che ha generato il codice alfanumerico )

un dubbio sulla nomenclatura: io ho ormai completato i test e sono quasi pronto ad andare in produzione. Da quanto ho capito la nomenclatura del file come partita iva deve avere la mia per tutti i miei clienti perchè sono io il trasmittente avendo il canale accreditato. Giusto? In questo caso i 60milioni di univoci finiscono in fretta cumulando le fatture di tutti i clienti. Oppure posso inviare i file con la partita iva del cliente ed avere solo dentro la fattura la mia sotto il tag IdTrasmittente?

anche a me risulta che nella nomenclatura dei file deve risultare la partita iva del trasmittente

io ho provato a mandare una fattura con nome file la partita iva del cliente e come idtrasmittente la nostra partita iva e ha funzionato, ho ricevuto l’esito di consegna.

quindi sembra che l’unico controllo che faccia è che l’idtrasmittente sia quello che gestisce il canale, sul nome file non fa controlli della partita iva, almeno questo è quanto ho potuto apurare dall’ambiente di test che spero sia verosimilmente uguale a quello di produzione.