martes, 26 de enero de 2010

VALIDAR RUT (CHILE)

Bueno aqui les dejo la una de las forma de validar el rut Chileno, esta solución me la envio un amigo de un foro (Rafael Diaz Gonzalez) :

Primero deben crear un nuevo objeto del tipo procedimiento y poner lo siguiene

En Rules

parm(In:&Rut,In:&DvR,Out:&validado);


/*
* Asigno como no validado a la variable a devolver
*
*/

&validado=0

/*
* Rutina de validación del rut
*/


&R = &Rut
&Y = 2
&Acum = 0
&Prod = 0
do while &R <> 0
&V1 = &R
&R = int(&R / 10)
&V2 = &V1 - (&R * 10)
&Prod = &V2 * &Y
&Acum = &Acum + &Prod
&Y = &Y + 1
if &Y = 8
&Y = 2
endif
enddo
&Resto = &Acum - (int(&Acum/11) * 11)
if &Resto = 1
&Dv = 'K'
else
if &Resto = 0
&Dv = '0'
else
&Dv = str(11 - &Resto, 1)
endif
endif
/*
* Fin Rutina de validación del rut
*/

/*
* Si es valido retorno un SN.Si=1
* Si no es Valido retorno un SN.No=2
*/

if &DvR=&Dv
&validado=1
else
&validado=0
endif



DONDE

Acum N(6)
Dv CHR(1)
DVR CHR(1)
Pro N(2)
R N(8)
Resto N(6)
Rut N(8)
V1 N(8)
V2 N(8)
validadoN(1)
Y (N1)

LUEGO EN LA TRANSACCION TIENES LOS ATRIBUTOS

EmpleadoRut N(8)
EmpleadoDigitoV C(1)

EN RULES PONES

&EsValido=(PPValidarRut(EmpleadoRut,EmpleadoDigitoV));
Error('Error: Debe ingresar un Rut correcto...') IF &EsValido= 0 ;

Saludos

3 comentarios: