|
Inicio → WINDEV 25 → WX - Exemplo de Digito Verificador Usando Data Hora, Numero do Celular e Prazo de Expiração |
WX - Exemplo de Digito Verificador Usando Data Hora, Numero do Celular e Prazo de Expiração |
Iniciado por adrianoboller, 07,oct. 2015 18:07 - No hay respuesta |
| |
| | | |
|
| |
Miembro registrado 3.662 mensajes Popularité : +175 (223 votes) |
|
Publicado el 07,octubre 2015 - 18:07 |
Prezados,
Finalidade é checar esse digito com o digito verificador do servidor... ai a finalidade é por conta e risco de cada um... basta usar a criatividade e melhor esse exekmplo. O mesmo funciona perfeitamente!...
Procedure DigitoVerificador(LOCAL DDD is string, LOCAL TEL is string, LOCAL Data is string, LOCAL Hora is string, LOCAL DebugSN)
ChangeCharset(charsetOccidental)
CodigoValidacao, RestoDiv, DIA, MES is string n0,n1,n2,n3,n4,n5,n6,n7,n8,n9, n10, n11, n12 is real = 0 Total, Resultado, Digito, iDDDxiTEL, iDDD, iTEL, DIVIDENDO, DIVISOR is real = 0
IF DDD <> "" AND TELcliente <> "" AND Data <> "" AND Hora <> "" THEN
IF Data = "" AND Hora = "" OR Data = 0 AND Hora = 0
Data = DateSys()
DIA = Middle(Data,7,2) IF Length(DIA) = 1 THEN DIA = "0"+DIA END MES = Middle(Data,5,2) IF Length(MES) = 1 THEN MES = "0"+MES END Data = Middle(Data,7,2) +""+ Middle(Data,5,2) +""+ Middle(Data,1,4)
Hora = TimeSys()
Hora = Middle(Hora,1,4)
END
GloDataHora = Val(Data +""+ Hora)
IF DebugSN = "S" Info(GloDataHora) END
iDDD = DDD iTEL = TELcliente iDDDxiTEL = Val(Val(iDDD) * Val(iTEL)) IF DebugSN = "S" Info(iDDDxiTEL) END
DIVIDENDO = GloDataHora DIVISOR = iDDDxiTEL IF iDDDxiTEL > 0 RestoDiv = Modulo(DIVIDENDO,DIVISOR) END
IF DebugSN = "S" Info("RestoDiv",RestoDiv,GloDataHora,iDDDxiTEL) END
GloDataHora = Middle(DateSys(),1,4) +"-"+ Middle(DateSys(),5,2) +"-"+ Middle(DateSys(),7,2) +"T"+ Middle(TimeSys(),1,2) +":"+ Middle(TimeSys(),3,2) +":"+ Middle(TimeSys(),5,2)
IF Length(RestoDiv) = 7 THEN RestoDiv = "00000"+RestoDiv ELSE IF Length(RestoDiv) = 8 THEN RestoDiv = "0000"+RestoDiv ELSE IF Length(RestoDiv) = 9 THEN RestoDiv = "000"+RestoDiv ELSE IF Length(RestoDiv) = 10 THEN RestoDiv = "00"+RestoDiv ELSE IF Length(RestoDiv) = 11 THEN RestoDiv = "0"+RestoDiv ELSE IF Length(RestoDiv) = 12 THEN RestoDiv = RestoDiv END
n12 = Val(Middle(RestoDiv,13,1)) * 1 n11 = Val(Middle(RestoDiv,12,1)) * 9 n10 = Val(Middle(RestoDiv,11,1)) * 8 n9 = Val(Middle(RestoDiv,10,1)) * 7 n8 = Val(Middle(RestoDiv,09,1)) * 6 n7 = Val(Middle(RestoDiv,08,1)) * 5 n6 = Val(Middle(RestoDiv,07,1)) * 4 n5 = Val(Middle(RestoDiv,06,1)) * 3 n4 = Val(Middle(RestoDiv,05,1)) * 2 n3 = Val(Middle(RestoDiv,04,1)) * 1 n2 = Val(Middle(RestoDiv,03,1)) * 9 n1 = Val(Middle(RestoDiv,02,1)) * 8 n0 = Val(Middle(RestoDiv,01,1)) * 7
Total = n0+n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12
IF DebugSN = "S" Info("Total",Total, n0+";"+n1+";"+n2+";"+n3+";"+n4+";"+n5+";"+n6+";"+n7+";"+n8+";"+n9+";"+n10+";"+n11+";"+n12) END
IF Total > 0 Resultado = Modulo(Total,11) END IF DebugSN = "S" Info("Modulo 11",Resultado) END
IF Resultado > 9 THEN Digito = 0 ELSE Digito = Resultado END
CodigoValidacao = Total +""+ Digito
IF DebugSN = "S" Info("CodigoValidacao", CodigoValidacao, Total, Digito) END
END
RESULT(CodigoValidacao)
-- Adriano Jose Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller ______________________________________________ |
| |
| |
| | | |
|
| | | | |
| | |
|