Calculo del RFC México

Calculo del RFC México

Postby fleal » Tue Jan 24, 2006 4:59 am

Saludos Colegas,
echandole un vistazo a las antiguas news encontré que ya alguien había solicitado lo mismo.
La rutina para calcular el RFC ¿Está posteada en algún lugar?

Gracias
Fernando Leal
México, DF
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF

Postby Joel Andujo » Tue Jan 24, 2006 4:14 pm

Fernando, esta usamos nosotros espero te sirva

Saludos
Joel Andujo

Code: Select all  Expand view  RUN
*----------------------------*
Func RFC_Val(xvar)
rfccad:=upper(xvar)
xvar  :=rfccad
rfccad:=strtran(rfccad,'-','')
if empty(left(rfccad,4))
    tone(300,2)
    if msgyesno('R.F.C. No Válido, ¿ Continuar ?','Seleccione Opción...')
       retu.t.
    endi
    retu.f.
endi
if ctod(subs(rfccad,9,2)+'/'+subs(rfccad,7,2)+'/'+subs(rfccad,5,2))=ctod('  /  /    ')
    tone(300,2)
    msgalert('Fecha del R.F.C. no es válida','Aviso...')
    retu.f.
endi
if Digit_Ver(rfccad)<>right(rfccad,1)
    tone(300,2)
    if msgyesno('R.F.C. No Válido, ¿ Continuar ?','Seleccione Opción...')
       retu.t.
    endi
    retu.f.
endi
retu.t.

*-------------*
stat proc Digit_Ver()
para gx_rfc
local digv:='',gx_asc:=0,gx_car:=0,gx_sum:=0,gx_pos:=0
for yy:= 1 to 12
     gx_car:=0; gx_pos:=14 - yy
     gx_asc := Asc(SubStr(gx_rfc,yy,1))
     if (gx_asc>47).and.(gx_asc<58)
        gx_car:=(gx_asc-48)
     endi
     if (gx_asc>64).and.(gx_asc<79)
        gx_car:=(gx_asc-55)
     endi
     if (gx_asc>78).and.(gx_asc<91)
        gx_car:=(gx_asc-54)
     endi
     if (gx_asc=38)
        gx_car:=24
     endi
     if gx_asc=32
        gx_car:=37
     endi
     gx_sum:=(gx_sum+gx_car*gx_pos)
next yy
gx_asc:=gx_sum - Int(gx_sum/11) * 11
if (gx_asc<>0).and.(gx_asc<>1)
    digv:=AllTrim(str(11 - gx_asc))
else
    if gx_asc=0
       digv:='0'
    endi
    if gx_asc=1
       digv:='A'
    endi
endi
retu(digv)
User avatar
Joel Andujo
 
Posts: 131
Joined: Fri Oct 07, 2005 3:14 pm
Location: Cd. Obregón, Sonora, México

Gracias Joel

Postby fleal » Wed Jan 25, 2006 4:58 pm

Yo tengo algo parecido que solo valida las letras y la fecha... ya conseguí las reglas donde dice algunas cosas como
Si tiene solo un apellido usar...
Si la cadena resultante es ofensiva como CACA cambiar la ultima letra por una X. etc, etc.

Saludos
fleal
 
Posts: 234
Joined: Tue Oct 25, 2005 12:39 am
Location: México, DF


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests