Classe ASP.NET C# per il controllo e il calcolo formale del Codice Fiscale

Classe ASP.NET C# per il controllo e il calcolo formale del Codice Fiscale

Non c'è programmatore italiano (o che abbia lavorato in Italia) che non si sia dovuto cimentare almeno una volta con processi di verifica, calcolo e/o controllo formale del Codice Fiscale: si tratta di un evergreen dello sviluppo software del nostro paese, necessario in qualsiasi contesto che coinvolga la gestione dei dati personali di qualcuno: anagrafiche, flussi, gestionali, strumenti di calcolo economico/finanziario... I campi di applicazione sono pressoché infiniti e tutti, immancabilmente, richiedono prima o poi di svolgere una o più delle summenzionate operazioni.

Per questo motivo, ormai molti anni fa, ho sviluppato una classe in ASP.NET C# che consente di svolgere la maggior parte di queste operazioni. Poiché a distanza di molti anni continuo a utilizzarla moltissimo ritengo che possa essere utile condividerla, nella speranza che possa semplificare la vita di altri colleghi sviluppatori.

Premessa

Prima di procedere, è opportuno fare alcuni chiarimenti a beneficio di quanti affrontano per la prima volta questa attività.

In questo articolo ci limiteremo a una sintetica panoramica degli elementi strettamente necessari al nostro scopo: nel caso in cui si necessiti di informazioni più approfondite consiglio di consultare la voce Wikipedia relativa al Codice Fiscale, estremamente completa e dettagliata.

Controllo Formale

Quando si parla di controllo formale del Codice Fiscale si intende una procedura volta a verificare che la composizione del Codice Fiscale sia coerente con le specifiche della normativa che disciplina le modalità di calcolo del codice fiscale, ovvero il decreto del Ministero delle finanze del 23 dicembre 1976, "Sistemi di codificazione dei soggetti da iscrivere all'anagrafe tributaria", pubblicato sulla Gazzetta Ufficiale n. 345 del 29 dicembre 1976 e disponibile a questo link.

E' opportuno notare che tale verifica, o controllo formale, può avvenire in due modi:

  • Controllando la mera congruità del Codice Fiscale rispetto alle specifiche suddette, in assenza dei dati anagrafici della persona interessata: in altre parole, limitandosi a verificare che si tratti di un Codice Fiscale verosimile.
  • Controllando la corrispondenza tra il Codice Fiscale e i dati anagrafici dell'interessato, ovvero: nome, cognome, data di nascita, sesso e codice ISTAT del comune di nascita.

Inutile dire che il secondo controllo include ed estende il primo ed è quindi sempre preferibile, a patto di avere i dati anagrafici necessari per poterlo effettuare. E' in ogni caso estremamente importante sottolineare che nessuno di questi due controlli è di per sé sufficiente a dimostrare che il Codice Fiscale sia effettivamente valido, ovvero relativo ad una persona realmente esistente (o esistita). Per avere questa certezza è necessario effettuare un processo di Verifica del Codice Fiscale, effettuabile soltanto tramite i servizi messi a disposizione dall'Agenzia delle Entrate, come descritto nel paragrafo seguente.

Verifica

A differenza del controllo formale, che si limita a controllare che il Codice Fiscale abbia una composizione coerente con le specifiche normative e che corrisponda agli eventuali dati anagrafici indicati, la verifica è in grado di determinate con assoluta certezza che il Codice Fiscale sia relativo a una persona reale. La certezza è data dal fatto che il processo di verifica avviene mediante un servizio messo a disposizione dall'Agenzia delle Entrate, il quale ha la possibilità di controllare che il codice inserito sia presente tra quelli effettivamente rilasciati ai cittadini italiani attraverso il collegamento diretto con i database dell'Anagrafe tributaria.

Così come il controllo formale, anche il processo di verifica può essere effettuato in due modi:

Cos'è l'Omocodia

Il termine omocodia viene utilizzato per definire quei casi in cui due o più persone presentano, sulla base del calcolo effettuato secondo le modalità previste dalla normativa, lo stesso codice fiscale. I casi di omocodia vengono gestiti sostituendo una o più cifre tra quelle presenti nei Codice Fiscali "doppioni" (a partire dall'ultima) con una lettera. Con questo metodo, utilizzando tutte le combinazioni possibili di sostituzioni dei numeri con lettera, si possono gestire un massimo di 128 codici fiscali differenti.

La presenza delle omocodie, insieme agli ovvi casi di nomi e/o dati falsi, è una delle principali motivazioni per cui i risultati ottenuti con un mero controllo formale non possono essere presi per buoni al pari di quelli prodotti da un processo di verifica propriamente detto.

Per ulteriori informazioni sui casi di omocodia, oltre a consultare la relativa voce su Wikipedia, si consiglia inoltre di leggere con attenzione questa pagina informativa a cura dell'Agenzia delle Entrate.

Classe C#

Veniamo ora alla parte più interessante del nostro articolo. Per semplificare le attività di controllo formale e generazione del Codice Fiscale ho realizzato tempo fa una classe ASP.NET C# sviluppata per svolgere le seguenti operazioni:

  • Calcolare il Codice Fiscale ipotetico di un cittadino italiano, al netto cioè di possibili generalità false, errori nelle generalità inviate e/o possibili casi di omocodia.
  • Effettuare il Controllo Formale di un Codice Fiscale, inclusi quelli assegnati per omocodia: questo significa che un codice fiscale contenente una lettera al posto di uno o più numeri potrà essere considerato formalmente corretto se tale sostituzione è coerente con le sostituzioni previste in conseguenza di una possibile omocodia.
  • Effettuare il Controllo Formale di un Codice Fiscale e la corrispondenza rispetto ai dati anagrafici indicati, inclusi quelli assegnati per omocodia (vedi sopra).

A rischio di essere ripetitivo mi preme sottolineare che, poiché la classe non effettua alcuna connessione ai database dell'Anagrafe tributaria:

  • I Codici Fiscali generati potrebbero non corrispondere effettivamente a quelli reali.
  • Il Controllo formale effettuato non garantisce che il Codice Fiscale sia relativo a una persona realmente esistente o esistita.
  • Il Controllo di corrispondenza effettuato non garantisce che il Codice Fiscale sia effettivamente quello della persona indicata.

Il codice è ampiamente commentato, quindi non dovrebbe creare alcun tipo di problema di comprensione.

Nel caso in cui, come me, preferiate lavorare con codice scritto in lingua inglese, la versione internazionale di questa libreria è disponibile qui. Preciso che la versione in inglese è quella originaria, da me sviluppata nell'ormai lontano 2002: la versione in italiano non è che una traduzione realizzata successivamente per venire incontro ai molti sviluppatori (e colleghi) che non si trovavano a loro agio con l'inglese.

Altri linguaggi

Nel corso degli anni ho sviluppato diversi porting di questa classe in vari linguaggi di programmazione, tra cui PHP, Objective-C, Swift, Java, JavaScript e Transact-SQL: se vi dovesse servire, scrivete la vostra richiesta nei commenti e provvederò a creare altri articoli su questo tema.

Per il momento è tutto: felice controllo formale!

 

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

12 Comments on “Classe ASP.NET C# per il controllo e il calcolo formale del Codice Fiscale”

  1. C’è un problema che non è considerato nel codice. Potrebbe essere impostata una data non corretta ed essere formalmente corretto : KFTFBL95B29H926B . Il cf è formalmente corretto ma la data 29feb1995 non è corretta.

    1. Hai ragione, era stata “linkata” male. Adesso la trovi sia facendo click sulla bandierina in alto a dx che direttamente a questo link:

      https://www.ryadel.com/en/italian-tax-code-fiscal-code-vat-id-c-sharp-class/

  2. Segnalo che lo strumento di verifica del Codice Fiscale offerto dell’AdE è accessibile anche tramite web-service, quindi i software possono effettuare la verifica del C.F. direttamente in Anagrafe Tributaria, evitando falsi positivi in caso di omocodia.

    1. Ciao Marco,

      grazie mille per il tuo contributo: a dire il vero, per ragioni di lavoro, seguo spesso le discussioni sul tema, nelle quali leggo spesso anche il tuo nome (ad es. nel thread su ForumPA che linko di seguito) ma onestamente – correggimi se sbaglio – non mi sembra che l’accessibilità del web service di cui parli sia fattibile senza prima autenticarsi presso il portale dell’AdE: di conseguenza, anche se ovviamente va benissimo per determinati utilizzi, non mi sembra una soluzione “proponibile” a titolo gratuito e/o senza scraper e/o altre tecniche di data fetching, request forgery o altre modalità similari ottenibili attraverso script particolari. Il che, per carità, va benissimo in alcuni contesti, ma personalmente non mi piace suggerire come good practice d’uso fino a quando AdE non consentirà un accesso più “libero” e meno vincolante ai suddetti servizi.

      https://forum.italia.it/t/verifica-partita-iva-e-codice-fiscale/4011/112

      Fammi sapere se mi sono perso qualcosa ed hanno aggiunto un servizio nuovo disponibile in modalità “open access” oppure se le cose sono ancora ferme all’ultima volta che ho controllato, grazie!

    1. Ahimé, non ce l’abbiamo disponibile :) Se qualcuno ha voglia di fare il porting per aiutare Simo, lo pubblichiamo volentieri.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.