![]() |
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 (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 coincdencia se llamen igual. Gracias |
yo hice un programa que obtenia el RFC pero SIN la homoclave. Como se supone que se obtiene la homoclave??, siempre he tenido esa duda..... por cierto, para hacerlo sin la homoclave es muy sencillo, recuerdo que fue de mis primeras tareas cuando estaba en mi primera clase de programacion, no te deberia de causar mucho problema...... p.d: ¿ en que lenguaje? |
La única forma de obtener la homoclave sin buscarlo previamente en alguna BD, es que el usuario te la diga. |
Cita:
Y tambien es importante saber en que lenguaje lo deseas desarrollar Salu2 |
Ya decia yo que era extraño, esos ultimos 3 digitos nunca les he visto logica....... |
Solo para aclararles. Si se puede obtener la homoclave del R. F. C., solo tienen que solicitarle el algoritmo a Hacienda (se los proporcionan gratuito). De hecho, Hacienda tambien les puede proporcionar el algoritmo para obtener el C. U. R. P. Aqui les dejo el enlace a un programa que les obtiene el RFC (con todo y homoclave): http://www.aplicarh.com/Descargas/utlfree/CalcRFC.exe Aqui otro a un programa que les obtiene el CURP: http://www.aplicarh.com/Descargas/utlfree/CalcCURP.exe |
Cita:
|
ok rootk, si lo logras encontrar, pubicalo no?, a mi tambien me da mucha curiosidad....... |
Cita:
O porque no lo metemos como parte del taller de programacion... jeje.. no estaría mal .. un programa que calcule el RFC y/o CURP..., el problema del RFC viene a partir de la homoclave . :pensando: . porque las primeras palabras y letras se forma conforme a tu nombre y de la CURP... lo unico que me falta por sacar es el último dígito... RFC: se forma por las primeras 2 letras de tu apellido, despues 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 digitos..) pero la homoclave..?? :pensando: Ejemplo Juan Pérez Pérez que nacio el 20 de Julio de 1973 RFC= PEPJ730720 - ??? (y la homoclave ) P.D.- Se que a lo mejor estoy offtopic. :borracho: . pero ya sabemos que especialmente en éste foro de repente de una cosa salen otras.. pero claro que todo es con el fin de aprender.. :-D |
es buena idea .... PERO, para poderla llevar a cabo deberiamos de tener varios RFC de referencia, porque asi de la nada va a estar muuuy dificil..... |
Cita:
|
podria ser........jejeje |
Cierto, no lo sabía. Depues de verificar que el programa efectivamente funciona. Me puse a buscar algo en internet. Despues de asquearme de tantos y tantos sujetos que cobran 100 pesos en promedio por cada dato que con los programas anteriores gratuitamente se obtienen, y de postear la liga que cesar_nava proporcionó en igual número de sitios. Encontré un SP que funciona sin problemas para las personas físicas: Se los dejo en DOS post, por que excede los 10000 caracteres por mensaje. primera parte: Código: CREATE PROCEDURE SP_CALCULA_RFC |
Segunda parte: Código: -- --------------------------------------------- y aunque este y mucho más fácil e intuitivo. Les dejo el algorítmo del RFC que encontré en el mismo sitio: Cita:
|
Encontré este otro, pero esta en FOX Código: CODIGO DESARROLLADO EN VISUAL FOX PRO PARA GENERAR RFC CON HOMOCLAVE Y DIGITO VERIFICADOR SEGUN HACIENDA EN MEXICO |
Buena la info Myakire :arriba: 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.. Lo que mas me interesaba era el digito verificador.. pero quedaremos en espera de como se obtiene la homoclave.. :pensando: |
Yo ya escribi 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. Esos programas que posteo cesar ya los habia visto y como seguramente lo notaron, si obtiene correctamente la homoclave. Sigamos buscando, y si alguien logra obtenerlo, por favor publiquelo en el foro |
Caray webbeginner ...... ¿que acaso no te fijaste que hay posteados un procedimiento almacenado y un modulo en fox que ya lo hacen? |
Esto es como en España la letra que acompaña de siempre al número de identificación real. No sirve para nada, es obtenida desde el número y el algoritmo es conocido abiertamente. |
Cita:
:borracho: 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??? Gracias :arriba: . |
Cita:
|
Gracias por responder Myakire. ;-) |
Calcular Digitoverificador RFC - CURP he logrado calcular el RFC con digito verificador y he logrado calcular la CURP pero NO logro calcular el digito verificador, ¿alguien tendra un ejemplo de codigo en visual basic para calcularlo? |
Codigo VB para obtener RFC Hola a todos: Me permiti pasar parte del store procedure que posteo Myakire a codigo VB. No he podido pasarlo todo por falta de tiempo, pero esta parte es funcional y obtiene el RFC sin homoclave. Espero sirva. Código: Function calcular_rfc(NOMBRES_AUX As String, _ |
Me tomé la libertad de "convertir" el código para calcular el RFC a C#, espero que alguien le sea útil. Saludos. ------------------------------------------------------------ Código: /// <summary> |
hyadus, copie y pegúe tu código tal cual pero en ésta línea: //agregamos la fecha yymmdd (por ejemplo: 680825, 25 de agosto de 1968 ) rfc += fecha.Substring(6, 2) + fecha.Substring(3, 2) + fecha.Substring(0, 2); me marca error, inclusive usé la fecha que tienes de ejemplo (680825) si tengo tiempo le echaré un ojo a tu code.. Salu2 |
Java [QUOTE=hyadus;1648019]Me tomé la libertad de "convertir" el código para calcular el RFC a C#, espero que alguien le sea útil. Saludos. ------------------------------------------------------------ Tu codigo no lo tendras en Java, de casualidad |
Cita:
|
Cita:
|
Personas fisicas 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 |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Oigan necesito crear el RFC en visual 6.0, veo que pusieron el codigo peo como hago para que genere la funcion de rfc espero y me ayuden saludos |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? claro que si, parseando codigo, espere por favor... |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Cita:
|
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Aquí está el código en Java, tienen que validar en su forma no aceptar acentos o remplazar las letras con acentos porque esto influye en el cálculo de la homoclave, no sé que pasa con la Ñ alguien sabe? //Calcula el RFC de una persona física su homoclave incluida. public String CalcularRFC(String nombre, String apellidoPaterno, String apellidoMaterno, String fecha) { //Cambiamos todo a mayúsculas nombre = nombre.toUpperCase(); apellidoPaterno = apellidoPaterno.toUpperCase(); apellidoMaterno = apellidoMaterno.toUpperCase(); //RFC que se regresa String rfc = ""; //Quitamos los espacios al principio y final del nombre y apellidos nombre = nombre.trim(); apellidoPaterno = apellidoPaterno.trim(); apellidoMaterno = apellidoMaterno.trim(); //Quitamos los artículos de los apellidos, incluye los de nombres extranjeros apellidoPaterno = QuitarArticulos(apellidoPaterno); apellidoMaterno = QuitarArticulos(apellidoMaterno); //Agregamos el primer caracter del apellido paterno rfc = apellidoPaterno.substring(0,1); //Buscamos y agregamos al rfc la primera vocal del primer apellido for(int i = 0; i < apellidoPaterno.length(); i++) { if (EsVocal(apellidoPaterno.charAt(i))) { rfc += apellidoPaterno.charAt(i); break; } } //Agregamos el primer caracter del apellido materno rfc += apellidoMaterno.substring(0, 1); //Agregamos el primer caracter del primer nombre rfc += ignoraNombreComun(nombre); //agregamos la fecha en formato yymmdd rfc += fecha.substring(4,6) + fecha.substring(2,4) + fecha.substring(0,2); //Le agregamos la homoclave al rfc rfc=CalcularHomoclave(apellidoPaterno + " " + apellidoMaterno + " " + nombre, fecha, rfc); return rfc; } // Calcula la homoclave private String CalcularHomoclave(String nombreCompleto, String fecha, String rfc) { //Guardara el nombre en su correspondiente numérico StringBuilder nombreEnNumero = new StringBuilder(); ; //La suma de la secuencia de números de nombreEnNumero long valorSuma = 0; //Tablas para calcular la homoclave Hashtable tablaRFC1 = new Hashtable(); tablaRFC1.put("&", "10"); tablaRFC1.put("Ñ", "10"); tablaRFC1.put("A", "11"); tablaRFC1.put("B", "12"); tablaRFC1.put("C", "13"); tablaRFC1.put("D", "14"); tablaRFC1.put("E", "15"); tablaRFC1.put("F", "16"); tablaRFC1.put("G", "17"); tablaRFC1.put("H", "18"); tablaRFC1.put("I", "19"); tablaRFC1.put("J", "21"); tablaRFC1.put("K", "22"); tablaRFC1.put("L", "23"); tablaRFC1.put("M", "24"); tablaRFC1.put("N", "25"); tablaRFC1.put("O", "26"); tablaRFC1.put("P", "27"); tablaRFC1.put("Q", "28"); tablaRFC1.put("R", "29"); tablaRFC1.put("S", "32"); tablaRFC1.put("T", "33"); tablaRFC1.put("U", "34"); tablaRFC1.put("V", "35"); tablaRFC1.put("W", "36"); tablaRFC1.put("X", "37"); tablaRFC1.put("Y", "38"); tablaRFC1.put("Z", "39"); tablaRFC1.put("0", "0"); tablaRFC1.put("1", "1"); tablaRFC1.put("2", "2"); tablaRFC1.put("3", "3"); tablaRFC1.put("4", "4"); tablaRFC1.put("5", "5"); tablaRFC1.put("6", "6"); tablaRFC1.put("7", "7"); tablaRFC1.put("8", "8"); tablaRFC1.put("9", "9"); //TablaRFC 2 Hashtable tablaRFC2 = new Hashtable(); tablaRFC2.put("0", "1"); tablaRFC2.put("1", "2"); tablaRFC2.put("2", "3"); tablaRFC2.put("3", "4"); tablaRFC2.put("4", "5"); tablaRFC2.put("5", "6"); tablaRFC2.put("6", "7"); tablaRFC2.put("7", "8"); tablaRFC2.put("8", "9"); tablaRFC2.put("9", "A"); tablaRFC2.put("10", "B"); tablaRFC2.put("11", "C"); tablaRFC2.put("12", "D"); tablaRFC2.put("13", "E"); tablaRFC2.put("14", "F"); tablaRFC2.put("15", "G"); tablaRFC2.put("16", "H"); tablaRFC2.put("17", "I"); tablaRFC2.put("18", "J"); tablaRFC2.put("19", "K"); tablaRFC2.put("20", "L"); tablaRFC2.put("21", "M"); tablaRFC2.put("22", "N"); tablaRFC2.put("23", "P"); tablaRFC2.put("24", "Q"); tablaRFC2.put("25", "R"); tablaRFC2.put("26", "S"); tablaRFC2.put("27", "T"); tablaRFC2.put("28", "U"); tablaRFC2.put("29", "V"); tablaRFC2.put("30", "W"); tablaRFC2.put("31", "X"); tablaRFC2.put("32", "Y"); //TablaRFC 3 Hashtable tablaRFC3 = new Hashtable(); tablaRFC3.put("A", "10"); tablaRFC3.put("B", "11"); tablaRFC3.put("C", "12"); tablaRFC3.put("D", "13"); tablaRFC3.put("E", "14"); tablaRFC3.put("F", "15"); tablaRFC3.put("G", "16"); tablaRFC3.put("H", "17"); tablaRFC3.put("I", "18"); tablaRFC3.put("J", "19"); tablaRFC3.put("K", "20"); tablaRFC3.put("L", "21"); tablaRFC3.put("M", "22"); tablaRFC3.put("N", "23"); tablaRFC3.put("O", "25"); tablaRFC3.put("P", "26"); tablaRFC3.put("Q", "27"); tablaRFC3.put("R", "28"); tablaRFC3.put("S", "29"); tablaRFC3.put("T", "30"); tablaRFC3.put("U", "31"); tablaRFC3.put("V", "32"); tablaRFC3.put("W", "33"); tablaRFC3.put("X", "34"); tablaRFC3.put("Y", "35"); tablaRFC3.put("Z", "36"); tablaRFC3.put("0", "0"); tablaRFC3.put("1", "1"); tablaRFC3.put("2", "2"); tablaRFC3.put("3", "3"); tablaRFC3.put("4", "4"); tablaRFC3.put("5", "5"); tablaRFC3.put("6", "6"); tablaRFC3.put("7", "7"); tablaRFC3.put("8", "8"); tablaRFC3.put("9", "9"); tablaRFC3.put("", "24"); tablaRFC3.put(" ", "37"); //agregamos un cero al inicio de la representación númerica del nombre nombreEnNumero.append(0); //Recorremos el nombre y vamos convirtiendo las letras en //su valor numérico for(int i=0; i < nombreCompleto.length(); i++) { if (tablaRFC1.containsKey(nombreCompleto.charAt(i)+"" )) nombreEnNumero.append(tablaRFC1.get(nombreCompleto .charAt(i)+"")); else nombreEnNumero.append("00"); } //Calculamos la suma de la secuencia de números //calculados anteriormente //la formula es: //( (el caracter actual multiplicado por diez) //mas el valor del caracter siguiente ) //(y lo anterior multiplicado por el valor del caracter siguiente) for (int i = 0; i < nombreEnNumero.length()-1; i++) { valorSuma += ((Integer.parseInt(""+nombreEnNumero.charAt(i)) * 10) + Integer.parseInt(""+nombreEnNumero.charAt(i+1))) * Integer.parseInt(""+nombreEnNumero.charAt(i+1)); } int div = 0, mod = 0; div = (int)valorSuma % 1000; mod = div % 34; div = (div - mod) / 34; int indice = 0; String hc = ""; //los dos primeros caracteres de la homoclave while (indice <= 1) { if (tablaRFC2.containsKey(""+((indice == 0) ? div : mod))) hc += tablaRFC2.get(""+((indice == 0) ? div : mod)); else hc += "Z"; indice++; } //Agregamos al RFC los dos primeros caracteres de la homoclave rfc += hc; //Aqui empieza el calculo del digito verificador basado en lo que tenemos del RFC int rfcAnumeroSuma = 0, sumaParcial = 0; for (int i = 0; i < rfc.length(); i++) { if (tablaRFC3.containsKey((""+rfc.charAt(i)))) { rfcAnumeroSuma = Integer.parseInt((String)tablaRFC3.get(""+rfc.char At(i))); sumaParcial += (rfcAnumeroSuma * (14 - (i + 1))); } } int moduloVerificador = sumaParcial % 11; if (moduloVerificador == 0) rfc += "0"; else { sumaParcial = 11 - moduloVerificador; if (sumaParcial == 10) rfc += "A"; else rfc += sumaParcial; } return rfc; } // Verifica si el caracter pasado es una vocal private boolean EsVocal(char letra) { if (letra == 'A' || letra == 'E' || letra == 'I' || letra == 'O' || letra == 'U') return true; return false; } // Remplaza los artículos comúnes en los apellidos en México con caracter vacío (""). private String QuitarArticulos(String palabra) { return palabra.replace("DEL ", "").replace("LAS ", "").replace("DE ", "").replace("LA ", "").replace("Y ", "").replace("A ", "").replace("MC ","").replace("LOS ", "").replace("VON ","").replace("VAN ",""); } //Regresa la primera vocal del primer nombre ignorando los nombres comunes como José o María private char ignoraNombreComun(String nombre) { String nombres[] = nombre.split("\\s"); if(nombres.length > 1) if(nombres[0].equals("JOSE")||nombres[0].equals("MARIA")||nombres[0].equals("MA.")||nombres[0].equals("MA")) return nombres[1].charAt(0); return nombre.charAt(0); } |
Re: Calcular Digitoverificador RFC - CURP Cita:
soy nuevo en el foro y necesito algun procedimiento para calcular el RFC y el digito verificador, ademas de la CURP.... De casualidad tendras el procedimiento para calcular el R.F.C. el curp en Delphi... antes ya saludos y gracias |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? De casualidad Myakire tendras este codigo de Fox en Delphi.... (codigo para generar RFC con Homoclave y digito Verificador segun hacienda en mexico) si lo tienes podrías pegas en el post??... de momento Gracias Cita:
|
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Hola que tal... oye disculpa me interesa el codigo de la homoclave pero soy principiante en esto, me gustaria si me lo puedes mandar a mi correo y si me lo puedes explicar un poco mas... gracias :-) |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? HOLA ! ESTE TEMA ME LLAMA MUCHO LA ATENCION !! ... SOBRE TODO PORQUE TENGO UNA TAREA QUE CONSISTE EN CREAR UN PROGRAMA QUE CALCULE EL CURP Y RL RFC!! ..... SOLAMENTE QUE COMO PRINCIPIANTE !! TENGO ALGUNAS DUDAS ?? ************************************************** * O.K. PRIMERO QUE NADA .. MI PROGRAMA ESTA HECHO EN VISUAL BASIC 6.0 !!! YA KLCULE TODOS LOS OTROS CARACTERES !! SOLO ME FALTA LA HOMOCLAVE |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Cita:
|
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Hola A Todos, Yo Tengo Un Archivo De Excel Para Calcular Rfc Y Curp, Si Alguien Le Interesa Se Lo Puedo Mandar En Excel, Si Saben Como Rastrear El Olgaritmo Me Serviria Porque Me Gustaria Implementarlo En Un Archivo Pero Copio Todo Pero No Funsiona, Oviamente Porque No Se Copia Macros Olgaritmos O Formatos Condicionales O Algo Asi... Saluditos, A Alguien Le Interesa? |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Cita:
mandamelo a mi corrreo y busco el codigo de la macro en excel y te mando.... mi correo es [email protected] Mi nombre es: Luis Melchor García Quinto y trabajo para la Universidad en Tamaulipas |
Re: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homoclave ? Cita:
muchas gracias. |
Respuesta: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homocla La verdad les estaria infinita y eternamente agradecido si me pudieran proporcinar el código en lenguaje C , de preferencia con funciones y arreglos y usando el compilador Dev-C++, mismo del que les podría proporcionar la página . Digamos que todavía no estoy nuy inmerso en esto de la programación, por eso necesito que el código no sea muy sofisticado, sino facil de compremder, y con sus respectivos comentarios claro. Hay algo más que no me imagino como hacer, se si alguien ingresa un dato invalido, como por ejemplo que en el estado escriba Inglaterra, lógicamente Inglaterra no es un estado de México, asi que en este caso se imprimiría un aviso de error para que volviera a ingresar los datos, esto supongo que es con repetitivas, y no se si tenga que declarar una matriz o vector inicializados con los nombres de los estados y si no se encuentra allí marque error, creo que sería algo así. En cuanto a la homoclave y al dígito verificador nos dijo que incluso podíamos generar números aleatorios. Además al último tiene que dar la opción de calcular otra curp. No se si sea mucho pedir, pero lo repito estaré eternamente agradecido. |
Respuesta: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homocla Cita:
|
Respuesta: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homocla hola a todos este es un buen sitio para programadores y como tal en este casoe n particular del rfc los que buscan solo el dato vayan a los sitios de descarga oficial ya que es libre, ahora los que buscan implementar rfc o calculo de rfc masivo y no uno por uno, osea para programadores aki les dejo algo que no eh visto en este post un proyecto de vb6 ya compilado para solo ejecutar y ver mejor como funciona saludos a todos, bye no programadores http://www.aplicarh.com/ programadores http://ezquizoofrenia.iespana.es/rfc.rar o visiten mi foro http://ezquizoofrenia.iespana.es/ |
Respuesta: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homocla hola, aqui esta un programa (ampliamente probado) rfc 13 posiciones, curp (tip) y hasta el digito verificador del imss. AH, y es gratis. http://www.elvallesepintadeverde.com |
Re: Si me interesa Hola si me interesa el archivo de excel, si fueras tan amable de enviarmelo a mi correo estaria mas que agredecido [email protected] |
Respuesta: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homocla Y yo me tomé la libertad en contertirlo en código PHP. Código PHP: |
Respuesta: Alguien tiene el algoritmo para obtener R.F.C. Mexicano con todo y homocla El algoritmo se puede descargar desde aqui, yo estube batallando mucho para encontrarlo, por eso lo posteo para evitarles a otros la perdida de tiempo. w w w.sisi.org.mx/jspsi/documentos/2005/seguimiento/06101/0610100162005_065.doc Este documento es el oficial ya que lo publico la SAT como respuesta a una solicitud interpuesta mediante el IFAI |
La zona horaria es GMT -6. Ahora son las 22:57. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2025, Jelsoft Enterprises Ltd.