Inicio > JavaScript > Comprobar Rut (Digito Verificador) JavaScript

Comprobar Rut (Digito Verificador) JavaScript

Todos los chilenos o residentes permanente de esta larga y angosta faja de tierra poseemos un número identificatorio único e irrepetible, el llamado Rol Único Tributario o RUT, la entidad estatal responsable de la generación, mantención y actualización del dichoso RUT es el Servicio de Impuestos Internos (SII).
Ahora bien, para asegurar la correcta manipulación del RUT (ya sea verbal o visual) se le añade o agrega un dígito verificador (DV) al final del mismo. ¿Cómo se obtiene el DV?, aplicando una formula aritmética llamada Módulo 11 al RUT. Existen otras alternativas para obtener el DV pero en Chile se usa el Módulo 11.
Así entonces, para verificar que un rut es correcto se debe aplicar el algoritmo del módulo 11 al número (lo que va antes del guión). Por lo tanto, si el resultado de la operación anterior coincide con el Dígito Verificador (DV) el rut es válido.
¿Se entendió?, no importa con el ejemplo se entenderá, eso espero. Antes de ir al ejemplo debo decir que el DV tiene tres (3) reglas fundamentales.
El Dígito Verificador es:
  • igual al resultado si éste está entre 1 y 9
  • K si el resultado es 10 y
  • 0 si el resultado es 11.

Ejemplo de aplicación del Módulo 11

  1. Dado el RUT 12 345 678-5. Llamaremos Número a 12 345 678 y Digito Verificador (DV) a 5
  2. Tomaremos la serie numérica: 2, 3, 4, 5, 6, 7.
  3. Se multiplicará cada dígito del Número por su correspondiente en la serie numérica, la multiplicación la hacemos de derecha a izquierda, si el Número es más largo que la serie se vuelve a comenzar en 2.
  4. Multiplicando
    • 8 x 2 = 16
    • 7 x 3 = 21
    • 6 x 4 = 24
    • 5 x 5 = 25
    • 4 x 6 = 24
    • 3 x 7 = 21
    • 2 x 2 = 4
    • 1 x 3 = 3
  5. La suma de cada multiplicación es: 16+21+24+25+24+21+4+3 = 138
  6. El siguiente paso es dividir este resultado en 11 (por esto se llaman módulo 11). Sólo se toma en cuenta el cuociente entero.
  7. 138 / 11 = 12 el resto es 6. ¿Dudas?, comprobemos la división (11 x 12) + 6 = 132 + 6 = 138, ¡perfecto!.
  8. Ahora sólo nos queda restar el resto (6) a 11, lo cual es: 11 – 6 = 5
  9. El resultado es 5
  10. La primera regla del módulo 11 dice que es el mismo número si éste está en el rango 1-9 entonces el Digito Verificador del Número: 12 345 678 es 5, en consecuencia el RUT dado al inicio del ejemplo es CORRECTO.

Segundo Ejemplo

Ahora lo haremos un poco más rápido: Comprobar si es correcto el RUT: 4 299 006-K.
  • 6 x 2 = 12
  • 0 x 3 = 0
  • 0 x 4 = 0
  • 9 x 5 = 45 + 12 = 57
  • 9 x 6 = 54 + 57 = 111
  • 2 x 7 = 14 + 111 = 125
  • 4 x 2 = 8 + 125 = 133
  • 133 / 11 = 12 resto 1
  • 11 – 1 = 10
  • La segunda regla dice: K si el resultado es 10, en consecuencia el RUT 4 299 006-K es correcto.

Ahora viene la parte del codigo, este codigo lo hice en javascript consta de dos funciones, una obtiene el digito verificador y otra comprueba que el rut ingresado sea corecto.

function validarRut(numero,dv) {
				if(!isNaN(numero) || numero.length == 0 || numero.length > 8 ) {
					return false;
				} else {
					if(getDV(numero) == dv) return true;
				}
				return false;
			}
			function getDV(numero) {
				nuevo_numero = numero.toString().split("").reverse().join("");
				for(i=0,j=2,suma=0; i < nuevo_numero.length; i++, ((j==7) ? j=2 : j++)) {
					suma += (parseInt(nuevo_numero.charAt(i)) * j);	
				}
				n_dv = 11 - (suma % 11);
				return ((n_dv == 11) ? 0 : ((n_dv == 10) ? "K" : n_dv));
			}

Saludos!

About these ads
  1. Matt
    agosto 26, 2010 en 11:39 am | #1

    es una muy buena formula..bien explikdo. Gracias

  2. margarita
    abril 4, 2012 en 4:24 pm | #2

    Muy bien explicado, muchas gracias

  3. gloria
    abril 18, 2012 en 12:19 pm | #3

    Me tengo que tomar minutos para hacerlo, pero estoy sobre el tiempo y solo quiero verificar un rut, más rápido, pues el sii. me lo rechaza y es el que he operado siempre.Gracias, espero que me informen cómo verificar un RUT para ingresar la D.Rta. chau.

  4. gloria
    abril 18, 2012 en 7:49 pm | #4

    Regresé, y retomé tu fórmula sin apresurarme, super clara, pero te debes dar el tiempo en leer hasta el final para entenderla especialmente en el 2do. ejemplo. Pensé que era super complicada, pero con ” paciencia ” que es la q me hace falta, lo logré. Muchas gracias.

  5. CRISTIAN ANDONAEGUI
    junio 13, 2012 en 5:18 pm | #5

    amigo ¿ como llamo a la funcion y le paso los parametros ? GRACIAS !!.

  6. estebanfuentealba
    junio 20, 2012 en 9:24 pm | #6

    Para llamar a la función … Ejemplo si queremos validar el rut 16600256-K debemos utilizar la función de la siguiente manera:

    var isValido = validarRut(16600256,’K’);
    alert(((isValido)?”Es Valido” : “No válido” ));

    Saludos!

  1. No trackbacks yet.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: