La obtención del Registro Federal de Contribuyentes (RFC) en México, incluyendo su homoclave, es una tarea que a menudo genera interés en el ámbito de la programación. Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Esa es mi pregunta. Si alguien tiene el algoritmo o mejor aun el codigo de algun programa que obtenga el R.F.C. (Registro Federal de Contribuyentes) que incluya la homoclave.
Muchos programadores han intentado desarrollar sistemas para este fin. Por ejemplo, "yo hice un programa que obtenia el RFC pero SIN la homoclave".
¿Qué es el RFC y la Homoclave?
El RFC es un identificador único para personas físicas y morales en México. La homoclave son los ultimos 3 caracteres del RFC, y es para evitar duplicidad de RFC en caso de las personas que nacieron el mismo día y por coincidencia se llamen igual.
La Controversia y Búsqueda del Algoritmo de la Homoclave
Inicialmente, ha existido mucha duda sobre cómo se obtiene la homoclave. "¿Como se supone que se obtiene la homoclave??, siempre he tenido esa duda....." o "Ya decía yo que era extraño, esos ultimos 3 digitos nunca les he visto lógica.......".
Se llegó a pensar que "la única forma de obtener la homoclave sin buscarlo previamente en alguna BD, es que el usuario te la diga." y que "Así es.. de hecho la homoclave te la asigna hacienda..".
Lea también: guía detallada para calcular el IVA
Sin embargo, se ha aclarado que "Si se puede obtener la homoclave del R. F. C., solo tienen que solicitarle el algoritmo a Hacienda (se los proporcionan gratuito)". Además, "De hecho, Hacienda tambien les puede proporcionar el algoritmo para obtener el C. U. R. P.".
A pesar de esta aclaración, obtener el algoritmo de la Secretaría de Hacienda puede ser un desafío. "Yo ya escribí en 2 ocasiones a la Secretaria de Hacienda y no me hacen caso, y como bien dice cesar_nava de que se puede se puede, pero al parecer nadie quiere proporcionar ese algoritmo." Algunos mencionan que "Es difícil de conseguir precisamente porque hay cuates como este wy que se aprovechan de que tienen un contactito en el SAT y no quieren soltar la sopa con tal de sacar ventaja."
Estructura Base del RFC (Sin Homoclave) y CURP
La parte principal del RFC, sin considerar la homoclave, se forma con datos personales. "Las primeras palabras y letras se forma conforme a tu nombre y de la CURP... lo único que me falta por sacar es el último dígito...".
Una descripción común de esta parte es la siguiente:
- "Se forma por las primeras 2 letras de tu apellido"
- "después la primera letra de tu segundo apellido"
- "y la primera letra de tu primer nombre"
- "luego el año de nacimiento, mes y día (de 2 dígitos..)"
Un algoritmo más detallado para esta sección indica: "De lo que sobra, tomas la primer letra y la primer vocal. Haces lo mismo con el apellido paterno, pero solo tomas la primer letra, es decir, eliminas los articulos. Tomas las dos cifras del año de nacimiento (por ejemplo: 1976.. tomas 76). Tomas el numero de mes. Tomas el numero de dia. Si naciste en algun dia del 1 al 9, entonces tomas 09. Lo mismo pasa con el mes cuando naciste entre el mes 1 al 9."
Lea también: Algoritmo para determinar el salario después de impuestos
Esta parte es más sencilla de implementar, y de hecho, "No he podido pasarlo todo por falta de tiempo, pero esta parte es funcional y obtiene el RFC sin homoclave."
Búsqueda de la Homoclave y Ejemplos de Código
La comunidad de programadores ha mostrado un gran interés en encontrar y compartir soluciones para la homoclave. "ok rootk, si lo logras encontrar, publícalo no?, a mi también me da mucha curiosidad.......". Se ha propuesto "encontrarle la lógica que maneja y buscar la manera de yo implementarlo.. O porque no lo metemos como parte del taller de programación... jeje.. no estaría mal .. un programa que calcule el RFC y/o CURP..., el problema del RFC viene a partir de la homoclave . ."
Para desarrollar el algoritmo de la homoclave, se sugiere la necesidad de datos de referencia: "para poderla llevar a cabo deberíamos de tener varios RFC de referencia, porque así de la nada va a estar muuuy difícil....." o "Podemos estar jugando con los archivos que envió cesar_nava para sacar los datos... y eso tomarlo como base e irlo comparando con nuestro programa no crees..??"
Algunos usuarios han compartido sus avances y hallazgos. Se ha mencionado que "Esos programas que posteo cesar ya los habia visto y como seguramente lo notaron, si obtiene correctamente la homoclave." También se preguntó: "¿que acaso no te fijaste que hay posteados un procedimiento almacenado y un modulo en fox que ya lo hacen?". Un usuario que desconocía FOX mencionó: "lo siento, no me di cuenta. Desconozco el uso de FOx, pero me voy a poner manos a la obra. Dado esto, quisiera preguntar sobre el codigo posteado ¿Ya calcula la homoclave???". La respuesta fue: "Claro, implementa por ejemplo el SP y pruébalo. Luego analiza la rutina de la homoclave."
La comunidad ha trabajado en adaptar y compartir código en diversos lenguajes: "En unos días se los paso en Delphi y ASP." "Me tomé la libertad de "convertir" el código para calcular el RFC a C#, espero que alguien le sea útil. Saludos." A raíz de esto, otros solicitaron: "Tu codigo no lo tendras en Java, de casualidad si sabes java, y lees el codigo en c#, notaras que el 90% del codigo es compatible con java (si no es que todo).....". También persiste la pregunta: "y he logrado calcular la CURP pero NO logro calcular el digito verificador, ¿alguien tendra un ejemplo de codigo en visual basic para calcularlo?" Se ha propuesto: "Les voy a echar un ojo y despues pasar lo que pusiste en T/SQL lo pasaré a otro lenguaje e irlo adaptando a los demas..".
Lea también: todo sobre el incremento salarial
El interés principal sigue siendo el dígito verificador y la homoclave: "Lo que mas me interesaba era el digito verificador.. pero quedaremos en espera de como se obtiene la homoclave.."
RFC para Personas Morales
Una cuestión adicional que surge es la adaptación del algoritmo para diferentes tipos de contribuyentes. "Personas físicas bien; personas morales? usé el código escrito en c# y funciona bien. tengo una pregunta: ¿qué cambios debo hacer al algoritmo para que funcione con personas morales? gracias".
