ESTA ES LA FUNCION QUE DESCARGA LOS TIPOS DE CAMBIO ... Y MAS ABAJO PARA VALIDAD RUC
* ***************************************************************
FUNCTION vertc
loIE=createobject("InternetExplorer.Application")
loIE.visible=.F.
do while loIE.readystate<>4
wait window "Waiting for web page..." nowait
ENDDO
lcHTML=loIE.document.body.innerText
ln_PosIni = AT("Día",lcHTML)
ln_PosFin = AT("Para efectos",lcHTML)
lc_Texto = SUBSTR(lcHTML,ln_PosIni,ln_PosFin - ln_PosIni)
ln_PosIni = RAT("Venta",lc_Texto)
lc_Texto = CHRTRAN(ALLTRIM(SUBSTR(lc_Texto,ln_PosIni + 6)) + " ",CHR(10),"")
WAIT Clear
loIE.Quit()
RELEASE loIE
PUSH KEY CLEAR
CREATE CURSOR CurTCambio(DIA N(2),TC_COMPRA N(5,3),TC_VENTA N(5,3))
ln_Contador = 0
lc_Cadena = ""
FOR K = 1 TO LEN(lc_Texto)
IF SUBSTR(lc_Texto,K,1) = " " THEN
ln_Contador = ln_Contador + 1
IF ln_Contador = 1 AND K <> LEN(lc_Texto) THEN
SELECT CurTCambio
APPEND BLANK
REPLACE CurTCambio.DIA WITH VAL(lc_Cadena)
ENDIF
IF ln_Contador = 2 THEN
SELECT CurTCambio
REPLACE CurTCambio.TC_COMPRA WITH VAL(lc_Cadena)
ENDIF
IF ln_Contador = 3 THEN
SELECT CurTCambio
REPLACE CurTCambio.TC_VENTA WITH VAL(lc_Cadena)
ln_Contador = 0
ENDIF
lc_Cadena =""
ELSE
lc_Cadena = lc_Cadena + SUBSTR(lc_Texto,K,1)
ENDIF
NEXT
SELECT CurTCambio
BROWSE
ENDFUNC
*******************************************************************************************************************
FUNCION PARA VALIDAR EL RUC
*? ValidRuc("20372706288")
*****************************************
*FUNCTION ValidRucSunat(lcNroRuc)
LPARAMETERS lcNroRuc
LOCAL aArrayRuc
IF LEN(ALLTRIM(lcNroRuc)) <> 11 THEN
RETURN .F.
ENDIF
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