Módulo 11

En Chile se usan números de rut como este, 97030000-7, que consiste en dos partes: un número que va antes del guión y un dígito verificador después del mismo. Este dígito es único para el número y es siempre un caractér númerico o la letra K.  Es decir en rut 97030000-7 es válido pero el rut 97030000-8 no lo es.

¿Cómo se puede calcular el dígito verificador teniendo un número?

Compartimos esta función simple que usamos en nuestros desarrollos y que esperamos te ahorre algún tiempo de programación:

function getMod11Dv( $num ){
/* --------------------------------------------------------------------------------------- */
  $digits = str_replace( array( '.', ',' ), array( ''.'' ), strrev($num ) );
  if ( ! ctype_digit( $digits ) )
  {
    return false;
  }

  $sum = 0;
  $factor = 2;
 
  for( $i=0;$i<strlen( $digits ); $i++ )
  {
    $sum += substr( $digits,$i,1 ) * $factor;
    if ( $factor == 7 )
    {
      $factor = 2;
    }else{
     $factor++;
   }
  }
 
  $dv = 11 - ($sum % 11);
  if ( $dv < 10 )
  {
    return $dv;
  }
  if ( $dv == 10 )
  {
    return 'K';
  }
  return 0;
}

Una explicación sobre la fórmula de cálculo la puedes encontrar en este artículo de Wikipedia, esperamos que te sea de utilidad.

Anuncios

One thought on “Módulo 11

  1. Hola: estoy haciendo un formulario en Adobe Acrobat, dentro del cual en uno de los campos se digita el RUT y luego el dígito verificador dv).
    Yo ya conocía la fórmula para calcularlo, y por supuesto, hacerlo manualmente es mucho más fácil que escribir la fórmula.
    Soy un ultra novato en JS, y quisiera preguntarte qué había que agregar al script, considerando que debería leer el RUT (número) del campo “RUT” y escribir el dv en el campo “DV”
    Gracias de antemano.

Responder

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