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

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

Titolo: Calcolo del codice fiscale

Categoria: Codice Ultimo Aggiornamento: 09/12/18


La funzione per il calcolo del codice fiscale :
Nota : occorre il database con i comuni e relativi codici istat.

---- calcolocodicefiscale ----

    // dati da passare per il calcolo
    // $1:Nome;$2:Cognome;$3:data in formato testo;$4:sesso M o F;$5:codice istat comune
    // ritorno il codice fiscale
$nome:=$1
$cognome:=$2
$data:=$3
$sesso:=$4
$comune:=$5

$inome:=""
$icognome:=""
$icomune:=""
$controllo:=""
$temp:=""
$letteracod:=""
    //prendi le iniziali del nome
    //ccc As int32=1
$lungnome:=0
For ($lungnome;1;Length($nome))
$temp:=Lowercase(Substring($nome;$lungnome;1))
Case of
: $temp="b"
$inome:=$inome+$temp
: $temp="c"
$inome:=$inome+$temp
: $temp="d"
$inome:=$inome+$temp
: $temp="f"
$inome:=$inome+$temp
: $temp="g"
$inome:=$inome+$temp
: $temp="h"
$inome:=$inome+$temp
: $temp="j"
$inome:=$inome+$temp
: $temp="k"
$inome:=$inome+$temp
: $temp="l"
$inome:=$inome+$temp
: $temp="m"
$inome:=$inome+$temp
: $temp="n"
$inome:=$inome+$temp
: $temp="p"
$inome:=$inome+$temp
: $temp="q"
$inome:=$inome+$temp
: $temp="r"
$inome:=$inome+$temp
: $temp="s"
$inome:=$inome+$temp
: $temp="t"
$inome:=$inome+$temp
: $temp="v"
$inome:=$inome+$temp
: $temp="w"
$inome:=$inome+$temp
: $temp="x"
$inome:=$inome+$temp
: $temp="y"
$inome:=$inome+$temp
: $temp="z"
$inome:=$inome+$temp

End case

End for

If (Length($inome)>=4)
$temp:=Lowercase($inome)
$inome:=Substring($temp;1;1)+Substring($temp;3;1)+Substring($temp;4;1)
End if

    //controlla la lunghezza delle iniziali
If (Length($inome)>3)
$inome:=Substring($inome;1;3)
Else
If (Length($inome)<3)
For $lungnome(1;Length($nome))
$letteracod:=Substring($nome;$lungnome;1)
Case of
: $letteracod="a"
$inome:=$inome+"a"
: $letteracod="e"
$inome:=$inome+"e"
: $letteracod="i"
$inome:=$inome+"i"
: $letteracod="o"
$inome:=$inome+"o"
: $letteracod="u"
$inome:=$inome+"u"
End case
End for

If (Length($inome)>3)
$inome:=Substring($inome;1;3)
If (Length($inome)<3)
For ($lungnome;Length($inome);3)
$inome:=$inome+"x"
End for
End if
End if
End if
End if

    // prendi lettere del cognome
For ($lungnome;1;Length($cognome))
$temp:=Lowercase(Substring($cognome;$lungnome;1))
Case of
: $temp="b"
$icognome:=$icognome+$temp
: $temp="c"
$icognome:=$icognome+$temp
: $temp="d"
$icognome:=$icognome+$temp
: $temp="f"
$icognome:=$icognome+$temp
: $temp="g"
$icognome:=$icognome+$temp
: $temp="h"
$icognome:=$icognome+$temp
: $temp="j"
$icognome:=$icognome+$temp
: $temp="k"
$icognome:=$icognome+$temp
: $temp="l"
$icognome:=$icognome+$temp
: $temp="m"
$icognome:=$icognome+$temp
: $temp="n"
$icognome:=$icognome+$temp
: $temp="p"
$icognome:=$icognome+$temp
: $temp="q"
$icognome:=$icognome+$temp
: $temp="r"
$icognome:=$icognome+$temp
: $temp="s"
$icognome:=$icognome+$temp
: $temp="t"
$icognome:=$icognome+$temp
: $temp="v"
$icognome:=$icognome+$temp
: $temp="w"
$icognome:=$icognome+$temp
: $temp="x"
$icognome:=$icognome+$temp
: $temp="y"
$icognome:=$icognome+$temp
: $temp="z"
$icognome:=$icognome+$temp
End case
End for

    // controlla la lunghezza delle iniziali
If (Length($icognome)>3)
$icognome:=Substring($icognome;1;3)
Else
If (Length($icognome)<3)
// minore di tre cifre prendi anche le vocali
For ($lungnome;1;Length($cognome))
letteracod:=Substring($cognome;$lungnome;1)
Case of
: $letteracod="a"
$icognome:=$icognome+"a"
: $letteracod="e"
$icognome:=$icognome+"e"
: $letteracod="i"
$icognome:=$icognome+"i"
: $letteracod="o"
$icognome:=$icognome+"o"
: $letteracod="u"
$icognome:=$icognome+"u"
End case
End for

If (Length($icognome)>3)
$icognome:=Substring($icognome;1;3)
Else
If (Length($icognome)<3)
For ($lungnome;Length($icognome);3)
$icognome:=$icognome+"x"
End for
End if
End if
End if
End if

    // Dim idata, gg, mm, aa As String
    // temp=data
    // Dim tempn As string

ARRAY TEXT($ddata;0)
C_COLLECTION($detta)

$detta:=Split string($data;"/")
COLLECTION TO ARRAY($detta;$ddata)

$gg:=$ddata{1}
$mm:=$ddata{2}
If (Length($ddata{3})=2)
$aa:=$ddata{3}
Else
$aa:=Substring($ddata{3};3;2)
End if

$idata:=$aa
    //MsgBox("TEMP"+temp)
Case of
: $mm="01"
$idata:=$idata+"a"
: $mm="02"
$idata:=$idata+"b"
: $mm="03"
$idata:=$idata+"c"
: $mm="04"
$idata:=$idata+"d"
: $mm="05"
$idata:=$idata+"e"
: $mm="06"
$idata:=$idata+"h"
: $mm="07"
$idata:=$idata+"l"
: $mm="08"
$idata:=$idata+"m"
: $mm="09"
$idata:=$idata+"p"
: $mm="10"
$idata:=$idata+"r"
: $mm="11"
$idata:=$idata+"s"
: $mm="12"
$idata:=$idata+"t"
End case
If ($sesso="M")
$idata:=$idata+$gg
Else
If ($sesso="F")

$idata:=$idata+String(Num($gg)+40)
End if
End if

C_LONGINT($vdis)

    // codice parziale per calcolare ultima cifra
$parz:=Lowercase($icognome+$inome+$idata+$comune)
    // trova il carattere di verificca
For ($lungnome;1;15;2)
$d:=Substring($parz;$lungnome;1)
Case of
: $d="0"
$vdis:=$vdis+1
: $d="1"
$vdis:=$vdis+0
: $d="2"
$vdis:=$vdis+5
: $d="3"
$vdis:=$vdis+7
: $d="4"
$vdis:=$vdis+9
: $d="5"
$vdis:=$vdis+13
: $d="6"
$vdis:=$vdis+15
: $d="7"
$vdis:=$vdis+17
: $d="8"
$vdis:=$vdis+19
: $d="9"
$vdis:=$vdis+21
: $d="a"
$vdis:=$vdis+1
: $d="b"
$vdis:=$vdis+0
: $d="c"
$vdis:=$vdis+5
: $d="d"
$vdis:=$vdis+7
: $d="e"
$vdis:=$vdis+9
: $d="f"
$vdis:=$vdis+13
: $d="g"
$vdis:=$vdis+15
: $d="h"
$vdis:=$vdis+17
: $d="i"
$vdis:=$vdis+19
: $d="j"
$vdis:=$vdis+21
: $d="k"
$vdis:=$vdis+2
: $d="l"
$vdis:=$vdis+4
: $d="m"
$vdis:=$vdis+18
: $d="n"
$vdis:=$vdis+20
: $d="o"
$vdis:=$vdis+11
: $d="p"
$vdis:=$vdis+3
: $d="q"
$vdis:=$vdis+6
: $d="r"
$vdis:=$vdis+8
: $d="s"
$vdis:=$vdis+12
: $d="t"
$vdis:=$vdis+14
: $d="u"
$vdis:=$vdis+16
: $d="v"
$vdis:=$vdis+10
: $d="w"
$vdis:=$vdis+22
: $d="x"
$vdis:=$vdis+25
: $d="y"
$vdis:=$vdis+24
: $d="z"
$vdis:=$vdis+23
End case
End for

C_LONGINT($vpar)

For ($lungnome;2;14;2)
$p:=Substring($parz;$lungnome;1)
Case of
: $p="0"
$vpar:=$vpar+0
: $p="1"
$vpar:=$vpar+1
: $p="2"
$vpar:=$vpar+2
: $p="3"
$vpar:=$vpar+3
: $p="4"
$vpar:=$vpar+4
: $p="5"
$vpar:=$vpar+5
: $p="6"
$vpar:=$vpar+6
: $p="7"
$vpar:=$vpar+7
: $p="8"
$vpar:=$vpar+8
: $p="9"
$vpar:=$vpar+9
: $p="a"
$vpar:=$vpar+0
: $p="b"
$vpar:=$vpar+1
: $p="c"
$vpar:=$vpar+2
: $p="d"
$vpar:=$vpar+3
: $p="e"
$vpar:=$vpar+4
: $p="f"
$vpar:=$vpar+5
: $p="g"
$vpar:=$vpar+6
: $p="h"
$vpar:=$vpar+7
: $p="i"
$vpar:=$vpar+8
: $p="j"
$vpar:=$vpar+9
: $p="k"
$vpar:=$vpar+10
: $p="l"
$vpar:=$vpar+11
: $p="m"
$vpar:=$vpar+12
: $p="n"
$vpar:=$vpar+13
: $p="o"
$vpar:=$vpar+14
: $p="p"
$vpar:=$vpar+15
: $p="q"
$vpar:=$vpar+16
: $p="r"
$vpar:=$vpar+17
: $p="s"
$vpar:=$vpar+18
: $p="t"
$vpar:=$vpar+19
: $p="u"
$vpar:=$vpar+20
: $p="v"
$vpar:=$vpar+21
: $p="w"
$vpar:=$vpar+22
: $p="x"
$vpar:=$vpar+23
: $p="y"
$vpar:=$vpar+24
: $p="z"
$vpar:=$vpar+25
End case

End for

    // somma dei valori ottenuti dal dispari e dal pari
$vdisparsomma:=$vdis+$vpar
    // ---------------------
    // vdisparsomma=148
    // ---------------------
    // diviso 26, troviamo il resto
$restov:=Mod($vdisparsomma;26)

Case of $restov
: $restov=0
$controllo:="a"
: $restov=1
$controllo:="b"
: $restov=2
$controllo:="c"
: $restov=3
$controllo:="d"
: $restov=4
$controllo:="e"
: $restov=5
$controllo:="f"
: $restov=6
$controllo:="g"
: $restov=7
$controllo:="h"
: $restov=8
$controllo:="i"
: $restov=9
$controllo:="j"
: $restov=10
$controllo:="k"
: $restov=11
$controllo:="l"
: $restov=12
$controllo:="m"
: $restov=13
$controllo:="n"
: $restov=14
$controllo:="o"
: $restov=15
$controllo:="p"
: $restov=16
$controllo:="q"
: $restov=17
$controllo:="r"
: $restov=18
$controllo:="s"
: $restov=19
$controllo:="t"
: $restov=20
$controllo:="u"
: $restov=21
$controllo:="v"
: $restov=22
$controllo:="w"
: $restov=23
$controllo:="x"
: $restov=24
$controllo:="y"
: $restov=25
$controllo:="z"
End case
    // fai il codice fiscale
$codicefiscale:=Uppercase($parz+$controllo)
$0:=$codicefiscale



Inviato da: Massimiliano Chiodi Visite: 6414

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
303 utenti registrati

Pagina servita il 28/03/24 alle 10:02:33 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