Página 1 de 1
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 11:11
por Itamar M. Lins Jr.
Ola!
Eu uso esta função, abaixo só que está retornando erro.
Código: Selecionar todos
...
elseif puf=="PE"
mascara:="99,999,999-9"
base :=pad(origem,9,"0")
vsom :=0
vmul := {9,8,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 :=11-vres
if(vdig1>9,vdig1-=10,)
vbase2:=left(base,8)+str(vdig1,1,0)
ok :=(vbase2==origem)
...
Já vi que a mascara não é nem mais essa.
Alguém tem essa rotina atualizada ?
Saudações,
Itamar M. Lins Jr.
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 13:49
por janio
Código: Selecionar todos
//************************************************************
function ValidIE_PE(cIE)
local cDVs := SubStr(cIE,8,2)
*
cIE := Left(cIE,7)
cIE += Modulo11(cIE,2,8)
cIE += Modulo11(cIE,2,9)
return cDVs = Right(cIE,2)
Teste: 0282613-56
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 15:58
por Daniel
Faltou a função modulo11
Código: Selecionar todos
/*
Função| Modulo11 | Autor | Erick Nori Barbosa | Data | 30/05/94|
Descrição | Calculo do modulo 11
Sintaxe | ExpL1 := Modulo11(ExpC1,ExpN1,ExpN2)
Parametros | ExpC1 = String para calcular o digito
| ExpN1 = Primeiro numero de multiplicação do modulo 11
| ExpN2 = Ultimo numero de multiplicação do modulo 11
| ExpC2 = Digito de verificação (Retornado pela função)
Uso | Genérico
*/
*****************************************************
Function Modulo11(cStr,nMultIni,nMultFim)
Local i, nModulo := 0, cChar, nMult
nMultIni := Iif( nMultIni==Nil,2,nMultIni )
nMultFim := Iif( nMultFim==Nil,9,nMultFim )
nMult := nMultIni
cStr := AllTrim(cStr)
For i := Len(cStr) to 1 Step -1
cChar := Substr(cStr,i,1)
nModulo += Val(cChar)*nMult
nMult:= IIf(nMult==nMultfim,2,nMult+1)
Next
nRest := nModulo % 11
nRest := IIf(nRest==0 .or. nRest==1,0,11-nRest)
Return(Str(nRest,1))
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 16:43
por JoséQuintas
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 18:44
por JoséQuintas
esqueci que era só eu tentar cadastrar.... rs
Essa indicada não passou na da sefazclass.
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 19:01
por JoséQuintas
JoséQuintas escreveu:Essa indicada não passou na da sefazclass.
Mas é lógico... coloquei que era de São Paulo kkkkk
Colocando Pernambuco validou.
Código: Selecionar todos
PROCEDURE Main
LOCAL cInsc := "028261356"
? ValidIE( cInsc, "PE" )
Inkey(0)
RETURN
hbmk2 test.prg sefazclass.hbc
Validar IE de Pernanbuco
Enviado: 21 Fev 2019 19:10
por JoséQuintas
Só a título de curiosidade....
O site do Sintegra ainda vale.
Curioso é que tem o cálculo anterior, mas a IE era muito maior.
O erro da rotina inicial é pegar os números de calcular mod11 a partir do primeiro (9,8,7,6...), mas deveria SEMPRE terminar no 2.