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 è:
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.
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→