Tutorial PrestaShop

Come verificare automaticamente una partita IVA VIES al checkout PrestaShop

La verifica di una partita IVA intracomunitaria presso il servizio europeo VIES è semplice sulla carta: una chiamata, una risposta valida o non valida. In produzione si scontra con un servizio la cui disponibilità varia a seconda degli Stati membri, con formati di numeri eterogenei e con un cliente che aspetta una risposta mentre la pagina gira.

Questo articolo tratta l’implementazione. Le condizioni fiscali dell’esenzione sono un altro argomento, e la verifica è solo una delle quattro.

Dove posizionare il campo

Due posizioni possibili, con conseguenze diverse.

Alla registrazione, nel modulo di creazione dell’account professionale. La verifica avviene una volta, il risultato è memorizzato sul cliente e il checkout resta fluido. È l’approccio consigliato non appena convalidi gli account professionali.

Al checkout, nel modulo dell’indirizzo di fatturazione. Più flessibile per i clienti che ordinano senza account, ma la verifica arriva nel momento peggiore: una lentezza o un errore in questa fase costa un ordine.

In entrambi i casi, il campo si collega all’indirizzo di fatturazione, mai a quello di consegna. Il numero appartiene all’entità che acquista, non al luogo dove arriva il pacco.

I formati, prima fonte di errore

Una partita IVA intracomunitaria inizia con un codice paese di due lettere, seguito da una stringa la cui lunghezza e composizione variano da uno Stato all’altro. La Francia usa due caratteri di controllo e poi nove cifre, la Germania nove cifre, la Spagna una combinazione di lettere e cifre, l’Irlanda ammette diversi formati storici.

Tre trattamenti da fare prima di ogni chiamata.

  1. Normalizzare l’input. Rimuovere spazi, punti, trattini e passare in maiuscolo. Un cliente su tre inserisce il proprio numero con separatori.
  2. Separare il codice paese dal resto. Il servizio li attende separatamente, e il cliente spesso digita tutto in un blocco.
  3. Validare la forma prima di chiamare. Un controllo di formato per paese evita di interrogare il servizio per un input manifestamente errato e permette un messaggio immediato.

Attenzione al caso della Grecia, il cui codice paese IVA differisce dal suo codice paese ISO, e a quello dell’Irlanda del Nord, che dispone di un prefisso distinto dal ritiro del Regno Unito.

Validazione IVA Intracomunitaria VIES e Inversione Contabile B2BIVA intracomunitaria verificata, inversione contabile automatizzata, prove di verifica con marca temporale.79.00

La chiamata al servizio

Il servizio europeo interroga, per ogni richiesta, la banca dati nazionale dello Stato interessato. Due conseguenze dirette.

La latenza varia molto a seconda del paese interrogato. Una verifica tedesca risponde in genere rapidamente, altre amministrazioni sono nettamente più lente.

La disponibilità è indipendente da uno Stato all’altro. Il servizio può funzionare per il Belgio ed essere non disponibile per l’Italia nello stesso momento. Un test riuscito non garantisce quindi che tutte le verifiche vadano a buon fine.

Fissa un tempo massimo di attesa, da cinque a dieci secondi, oltre il quale consideri il servizio non disponibile. Una chiamata senza limite di tempo blocca la pagina.

Il comportamento degradato

È il punto che distingue un’implementazione utilizzabile da una fragile. Tre stati da distinguere, e non due.

Numero valido. Registri il risultato, la marca temporale, e applichi le tue regole fiscali.

Numero non valido. Messaggio chiaro al cliente, con la possibilità di correggere. Non bloccare l’ordine: il cliente può acquistare con IVA e regolarizzare in seguito.

Servizio non disponibile. Il caso trattato peggio. L’ordine deve passare, con IVA applicata, e la verifica deve essere messa in coda per un nuovo tentativo. Trattare l’indisponibilità come invalidità fa perdere ordini; trattarla come validità ti espone fiscalmente.

Una coda di riverifica che ripassa automaticamente i numeri non verificati qualche ora dopo risolve questo caso senza intervento.

I messaggi al cliente

Contano quanto la meccanica. Tre formulazioni da preparare.

Su un numero non valido, spiega cosa può spiegare il rifiuto: numero recente non ancora registrato nella banca dati europea, azienda non soggetta all’imposta, o errore di digitazione. Un semplice «numero non valido» lascia il cliente senza via d’uscita.

Su un’indisponibilità, di’ la verità: la verifica non è potuta andare a buon fine, l’ordine può essere effettuato con IVA e tornerai da lui. È più rassicurante di un messaggio di errore tecnico.

Su un successo, conferma visivamente, con il nome dell’azienda restituito dal servizio quando è disponibile. Questa conferma riduce gli errori di digitazione su un numero appartenente a un’altra società.

Conservare la prova

Il servizio europeo fornisce un numero di consultazione per ogni richiesta. Registralo, con la data, l’ora, il numero testato e la risposta completa.

È questa traccia che ti permette di dimostrare, due anni dopo, che il numero era valido al momento della vendita. Senza di essa, non puoi giustificare un’esenzione, anche se la verifica è effettivamente avvenuta.

Collega questa prova all’ordine, non solo al cliente: un cliente può cambiare numero, ed è lo stato al momento della transazione che conta.

Cache e riverifica

Due impostazioni complementari.

Non richiamare il servizio a ogni pagina. Una verifica riuscita può essere conservata qualche giorno senza rischi, il che evita di interrogare il servizio a ogni ricaricamento del carrello.

Riverifica periodicamente i clienti ricorrenti. Un numero ritirato durante l’anno resta valido nella tua base se nessuno ricontrolla. Una riverifica mensile degli account attivi è sufficiente.

Il modulo Convalida IVA Intracomunitaria VIES gestisce questa catena su PrestaShop 8 e 9: normalizzazione e controllo di formato per paese, chiamata al servizio con tempo massimo, comportamento degradato con coda di riverifica, conservazione del numero di consultazione e riverifica periodica degli account.

Continua a leggere

Articoli correlati