Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Homoclave RFC
Enviado por Steve el día 30 de octubre de 2003
Alguien sabe como obtener la homoclave del R.F.C.?
Para mx, si es asi lo puedes solicitar el algoritmo en la shcp, si sabes algo de dbase yo lo tengo implementado en este lenguaje si te interesa escribeme.
Enviado por Carlos Lopez el día 9 de febrero de 2005
Ahora estoy como Tu, necesito un Algoritmo para determinar la homoclave de 3500 registros, veo que hace un anio tenias este problema, no se si ahora ya tengas el algoritmo y me puedas regalara una copia
Tal vez escribi mal lo que tengo es el algoritmo para MX, pero este lo tengo desarrollado en DBASEIV, si este te interesa mandame un mail y te lo obsequio, si te interesa el algoritmo este lo tienes que solicitar en la SHCP.
Enviado por BLAS MAURICIO MIJANGOS el día 13 de julio de 2004
Porfavor si puedes ayudarme con el codigo que tienes para el calculo de las homoclaves enviamelo a cualquiera de estos correos mauricio_mijangos@hotmail.com, blas@cobach.edu.mx
Estoy muy interesada en saber acerca del programita del calculo de la homoclave del R.F.C., podrias enviarme informacion por favor te lo agradezco mucho
Hola, te escribo porque realmente estoy interesada en el algoritmo que te determina la homoclave del RFC. Te agradecería infinitamente, el que pudieras proporcionarmelo.
Re: Re: Re: Necesito el programa p/calculo de Homoclave RFC
Enviado por Rofer1426 el día 18 de mayo de 2006
Una molestia keria ver si ya te proporcionaron el programa para el calculo de la homoclave, para que me lo pudieses proporcionar. Te lo agradecere mucho.
Hola, me podrías envíar tu versión de cálculo de homoclave para dbase porfavor? Te lo agradecería mucho. Parece ser que nadie más la tiene. O que me puedas decir en qué parte de SHCP me dan el algoritmo.
Enviado por Adela Rivera el día 20 de noviembre de 2004
Me tiene echa loca tener que sacar 14500 RFC y estar batallando con los nombres de jose,maria,del ricon, etc porque ya calcule el rfc pero no con las reglas que debe estar calculado.. Por favor enviame el algoritmo o lo que tienes implementado para el calculo del RFC.. te lo agradecere infinitamente..
Enviado por Saul Mtz el día 27 de noviembre de 2004
SI Hay alguien que me pudiera facilitar la rutina para generar el CURP en VB ó en Visual Foxpro ó lo que tengan: un OCX ó una DLL se lo agradecería bastante ya que en estos momentos me pidieron esta informacion y no tengo como obtenerla.
Saludos y Muchas gracias de antemano!!!
Hola amigo fijate que me enteré de que tienes la rutina del RFC echeme la mano y enviamela a mi correo ó al de mi marido erebollo@zacatecas.mail.gob.mx por favorsote eres muy amable gracias
Enviado por Jorge Calderon el día 22 de agosto de 2005
Hola, si todavia tienen disponible el algoritmo del calculo de la homoclave del RFC, me lo podrian proporcionar???? Estoy muy atorado con este procedimiento. De antemano gracias
Enviado por anselmo sarmientto el día 12 de enero de 2006
saludos mi nombre es Anselmo Sarmiento y te agradeceria si me pudieras indicar como y con que programa puedo obtener el RFC de una persona fisica, gracias y espero poder corresponder con alguna informacion que necesite.
Falso, existe un algoritmo para calcular la homoclave, en base al nombre de la persona, y por ejemplo el ultimo digito solo puede se entre 0 y 9 y la letra A.
Cierto que la SHCP es la unica en ratificarlo oficialmente,
Cierto la SHCP debe de proporcionar dicho algoritmo.
yo tengo dos programas que son para calcula el RFC y CURP los baje de internet, pero se calcula de a uno por uno y estoy en busca de uno que sea masivo,
Buenas tardes al igual que usted me encuentro buscando tambien la homoclave, sin embargo al momento no he podido encontrarla, por lo que me permito preguntarle a usted si ya pudo encontrarla o bien donde puedo conseguir el algoritmo de como calcularla
Hola, me interesa tambien concer el calculo, ya sea el software en sí (no importa lenguaje), o el codigo!!
Podrian enviarlo a mi email??
De antemano, muchas gracias!
Enviado por Antonio Padilla el día 6 de febrero de 2004
es una muy buena opcion entrar la pagina que el Sr. Zepeda se sirvio a proporcionar en su mensaje del 31 de enero, a mi en lo personal me sirvio de mucho espero que para los demas sea igualmente de utiliadad
PARA EL QUE LO SOLICITE EN ESTA PAGINA ENCONTRAN UN PROGRAMA MUY UTIL PARA DETERMINAR LA HOMOCLAVE http://aplicarh.tripod.com.mx/
SI NO LES FUNSIONA ME AVISAN PARA PASARLES UN ARCHIVO QUE A LO MEJOR ALGUNAS PC NO TIENEN OK....BYE
DESCARGUE EL PROGRAMA PARA EL CALCULO DE LA HOMOCALVE PERO COMO LO DIJISTE NO ME FUNCIONO, Y MECIONA ALGO SOBRE EL ARCHIVO MSCOMCT2.OCX, NO SE SI ESTO ES A LO QUE TE REFIERES, PERO PODRIAS MANDARME EL ARCHIVO QUE MENCIONAS PARA PROBAR.... TE AGRADEZCO DE ANTEMANO TU AYUDA.
El precio del algoritmo es de $150.00 el cual incluye
el algoritmo y que me envies tus rfc's en archivo plano
y yo te envio el mismo con el calculo. El pago es en deposito
Bancario, dudas escribeme..
Enviado por Israel Vega Alvarez el día 27 de febrero de 2004
Considerando el volumen de empleados que
necesitan calcular RFC's y homoclaves, no creo
que te los den donde dices, tal vez 5 o 10 y no
es rápido. Tiene razón PALAFOX.
Yo estoy ofreciendo mi programa que permite
calcular en forma masiva todos los RFC's con
homoclaves de cualquier año.
Considerando el tiempo invertido en descifrar
y obtener el algoritmo, me parece justo ofrecerlo
por 50 Dlls. Además permite exportar el resultado
a algunos sistemas de nomina, Excel y ASCII.
Tambien ofrezco la funcion para quienes programan
en DLL.
Enviado por rodrigo reyes el día 20 de abril de 2004
necesito calcular muchisimas curp's, diem si tu programa lo hace de modo masivo y es exportable a excel, si es así, envíamelo o dime como descargarlo, estoy dispuesto a pagarlo.
muchas gracias
Enviado por Israel Vega Alvarez el día 28 de febrero de 2004
Considerando el volumen de empleados que
necesitan calcular RFC's y homoclaves, no creo
que te los den donde dices, tal vez 5 o 10 y no
es rápido. Tiene razón PALAFOX.
Yo estoy ofreciendo mi programa que permite
calcular en forma masiva todos los RFC's con
homoclaves de cualquier año.
Considerando el tiempo invertido en descifrar
y obtener el algoritmo, me parece justo ofrecerlo
por 50 Dlls. Además permite exportar el resultado
a algunos sistemas de nomina, Excel y ASCII.
Tambien ofrezco la funcion para quienes programan
en DLL.
esta rutina esta generada en DBASEIV, anteriormente ya se encuentra validaddo que los nombres solo esten en mayusculas, que la ñ este sustituida por un & en nuestro caso, que el nombre este separado en paterno, maternoy nombre, tiene una falla ya que cuando solo las personas tienen un solo apellido deja un blanco en el RFC, si ustedes encuentran alguno otro pueden enviarme la coreccion por favor, si necestias el programa en algun otro lenguaje lo ponemos a tu disposicion por $150.00 o algun otro comentario llamame.
********************************************************************************
* PROGRAMA QUE GENERA EL RFC, HOMONIMIA Y DIGITO VERIFICADOR
********************************************************************************
PROCEDURE GENERFC
PARAMETERS PATERNO, MATERNO, NOMBRE, FECHA, RFC, LOGOKARF
*ENTRADA---> PATERNO APELLIDO
* MATERNO "
* NOMBRE NOMBRE(S)
* FECHANAC FECHA DE NACIMIENTO
*SALIDA ---> RFC RFC DE LA PERSONA CON HOMONIMIA Y DIGITO VERIFICADOR
* ---> LOGOKARFC .T. SE GENERA RFC
LOGOKARF = .T.
DO CASE
CASE LEN(TRIM(PATERNO))=0 .AND. LEN(TRIM(NOMBRE)) = 0
LOGOKARF = .F.
CASE LEN(TRIM(MATERNO))=0 .AND. LEN(TRIM(NOMBRE)) = 0
LOGOKARF = .F.
CASE LEN(TRIM(NOMBRE)) = 0
LOGOKARF = .F.
CASE FECHA = {}
LOGOKARF = .F.
ENDCASE
IF .NOT. LOGOKARF
RETURN
ENDIF
PALABRAS = "BUEI/CACA/CAGA/CAKA/COGE/COJE/COJO/FETO/JOTO/KACO/KAGO/KOJO/KULO/LOCO/LOKO/MAMO/MEAS/MION/MULA" +;
"BUEY/CACO/CAGO/CAKO/COJA/COJI/CULO/GUEY/KACA/KAGA/KOGE/KAKA/LOCA/LOKA/MAME/MEAR/MEON/MOCO/PEDA" +;
"PEDO/PUTA/QULO RUIN/PENE/PUTO/RATA"
VOCAL = "AEIOU"
TABLA1 = " 0 1 2 3 4 5 6 7 8 9 ¥ ¥ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z &"
TABLA1V = "00000102030405060708091010111213141516171819212223242526272829323334353637383910"
TABLA2 = " 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233"
TABLA2V = " 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N P Q R S T U V W X Y Z"
TABLA3 = " 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N ¥ & ¥ O P Q R S T U V W X Y Z "
TABLA3V = "00010203040506070809101112131415161718192021222324242425262728293031323334353637"
ELIPA = PATERNO
ELIMA = MATERNO
ELINO = NOMBRE
DO ELIMINA WITH ELIPA
DO ELIMINA WITH ELIMA
DO ELIMINA WITH ELINO
STORE "" TO LUNO, LDOS, LTRES, LCUA
DO CARANOM WITH ELINO, LCUA
DO CASE
CASE LEN(TRIM(ELIPA)) > 2 .AND. LEN(TRIM(ELIMA)) > 2
LETRA1 = 2
DO WHILE LETRA1 <= (LEN( TRIM(ELIPA)))
IF ( AT( (SUBSTR(ELIPA,LETRA1,1)),VOCAL)) > 0
LDOS = SUBSTR(VOCAL,(AT( (SUBSTR(ELIPA,LETRA1,1)),VOCAL)),1)
EXIT
ENDIF
LETRA1 = LETRA1 + 1
ENDDO
LUNO = SUBSTR(ELIPA,1,1)
LTRES= SUBSTR(ELIMA,1,1)
CASE (LEN(TRIM(ELIPA)) > 0 .AND. LEN(TRIM(ELIPA)) <= 2 ) .AND. LEN(TRIM(ELIMA)) > 0
LUNO = SUBSTR(ELIPA,1,1)
LTRES= SUBSTR(ELIMA,1,1)
LCUA = SUBSTR(ELINO,1,2)
CASE LEN(TRIM(ELIPA)) = 0 .AND. LEN(TRIM(ELIMA)) > 0
LDOS = SUBSTR(ELIMA,1,2)
LCUA = SUBSTR(ELINO,1,2)
CASE LEN(TRIM(ELIPA)) > 0 .AND. LEN(TRIM(ELIMA)) = 0
LUNO = SUBSTR(ELIPA,1,2)
LCUA = SUBSTR(ELINO,1,2)
ENDCASE
LRFC1 = LUNO + LDOS + LTRES + LCUA
IF MONTH(FECHA) < 10
LMES = SUBSTR(STR(100+MONTH(FECHA),3,0),2,2)
ELSE
LMES = STR(MONTH(FECHA),2,0)
ENDIF
IF DAY(FECHA) < 10
LDIA = SUBSTR(STR(100+DAY(FECHA),3,0),2,2)
ELSE
LDIA = STR(DAY(FECHA),2,0)
ENDIF
LANO = SUBSTR(STR(YEAR(FECHA),4,0),3,2)
LRFC2 = LANO + LMES + LDIA
IF AT(LRFC1,PALABRAS) > 0
LRFC1 = SUBSTR(LRFC1,1,3) + "X"
ENDIF
LNOM = TRIM(PATERNO) + " " + TRIM(MATERNO) + " " + TRIM(NOMBRE)
LCADENA = "0"
LONG = LEN(LNOM)
LCON = 1
DO WHILE LCON <= LONG
LAUX = " " + SUBSTR(LNOM,LCON,1)
IF AT(LAUX,TABLA1) > 0
LCADENA = LCADENA + SUBSTR(TABLA1V,AT(LAUX,TABLA1),2)
ENDIF
LCON = LCON + 1
ENDDO
LHASTA = LEN(LCADENA)
LSUMA = 0
I = 1
DO WHILE I <= (LHASTA-1)
LSUMA = LSUMA + ( VAL(SUBSTR(LCADENA,I,2)) * VAL(SUBSTR(LCADENA,I+1,1)))
I = I + 1
ENDDO
LDI = STR(LSUMA,15,0)
LDIVI = VAL( SUBSTR(LDI,13,3))
LCIENTE = INT(LDIVI/34)
LRESIDU = MOD(LDIVI,34)
IF AT(STR(LCIENTE,2,0),TABLA2) > 0
LAUX = AT(STR(LCIENTE,2,0),TABLA2)
LHOMO1 = LTRIM(SUBSTR(TABLA2V,LAUX,2))
ENDIF
IF AT(STR(LRESIDU,2,0),TABLA2) > 0
LAUX = AT(STR(LRESIDU,2,0),TABLA2)
LHOMO2 = LTRIM(SUBSTR(TABLA2V,LAUX,2))
ENDIF
LRFCX1 = LRFC1 + LRFC2 + TRIM(LHOMO1) + TRIM(LHOMO2)
J = 1
LTRECE = 14
STORE 0 TO LSUMA2
DO WHILE J <= 12
LVALOR = 0
LX = " " + SUBSTR(LRFCX1,J,1)
IF AT(LX,TABLA3) > 0
LAUX = AT(LX,TABLA3)
LVALOR = VAL(SUBSTR(TABLA3V,LAUX,2))
ENDIF
LSUMA2 = LSUMA2 + ( LVALOR * (LTRECE-J))
J = J + 1
ENDDO
LDIGITO = MOD(LSUMA2,11)
IF LDIGITO = 0
LDIG = "0"
ELSE
LDIGITO = 11 - LDIGITO
IF LDIGITO = 10
LDIG = "A"
ELSE
LDIG = STR(LDIGITO,1,0)
ENDIF
ENDIF
RFC = LRFCX1 + LTRIM(LDIG)
RETURN
********************************************************************************
* ELIMINACION DE LOS ARTICULOS,PREPOSICIONES,CONJUNCIONES O CONTARCIONES
* DE LOS APELLIDOS PATERNO Y MATERNO
********************************************************************************
PROCEDURE ELIMINA
PARAMETERS NAME
*ENTRADA ---> NAME NOMBRE DE LA PERSONA UNO O DOS NOMBRE
*SALIDA ---> INICIAL CARACTER DEL PRIMER NOMBRE
NAME1 = TRIM(NAME)
LONG = LEN(NAME1)
LX = 1
LNVONAME = ""
LTEMP = ""
DO WHILE LX < LONG
IF AT(" ",NAME1) > 0
LTEMP = ""
LAUX = AT(" ",NAME1)
LTEMP = SUBSTR(NAME1,1,LAUX-1)
NAME1 = SUBSTR(NAME1,LAUX+1,(LONG-LEN(LTEMP))-1) && FORMA EL NVO NOMBRE
IF LTEMP = "DE" .OR. LTEMP = "LA" .OR. LTEMP = "LOS" .OR. LTEMP = "DEL" .OR. LTEMP = "LAS" .OR. LTEMP="Y"
LX = LX + (LEN(LTEMP) + 1)
IF LX = LONG
LNVONAME = NAME1
ENDIF
ELSE
LX = LX + LEN(LTEMP)
LNVONAME = LNVONAME + (LTEMP + " ")
ENDIF
ELSE
IF LX = 1
LNVONAME = NAME1
LX = LONG
ELSE
LNVONAME = LNVONAME + NAME1
LX = LX + LEN(NAME1)
ENDIF
ENDIF
ENDDO
NAME = TRIM(LNVONAME)
RETURN
********************************************************************************
* FORMACION DE LA PRIMERA LETRA DEL NOMBRE PARA EL RFC AUN COMPUESTO EL NOMBRE
********************************************************************************
PROCEDURE CARANOM
PARAMETERS NAME, INICIAL
*ENTRADA ---> NAME NOMBRE DE LA PERSONA UNO O DOS NOMBRE
*SALIDA ---> INICIAL CARACTER DEL PRIMER NOMBRE
NAME1 = TRIM(NAME)
IF (NAME1="JOSE" .AND. LEN(NAME1)=4) .OR. (NAME1 = "MARIA" .AND. LEN(NAME1)=5)
INICIAL = SUBSTR(NAME1,1,1) && EL NOMBRE ES SOLO MARIA O JOSE
ELSE
IF AT(" ",NAME1) = 0
INICIAL = SUBSTR(NAME1,1,1) && EL NOMBRE NO ES COMPUESTO Y NO ES MARIA O JOSE
ELSE
IF AT(" ",NAME1) > 0
LTEMP = ""
LAUX = AT(" ",NAME1)
LTEMP = SUBSTR(NAME1,1,LAUX-1)
IF LTEMP = "MARIA" .OR. LTEMP = "JOSE"
INICIAL = SUBSTR(NAME1,LAUX+1,1) && EL NOMBRE INICIAL ES JOSE O MARIA
ELSE
INICIAL = SUBSTR(NAME1,1,1) && EL NOMBRE ES COMPUESTO Y NO ES MARIA O JOSE
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
Enviado por BLAS MAURICIO MIJANGOS VILLALO el día 15 de julio de 2004
les paso el codigo para generar Rfc y Homoclave con digito Verificador que esta hecho en visual fox pro, les comento que tome el codigo que esta en este foro y no me funciono ya que la homoclave y el digito verificador no coincidian y pues de lo contrario les mando este codigo que ya esta validado y es funcional.
CODIGO DESARROLLADO EN VISUAL FOX PRO PARA GENERAR RFC CON HOMOCLAVE Y DIGITO VERIFICADOR SEGUN HACIENDA EN MEXICO
********************************
PROCEDURE SEXTA()
posi = At(" ", nombre)
IF ( posi > 0 )
FOR xx = 1 to ALen(arre6,1)
nombre = strtran(nombre, arre6[xx])
NEXT
ENDIF
RETURN
ENDPROC
********************************
PROCEDURE OCTAVA()
FOR xx = 1 to aLen(arre8,1)
paterno = strtran(paterno, arre8[ xx ])
materno = strtran(materno, arre8[ xx ])
nombre = strtran(nombre, arre8[ xx ])
NEXT
RETURN
ENDPROC
Function NACIO( Arg1 )
LOCAL ll_error
DIMENSION Local1(12)
Local1(1)=31
Local1(2)=28
Local1(3)=31
Local1(4)=30
Local1(5)=31
Local1(6)=30
Local1(7)=31
Local1(8)=31
Local1(9)=30
Local1(10)=31
Local1(11)=30
Local1(12)=31
if ( Arg1 = 0 )
bb = .F.
else
todo = Str(Arg1, 8)
bb = .T.
uno = Val(SubStr(todo, 7, 2))
dos = Val(SubStr(todo, 5, 2))
tres = Val(SubStr(todo, 1, 4))
if ( Arg1 = 0 .OR. uno = 0 .OR. dos = 0 )
bb = .F.
ELSE
IF ( dos <= 0 .OR. dos > 12 )
bb = .F.
ELSE
bisies = Local1[ dos ]
sanual = Str(tres, 4)
sanual2 = Val(sanual)
if ( dos = 2 .AND. Int(sanual2 / 4) * 4 = sanual2 )
bisies = bisies + 1
endif
ENDIF
if ( bb )
if ( uno <= 0 .OR. uno > bisies )
bb = .F.
endif
endif
endif
if ( !bb )
=MESSAGEBOX('ERROR EN FECHA DE NACIMIENTO',16+0,'Error')
else
wnumer6 = SUBSTR(Str(tres, 4),3,2)
if ( dos < 10 )
wnumer6 = wnumer6 + "0" + Str(dos, 1)
else
wnumer6 = wnumer6 + Str(dos, 2)
endif
if ( uno < 10 )
wnumer6 = wnumer6 + "0" + Str(uno, 1)
else
wnumer6 = wnumer6 + Str(uno, 2)
endif
ENDIF
Return bb
ENDFUNC
Me gustaria saber - aqui en el foro- como conseguiste el codigo fuente que tan amablemente estas regalando. Este codigo es de mi propiedad porque yo lo desarrolle desde hace mas de 10 años.
Ojala puedas contestar y responder de esto que considero un verdadero agravio a la propiedad intelectual.