hola a todos me gustaria hacer un escript que valide el numero de afiliacion a la seguridad social en españa el algoritmo es el siguiente:
El número de afiliación a la Seguridad Social en españa, lleva asociados un par de dígitos de control que sirven para evitar errores de transcripción.
El número de afiliación a la seguridad social consta de tres partes:
aa/bbbbbbbb/cc
Los primeros dígitos (a) son un indicativo de la provincia. Los dígitos centrales (b) son el nº del asegurado dentro de cada provincia. Los dígitos finales son dígitos de control.
A menudo, el número de la seguridad social se escribe sin barras, siendo la parte a los dos primeros dígitos, la parte c los dos últimos y la parte b los dígitos centrales que queden:
aabbbbbbbbcc
Los dígitos de control (c) se obtienen a partir de las otras dos partes (a) y (b) de la siguiente forma:
si (b<10000000)
entonces d=b+a*10000000
si no d=valor de ( a concatenado con b ) //con b sin ceros a la izquierda
c=d mod 97 //resto de la división entera
yo tengo este script:
function comprobar_nass(nass_java)
{ var d=0,a1;
var resto=0; var rest =0;
var nass=document.getElementById('nass_java').value
var a = nass.substring(0,2); //a coge el valor de los 2 primeros digitos ok!!!
var b = nass.substring(2,10); //b tiene el valor de -> aa/bbbbbbbb/cc
var c = nass.substring(10,12); //c vale los dos ultimos digitos.
var e = nass.substring(2,10);
var incr = 2;
var digito = nass.substr(incr,incr-1); //se le asigna a digito el valor del numero que se escuentra en 3 posicio(el primer digito de b)
alert("a=" +a);//muestro en pantalla la partes a/b/c
alert("b=" +b);
alert("c=" +c);
alert("Digito= " +digito);
if( b < 10000000 ) //si es menor de 8 digitos b
{
//a1= a*10000000; //a1 le asigno el valor de a x 10000000
d = b+ a*10000000; // d coge el valor de a1(a x 10000000)
resto = d % 97 ;
if(resto==c) // el resto si es igual que la parte c(2 ultimas cifras) del nass es correcto
{alert("El nass es correcto " +resto);}
else
{alert("El nass no es correcto " +resto);} // sino no.
}
else
{ // si b no es menor de 8 digitos...
while (digito == 0) //compruebo que digito sea igual q 0 si es asi....
{
digito = nass.substr(incr+1,1);//cogemos el digito siguiente y lo comprobamos que sea igual a cero.
e = nass.substring(incr+1,nass.length-incr-3);//asignamos a e la cadena sin el digito anteriormente comprobado
incr++; //incrementamos la variable para para comprobar el siguente digito
alert(digito)
}
d = a+ e;//asignamos a e el valor de a concatenado con b sin cero
rest = d % 97;
if(rest==c)
{alert("El nas es correcto");}
else{alert("el nass no es correcto " +rest);}
}
}
si alguien sabe como validarlo corectamente haber si entre los dos podemos porque ya llevo tiempo con ello.
saludos y gracias.