RE:Solo Peru-Algoritmo de validacion de RUC
Con esta rutina podemos validar el RUC (Registro Único de Contribuyentes) emitido por la SUNAT (Superintendencia Nacional de Administración Tributaria). Solo para Perú.
Esta hecho para VFP, pero creo que es facilmente entendible, saludos y suerte.
? ValidRucSunat("20372706288")
*****************************************
FUNCTION ValidRucSunat(lcNroRuc)
IF LEN(ALLTRIM(lcNroRuc)) <> 11 THEN
RETURN .F.
ENDIF
LOCAL aArrayRuc
DIMENSION aArrayRuc(3,11)
FOR i = 1 TO 11
aArrayRuc(1,i)=VAL(SUBS(lcNroRuc,i,1))
ENDFOR
aArrayRuc(2,1)=5
aArrayRuc(2,2)=4
aArrayRuc(2,3)=3
aArrayRuc(2,4)=2
aArrayRuc(2,5)=7
aArrayRuc(2,6)=6
aArrayRuc(2,7)=5
aArrayRuc(2,8)=4
aArrayRuc(2,9)=3
aArrayRuc(2,10)=2
aArrayRuc(3,11)=0
FOR i=1 TO 10
aArrayRuc(3,i) = aArrayRuc(1,i) * aArrayRuc(2,i)
aArrayRuc(3,11) = aArrayRuc(3,11) + aArrayRuc(3,i)
ENDFOR
lnResiduo = MOD(aArrayRuc(3,11),11)
lnUltDigito = 11 - lnResiduo
DO CASE
CASE lnUltDigito = 11 OR lnUltDigito=1
lnUltDigito = 1
CASE lnUltDigito = 10 OR lnUltDigito=0
lnUltDigito = 0
ENDCASE
IF lnUltDigito = aArrayRuc(1,11) THEN
RETURN .T.
ELSE
RETURN .F.
ENDIF
ENDFUNC