Vous êtes sur la page 1sur 6

Validar Rut/Run CHILE

El Rol nico Nacional (RUN) y el Rol nico Tributario (RUT), nmero nico otorgado a personas naturales Eduardo Bustamente Ulloa Priscilla Ubilla Soriano 17/06/2013

Validar RUT/RUN - Chile


El Rol nico Nacional (RUN) y el Rol nico Tributario (RUT), nmero nico otorgado a personas naturales y de formato XX.XXX.XXX.X es validado mediante el mtodo Modulo 11 que consiste en calcular el dgito verificador mediante operaciones aritmticas.

Procedimiento
Para validar dicho nmero se toma en cuenta dos partes, el cuerpo y el dgito verificador el cual es ubicado luego un guion (-). Cada dgito del cuerpo es multiplicado con el nmero segn corresponda con la serie numrica 2,3,4,5,6,7, la que es repetida para completar la operacin con cada nmero. Es decir, si tenemos el Rut 17.475.969-X el clculo ser realizado de la siguiente manera: RUT sin dgito verificador Seria numrica ordenada a partir del ltimo dgito encontrado en el cuerpo Se multiplica cada dgito con su correspondiente vertical en la serie numrica 1 3 7 2 4 7 7 6 5 5 9 4 6 3 9 2 Total

14

28

42

25

36

18

18

184

Se suma el resultado de las operaciones y a este resultado se aplica la operacin residuo en base a con divisor

Por ltimo al nmero 11 se resta el residuo de la operacin anterior. El resultado correspondera al dgito verificador

Si el resultado es 11, el dgito verificador ser 0 Si el resultado es 10, el dgito verificador ser K En otro caso, dgito verificador ser otro nmero. En este caso el dgito verificador correspondiente es 3.

Aplicacin en Pantalla

<!DOCTYPE html> <html> <head> <script LANGUAGE="JavaScript"> La siguiente funcin invierte el string de nmeros numstring, recorrindolo en reversa, desde su ltimo carcter, copiando cada carcter a un string nuevo. function invertir(numstr){ var inverted=""; var i; for(i=numstr.length-1;i>=0;i--){ inverted+=numstr[i]; } //alert(inverted); return inverted; }

La siguiente funcin toma un string de nmeros, lo multiplica por cada digito de la sucesin 234567234567 tanto nmero de veces como dgitos tenga el string inicial. Se ir acumulando las multiplicaciones parciales en la variable acum. Se aplica modulo sobre la variable acum y 11, para obtener el residuo. Finalmente, en la variable digver, se obtiene la diferencia entre 11 y el residuo del paso anterior. Este resultado es el dgito verificador. Si la diferencia es 11, el dgito verificador ser 0, mientras que si la diferencia es 10, el dgito verificador ser K. function getdv(numnum){ var digver; var mod; var acum=0; var i=0; var multiplo="234567234567";

numstr= numnum.toString(); while (i<=numstr.length-1){ acum += (numstr[i]*multiplo[i]); //document.write(numstr[i]*multiplo[i]+" "); i++; } //alert("; acumulado = "+acum); mod = acum%11; //alert("; residuo = "+mod); digver=11-mod; if (digver===11){ digver=0; } else if (digver===10){ digver="K"; } alert("digito verificador = "+digver); return digver; } La siguiente funcin comparar dos dgitos verificadores: Si son iguales, arrojar un mensaje diciendo que el rut ingresado es correcto, e indicar el dgito verificador correspondiente. Se agreg una excepcin por si el usuario ingresa un rut con dgito verificador K en minscula, siendo correcto tambin. Si no se da ninguno de los casos anteriores, se indicar que el rut est incorrecto, y se indicar el dgito verificador correcto. function comp(num1,num2){ if (num1==num2){

alert("El rut ingresado es correcto, y el digito verificador es "+num2); } else if ((num1=="k")&&(num2=="K")){ alert("El rut ingresado es correcto, y el digito verificador es "+num2); } else{ alert("El rut es incorrecto, y el digito verificador es "+num2); } }

La funcin datos(), obtendr los datos del formulario html en dos variables (dv1 y dv2), y comparar estos a travs de la funcin comp(). function datos(){ var dv1 = rut.dv.value; var dv2 = getdv(invertir(rut.crut.value)); comp(dv1,dv2); }

</script>

<title></title> </head>

<body>

El siguiente es el formulario de rut, donde, para validar que el usuario ingresara un cuerpo de rut correcto, se utiliza como input type= number, y para el dgito verificador, se permite de tipo texto, para que pueda ingresar nmeros o K. <form name="rut" onSubmit= datos() ;> Rut: <input type="number" name="crut" size="15"> - <input type="text" name="dv" size="3"> <br>

<input type="submit" name="submit" value="Enviar formulario"> </form> </body> </html>

Vous aimerez peut-être aussi