lunes, 4 de octubre de 2010

Como hacer una validacion del RFC


En esta ocacion haremos una validacion al rfc con una funcion , ya que es muy util dentro de un sistema de altas, bajas cambios y listado(ABCL), en PHP; en el que porsupuesto incluimos el RFC como dato de entrada.

El Registro Federal de Contribuyentes (RFC) es una clave que tiene toda Persona física en México que realice alguna actividad licita que este obligada a pagar impuestos o toda Persona moral sin excepción. A estas personas se les llama contribuyentes. Esta clave debe llevar datos personales del contribuyente o persona física como su nombre y fecha de nacimiento; o nombre y fecha de origen de la persona moral.

Y se determina de la siguiente manera:

Para la Persona física: VECJ880326 XXX
Las primeras dos letras (VE) son el apellido paterno más la primera vocal interna del apellido paterno.
El tercer dígito (C) es la inicial del apellido materno. De no existir un apellido materno se utiliza una (X).
El cuarto dígito (J) es la inicial del primer nombre.
Los primeros dos dígitos son el año de nacimiento (88).
Los segundos dígitos son el mes de nacimiento (03 o marzo).
Los terceros dígitos son el día de nacimiento (26).
Por lo tanto la persona nació el veintiséis de marzo de 1988.
Los últimos dígitos (XXX) se le conoce como homoclave, esta la designa el SAT, dependiendo de algunos factores que realiza el SAT por medio de sistemas numéricos o alfanuméricos.
Esta homoclave la designará el SAT, revisando la petición a través de papel oficial ya designado...

Entonces para nuestra validación del rfc creamos la siguiente funcion:

function validaRfc($rfc){
$okRfc = 0;
$rfc = str_replace("-", "", $rfc);
if(strlen($rfc)>=10 and strlen($rfc)<=13){
$subsLetras = substr($rfc, 0, 4);
$subsNumeros = substr($rfc, 4, 10);
if ( !is_numeric($subsLetras) ){
if(is_numeric($subsNumeros)){
$okRfc = 1;
}else{
$okRfc = 0;
}
}else{
$okRfc = 0;
}
}else{
$okRfc = 0;
}
}

Dentro de la funcion defino $okRfc = 0; para tomarlo por default.

Suele pasar que al momento de que el usuario introduzca su rfc coloca guiones para separar letras de los numeros etc. Pues este mismo puede estar acostumbrado a escribirlo asi, por eso es importante  que dentro de la función se reemplazen guiones por espacios en blanco con str_replace(), como lo hago en la segunda linea del codigo.

En la siguiente linea utilizo una sentencia de condición para la longitud de del rfc.

Despues en las lineas de codigo posteriores, almaceno la primera parte de letras y por ende en la segunda la de numeros.

Nota 1: es interesante el uso de la funcion substr porque te facilita el trabajo de tener que dividirlo y despues hacerle una serie de operaciones para llegar al mismo fin, ya que con esta función substraemos la parte del string que ocupamos y le hacemos la operación final como en este caso.

Ahora como el valor devuelto por la función es string ocupamos una sentencia de condicional para evaluar las dos ultimas lineas de codigo en donde comprobamos si el contenido de la variable es string o es numeric.

Asi obtenemos la validacion del rfc.


Nota 2: hago enfasis en la definicion de $okRfc = 0; pues si una de estas condiciones no se llegara a cumplir, por default la funcion devolvera false o “0”.

No hay comentarios:

Publicar un comentario