Como calcular el NIF , NIE y CIF

Buenas.

Os voy a explicar como calcular la letra /número de control de los NIF, NIE y CIF usando javascript.

Buscando por ahí he encontrado dos ejemplos de javascript para calcular el NIF, NIE (es el mismo) y otro para calcular el CIF. Yo de javascript lo justo, seguro que hay funciones mejores, pero a mi estas me funcionan perfectamente.

1.- NIF y NIE (primera imagen) El cálculo es el mismo. Lo único que debemos hacer con los NIE es sustituir la primera letra de éstos (X,Y,Z) por (0,1,2) respectivamente. Y esa cadena pasársela a la función javascript.

2.- CIF (segunda imagen) Los CIF desde julio de 2008 se componen de una letra (A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W), de una numeración aleatoria de 7 dígitos y de un carácter de control. La función javascript nos devolverá un número. Si el CIF empieza por:C,K,L,M,N,P,Q,R,S,W en vez de devolver un número se deberá devolver una letra siguiendo esta correspondencia 1=A , 2=B, 3=C, 4=D, 5=E, 6=F, 7=G, 8=H, 9=I, 0=J.

 

Como idea, en mi función lo tengo de la siguiente manera:

- Lo primero me quedo con la primera posición por la izquierda de la cadena.

- Si es una X, Y, Z o un número es un NIF, NIE. Si es un NIE debo sustituir la letra como dije antes por un 0,1 o un 2 y ejecuto la función javascript tal como comenté el otro día con la función para el IBAN

- Si es una A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W entonces es un NIF así que lo paso como parámetro a la segunda función javascript

Cuando tengo el número de control que devuelve la función javascript debo comprobar por que letra empezaba el CIF para saber si tengo que cambiar el número por una letra.

- Si no empieza por ninguno de los casos anteriores devuelvo un error

Un saludo.

 

 

 

Jorge Velasco

SISTEMA BINARIO

 

 

 

 

function letraDni(dni) {

var letradni=dni.charAt( 8 );

var lockup='TRWAGMYFPDXBNJZSQVHLCKE';

return lockup.charAt(dni.substring(8,0) % 23);

}

letraDni(dni);

 

function validarCIF(cif){

 

var pares = 0;

 

var impares = 0;

 

var suma;

 

var ultima;

 

var unumero;

 

var uletra = new Array('J' , 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I') ;

var xxx;

ultima = cif.substr( 8,1 );

 

for (var cont = 1 ; cont < 7 ; cont ++)

{

 

xxx = (2 * parseInt(cif.substr(cont++,1))).toString() + '0';

 

impares += parseInt(xxx.substr( 0,1 )) + parseInt(xxx.substr( 1,1 ));

 

pares += parseInt(cif.substr(cont,1));

 

}

 

xxx = (2 * parseInt(cif.substr(cont,1))).toString() + '0';

 

impares += parseInt(xxx.substr( 0,1 )) + parseInt(xxx.substr( 1,1 ));

 

suma = (pares + impares).toString();

 

unumero = parseInt(suma.substr(suma.length - 1, 1));

 

unumero = (10 - unumero).toString();

 

if(unumero == 10) unumero = 0;

 

return unumero;

}

 

validarCIF(cif);

 

 

 

Uau!

Muchas gracias!

Saludos,

Fran Varona

 

Buenas

Espero que se haya entendido.

No pude subir imágenes y no se si habrá quedado muy claro.

El que necesite mas explicaciones que lo diga.

Un saludo Fran.

image

image

image

 

 

 

Buenos dias,

 

 

Quiero verificar los dni, nie,nif que se introduzca en un campo. El codigo javascript que poneis mas arriba, copiandolo directamente en el editor de formulas lo reconoce v7? o hay que hacer algo mas?

Buenas.

Lo que debes hacer es una función o proceso en donde metas estos códigos en javascript pero controlando, como digo en el primer post, si son nif, nie o cif.

Para saber como meter código javascript en un proceso mírate este post: http://velneo.es/foros/topic/funcion-iban-espanol-en-javascript

Un saludo.

 

 

 

Jorge Velasco Fernández

THE SEED SOFTWARE COMPANY

jvelasco@theseedsc.com

Ok, entonces hago un proceso con:

 

 

-Obtengo el primer digito de la cadena

- Variable que almacene el primer digito de la cadena

-If digito=0,1,2

Proceso java del dni

-If digito diferente a 0,1,2

Proceso NIF

 

 

correcto??

 

Buenas

"Lo primero me quedo con la primera posición por la izquierda de la cadena.

- Si es una X, Y, Z o un número es un NIF, NIE. Si es un NIE debo
sustituir la letra como dije antes por un 0,1 o un 2 y ejecuto la
función javascript tal como comenté el otro día con la función para el
IBAN

- Si es una A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,U,V,W entonces es un CIF así que lo paso como parámetro a la segunda función javascript

Cuando tengo el número de control que devuelve la función javascript
debo comprobar por que letra empezaba el CIF para saber si tengo que
cambiar el número por una letra.

- Si no empieza por ninguno de los casos anteriores devuelvo un error"

No es exactamente como tu dices. Para el NIF, NIE la función javascript es la misma sólo que debes sustituir las letras de los NIE's por números.

El resto son CIF.

Un saludo.

 

 


Jorge Velasco Fernández

THE SEED SOFTWARE COMPANY

jvelasco@theseedsc.com