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
*----------------------------*
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)
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 97 guests