Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

Titolo: Controllo Codice Fiscale

Categoria: Codice Ultimo Aggiornamento: 01/04/04


Questo metodo ritorna Vero se il codice fiscale passato è scritto correttamente, utilizzando il carattere di controllo finale. La procedura è un po' condensata: per l'algoritmo di controllo completo potete trovare il dettaglio sul sito del Ministero delle Finanze.

    `Metodo Controllo_CodiceFiscale
    `controlla il checksum del codice fiscale
    `Nexus srl 4-6-90
C_LONGINT($i;$n_l;$car_l;$cod_l)
C_STRING(16;$cf_s;$1)
C_STRING(43;$mysndcod_s)
$cf_s:=$1
If (Length($cf_s)#16)
  $0:=False
Else
  $n_l:=0
  For ($i;2;14;2)
    $car_l:=Ascii($cf_s[[$i]])
    Case of
      : (($car_l>=48) & ($car_l<=57))
        $cod_l:=$car_l-48
      : (($car_l>=65) & ($car_l<=90))
        $cod_l:=$car_l-65
      Else
        $cod_l:=0
    End case
    $n_l:=$n_l+$cod_l
  End for
  $mysndcod_s:="BAFHJNPRTVUMBERTOBAFHJNPRTVCESULDGIMOQKWZYX"
  For ($i;1;15;2)
    $car_l:=Ascii($cf_s[[$i]])-47
    $cod_l:=Ascii($mysndcod_s[[$car_l]])-65
    $n_l:=$n_l+$cod_l
  End for
  $0:=((65+$n_l-(Int($n_l/26)*26))=Ascii($cf_s[[16]]))
End if

Inviato da: Umberto Migliore Visite: 20936


PierPaolo Sichera 23/05/10 23:31:01
Se si vogliono utilizzare i web services, si può utilizzare il codice:

C_TEXT($metodo_t)
C_TEXT($urlServer_t)
C_TEXT($soapAction_t)
C_TEXT($namespace_t)
C_TEXT($risultato)
$metodo_t:="Check_CodiceFiscale" ´nome del metodo che mi serve

    ´le successive sono costanti...
$urlServer_t:="http://www.nexusonline.it:8088/4DSOAP/"
$soapAction_t:="Nexus_WebService#"
$namespace_t:="http://www.nexusonline.it/namespace/default"

AUTHENTICATE WEB SERVICE("nome@dominio.it";"")

CALL WEB SERVICE(urlServer_t;$soapAction_t+$metodo_t;$metodo_t;$namespace;Web Service Dynamic)
If (OK=1)
    GET WEB SERVICE RESULT($risultato;"codice_fiscale";*)
End if

Massimiliano Chiodi 09/12/18 12:41:03
Qui il codice aggiornato per il controllo del codice fiscale per la versione 17 di 4d

----- calcolocodicefiscale -----

If (Undefined($1))
$0=False
End if

$codicefiscale:=$1
If (Length($codicefiscale)=0)
$0:=False
End if
If (Length($codicefiscale)#16)
$0:=False
End if
    // $omocodici:="LMNPQRSTUV"
$listaControllo:="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

ARRAY INTEGER($alistapari;26)
$alistapari{0}:=0
$alistapari{1}:=1
$alistapari{2}:=2
$alistapari{3}:=3
$alistapari{4}:=4
$alistapari{5}:=5
$alistapari{6}:=6
$alistapari{7}:=7
$alistapari{8}:=8
$alistapari{9}:=9
$alistapari{10}:=10
$alistapari{11}:=11
$alistapari{12}:=12
$alistapari{13}:=13
$alistapari{14}:=14
$alistapari{15}:=15
$alistapari{16}:=16
$alistapari{17}:=17
$alistapari{18}:=18
$alistapari{19}:=19
$alistapari{20}:=20
$alistapari{21}:=21
$alistapari{22}:=22
$alistapari{23}:=23
$alistapari{24}:=24
$alistapari{25}:=25

ARRAY INTEGER($alistadispari;26)
$alistadispari{0}:=1
$alistadispari{1}:=0
$alistadispari{2}:=5
$alistadispari{3}:=7
$alistadispari{4}:=9
$alistadispari{5}:=13
$alistadispari{6}:=15
$alistadispari{7}:=17
$alistadispari{8}:=19
$alistadispari{9}:=21
$alistadispari{10}:=2
$alistadispari{11}:=4
$alistadispari{12}:=18
$alistadispari{13}:=20
$alistadispari{14}:=11
$alistadispari{15}:=3
$alistadispari{16}:=6
$alistadispari{17}:=8
$alistadispari{18}:=12
$alistadispari{19}:=14
$alistadispari{20}:=16
$alistadispari{21}:=10
$alistadispari{22}:=22
$alistadispari{23}:=25
$alistadispari{24}:=24
$alistadispari{25}:=23

$codicefiscale:=Uppercase($codicefiscale)
ARRAY TEXT($cCodice;15)
For ($k;0;14)
$cCodice{$k}:=Substring($codicefiscale;$k+1;1)
End for
$somma:=0
$i:=0
While ($i<15)
$s:=$cCodice{$i}
$x:=Position($s;"0123456789";1)
If ($x<=0)
Else
$s:=Substring($listaControllo;$x;1)
End if
$x:=Position($s;$listaControllo;1)
If (Mod($i;2)=0)
$x:=$alistaDispari{$x-1}
Else
$x:=$alistaPari{$x-1)
End if
$somma:=$somma+$x
$i:=$i+1
End while
$x:=Mod($somma;26)+1
$lungo:=Length($codicefiscale)
$subcontrollo:=Substring($listaControllo;$x;1)
$cofiscale:=Substring($codicefiscale;$lungo;1)
If ($subcontrollo=$cofiscale)
$0:=True
End if

Massimiliano Chiodi 09/12/18 12:42:25
Qui il codice aggiornato per il controllo del codice fiscale per la versione 17 di 4d

----- calcolocodicefiscale -----

If (Undefined($1))
$0=False
End if

$codicefiscale:=$1
If (Length($codicefiscale)=0)
$0:=False
End if
If (Length($codicefiscale)#16)
$0:=False
End if
    // $omocodici:="LMNPQRSTUV"
$listaControllo:="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

ARRAY INTEGER($alistapari;26)
$alistapari{0}:=0
$alistapari{1}:=1
$alistapari{2}:=2
$alistapari{3}:=3
$alistapari{4}:=4
$alistapari{5}:=5
$alistapari{6}:=6
$alistapari{7}:=7
$alistapari{8}:=8
$alistapari{9}:=9
$alistapari{10}:=10
$alistapari{11}:=11
$alistapari{12}:=12
$alistapari{13}:=13
$alistapari{14}:=14
$alistapari{15}:=15
$alistapari{16}:=16
$alistapari{17}:=17
$alistapari{18}:=18
$alistapari{19}:=19
$alistapari{20}:=20
$alistapari{21}:=21
$alistapari{22}:=22
$alistapari{23}:=23
$alistapari{24}:=24
$alistapari{25}:=25

ARRAY INTEGER($alistadispari;26)
$alistadispari{0}:=1
$alistadispari{1}:=0
$alistadispari{2}:=5
$alistadispari{3}:=7
$alistadispari{4}:=9
$alistadispari{5}:=13
$alistadispari{6}:=15
$alistadispari{7}:=17
$alistadispari{8}:=19
$alistadispari{9}:=21
$alistadispari{10}:=2
$alistadispari{11}:=4
$alistadispari{12}:=18
$alistadispari{13}:=20
$alistadispari{14}:=11
$alistadispari{15}:=3
$alistadispari{16}:=6
$alistadispari{17}:=8
$alistadispari{18}:=12
$alistadispari{19}:=14
$alistadispari{20}:=16
$alistadispari{21}:=10
$alistadispari{22}:=22
$alistadispari{23}:=25
$alistadispari{24}:=24
$alistadispari{25}:=23

$codicefiscale:=Uppercase($codicefiscale)
ARRAY TEXT($cCodice;15)
For ($k;0;14)
$cCodice{$k}:=Substring($codicefiscale;$k+1;1)
End for
$somma:=0
$i:=0
While ($i<15)
$s:=$cCodice{$i}
$x:=Position($s;"0123456789";1)
If ($x<=0)
Else
$s:=Substring($listaControllo;$x;1)
End if
$x:=Position($s;$listaControllo;1)
If (Mod($i;2)=0)
$x:=$alistaDispari{$x-1}
Else
$x:=$alistaPari{$x-1)
End if
$somma:=$somma+$x
$i:=$i+1
End while
$x:=Mod($somma;26)+1
$lungo:=Length($codicefiscale)
$subcontrollo:=Substring($listaControllo;$x;1)
$cofiscale:=Substring($codicefiscale;$lungo;1)
If ($subcontrollo=$cofiscale)
$0:=True
End if

E il codice per il controllo della partita iva ( o il codice fiscale assegnato agli enti pubblici )

---- controllopartitaiva ----
If (Undefined($1))
$0=False
End if

$codice:=$1

    // Controllo dell'esattezza formale della Partita IVA

$n:=0 // contatore
$cd:=0 // contributo cifre dispar
$cp:=0 // contributo cifre pari
$ct:=0 // contributo totale

    // controlla la lunghezza del codice

If (Length($codice)=11)
Else
$0:=False
End if

    // controlla l'esattezza del carattere di controllo

ct:=0

For ($n;1;9;2)
$cd:=Num(Substring($codice;$n;1))
$cp:=Num(Substring($codice;$n+1;1))*2
If ($cp>9)
$cp:=$cp-9
End if
$ct:=$ct+$cd+$cp
End for

$nn:=Substring($codice;11;1)
$uu:=Num($nn)
If (Mod(Mod(10-ct;10);10)=$uu)
$0:=True
Else
$0:=False
End if

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User:
Pass: Accedi

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
329 utenti registrati

Pagina servita il 23/11/24 alle 05:10:22 Valid HTML 4.01! Valid CSS!

Mutuo Facile, iDigitalScout, iDigitalTags e altre app di Nexid srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per IOS Apple iPhone, iPod, iPad