O sintegra desenvolveu uma biblioteca para Delphi que valida as inscrições estaduais de todos os estados brasileiros. É só baixar no link abaixo:
http://www.sintegra.gov.br/DLL3.zip
Tem como pegar essa biblioteca para utilizar no clipper 5.3b puro? Alguém sabe como fazer?
[]s,
Alexandre
Utilizar dll sintegra que valida inscrição estadual
Moderador: Moderadores
- Alexandre Costa
- Usuário Nível 1

- Mensagens: 25
- Registrado em: 27 Dez 2005 10:49
- Localização: Cambé - PR
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Validação Inscrição Estadual
Caro colega,
Este tópico já foi abordado muitas vezes aqui no FORUM. De todas formas te passo o que eu encontrei:
*************************************************
* IeOk(p1,p2) : Validacao de Inscricao Estadual
* Parametros : p1 : string,2 caracteres,maiusculo,unidade federal
* p2 : string,tam.variavel,alfanumerico maiusculo,insc.estadual
* Retorno : Logico
* Linguagem : Clipper 5.2d
* Linkedicao : Normal, nao sao utilizadas bibliotecas externas.
* Desenvolvedor : Machado, Paulo H.S. - phmach@terra.com.br
*************************************************
procedure ieok(puf,pie)
local ok:=.f.,base,vpos,valg,vsom,vres,vdig1,vdig2,vpro,p,d,n,vbase2,origem
vbase2:=base:=origem:=""
if alltrim(pie)=="ISENTO";return .t.;endif
for vpos:=1 to len(alltrim(pie))
if substr(pie,vpos,1)$"0123456789P"
origem+=substr(pie,vpos,1)
endif
next
mascara:="99999999999999"
if puf=="AC"
mascara:="99,99,9999-9"
base :=padr(origem,9,"0")
if left(base,2)=="01" .and. substr(base,3,2)<>"00"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="AL"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="24"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vpro :=vsom*10
vres :=vpro%11
vdig1 :=if(vres==10,"0",str(vres,1,0))
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="AM"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
if vsom<11
vdig1:=str(11-vsom,1,0)
else
vres :=vsom%11
vdig1:=if(vres<2,"0",str(11-vres,1,0))
endif
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="AP"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="03"
n:=val(left(base,8))
if n>=3000001 .and. n<=3017000
p:=5
d:=0
elseif n>=3017001 .and. n<=3019022
p:=9
d:=1
elseif n>=3019023
p:=0
d:=0
endif
vsom:=p
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1:=11-vres
if vdig1==10
vdig1:=0
elseif vdig1==11
vdig1:=d
endif
vdig1 :=str(vdig1,1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="BA"
mascara:="999999-99"
base :=padr(origem,8,"0")
if left(base,1)$"0123458"
vsom:=0
for vpos:=1 to 6
valg:=val(substr(base,vpos,1))
valg:=valg*(8-vpos)
vsom+=valg
next
vres :=vsom%10
vdig2 :=str(if(vres==0,0,10-vres),1,0)
vbase2:=left(base,6)+vdig2
vsom :=0
for vpos:=1 to 7
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(9-vpos)
vsom+=valg
next
vres :=vsom%10
vdig1:=str(if(vres==0,0,10-vres),1,0)
else
vsom:=0
for vpos:=1 to 6
valg:=val(substr(base,vpos,1))
valg:=valg*(8-vpos)
vsom+=valg
next
vres :=vsom%11
vdig2 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,6)+vdig2
vsom :=0
for vpos:=1 to 7
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(9-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1:=str(if(vres<2,0,11-vres),1,0)
endif
vbase2:=left(base,6)+vdig1+vdig2
ok:=(vbase2==origem)
elseif puf=="CE"
mascara:="99999999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1:=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="DF"
mascara:="999,99999,999-99"
base :=padr(origem,13,"0")
if left(base,3)=="073"
vsom:=0
vmul:={4,3,2,9,8,7,6,5,4,3,2}
for vpos:=1 to 11
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=if(vres<2,0,11-vres)
vbase2:=left(base,11)+str(vdig1,1,0)
vsom :=0
vmul :={5,4,3,2,9,8,7,6,5,4,3,2}
for vpos:=1 to 12
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=if(vres<2,0,11-vres)
vbase2+=str(vdig2,1,0)
ok :=(vbase2==origem)
endif
elseif puf=="ES"
mascara:="999999999"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="GO"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
if left(base,2)$"10,11,15"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres:=vsom%11
if vres==0
vdig1:="0"
elseif vres==1
n :=val(left(base,8))
vdig1:=if(n>=10103105 .and. n<=10119997,"1","0")
else
vdig1:=str(11-vres,1,0)
endif
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="MA"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="12"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="MT"
mascara:="9999999999-9"
vmul :={3,2,9,8,7,6,5,4,3,2}
vsom:=0
for vpos:=1 to 10
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=if(vres<2,0,11-vres)
vbase2:=left(base,10)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="MS"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="28"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="MG"
mascara:="999,999,999/9999"
base :=padr(origem,13,"0")
vbase2 :=left(base,3)+"0"+substr(base,4,8)
n :=2
vsom :=""
for vpos:=1 to 12
valg:=val(substr(vbase2,vpos,1))
n :=if(n==2,1,2)
valg:=alltrim(str(valg*n,2,0))
vsom+=valg
next
n :=0
for vpos:=1 to len(vsom);n+=val(substr(vsom,vpos,1));next
vsom :=n
do while right(str(n,3,0),1)<>"0";n++;enddo
vdig1 :=str(n-vsom,1,0)
vbase2:=left(base,11)+vdig1
vsom :=0
vmul :={3,2,11,10,9,8,7,6,5,4,3,2}
for vpos:=1 to 12
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=if(vres<2,0,11-vres)
vbase2+=str(vdig2,1,0)
ok :=(vbase2==origem)
elseif puf=="PA"
mascara:="99-999999-9"
base :=padr(origem,9,"0")
if left(base,2)=="15"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="PB"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="PE"
mascara:="99,9,999,9999999-9"
base :=padr(origem,14,"0")
vsom :=0
vmul :={5,4,3,2,1,9,8,7,6,5,4,3,2}
for vpos:=1 to 13
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if(vdig1>9,vdig1-=10,)
vbase2:=left(base,13)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="PI"
mascara:="999999999"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="PR"
mascara:="999,99999-99"
base :=padr(origem,10,"0")
vsom :=0
vmul :={3,2,7,6,5,4,3,2}
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
vsom :=0
vmul :={4,3,2,7,6,5,4,3,2}
for vpos:=1 to 9
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=str(if(vres<2,0,11-vres),1,0)
vbase2+=vdig2
ok :=(vbase2==origem)
elseif puf=="RJ"
mascara:="99,999,99-9"
base :=padr(origem,8,"0")
vsom :=0
vmul :={2,7,6,5,4,3,2}
for vpos:=1 to 7
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,7)+vdig1
ok :=(vbase2==origem)
elseif puf=="RN"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
if left(base,2)=="20"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vpro :=vsom*10
vres :=vpro%11
vdig1 :=str(if(vres>9,0,vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="RO"
mascara:="999999999"
base :=padr(origem,9,"0")
vbase2 :=substr(base,4,5)
vsom :=0
for vpos:=1 to 5
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(7-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1-=10;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="RR"
mascara:="99999999-9"
base :=padr(origem,9,"0")
if left(base,2)=="24"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*vpos
vsom+=valg
next
vres :=vsom%9
vdig1 :=str(vres,1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="RS"
mascara:="999/999999-9"
base :=padr(origem,10,"0")
n :=val(left(base,3))
if n>0 .and. n<468
vsom:=0
vmul:={2,9,8,7,6,5,4,3,2}
for vpos:=1 to 9
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,9)+str(vdig1,1,0)
ok :=(vbase2==origem)
endif
elseif puf=="SC"
mascara:="999,999,999"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=if(vres<2,"0",str(11-vres,1,0))
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="SE"
mascara:="99999999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="SP"
if left(base,1)=="P"
mascara:="P-99999999,9/999"
base :=padr(origem,13,"0")
vbase2 :=substr(base,2,8)
vsom :=0
vmul :={1,3,4,5,6,7,8,10}
for vpos:=1 to 8
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=right(str(vres,2,0),1)
vbase2:=left(base,9)+vdig1+substr(base,11,3)
else
mascara:="999,999,999,999"
base :=padr(origem,12,"0")
vsom :=0
vmul :={1,3,4,5,6,7,8,10}
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=right(str(vres,2,0),1)
vbase2:=left(base,8)+vdig1+substr(base,10,2)
vsom :=0
vmul :={3,2,10,9,8,7,6,5,4,3,2}
for vpos:=1 to 11
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=right(str(vres,2,0),1)
vbase2+=vdig2
endif
ok:=(vbase2==origem)
elseif puf=="TO"
mascara:="99,99,999999-9"
base :=padr(origem,11,"0")
if substr(base,3,2)$"01,02,03,99"
vbase2:=left(base,2)+substr(base,5,6)
vsom :=0
for vpos:=1 to 8
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,10)+vdig1
ok :=(vbase2==origem)
endif
else
alert("Unidade Federal Invalida !")
endif
if !ok
if empty(vbase2)
alert("Os D¡gitos Identificadores de Cidade e/ou Estado N„o Conferem !")
else
vbase2:=strtran(transform(val(vbase2),mascara)," ","0")
vbase2:=strtran(vbase2,",",".")
alert("Inscri‡„o Inv lida !;O Correto Seria;"+vbase2)
endif
endif
return .t.
Porém cabe salientar uma detlahe muito importante mencionado aqui pelo nosso colega "Maligno" no link:
https://pctoledo.org/forum/viewto ... d1f828793f
Mas acho que podemos utilizar esse.
Um Clip-abraço
:xau
Este tópico já foi abordado muitas vezes aqui no FORUM. De todas formas te passo o que eu encontrei:
*************************************************
* IeOk(p1,p2) : Validacao de Inscricao Estadual
* Parametros : p1 : string,2 caracteres,maiusculo,unidade federal
* p2 : string,tam.variavel,alfanumerico maiusculo,insc.estadual
* Retorno : Logico
* Linguagem : Clipper 5.2d
* Linkedicao : Normal, nao sao utilizadas bibliotecas externas.
* Desenvolvedor : Machado, Paulo H.S. - phmach@terra.com.br
*************************************************
procedure ieok(puf,pie)
local ok:=.f.,base,vpos,valg,vsom,vres,vdig1,vdig2,vpro,p,d,n,vbase2,origem
vbase2:=base:=origem:=""
if alltrim(pie)=="ISENTO";return .t.;endif
for vpos:=1 to len(alltrim(pie))
if substr(pie,vpos,1)$"0123456789P"
origem+=substr(pie,vpos,1)
endif
next
mascara:="99999999999999"
if puf=="AC"
mascara:="99,99,9999-9"
base :=padr(origem,9,"0")
if left(base,2)=="01" .and. substr(base,3,2)<>"00"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="AL"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="24"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vpro :=vsom*10
vres :=vpro%11
vdig1 :=if(vres==10,"0",str(vres,1,0))
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="AM"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
if vsom<11
vdig1:=str(11-vsom,1,0)
else
vres :=vsom%11
vdig1:=if(vres<2,"0",str(11-vres,1,0))
endif
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="AP"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="03"
n:=val(left(base,8))
if n>=3000001 .and. n<=3017000
p:=5
d:=0
elseif n>=3017001 .and. n<=3019022
p:=9
d:=1
elseif n>=3019023
p:=0
d:=0
endif
vsom:=p
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1:=11-vres
if vdig1==10
vdig1:=0
elseif vdig1==11
vdig1:=d
endif
vdig1 :=str(vdig1,1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="BA"
mascara:="999999-99"
base :=padr(origem,8,"0")
if left(base,1)$"0123458"
vsom:=0
for vpos:=1 to 6
valg:=val(substr(base,vpos,1))
valg:=valg*(8-vpos)
vsom+=valg
next
vres :=vsom%10
vdig2 :=str(if(vres==0,0,10-vres),1,0)
vbase2:=left(base,6)+vdig2
vsom :=0
for vpos:=1 to 7
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(9-vpos)
vsom+=valg
next
vres :=vsom%10
vdig1:=str(if(vres==0,0,10-vres),1,0)
else
vsom:=0
for vpos:=1 to 6
valg:=val(substr(base,vpos,1))
valg:=valg*(8-vpos)
vsom+=valg
next
vres :=vsom%11
vdig2 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,6)+vdig2
vsom :=0
for vpos:=1 to 7
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(9-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1:=str(if(vres<2,0,11-vres),1,0)
endif
vbase2:=left(base,6)+vdig1+vdig2
ok:=(vbase2==origem)
elseif puf=="CE"
mascara:="99999999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1:=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="DF"
mascara:="999,99999,999-99"
base :=padr(origem,13,"0")
if left(base,3)=="073"
vsom:=0
vmul:={4,3,2,9,8,7,6,5,4,3,2}
for vpos:=1 to 11
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=if(vres<2,0,11-vres)
vbase2:=left(base,11)+str(vdig1,1,0)
vsom :=0
vmul :={5,4,3,2,9,8,7,6,5,4,3,2}
for vpos:=1 to 12
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=if(vres<2,0,11-vres)
vbase2+=str(vdig2,1,0)
ok :=(vbase2==origem)
endif
elseif puf=="ES"
mascara:="999999999"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="GO"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
if left(base,2)$"10,11,15"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres:=vsom%11
if vres==0
vdig1:="0"
elseif vres==1
n :=val(left(base,8))
vdig1:=if(n>=10103105 .and. n<=10119997,"1","0")
else
vdig1:=str(11-vres,1,0)
endif
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="MA"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="12"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="MT"
mascara:="9999999999-9"
vmul :={3,2,9,8,7,6,5,4,3,2}
vsom:=0
for vpos:=1 to 10
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=if(vres<2,0,11-vres)
vbase2:=left(base,10)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="MS"
mascara:="999999999"
base :=padr(origem,9,"0")
if left(base,2)=="28"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="MG"
mascara:="999,999,999/9999"
base :=padr(origem,13,"0")
vbase2 :=left(base,3)+"0"+substr(base,4,8)
n :=2
vsom :=""
for vpos:=1 to 12
valg:=val(substr(vbase2,vpos,1))
n :=if(n==2,1,2)
valg:=alltrim(str(valg*n,2,0))
vsom+=valg
next
n :=0
for vpos:=1 to len(vsom);n+=val(substr(vsom,vpos,1));next
vsom :=n
do while right(str(n,3,0),1)<>"0";n++;enddo
vdig1 :=str(n-vsom,1,0)
vbase2:=left(base,11)+vdig1
vsom :=0
vmul :={3,2,11,10,9,8,7,6,5,4,3,2}
for vpos:=1 to 12
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=if(vres<2,0,11-vres)
vbase2+=str(vdig2,1,0)
ok :=(vbase2==origem)
elseif puf=="PA"
mascara:="99-999999-9"
base :=padr(origem,9,"0")
if left(base,2)=="15"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="PB"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="PE"
mascara:="99,9,999,9999999-9"
base :=padr(origem,14,"0")
vsom :=0
vmul :={5,4,3,2,1,9,8,7,6,5,4,3,2}
for vpos:=1 to 13
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if(vdig1>9,vdig1-=10,)
vbase2:=left(base,13)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="PI"
mascara:="999999999"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="PR"
mascara:="999,99999-99"
base :=padr(origem,10,"0")
vsom :=0
vmul :={3,2,7,6,5,4,3,2}
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,8)+vdig1
vsom :=0
vmul :={4,3,2,7,6,5,4,3,2}
for vpos:=1 to 9
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=str(if(vres<2,0,11-vres),1,0)
vbase2+=vdig2
ok :=(vbase2==origem)
elseif puf=="RJ"
mascara:="99,999,99-9"
base :=padr(origem,8,"0")
vsom :=0
vmul :={2,7,6,5,4,3,2}
for vpos:=1 to 7
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,7)+vdig1
ok :=(vbase2==origem)
elseif puf=="RN"
mascara:="99,999,999-9"
base :=padr(origem,9,"0")
if left(base,2)=="20"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vpro :=vsom*10
vres :=vpro%11
vdig1 :=str(if(vres>9,0,vres),1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="RO"
mascara:="999999999"
base :=padr(origem,9,"0")
vbase2 :=substr(base,4,5)
vsom :=0
for vpos:=1 to 5
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(7-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1-=10;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="RR"
mascara:="99999999-9"
base :=padr(origem,9,"0")
if left(base,2)=="24"
vsom:=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*vpos
vsom+=valg
next
vres :=vsom%9
vdig1 :=str(vres,1,0)
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
endif
elseif puf=="RS"
mascara:="999/999999-9"
base :=padr(origem,10,"0")
n :=val(left(base,3))
if n>0 .and. n<468
vsom:=0
vmul:={2,9,8,7,6,5,4,3,2}
for vpos:=1 to 9
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,9)+str(vdig1,1,0)
ok :=(vbase2==origem)
endif
elseif puf=="SC"
mascara:="999,999,999"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=if(vres<2,"0",str(11-vres,1,0))
vbase2:=left(base,8)+vdig1
ok :=(vbase2==origem)
elseif puf=="SE"
mascara:="99999999-9"
base :=padr(origem,9,"0")
vsom :=0
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=11-vres
if vdig1>9;vdig1:=0;endif
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
elseif puf=="SP"
if left(base,1)=="P"
mascara:="P-99999999,9/999"
base :=padr(origem,13,"0")
vbase2 :=substr(base,2,8)
vsom :=0
vmul :={1,3,4,5,6,7,8,10}
for vpos:=1 to 8
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=right(str(vres,2,0),1)
vbase2:=left(base,9)+vdig1+substr(base,11,3)
else
mascara:="999,999,999,999"
base :=padr(origem,12,"0")
vsom :=0
vmul :={1,3,4,5,6,7,8,10}
for vpos:=1 to 8
valg:=val(substr(base,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig1 :=right(str(vres,2,0),1)
vbase2:=left(base,8)+vdig1+substr(base,10,2)
vsom :=0
vmul :={3,2,10,9,8,7,6,5,4,3,2}
for vpos:=1 to 11
valg:=val(substr(vbase2,vpos,1))
valg:=valg*vmul[vpos]
vsom+=valg
next
vres :=vsom%11
vdig2 :=right(str(vres,2,0),1)
vbase2+=vdig2
endif
ok:=(vbase2==origem)
elseif puf=="TO"
mascara:="99,99,999999-9"
base :=padr(origem,11,"0")
if substr(base,3,2)$"01,02,03,99"
vbase2:=left(base,2)+substr(base,5,6)
vsom :=0
for vpos:=1 to 8
valg:=val(substr(vbase2,vpos,1))
valg:=valg*(10-vpos)
vsom+=valg
next
vres :=vsom%11
vdig1 :=str(if(vres<2,0,11-vres),1,0)
vbase2:=left(base,10)+vdig1
ok :=(vbase2==origem)
endif
else
alert("Unidade Federal Invalida !")
endif
if !ok
if empty(vbase2)
alert("Os D¡gitos Identificadores de Cidade e/ou Estado N„o Conferem !")
else
vbase2:=strtran(transform(val(vbase2),mascara)," ","0")
vbase2:=strtran(vbase2,",",".")
alert("Inscri‡„o Inv lida !;O Correto Seria;"+vbase2)
endif
endif
return .t.
Porém cabe salientar uma detlahe muito importante mencionado aqui pelo nosso colega "Maligno" no link:
https://pctoledo.org/forum/viewto ... d1f828793f
Mas acho que podemos utilizar esse.
Um Clip-abraço
:xau
- Alexandre Costa
- Usuário Nível 1

- Mensagens: 25
- Registrado em: 27 Dez 2005 10:49
- Localização: Cambé - PR
Eu já havia olhado estes tópicos. Inclusive peguei uma postagem do amigo Maligno que valida todas as inscricoes. Funciona perfeitamente.
É que encontrei essa dll no link que mencionei (http://www.sintegra.gov.br/DLL3.zip ), mas como ela é feita em delphi, gostaria de saber se o clipper consegue ler dll escrita para outra linguagem.
Mesmo assim, obrigado pela dica!!
[]s,
Alexandre
É que encontrei essa dll no link que mencionei (http://www.sintegra.gov.br/DLL3.zip ), mas como ela é feita em delphi, gostaria de saber se o clipper consegue ler dll escrita para outra linguagem.
Mesmo assim, obrigado pela dica!!
[]s,
Alexandre
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Utilizar dll sintegra que valida inscrição estadual
Olá pessoal.
Uso a rotina postada aqui para checar IE. Porém, para o estado do TOcantins, não está funcionando. Mudou algo?
Laudelino
Uso a rotina postada aqui para checar IE. Porém, para o estado do TOcantins, não está funcionando. Mudou algo?
Laudelino
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Utilizar dll sintegra que valida inscrição estadual
viewtopic.php?f=4&t=9264&p=52418&hilit=CONSISTEINSCRICAOESTADUAL#p52418
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql