Foros del Web » Programando para Internet » PHP »

Dígito verificador del RUT

Estas en el tema de Dígito verificador del RUT en el foro de PHP en Foros del Web. Algún programador chileno, puede mandarme el algoritmo para sacar el DV. del RUT? Necesito aplicarlo en PHP, y la verdad no lo recuerdo. Necesito almacenar ...
  #1 (permalink)  
Antiguo 11/06/2002, 02:10
Avatar de Chaudx  
Fecha de Ingreso: marzo-2002
Ubicación: Quilpué, Chilito lindo
Mensajes: 345
Antigüedad: 15 años, 9 meses
Puntos: 2
Dígito verificador del RUT

Algún programador chileno, puede mandarme el algoritmo para sacar el DV. del RUT?
Necesito aplicarlo en PHP, y la verdad no lo recuerdo.
Necesito almacenar el rut sin DV en una tabla y cuando haga la consulta que lo muestre, por medio de la aplicación de la función.
Si alguien lo tiene mucho les agradecería me lo hicieran llegar.
Saludos.
  #2 (permalink)  
Antiguo 11/06/2002, 10:55
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 17 años, 2 meses
Puntos: 3
Re: Dígito verificador del RUT

Hola, yo tengo uno que me dió Bakanzzip hace unos días, pero es en JavaScript, quizás te sirva:
Código:
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>

<head>
<script>
function quitaFormatoRut(strVal)

{
var strTmp = ''
var i;

if (strVal.charAt(0) =='0') {
for ( i=1; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);
}
else
for ( i=0; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);


return strTmp;
}

function validaDV( strDV )

	{
		dv = strDV + ""
		if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k' && dv != 'K')
			return false;
	  
		return true;
	}




function chequeaDV(thisRut)

	{		
		
		var strRut = quitaFormatoRut(thisRut.value);
		var i;
		
		if (thisRut.value =="")
			return false;
			
		largo = strRut.length;
		
		if ( largo < 2 )
		{
			alert("Debe ingresar el rut completo")
			thisRut.focus();
			thisRut.select();
			return false;
		}

		if ( largo > 2 )
			strRutSD = strRut.substring(0, largo - 1);
		else
			strRutSD = strRut.charAt(0);
			
		strDv = strRut.charAt(largo-1);
		if (!validaDV( strDv ))
		{
			alert("Su digito validador del rut " + thisRut.value + " es incorrecto")
			thisRut.focus();
			thisRut.select();
			return false
		}

		if ( strRutSD == null || strDv == null )
		    return 0

		var dvr = '0'

		intSuma = 0
		intFactor  = 2

		for (i= strRutSD.length -1 ; i >= 0; i--)
		{
			intSuma = intSuma + strRutSD.charAt(i) * intFactor
			if (intFactor == 7)
				intFactor = 2
			else    
				intFactor++
		}


		intResto = intSuma % 11
		if (intResto == 1)
			dvr = 'k'
		else if (intResto == 0)
			dvr = '0<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>

<head>
<script>
function quitaFormatoRut(strVal)

{
var strTmp = ''
var i;

if (strVal.charAt(0) =='0') {
for ( i=1; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);
}
else
for ( i=0; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);


return strTmp;
}

function validaDV( strDV )

	{
		dv = strDV + ""
		if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k' && dv != 'K')
			return false;
	  
		return true;
	}




function chequeaDV(thisRut)

	{		
		
		var strRut = quitaFormatoRut(thisRut.value);
		var i;
		
		if (thisRut.value =="")
			return false;
			
		largo = strRut.length;
		
		if ( largo < 2 )
		{
			alert("Debe ingresar el rut completo")
			thisRut.focus();
			thisRut.select();
			return false;
		}

		if ( largo > 2 )
			strRutSD = strRut.substring(0, largo - 1);
		else
			strRutSD = strRut.charAt(0);
			
		strDv = strRut.charAt(largo-1);
		if (!validaDV( strDv ))
		{
			alert("Su digito validador del rut " + thisRut.value + " es incorrecto")
			thisRut.focus();
			thisRut.select();
			return false
		}

		if ( strRutSD == null || strDv == null )
		    return 0

		var dvr = '0'

		intSuma = 0
		intFactor  = 2

		for (i= strRutSD.length -1 ; i >= 0; i--)
		{
			intSuma = intSuma + strRutSD.charAt(i) * intFactor
			if (intFactor == 7)
				intFactor = 2
			else    
				intFactor++
		}


		intResto = intSuma % 11
		if (intResto == 1)
			dvr = 'k'
		else if (intResto == 0)
			dvr = '0'
		else
		{
			dvi = 11 - intResto
			dvr = dvi + ""
		}
		
		
		if ( dvr != dv.toLowerCase() )
		{
			alert("EL rut " + thisRut.value + " es incorrecto")
			thisRut.focus();
			thisRut.select();
			return false
		}

		return true

	}

 	function formateaRut(thisRut)

	{  
		var tmpstr = "";
		var strRut = thisRut.value
		var i
		
		//alert(thisRut.value)
		if (thisRut.value == "")
			return false;
		for ( i=0; i < strRut.length ; i++ )
			if ( strRut.charAt(i) != ' ' && strRut.charAt(i) != '.' && strRut.charAt(i) != '-' )
				tmpstr = tmpstr + strRut.charAt(i);
		strRut = tmpstr;
		largo = strRut.length;

		if ( largo < 2 )
		{
			alert("Debe ingresar el rut completo");
			thisRut.focus();
			thisRut.select();
			return false;
		}


		for (i=0; i < largo ; i++ )
		{ 
			if ( strRut.charAt(i) !="0" && strRut.charAt(i) != "1" && strRut.charAt(i) !="2" && strRut.charAt(i) != "3" && strRut.charAt(i) != "4" && strRut.charAt(i) !="5" && strRut.charAt(i) != "6" && strRut.charAt(i) != "7" && strRut.charAt(i) !="8" && strRut.charAt(i) != "9" && strRut.charAt(i) !="k" && strRut.charAt(i) != "K" ) 
			{
				alert("El valor ingresado no corresponde a un R.U.T valido");
				thisRut.focus();
				thisRut.select();
				return false;
			}
		}


		var invertido = "";

		for ( i=(largo-1),j=0; i>=0; i--,j++ )
		  invertido = invertido + strRut.charAt(i);


		var dtexto = "";

		dtexto = dtexto + invertido.charAt(0);
		dtexto = dtexto + '-';
		cnt = 0;

		for ( i=1,j=2; i<largo; i++,j++ )
		{		  
			if ( cnt == 3 )
			{
				dtexto = dtexto + '.';
				j++;
				dtexto = dtexto + invertido.charAt(i);
				cnt = 1;
			}
			else
			{ 
				dtexto = dtexto + invertido.charAt(i);
				cnt++;
			}
		}

		invertido = "";

		for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )
			invertido = invertido + dtexto.charAt(i);


		thisRut.value = invertido;  

		if ( validaDV(strRut) )
			return true;
			
		return false; 
	}
	
	
</script>
<title>Pagina de Pruebas</title>
</head>

<body>


	<table border=0 align=right width=180>
	<tr>
		<td bgcolor=orange><font face=verdana size=1>Rut </font></td>
		<td bgcolor=orange><font face=verdana size=1><INPUT type="text" id=text1 name=rut onchange="formateaRut(this); chequeaDV(this);" maxlength=15 size=12></font></td>
	</tr>
	</table>



</body>
</html>
<img src="http://www.artereal.com/cerrado3.gif"> <font size="1" color="#808080">[I]Un verdadero signo de un buen hombre es si ama a su padre y madre.[/CODE]
  #3 (permalink)  
Antiguo 11/06/2002, 13:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Dígito verificador del RUT

En su dia implemente el codigo para verificar/obtener el digito verificador del RUT (chileno):

Aqui lo puedes ver:
<a href='ir.asp?http://www.forosdelweb.com/mensaje.asp?id=80823' target='_blank'>http://www.forosdelweb.com/mensaje.asp?i...</a>

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.