Comunidad de diseño web y desarrollo en internet online

No calcula RUT o módulo 11 AS.

Citar            
MensajeEscrito el 05 Jul 2008 04:58 pm
Hola, bueno estoy tratando de verificar el RUT(chileno) o el también llamado Módulo 11.
Traté de hacerlo a través de mi código de JAVA modificandolo para pasarlo a ActionScript, pero me da dos errores que hasta el momento no he podido aclarar.

Por lo que busque en Internet, algún código para Action Script, y encontré este:

Código :

on (release){
  // Definicion de Variables Utilizadas
  var Suma = 0;
  var rut = xRut;
  var NumMag = 2;
  var Resto = 0;
  // Defino el arreglo con los posibles digitos verificadores
  var DigVer = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "K", "0");
  var ParteNumerica = new Array();

  // Valida que el rut no este vacio
  if (rut.length == 0) { return false; }

  // Copio solo la parte numerica, sin espacios ni puntos
  // en otra variable para calcular el digito verificador
  for (j=0, i=0; j<rut.length; j++)
  {
   if (rut.charAt(j) != ' ' && rut.charAt(j) != '.' && rut.charAt(j) != '-')
 {
    ParteNumerica[i] = rut.charAt(j);
 ++i;
    }
  }
  // Se calcula el digito verificador del rut
  for (i=ParteNumerica.length-1; i>=0; i--, NumMag++)
  {
   Suma += ParteNumerica[i]*NumMag;
   trace(Suma +' '+  ParteNumerica[i] +' '+ NumMag);
   if (NumMag>6) { NumMag = 1; }
  }
  Resto = 11-(Suma%11);
  if (DigVer[Resto] != Dv.toUpperCase())
  {
 trace("Rut válido");
  }
   else
   {
 trace("Rut no válido");
   }
 }


En la web de su creador http://www.dcc.uchile.cl/~mortega/microcodigos/validarrut/actionscript.html se explica como utilizarlo en flash:
"Nota del Autor:
El código devuelve un true o false solamente, el que la persona que diseñe tiene que asignar la función que quiera. Usa dos campos de textos de input; uno de la pate numerica con la variable "xRut" y otro con el campo del dígito verificador "Dv". Este código va directamente en el boton de "aceptar" en el formulario en cuestión:"


Sigo las instrucciones pero el problema es que si coloco un RUT (parte entera) bien, y la parte del Dígito Verificador Mal (con intención) me arroja que el RUT esta correcto igualmente.
Verifiqué el cálculo, paso a paso, pero esta bien :shock: .


Este es el cálculo de JAVA que lo quize traspasar a Action Script, pero que no me resultó.

Código :

on (release){
var largo   =   0;
var   suma   =   0;
var factor   =   0;
var digito   =   0;
largo   =   xRUT.length();
var factor   =   2;
var   dvi =   String.valueOf(rut.charAt(largo-1))
   for (i=largo -3 ; i>=0 ; i--)
   {
      digito   =   Integer.parseInt(String.valueOf(rut.charAt(i)));
      suma   =   suma+(digito*factor);
      factor++;
         if(factor==8)   
         {
            factor   =   2;
         }
   }
   var   dv   =   String.valueOf(11-(suma/11));
   if(dv.equals("10"))
    {
       dv="K";
    }
   if(dv.equals("11"))
    {
       dv="0";
    }
   if(dv.equals(dvi))
    {
   trace   ("Correcto");
    }
    else
    {
   trace   ("Incorrecto");
    }
}


Agradecería su ayuda :crap: :crap: :oops:

Por johnsheppard

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Jul 2008 07:40 pm
Suponiendo que el campo de texto que contiene al rut se llame "rut" y el que contiene al código verificador se llame "digito" y el botón que llama a la función se llame botón quedaría algo así:

Código :

function verifica(){
   
   var rutValue:String = rut.text;
   var digValue:String = digito.text;
   
   if(isNaN(rutValue) || rutValue.length < 7){
      
      trace("codigo RUT inválido");
      
   }else if( (isNaN(digValue) && digValue != "K" && digValue != "k") || digValue.length != 1){
      
      trace("digito verificador inválido");
      
   }else{      
      
      var serie:Number = 2;
      var index:Number = rutValue.length;
      var total:Number = 0;
      var i:Number;
      var n:Number;
      
      for(i = 0; i < rutValue.length; i++){
         
         n = Number(rutValue.slice(index - 1, index));
         
         total += n*serie;
         
         serie++;
         
         if(serie > 7){
            
            serie = 2;
            
         }
         
         index--;
         
      }
      
      var resto:Number = 11 - (total%11);
      
      trace(resto);
      
      if(String(resto) != digValue){
         
         if( (resto == 11 && digValue == "0") || (resto == 10 && digValue.toUpperCase() == "K")){
            
            trace("digito verificador correcto!!!");
            
         }else{            
            
            trace("digito verificador incorrecto");
            
         }
         
      }else{
         
         trace("digito verificador correcto!!!");
         
      }
      
   }
   
}

boton.onPress = function():Void{
   
   verifica();
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.