Jump to content


Photo

Validar Inscrição Estadual


  • Faça o login para participar
1 reply to this topic

#1 Maracuja

Maracuja

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 21/10/2005, 13:16

Boa tarde a todos, gostaria de saber se alguem possue um script , função e etc(pode ser javascript, ou um script ASP) que faça a validação para ver se uma inscrição estadual digitada é válida. Pois estou dando uma olhada nos algoritimos e cada estado tem sua própria forma de validação, a meu ver darão cerca de 2000 linhas de código, e se alguem ja tem algo pronto, me poupará de algum trabalho!!!!!!!

Qualquer coisa mail-me ou postem aki!!! uahUIAHiuahUIAHiuahUIAH

valterkonrad@yahoo.com.br

Desde ja agradeço.

Vou precisar implementar p/ asp e pocketstudio, logo se alguem tiver em pascal ou delphi tb serve. Obrigado

Edição feita por: Maracuja, 21/10/2005, 13:21.

------------------------
Agora ainda mais Java na veia (JSP, Servlet, EJB)

"E todo o dinheiro que fizeram, jamais comprará de volta suas almas" BOB DYLAN

"Eu uso o google e não desisto nunca" MARACUJA

#2 Maracuja

Maracuja

    12 Horas

  • Usuários
  • 144 posts
  • Sexo:Não informado

Posted 07/11/2005, 09:55

Bom dia pessoal, depois de algum esforço, conclui a função que faz a validação da Inscrição Estadual (fiz em ASP se alguem se habilitar e puder fazer em JS, fique a vontade, depois poste o codigo aki, ahUIAHuiaHuiahUIAHuih).



Bom a base inicial desta função foi um algoritimo que encontrei na NET feito em VB5, converti todo ele para ASP, também criei uma função auxilar (function IIf) pois o asp não possue o operador IIF do VB5.



Os estados de MG, RR, PE, GO, TO foram alterados, os estados de MT, AC, RO foram refeitos com base no site do sintegra http://www.sintegra....r/insc_est.html. Todos os estados forma exaustivamente testados com base na DLL3 do sintegra, logo TODOS OS ESTADOS ESTÃO CORRETOS E FUNCIONANDO 100%. Abaixo segue o código.


<%
function IIf(condicao,verdadeiro,falso)
if(condicao) then
	IIF = verdadeiro
else
	IIF = falso
end if
end function 

Function ChecaInscrE (pUF, pInscr) 
ChecaInscrE = False 
Dim strBase 
Dim strBase2 
Dim strOrigem 
Dim strDigito1 
Dim strDigito2 
Dim intPos 
Dim intValor 
Dim intSoma 
Dim intResto 
Dim intNumero 
Dim intPeso 
Dim intDig 
strBase = "" 
strBase2 = "" 
strOrigem = "" 
If Trim(pInscr) = "ISENTO" or Trim(pInscr) = "EX"  Then 
	ChecaInscrE = True 
	Exit Function 
End If 
For intPos = 1 To Len(Trim(pInscr)) 
	If Instr(1, "0123456789P", Mid(pInscr, intPos, 1), vbTextCompare) > 0 Then 
  strOrigem = strOrigem & Mid(pInscr, intPos, 1) 
	End If	
Next 
Select Case pUF 
	Case "AC" 'Acre 
  strBase = Left(Trim(strOrigem) & "000000000", 13)
  d01 = Cint(mid(strBase,1,1))
  d02 = Cint(mid(strBase,2,1))
  d03 = Cint(mid(strBase,3,1))
  d04 = Cint(mid(strBase,4,1))
  d05 = Cint(mid(strBase,5,1))
  d06 = Cint(mid(strBase,6,1))
  d07 = Cint(mid(strBase,7,1))
  d08 = Cint(mid(strBase,8,1))
  d09 = Cint(mid(strBase,9,1))
  d10 = Cint(mid(strBase,10,1))
  d11 = Cint(mid(strBase,11,1))
  dv01 = Cint(mid(strBase,12,1))
  dv02 = Cint(mid(strBase,13,1))
  if d01 <> 0 or d02 <> 1 then
  	ChecaInscrE = false 
  	Exit Function  
  end if
  ds = 4*d01 + 3*d02 + 2*d03 + 9*d04 + 8*d05 + 7*d06 + 6*d07 + 5*d08 + _
                     4*d09 + 3*d10 + 2*d11     
                aux1 = Fix(ds / 11)
  aux1 = aux1 * 11
  aux2 = ds - aux1 ' aux2 é o resto, ou mod
  digverificador1 = 11 - aux2
  if digverificador1 = 10 or digverificador1 = 11 then
  	digverificador1 = 0 'primeiro digito
  end if
  ds = 5*d01 + 4*d02 + 3*d03 + 2*d04 + 9*d05 + 8*d06 + 7*d07 + 6*d08 + _
                     5*d09 + 4*d10 + 3*d11 + 2*digverificador1   
  aux1 = Fix(ds / 11)
  aux1 = aux1 * 11
  aux2 = ds - aux1 ' aux2 é o resto, ou mod
  digverificador2 = 11 - aux2
  if digverificador2 = 10 or digverificador2 = 11 then
  	digverificador2 = 0 'primeiro digito
  end if
  if digverificador1 = dv01 and digverificador2 = dv02 then
  	ChecaInscrE = true
  end if          	
	Case "AL" ' Alagoas 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Left(strBase, 2) = "24" Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intSoma = intSoma * 10 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto = 10, "0", Cstr(intResto)), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "AM" ' Amazonas 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  If intSoma < 11 Then 
  	strDigito1 = Right(Cstr(11 - intSoma), 1) 
  Else 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  End If 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "AP" ' Amapa 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intPeso = 0 
  intDig = 0 
  If Left(strBase, 2) = "03" Then 
  	intNumero = Fix(Left(strBase, 8)) 
  	If intNumero >= 3000001 And  intNumero <= 3017000 Then 
    intPeso = 5 
    intDig = 0 
  	ElseIf intNumero >= 3017001 And  intNumero <= 3019022 Then 
    intPeso = 9 
    intDig = 1 
  	ElseIf intNumero >= 3019023 Then 
    intPeso = 0 
    intDig = 0 
  	End If 
  	intSoma = intPeso 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	intValor = 11 - intResto 
  	If intValor = 10 Then 
    intValor = 0 
  	ElseIf intValor = 11 Then 
    intValor = intDig 
  	End If 
  	strDigito1 = Right(Cstr(intValor), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "BA" ' Bahia 
  strBase = Left(Trim(strOrigem) & "00000000", 8) 
  If Instr(1, "0123458", Left(strBase, 1), vbTextCompare) > 0 Then 
  	intSoma = 0 
  	For intPos = 1 To 6 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (8 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 10 
  	strDigito2 = Right(IIf(intResto = 0, "0", Cstr(10 - intResto)), 1) 
  	strBase2 = Left(strBase, 6) & strDigito2 
  	intSoma = 0 
  	For intPos = 1 To 7 
    intValor = Cint(Mid(strBase2, intPos, 1)) 
    intValor = intValor * (9 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 10 
  	strDigito1 = Right(IIf(intResto = 0, "0", Cstr(10 - intResto)), 1) 
  Else 
  	intSoma = 0 
  	For intPos = 1 To 6 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (8 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito2 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 6) & strDigito2 
  	intSoma = 0 
  	For intPos = 1 To 7 
    intValor = Cint(Mid(strBase2, intPos, 1)) 
    intValor = intValor * (9 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  End If 
  strBase2 = Left(strBase, 6) & strDigito1 & strDigito2 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "CE" ' Ceara 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  intResto = intSoma Mod 11 
  intValor = 11 - intResto 
  If intValor > 9 Then 
  	intValor = 0 
  End If 
  strDigito1 = Right(Cstr(intValor), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "DF" ' Distrito Federal 
  strBase = Left(Trim(strOrigem) & "0000000000000", 13) 
  If Left(strBase, 3) = "073" Then 
  	intSoma = 0 
  	intPeso = 2 
  	For intPos = 11 To 1 Step -1 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPeso 
    intSoma = intSoma + intValor 
    intPeso = intPeso + 1 
    If intPeso > 9 Then 
    	intPeso = 2 
    End If 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 11) & strDigito1 
  	intSoma = 0 
  	intPeso = 2 
  	For intPos = 12 To 1 Step -1 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPeso 
    intSoma = intSoma + intValor 
    intPeso = intPeso + 1 
    If intPeso > 9 Then 
    	intPeso = 2 
    End If 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito2 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 12) & strDigito2 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "ES" ' Espirito Santo 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  intResto = intSoma Mod 11 
  strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "GO" ' Goias 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Instr(1, "10,11,15", Left(strBase, 2), vbTextCompare) > 0 Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	If intResto = 0 Then 
    strDigito1 = "0" 
  	ElseIf intResto = 1 Then 
    intNumero = Cint(Left(strBase, 8)) 
    strDigito1 = Right(IIf(intNumero >= 10103105 And intNumero <= 10119997, "1", "0"), 1) 
  	Else 
    strDigito1 = Right(Cstr(11 - intResto), 1) 
  	End If 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "MA" ' Maranhão 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Left(strBase, 2) = "12" Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "MT" ' Mato Grosso 
  while len(strOrigem) < 11  	
  	strOrigem = "0" & strOrigem
  wend
  strBase = Left(Trim(strOrigem) & "000000000", 11)
  d01 = Cint(mid(strBase,1,1))
  d02 = Cint(mid(strBase,2,1))
  d03 = Cint(mid(strBase,3,1))
  d04 = Cint(mid(strBase,4,1))
  d05 = Cint(mid(strBase,5,1))
  d06 = Cint(mid(strBase,6,1))
  d07 = Cint(mid(strBase,7,1))
  d08 = Cint(mid(strBase,8,1))
  d09 = Cint(mid(strBase,9,1))
  d10 = Cint(mid(strBase,10,1))
  dfinal = Cint(mid(strBase,11,1))
  ds = 3*d01 + 2*d02 + 9*d03 + 8*d04 + 7*d05 + 6*d06 + 5*d07 + 4*d08 + _
                     3*d09 + 2*d10
                aux1 = Fix(ds / 11)
  aux1 = aux1 * 11
  aux2 = ds - aux1
  if aux2 = 0 or aux2 = 1 then
  	digVerificador = 0
  else
  	digVerificador = 11 - aux2
  end if
  if dfinal = digVerificador then 
  	ChecaInscrE = true
  end if     
	Case "MS" ' Mato Grosso do Sul 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Left(strBase, 2) = "28" Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If  	
  End If 
	Case "MG" ' Minas Gerais, aki onde tem FormatNumber ante era format 
  strBase = Left(Trim(strOrigem) & "0000000000000", 13) 
  strBase2 = Left(strBase, 3) & "0" & Mid(strBase, 4, 8) 
  intNumero = 2 
  For intPos = 1 To 12 
  	intValor = Cint(Mid(strBase2, intPos, 1)) 
  	intNumero = IIf(intNumero = 2, 1, 2) 
  	intValor = intValor * intNumero 
  	If intValor > 9 Then 
    strDigito1 = FormatNumber(intValor, "00") 
    intValor = Cint(Left(strDigito1, 1)) + Cint(Right(strDigito1, 1)) 
  	End If 
  	intSoma = intSoma + intValor 
  Next 
  intValor = intSoma 
  While Right(FormatNumber(intValor, "000"), 1) <> "0" 
  	intValor = intValor + 1 
  Wend 
  strDigito1 = Right(FormatNumber(intValor - intSoma, "00"), 1) 
  strBase2 = Left(strBase, 11) & strDigito1 
  intSoma = 0 
  intPeso = 2 
  For intPos = 12 To 1 Step -1 
  	intValor = Cint(Mid(strBase2, intPos, 1)) 
  	intValor = intValor * intPeso 
  	intSoma = intSoma + intValor 
  	intPeso = intPeso + 1 
  	If intPeso > 11 Then 
    intPeso = 2 
  	End If 
  Next 
  intResto = intSoma Mod 11 
  strDigito2 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  strBase2 = strBase2 & strDigito2 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "PA" ' Para 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Left(strBase, 2) = "15" Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "PB" ' Paraiba 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  intResto = intSoma Mod 11 
  intValor = 11 - intResto 
  If intValor > 9 Then 
  	intValor = 0 
  End If 
  strDigito1 = Right(Cstr(intValor), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "PE" ' Pernambuco 
  strBase = Left(Trim(strOrigem) & "00000000000000", 14) 
  intSoma = 0 
  intPeso = 2 
  For intPos = 13 To 1 Step -1 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * intPeso 
  	intSoma = intSoma + intValor 
  	intPeso = intPeso + 1 
  	If intPeso > 9 Then 
    intPeso = 1   
  	End If 
  Next 
  intResto = intSoma Mod 11 
  intValor = 11 - intResto 
  If intValor > 9 Then 
  	intValor = intValor - 10 
  End If 
  strDigito1 = Right(Cstr(intValor), 1) 
  strBase2 = Left(strBase, 13) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "PI" ' Piaui 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  intResto = intSoma Mod 11 
  strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "PR" ' Parana 
  strBase = Left(Trim(strOrigem) & "0000000000", 10) 
  intSoma = 0 
  intPeso = 2 
  For intPos = 8 To 1 Step -1 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * intPeso 
  	intSoma = intSoma + intValor 
  	intPeso = intPeso + 1 
  	If intPeso > 7 Then 
    intPeso = 2 
  	End If 
  Next 
  intResto = intSoma Mod 11 
  strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  intSoma = 0 
  intPeso = 2 
  For intPos = 9 To 1 Step -1 
  	intValor = Cint(Mid(strBase2, intPos, 1)) 
  	intValor = intValor * intPeso 
  	intSoma = intSoma + intValor 
  	intPeso = intPeso + 1 
  	If intPeso > 7 Then 
    intPeso = 2 
  	End If 
  Next 
  intResto = intSoma Mod 11 
  strDigito2 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  strBase2 = strBase2 & strDigito2 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "RJ" ' Rio de Janeiro 
  strBase = Left(Trim(strOrigem) & "00000000", 8) 
  intSoma = 0 
  intPeso = 2 
  For intPos = 7 To 1 Step -1 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * intPeso 
  	intSoma = intSoma + intValor 
  	intPeso = intPeso + 1 
  	If intPeso > 7 Then 
    intPeso = 2 
  	End If 
  Next 
  intResto = intSoma Mod 11 
  strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1)  
  strBase2 = Left(strBase, 7) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "RN" ' Rio Grande do Norte 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Left(strBase, 2) = "20" Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intSoma = intSoma * 10 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto > 9, "0", Cstr(intResto)), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "RO" ' Rondonia, estado alterado 
  strBase = Left(Trim(strOrigem) & "000000000", 14)
  d01 = Cint(mid(strBase,1,1))
  d02 = Cint(mid(strBase,2,1))
  d03 = Cint(mid(strBase,3,1))
  d04 = Cint(mid(strBase,4,1))
  d05 = Cint(mid(strBase,5,1))
  d06 = Cint(mid(strBase,6,1))
  d07 = Cint(mid(strBase,7,1))
  d08 = Cint(mid(strBase,8,1))
  d09 = Cint(mid(strBase,9,1))
  d10 = Cint(mid(strBase,10,1))
  d11 = Cint(mid(strBase,11,1))
  d12 = Cint(mid(strBase,12,1))
  d13 = Cint(mid(strBase,13,1))
  dfinal = Cint(mid(strBase,14,1))
  ds = 6*d01 + 5*d02 + 4*d03 + 3*d04 + 2*d05 + 9*d06 + 8*d07 + 7*d08 + _
                     6*d09 + 5*d10 + 4*d11 + 3*d12 + 2*d13
  aux1 = Fix(ds / 11)
  aux1 = aux1 * 11
  aux2 = ds - aux1
  digVerificador = 11 - aux2
  if digVerificador > 9 then
  	resto_do_calculo = digVerificador - 10
  else
  	resto_do_calculo = digVerificador	
  end if
  if dfinal <> resto_do_calculo then 
  	ChecaInscrE = false
  else
  	ChecaInscrE = true
  end if
	Case "RR" ' Roraima 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  If Left(strBase, 2) = "24" Then 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPos 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 9 
  	strDigito1 = Right(Cstr(intResto), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "RS" ' Rio Grande do Sul 
  strBase = Left(Trim(strOrigem) & "0000000000", 10) 
  intNumero = Cint(Left(strBase, 3)) 
  If intNumero > 0 And intNumero < 468 Then 
  	intSoma = 0 
  	intPeso = 2 
  	For intPos = 9 To 1 Step -1 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPeso 
    intSoma = intSoma + intValor 
    intPeso = intPeso + 1 
    If intPeso > 9 Then 
    	intPeso = 2 
    End If 
  	Next 
  	intResto = intSoma Mod 11 
  	intValor = 11 - intResto 
  	If intValor > 9 Then 
    intValor = 0 
  	End If 
  	strDigito1 = Right(Cstr(intValor), 1) 
  	strBase2 = Left(strBase, 9) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	Case "SC" ' Santa Catarina 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  intResto = intSoma Mod 11 
  strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "SE" ' Sergipe 
  strBase = Left(Trim(strOrigem) & "000000000", 9) 
  intSoma = 0 
  For intPos = 1 To 8 
  	intValor = Cint(Mid(strBase, intPos, 1)) 
  	intValor = intValor * (10 - intPos) 
  	intSoma = intSoma + intValor 
  Next 
  intResto = intSoma Mod 11 
  intValor = 11 - intResto 
  If intValor > 9 Then 
  	intValor = 0 
  End If 
  strDigito1 = Right(Cstr(intValor), 1) 
  strBase2 = Left(strBase, 8) & strDigito1 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "SP" ' São Paulo 
  If Left(strOrigem, 1) = "P" Then 
  	strBase = Left(Trim(strOrigem) & "0000000000000", 13) 
  	strBase2 = Mid(strBase, 2, 8) 
  	intSoma = 0 
  	intPeso = 1 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPeso 
    intSoma = intSoma + intValor 
    intPeso = intPeso + 1 
    If intPeso = 2 Then 
    	intPeso = 3 
    End If 
    If intPeso = 9 Then 
    	intPeso = 10 
    End If 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(Cstr(intResto), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 & Mid(strBase, 11, 3) 
  Else 
  	strBase = Left(Trim(strOrigem) & "000000000000", 12) 
  	intSoma = 0 
  	intPeso = 1 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPeso 
    intSoma = intSoma + intValor 
    intPeso = intPeso + 1 
    If intPeso = 2 Then 
    	intPeso = 3 
    End If 
    If intPeso = 9 Then 
    	intPeso = 10 
    End If 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(Cstr(intResto), 1) 
  	strBase2 = Left(strBase, 8) & strDigito1 & Mid(strBase, 10, 2) 
  	intSoma = 0 
  	intPeso = 2 
  	For intPos = 11 To 1 Step -1 
    intValor = Cint(Mid(strBase, intPos, 1)) 
    intValor = intValor * intPeso 
    intSoma = intSoma + intValor 
    intPeso = intPeso + 1 
    If intPeso > 10 Then 
    	intPeso = 2 
    End If 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito2 = Right(Cstr(intResto), 1) 
  	strBase2 = strBase2 & strDigito2 
  End If 
  If strBase2 = strOrigem Then 
  	ChecaInscrE = True 
  End If 
	Case "TO" ' Tocantins 
  strBase = Left(Trim(strOrigem) & "00000000000", 11) 
  If Instr(1, "01,02,03,99", Mid(strBase, 3, 2), vbTextCompare) > 0 Then 
  	strBase2 = Left(strBase, 2) & Mid(strBase, 5, 6) 
  	intSoma = 0 
  	For intPos = 1 To 8 
    intValor = Cint(Mid(strBase2, intPos, 1)) 
    intValor = intValor * (10 - intPos) 
    intSoma = intSoma + intValor 
  	Next 
  	intResto = intSoma Mod 11 
  	strDigito1 = Right(IIf(intResto < 2, "0", Cstr(11 - intResto)), 1) 
  	strBase2 = Left(strBase, 10) & strDigito1 
  	If strBase2 = strOrigem Then 
    ChecaInscrE = True 
  	End If 
  End If 
	End Select 
End Function 

UF = "RR"

inscricao = "240097765"

valida = ChecaInscrE(UF,inscricao)

response.write(valida)





%>

Espero que seja util!!!!

Edição feita por: Maracuja, 07/11/2005, 09:57.

------------------------
Agora ainda mais Java na veia (JSP, Servlet, EJB)

"E todo o dinheiro que fizeram, jamais comprará de volta suas almas" BOB DYLAN

"Eu uso o google e não desisto nunca" MARACUJA




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq