sto cercando di comprendere meglio l’architettura tecnica dello SDI lato intermediario, in particolare per quanto riguarda la gestione asincrona delle fatture elettroniche e delle notifiche.
Il mio scenario mentale è il seguente:
ERP cliente
→ invio XML allo SDI
→ elaborazione SDI
→ notifiche / metadati / stati
→ sistema dell’intermediario
→ download XML
→ workflow / contabilizzazione
La mia domanda è:
nelle specifiche tecniche dello SDI è previsto un modello realmente asincrono/event-driven tra SDI e intermediario?
Ad esempio:
ricezione automatica di notifiche/metadati,
download automatico dei file XML,
aggiornamento automatico degli stati,
eventuale gestione tramite servizi cooperativi/web service,
oppure il modello previsto è sostanzialmente “polling”, cioè con sincronizzazioni periodiche/manuali avviate dal gestionale dell’intermediario?
Sto cercando di capire se concettualmente lo SDI sia stato progettato per consentire un’integrazione asincrona lato intermediario oppure se questo comportamento dipenda interamente dal software gestionale utilizzato.
Risposta breve: è tutto asincrono.
Risposta lunga:
Nel tuo schema manca un altro intermediario. Il mittente della fattura (chiamato cedente/prestatore nella documentazione) normalmente invia la fattura attraverso un intermediario con un “canale” accreditato, a meno che non abbia un canale proprio (non sono richiesti particolari requisiti per accreditare un canale, quindi non serve essere aziende enormi per farlo). Chi riceve la fattura (chiamato cessionario/committente nella documentazione) a sua volta si appoggia ad un intermediario per ricevere le fatture.
Ci sono due tipi di canali, SDICoop e SDIFTP. Qui illustrerò come funziona SDICoop, perché è quello che conosco. SDIFTP è pensato per grandi volumi di fatture ed è tipicamente usato dagli intermediari grossi. SDICoop si basa su web service SOAP.
In fase di accreditamento del canale SDICoop, bisogna comunicare all’AdE l’url di due endpoint, chiamati TrasmissioneFatture (coinvolto nella procedura di invio delle fatture) e RicezioneFatture (coinvolto nella procedura di ricezione delle fatture).
A sua volta SdI espone due endpoint: SdIRiceviFile, usato per spedire le fatture (il nome deriva dal fatto che SdI riceve la fattura) e SdIRiceviNotifica, usato solo dalle PA.
Il normale ciclo di invio e ricezione di una fattura è come segue:
Il cedente/prestatore inserisce la fattura nel suo gestionale e la invia all’intermediario mittente (o la inserisce direttamente nell’applicativo dell’intermediario)
L’intermediario mittente invia la fattura chiamando l’endpoint SdIRiceviFile di SdI. In questa fase SdI non fa nessuna verifica sulla validità della fattura. A meno di problemi tecnici, la fattura viene presa in consegna.
SdI fa le verifiche formali sulla fattura. Questo comprende sia la validità dell’XML in base al xsd, sia un ulteriore elenco di controlli sulla congruenza dei dati. Li trovi nel documento intitolato “Elenco controlli” (attualmente alla versione 2.0).
Se la fattura fallisce i controlli, SdI invia all’endpoint TrasmissioneFatture dell’intermediario mittente una “notifica di scarto”.
Se la fattura supera i controlli, SdI la invia all’endpoint RicezioneFatture dell’intermediario ricevente. L’intermediario ricevente non ha la possibilità di rifiutare la consegna.
Una volta consegnata la fattura al ricevente, SdI invia una “ricevuta consegna” all’endpoint TrasmissioneFatture dell’intermediario mittente.
Questa è il ciclo più semplice, usato per le fatture B2B e B2C (in formato FPR12). Per le fatture B2G (dirette alla PA, in formato FPA12), il ciclo non si conclude qui, perché la PA deve accettare o rifiutare la fattura. Quando lo fa, l’intermediario della PA invia una “notifica esito” all’endpoint SdIRiceviNotifica di SdI che la inoltra all’endpoint TrasmissioneFatture dell’intermediario mittente.
Un’altra possibilità è la mancata consegna. Quando SdI riceve una fattura valida, determina dove va consegnata in base al codice destinatario o PEC presenti in fattura e in base a quello che il cessionario/committente ha configurato sul portale Fatture e Corrispettivi. Nel caso in cui non ci sia nessun canale (o PEC) a cui consegnare la fattura (cosa che capita nel caso di persone fisiche), oppure SdI non è riuscito a consegnare la fattura al canale destinatario dopo vari tentativi, manda all’endpoint TrasmissioneFatture dell’intermediario mittente una “notifica di mancata consegna”.
Ci sono altre casistiche particolari che tralascio, ma questo dovrebbe darti l’idea.
La documentazione completa del SdI e dei web service SDICoop e la trovi qui: