giovedì 20 ottobre 2011

Procedura Controllo Codice Fiscale


Pubblico il codice della procedura di controllo del Codice Fiscale.

Qualcuno ha capito che il messaggio rilasciato dal programma "Codice Fiscale formalmente corretto" si riferisca alla verifica del conteggio dei caratteri del codice fiscale, ma non è così, il controllo è più complesso.
Un codice fiscale, lo può validare soltanto l'agenzia delle entrate, perchè possono esistere più persone con dati simili e potrebbero averei codici fiscali identici.








public void onClickVerCF(View v) {

int i, s, c;
String cf2;
String cf;

String msg = "Il Codice Fiscale è formalmente corretto";

cf = txtNewCF.getText().toString();
cf2 = cf.toUpperCase();

int setdisp[] = { 1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11,
3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23 };
if (cf.length() == 0)
msg = "Codice Fiscale Vuoto";
else if (cf.length() != 16)
msg = "La lunghezza del codice fiscale non è "
+ "corretta: il codice fiscale è lungo "
+ "esattamente 16 caratteri.";
else

{
boolean carnv;
carnv = false;
for (i = 0; i < 16; i++) {
c = cf2.charAt(i);
if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'Z')) {
msg = "Il codice fiscale contiene alcuni caratteri non validi:"
+ "i soli caratteri validi sono le lettere e i numeri.";
carnv = true;
}
}
if (carnv == false) {
s = 0;
for (i = 1; i <= 13; i += 2) {
c = cf2.charAt(i);
if (c >= '0' && c <= '9')
s = s + c - '0';
else
s = s + c - 'A';
}
for (i = 0; i <= 14; i += 2) {
c = cf2.charAt(i);
if (c >= '0' && c <= '9')
c = c - '0' + 'A';
s = s + setdisp[c - 'A'];
}

if (s % 26 + 'A' != cf2.charAt(15))
msg = "Il codice fiscale non è corretto: "
+ "il codice di controllo non corrisponde.";
}
}

MessageBoxOK(msg);

}

Nessun commento:

Posta un commento