Il Controllo della Partita Iva

La partita iva è un numero formato da 11 cifre che identifica un’impresa o un professionista, questa rimane uguale anche dopo un eventuale cambiamento dell’attività. In  questo articolo la partita iva ci interessa spiegarla dal punto di vista informatico, nella programmazione di software gestionali.
Il campo che si inserisce nella tabella del database è di tipo stringa con lunghezza di 11 caratteri, questo perché la partita iva in realtà è trattata come un codice e non come un numero, anche se vedremo che il carattere di controllo proviene da un calcolo matematico.
I primi 7 numeri sono un codice univoco come le chiavi autoincrement delle tabelle di un database, è direttamente l’agenzia delle entrate che lo assegna ad ogni attività. I tre numeri successivi sono il codice territoriale dell’agenzia iva, infine l’ultimo numero è un carattere di controllo che è possibile calcolare.
Per quanto riguarda i primi 7 numeri non possiamo farci nulla, quello è un numero univoco assegnato e rimane tale, mentre conoscendo i tre caratteri successivi ( dalla posizione 8 alla 10 ) è possibile sapere l’ufficio iva che ha rilasciato il codice. Questa operazione è elementare, basta avere una tabella con i codici da ricercare in base al territorio. La tabella già pronta la metto a disposizione io, ecco la pagina per il download dell’archivio in Access ( .mdb ).
Dal punto di vista computazionale, la parte più importante è il calcolo della cifra di controllo, conoscendo questo algoritmo è possibile verificare l’esattezza di una partita iva. Attenzione è possibile conoscere se una partita iva è esatta, ma non se è reale, per questo occorre andare sul sito dell’agenzia delle entrate. Il procedimento per calcolare la cifra di controllo è:

  1. calcolare la somma dei numeri in posizione dispari
  2. calcolare la somma dei numeri in posizione pari e moltiplicarla per 2
  3. il numero di volte che nei numeri in posizione pari abbiamo un valore maggiore o uguale a 5
  4. calcolare la somma dei tre numeri trovati in precedenza e fare il modulo di 10
  5. calcolare 10 meno il valore calcolato in precedenza e fare il modulo di 10

Il numero che proviene da questi calcoli è la cifra di controllo che è possibile o calcolare per inserire l’ultimo carattere in automatico nel campo oppure per fare il controllo della partita iva. Nel caso del semplice controllo del valore ci si può anche fermare al punto 4 verificando che tale valore sia uguale a zero. Ecco allora il codice in linguaggio C/C++ per calcolare il numero di controllo:

char CodPartIva(CString strCod)
{
   if (strCod.GetLength() != 10)
	return 'C';

   int pesi_pari = 0;
   int pesi_dispari = 0;
   int num_sup = 0;
   CString retValue;

   for (int i = 0; i < strCod.GetLength(); ++i)
   {
      if (((i + 1) % 2) == 0)
      {
         int k = __toascii(strCod[i]) - __toascii('0');
         pesi_pari += k;
 	 if (k >= 5)
	    num_sup++;
      }
      else
	pesi_dispari += __toascii(strCod[i]) - __toascii('0');
   }

   pesi_pari *= 2;

   int pesi = pesi_pari + pesi_dispari + num_sup;
   pesi_pari = pesi % 10;
   pesi = (10 - pesi_pari) % 10;

   retValue.Format(_T("%d"), pesi);

   return (char)retValue[0];
}

Ovviamente ognuno può migliorare l’algoritmo come crede, questo è solo uno dei tanti modi per scriverlo. La funzione accetta una stringa di 10 cifre, volendo si può fare il controllo sui tipi di dati inseriti, restituendo il carattere numerico trovato. Questo algoritmo l’ho scritto in C/C++ con MFC, ma con un minimo sforzo è possibile adattarlo ad altri linguaggi come Java, C#, Visual Basic ed altri.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in VC/C++. Contrassegna il permalink.