All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sogei.utility.UCheckNum Maven / Gradle / Ivy

There is a newer version: 0.7.7.R4
Show newest version
package sogei.utility;

 /**
 * Classe che implementa e svolge l'algoritmo di controllo di validità della partita iva
 * e del codice fiscale delle persone non fisiche confrontando anche il valore del check-digit
 * la classe restituisce un codice di ritorno che può assumere dei valori predeterminati
 *
 * Downloaded from http://www.agenziaentrate.gov.it/wps/content/Nsilib/Nsi/Home/CosaDeviFare/Richiedere/Codice+fiscale+e+tessera+sanitaria/Richiesta+TS_CF/SchedaI/Programma+correttezza+formale+CF/
 * @author Sogei S.p.A.
 */
 public class UCheckNum {
 private String strCfNum;
 private int pintCodUff; 

 /**
 * Costruttore parametrico che inizializza l'oggetto con la stringa che gli viene passata come parametro
 */
 public UCheckNum (String s ) {
 strCfNum = s;
 }
 /**
 * Metodo che gestisce il caso di una partita iva o di un codice fiscale di una persona non fisica
 * @return char
 * @param p java.lang.String
 */
 public String cfNum (String p ) {
 String strRetcode = null;
 if (Integer.parseInt(p.substring(0,7)) < 8000000)
 {strRetcode = "2";} //partita iva o codice fiscale delle p.n.f.
 else if (pintCodUff > 95)
 {strRetcode = "N";} //codice ufficio errato per c.f. delle p.n.f.
 else
 {strRetcode = "5";} //c.f. p.n.f. non contribuenti iva

 if ((controlCfNum(p.substring(0,11)) == false) && (strRetcode == "2" ))
 {strRetcode = "Q";} //check-digit errato
 else if (controlCfNum(p.substring(0,11)) == false)
 {strRetcode = "T";} //check-digit errato


 return strRetcode;
 }
 /**
 * Metodo pubblico di codifica del return code che acquisisce una stringa contenente un solo carattere
 * al quale corrisponde una stringa di dettaglio sul codice di ritorno
 * 
 */
 public String codificaRetCodeCfNum ( char chrValore ) {
 String strRetcode = null; //codice di ritorno

 switch(chrValore) // viene attribuito ad ogni valore ricevuto un significato
 {
 case '0':
 strRetcode = "NUMERO DI CODICE FISCALE DEFINITIVO";
 break;

 case '1':
 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO D'UFFICIO (DU.74 DU.75 101.75)";
 break;

 case '2':
 strRetcode = "NUMERO DI CODICE FISCALE DELLE P.N.F. OPPURE NUMERO DI PARTITA I.V.A.";
 break;

 case '3':
 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO DALLE INTENDENZE DI FINANZE";
 break;

 case '4':
 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO DALLE IMPOSTE DIRETTE";
 break;

 case '5':
 strRetcode = "NUMERO DI CODICE FISCALE DELLE P.N.F. NON CONTRIBUENTI I.V.A.";
 break;

 case '6':
 strRetcode = "NUMERO DI CODICE FISCALE DEFINITIVO P.F. SOPRAELEVATA DI OMOCODICE";
 break;

 case 'A':
 strRetcode = "NUMERO DI CODICE FISCALE DEFINITIVO CON CHECK DIGIT ERRATO";
 break;

 case 'B':
 strRetcode = "NUMERO DI CODICE FISCALE DEFINITIVO FORMALMENTE ERRATO";
 break;

 case 'I':
 strRetcode = "NUMERO DI CODICE FISCALE A 11 CIFRE NON ALLINEATO";
 break;

 case 'L':
 strRetcode = "NUMERO DI CODICE FISCALE A 11 CIFRE NON NUMERICO";
 break;

 case 'M':
 strRetcode = "NUMERO DI CODICE FISCALE A 11 CIFRE AVENTE LE PRIME 7 CIFRE A ZERO";
 break;

 case 'N':
 strRetcode = "NUMERO DI CODICE FISCALE A 11 CIFRE CON NUMERO DI CODICE UFFICIO ERRATO";
 break;

 case 'O':

 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO D'UFFICIO AVENTE PROGRESSIVO NUMERICO NON AMMISSIBILE (FUORI RANGE)";
 break;

 case 'P':
 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO D'UFFICIO (DU.75 101.75) CON CHECK DIGIT ERRATO";
 break;

 case 'Q':
 strRetcode = "NUMERO DI CODICE FISCALE DELLE P.N.F. OPPURE NUMERO DI PARTITA I.V.A. CON CHECK DIGIT ERRATO";
 break;

 case 'R':
 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO DALLE II.FF. CON CHECK DIGIT ERRATO";
 break;

 case 'S':
 strRetcode = "NUMERO DI CODICE FISCALE PROVVISORIO ASSEGNATO DALLE II.DD. CON CHECK DIGIT ERRATO";
 break;

 case 'T':
 strRetcode = "NUMERO DI CODICE FISCALE DELLE P.N.F. NON CONTRIBUENTI I.V.A. CON CHECK DIGIT ERRATO";
 break;

 default:
 break;
 } 
 return strRetcode;
 }
 /**
 * Metodo che esegue sulla stringa partita iva il controllo sul check-digit calcolando 
 * il complemento a dieci dell'ultimo carattere a destra 
 */
 public boolean controlCfNum (String s) {

 Integer intAppoggio; 
 int pintAppo;
 int pintUltimoCarattere;
 int pintTotale = 0;
 //somma dei valori attribuiti alle cifre pari 
 for (int i=1; i<11; i+=2)
 {
 String strElem = getCfNum().substring(i,i+1);
 intAppoggio = Integer.valueOf(strElem); //da una singola cifra della stringa passo ad un integer
 pintAppo = (intAppoggio.intValue())*2; //passaggio ad un intero per moltiplicarlo
 String strS2 = String.valueOf(pintAppo); // passo di nuovo a stringa per dividerla in due parti senza utilizzare un array
 for (int j=0; j 0) && (Integer.parseInt(strCfNum.substring(0,7)) < 273961))
 {return "1";}
 if ((Integer.parseInt(strCfNum.substring(0,7)) > 0400000) && (Integer.parseInt(strCfNum.substring(0,7)) < 1072480 ) ||
 (Integer.parseInt(strCfNum.substring(0,7)) > 1500000) && (Integer.parseInt(strCfNum.substring(0,7)) < 1828637 ) ||
 (Integer.parseInt(strCfNum.substring(0,7)) > 2000000) && (Integer.parseInt(strCfNum.substring(0,7)) < 2054096 ))
 { if (controlCfNum(strCfNum))
 {return "1";}
 else 
 {return "P";}
 }
 else
 {return "O";}

 }

 else if (pintCodUff == 999) 
 { 
 return cfNum(strCfNum);
 } 

 else if (((pintCodUff > 0) && (pintCodUff < 101)) || ((pintCodUff > 119) && (pintCodUff < 122))||(pintCodUff == 888)) 
 { 
 return cfNum(strCfNum);
 }
 else if ((pintCodUff > 150) && (pintCodUff < 246))
 {
 if (controlCfNum(strCfNum)) //controllo sul check digit 
 {return "3";}
 else 
 {return "R";}
 }

 else if ((pintCodUff > 300) && (pintCodUff < 767))

 { if (controlCfNum(strCfNum.substring(0,11)))
 {return "4";}
 else 
 {return "S";}
 }
 else if ((pintCodUff > 899) && (pintCodUff < 951))

 { if (controlCfNum(strCfNum.substring(0,11)))
 {return "4";}
 else 
 {return "S";}
 }
 else
 {return "N";}

 }
 }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy