Código de FoxPro/Visual FoxPro - Rutina para validar el DNI Peruano

Rutina para validar el DNI Peruanográfica de visualizaciones


FoxPro/Visual FoxPro

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 30 de Agosto del 2012 por ZeRoberto
6.713 visualizaciones desde el 30 de Agosto del 2012. Una media de 35 por semana
Verificador y Generador de DNI peruano, tanto antiguos como nuevos.

Versión 1
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 30 de Agosto del 2012gráfica de visualizaciones de la versión: Versión 1
6.714 visualizaciones desde el 30 de Agosto del 2012. Una media de 35 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
? CheckDni("011637057")
 
 
*/-- Verificador y Generador de DNI peruano: Antiguos y Nuevos
Function CheckDNI
LParameters tcDni, tlGenera, tlNumero
Local luResult, lnTotal, lnIndex, lnFactor, lnDigito, lnPosicion, lnNumero, lcNumeros, lcLetra, lcLetras
 
    tlGenera = Iif(Vartype(tlGenera) == "L", tlGenera, .F.)
    tlNumero = Iif(Vartype(tlNumero) == "L", tlNumero, .F.)
 
    If !tlGenera And Len(tcDni) != 9
       Return .T.
    EndIf
 
    lcLetras  = "KABCIEFGHI" && Antiguo DNI
    lcNumeros = "6789011234" && Nuevo DNI
 
    lnTotal   = 0
    For lnIndex = 1 To 8
        lnFactor = Int(Val(Substr("32765432", lnIndex, 1)))
        lnDigito = Int(Val(Substr(tcDni, lnIndex, 1)))
        lnTotal  = lnTotal + (lnFactor * lnDigito)
    EndFor
    lnPosicion = 11 - Mod(lnTotal, 11)
    If lnPosicion = 11
       lnPosicion = 0
     Else
       If lnPosicion = 10
          lnPosicion = 1
       EndIf
    EndIf
    lnNumero = Int(Val(Substr(lcNumeros, lnPosicion + 1, 1)))
    lcLetra  = Substr(lcLetras, lnPosicion + 1, 1)
    If tlGenera
       If tlNumero
          luResult = lnNumero
        Else
          luResult = lcLetra
       EndIf
     Else
       luCheck = Right(tcDni, 1)
       If IsAlpha(luCheck)
          luResult = luCheck == lcLetra
        Else
          luCheck  = Int(Val(luCheck))
          luResult = luCheck == lnNumero
       EndIf
    EndIf
Return (luResult)



Comentarios sobre la versión: Versión 1 (1)

visualin
14 de Abril del 2015
estrellaestrellaestrellaestrellaestrella
El código da por valido cualquier numero de 8 digitos asi sea 99999999
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s2210