Verificar Inscricao Estadual

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Verificar Inscricao Estadual

Mensagem por helio »

Pessoal alguem tem alguma ferramenta p/ verificar a inscricao estadual mais atualizada.

Muito Obrigado pessoal.

Helio Beltrao
helio@hrbinfo.com.br
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Verificar Inscricao Estadual

Mensagem por Maligno »

helio escreveu:Pessoal alguem tem alguma ferramenta p/ verificar a inscricao estadual mais atualizada.
Conjunto completo:

Código: Selecionar todos

//                  UF    NOME                   CEP INÍCIO  CEP FINAL   VALIDAÇÃO DA IE         MÁSCARA
//                  ----  ---------------------  ----------  ----------  ----------------------  --------------------
static aBaseUF := {{"AC", "Acre"               , "69900050", "69918430", {|cIE|ValidIE_AC(cIE)}, "99.999.999/999-99" },;
                   {"AL", "Alagoas"            , "57010000", "57607620", {|cIE|ValidIE_AL(cIE)}, "99.9.99999-9"      },;
                   {"AM", "Amazonas"           , "69005000", "69153500", {|cIE|ValidIE_AM(cIE)}, "99.999.999-9"      },;
                   {"AP", "Amapá"              , "68900001", "68909790", {|cIE|ValidIE_AP(cIE)}, "99.999.999-9"      },;
                   {"BA", "Bahia"              , "40010000", "48909810", {|cIE|ValidIE_BA(cIE)}, "999999-99"         },;
                   {"CE", "Ceará"              , "60010000", "63133150", {|cIE|ValidIE_CE(cIE)}, "99.999.999-9"      },;
                   {"DF", "Distrito Federal"   , "70040000", "73380600", {|cIE|ValidIE_DF(cIE)}, "99.999999.999-99"  },;
                   {"ES", "Espírito Santo"     , "29010001", "29906660", {|cIE|ValidIE_ES(cIE)}, "99.999.999-9"      },;
                   {"GO", "Goiás"              , "73750005", "75909390", {|cIE|ValidIE_GO(cIE)}, "99.999.999-9"      },;
                   {"MA", "Maranhão"           , "65005402", "65919360", {|cIE|ValidIE_MA(cIE)}, "99.999.999-9"      },;
                   {"MG", "Minas Gerais"       , "30110000", "39804705", {|cIE|ValidIE_MG(cIE)}, "999.999.999/9999"  },;
                   {"MS", "Mato Grosso do Sul" , "79002000", "79843300", {|cIE|ValidIE_MS(cIE)}, "99.999.999-9"      },;
                   {"MT", "Mato Grosso"        , "78005000", "78750680", {|cIE|ValidIE_MT(cIE)}, "9999999999-9"      },;
                   {"PA", "Pará"               , "66010000", "68746350", {|cIE|ValidIE_PA(cIE)}, "99.999.999-9"      },;
                   {"PB", "Paraíba"            , "58010000", "58808500", {|cIE|ValidIE_PB(cIE)}, "99.999.999-9"      },;
                   {"PE", "Pernambuco"         , "50010000", "56915130", {|cIE|ValidIE_PE(cIE)}, "99.9.999.9999999-9"},;
                   {"PI", "Piauí"              , "64000010", "64218860", {|cIE|ValidIE_PI(cIE)}, "99.999.999-9"      },;
                   {"PR", "Paraná"             , "80010000", "87711550", {|cIE|ValidIE_PR(cIE)}, "999.99999-99"      },;
                   {"RJ", "Rio de Janeiro"     , "20010000", "28924210", {|cIE|ValidIE_RJ(cIE)}, "99.999.99-9"       },;
                   {"RN", "Rio Grande do Norte", "59010000", "59635100", {|cIE|ValidIE_RN(cIE)}, "99.999.999-9"      },;
                   {"RO", "Rondônia"           , "78900005", "78977335", {|cIE|ValidIE_RO(cIE)}, "99999999.99999-9"  },;
                   {"RR", "Roraima"            , "69301000", "69316387", {|cIE|ValidIE_RR(cIE)}, "99.999.999-9"      },;
                   {"RS", "Rio Grande do Sul"  , "90010000", "99074570", {|cIE|ValidIE_RS(cIE)}, "999/999999-9"      },;
                   {"SC", "Santa Catarina"     , "88010000", "89815640", {|cIE|ValidIE_SC(cIE)}, "999.999.999"       },;
                   {"SE", "Sergipe"            , "49010000", "49097690", {|cIE|ValidIE_SE(cIE)}, "99.999.999-9"      },;
                   {"SP", "São Paulo"          , "01001000", "19915680", {|cIE|ValidIE_SP(cIE)}, "!.99999999.9/999"  },;
                   {"TO", "Tocantins"          , "77003020", "77828400", {|cIE|ValidIE_TO(cIE)}, "99.99.999999-9"    } ;
                   }

#define _kUF_SIGLA      1
#define _kUF_NOME       2
#define _kUF_CEP1       3
#define _kUF_CEP2       4
#define _kUF_IE_VALID   5
#define _kUF_IE_PICTURE 6


//**************************************************************************************************
function ListSigUF() // Retorna uma lista com as siglas de todos os Estados
local aLst := {}
AEval(aBaseUF,{|aUF|AAdd(aLst,aUF[_kUF_SIGLA])})
ASort(aLst ,,,{|x,y|x[1]<y[1]})
return aLst


//**************************************************************************************************
function NomeUF(cUF) // Retorna o nome do Estado
local i
return if((i := AScan(aBaseUF,{|aUF|aUF[_kUF_SIGLA]==cUF})) = 0, "", aUF[i][_kUF_NOME])


//**************************************************************************************************
function PictureIE(cUF) // Retorna a máscara de validação do Estado
local i
return if((i := AScan(aBaseUF,{|aUF|aUF[_kUF_SIGLA]==cUF})) = 0, Replicate("!",14), "@R "+aBaseUF[i][_kUF_IE_PICTURE])


//**************************************************************************************************
function UniFedCEP(cCEP) // Dado um número de CEP, retorna o Estado a qual pertence
local i := AScan(aBaseUF,{|aUF| cCEP >= aUF[_kUF_CEP1] .and. cCEP <= aUF[_kUF_CEP2]})
return if(i=0, "", aBaseUF[i][_kUF_SIGLA])


//**************************************************************************************************
function ValidIE(cUF,cIE) // Valida a IE (algumas IEs devem ser completadas com zeros a esquerda)
local i
if (i := AScan(aBaseUF,{|aUF|aUF[_kUF_SIGLA]==cUF})) > 0
   return Eval(aBaseUF[i][_kUF_IE_VALID],StrTran(cIE," "))
end
return .F. // erro na UF fornecida


//**************************************************************************************************
function ValidUF(cUF,lEX) // Valida a UF informada
// EX, em nível de escrituração fiscal, significa um país do EXterior
default lEX to .F.
return if(cUF="EX", lEX, AScan(aBaseUF,{|aUF|aUF[_kUF_SIGLA]==cUF}) > 0)


//**************************************************************************************************
function Modulo11(cStr,nPeso1,nPeso2) // módulo 11, com pesos nPeso1 (inicial) a nPeso2 (final), que
local nTot := 0                       // serão utilizados no multiplicador dos dígitos, apanhados da
local nMul := nPeso1                  // direita para a esquerda. Tal multiplicador será reciclado e
local i                               // voltará para nPeso1, quando o limite (nPeso2) for atingido.
*
for i := Len(cStr) to 1 step -1
    nTot += Val(SubStr(cStr,i,1)) * nMul
    nMul := if(nMul=nPeso2, nPeso1, nMul+1)
next
return if(nTot%11 < 2, "0", Str(11-(nTot%11),1))





                          /*
                           
                           FUNÇÕES DE VALIDAÇÃO DAS IEs DE TODOS OS ESTADOS
                           
                                                                          */


//**************************************************************************************************
static function ValidIE_AC(cIE)
return SubStr(cIE, 1,2) = "01"                       .and.;
       SubStr(cIE,12,1) = Modulo11(Left(cIE,11),2,9) .and.;
       SubStr(cIE,13,1) = Modulo11(Left(cIE,12),2,9)


//**************************************************************************************************
static function ValidIE_AL(cIE)
return SubStr(cIE,1,2) = "24"                      .and.; // código do Estado
       SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_AM(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_AP(cIE)
local nTot
local cDVe
local i
*
if !Left(cIE,2) = "03"
   return .F.
end
*
if(cIE <= "03017000", (nTot := 5 , cDVe := "0"),;
if(cIE <= "03019022", (nTot := 9 , cDVe := "1"),;
                      (nTot := 0 , cDVe := "0") ))
for i := 1 to 8
    nTot += Val(SubStr(cIE,i,1)) * (10-i)
next
return SubStr(cIE,9,1) == if(nTot%11=0, "0", if(nTot%11=1, cDVe, Str(11-(nTot%11),1)))


//**************************************************************************************************
static function ValidIE_BA(cIE)
local cStr := Left(cIE,6)
local nMod := if(Left(cIE,1) $ "679", 11, 10)
local nTot := 0
local i,k
*
for i := 1 to 2
    for k := Len(cStr) to 1 step -1
        nTot += Val(SubStr(cStr,k,1)) * ((7+i)-k)
    next
    cStr += if(nTot%nMod < nMod-9, "0", Str(nMod-(nTot%nMod),1))
    nTot := 0
next
return SubStr(cStr,8,1)+SubStr(cStr,7,1) == SubStr(cIE,7,2)


//**************************************************************************************************
static function ValidIE_CE(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_DF(cIE)
local cStr := Left(cIE,11)
local nTot := 0
local nMul
local i,k
*
for i := 1 to 2
    nMul := 2
    for k := Len(cStr) to 1 step -1
        nTot += Val(SubStr(cStr,k,1)) * nMul
        nMul := if(nMul=9, 2, nMul+1)
    next
    cStr += if(nTot%11 < 2, "0", Str(11-(nTot%11),1))
    nTot := 0
next
return Right(cStr,2) == SubStr(cIE,12,2)


//**************************************************************************************************
static function ValidIE_ES(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_GO(cIE)
local nTot := 0
local nMul := 2
*
if !Left(cIE,2) $ "10.11.15"
   return .F.
end
for i := 8 to 1 step -1
    nTot += Val(SubStr(cIE,i,1)) * nMul
    nMul := if(nMul=9, 2, nMul+1)
next
if (nTot := nTot%11) < 2
    nTot := if(nTot=0, 0, if(Left(cIE,8)="11094402", 1,;
                          if(Left(cIE,8)<"10103105" .or. Left(cIE,8)>"10119997", 0, 1)))
else
    nTot := 11-nTot
end
return Str(nTot,1) = Right(cIE,1)


//**************************************************************************************************
static function ValidIE_MA(cIE)
return SubStr(cIE,1,2) = "12"                     .and.;
       SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_MG(cIE)
local cStr := Stuff(cIE,4,0,"0")
local nTot := 0
local nSub
local i
*
for i := 1 to 12
    nSub := Val(SubStr(cStr,i,1))*if(i%2=0,2,1)
    nTot += if(nSub>9, Int(nSub/10)+(nSub%10), nSub)
next
cStr := Left(cIE,11) + if(nTot%10=0, "0", Str(((Int(nTot/10)+1)*10)-nTot,1))
cStr += Modulo11(cStr,2,11)
*
return Right(cStr,2) == SubStr(cIE,12,2)


//**************************************************************************************************
static function ValidIE_MS(cIE)
return SubStr(cIE,1,2) = "28"                     .and.;
       SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_MT(cIE)
return SubStr(cIE,11,1) = Modulo11(Left(cIE,10),2,9)


//**************************************************************************************************
static function ValidIE_PA(cIE)
return SubStr(cIE,1,2) = "15"                      .and.;
       SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_PB(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_PE(cIE)
local nTot := 0
local nMul := 2
local i
*
for i := 13 to 1 step -1
    nTot += Val(SubStr(cIE,i,1)) * nMul
    nMul := if(nMul=9, 1, nMul+1)
next
nTot := 11-(nTot%11)
return SubStr(cIE,14,1) = Str(if(nTot>9, nTot-10, nTot),1)


//**************************************************************************************************
static function ValidIE_PI(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_PR(cIE)
local cDVs := SubStr(cIE,9,2)
*
cIE := Left(cIE,8)
cIE += Modulo11(cIE,2,7)
cIE += Modulo11(cIE,2,7)
return cDVs = Right(cIE,2)


//**************************************************************************************************
static function ValidIE_RJ(cIE)
return SubStr(cIE,8,1) = Modulo11(Left(cIE,7),2,7)


//**************************************************************************************************
static function ValidIE_RN(cIE)
local cStr := Left(cIE,8)
local nTot := 0
local nMul := 2
local i
*
for i := Len(cStr) to 1 step -1
    nTot += Val(SubStr(cStr,i,1)) * nMul
    nMul := if(nMul=9, 2, nMul+1)
next
nTot := (nTot*10)%11
return SubStr(cIE,9,1) = Str(if(nTot=10, "0", nTot),1)



//**************************************************************************************************
static function ValidIE_RO(cIE)
local cStr := Left(cIE,13)
local nTot := 0
local nMul := 2
local i
*
// Fórmula adotada a partir de 01/08/2000
for i := Len(cStr) to 1 step -1
    nTot += Val(SubStr(cStr,i,1)) * nMul
    nMul := if(nMul=9, 2, nMul+1)
next
nTot := 11-(nTot%11)
return SubStr(cIE,14,1) = Str(if(nTot>9, nTot-10, nTot),1)


//**************************************************************************************************
static function ValidIE_RR(cIE)
local cStr := Left(cIE,8)
local nTot := 0
local i
*
for i := 1 to Len(cStr)
    nTot += Val(SubStr(cStr,i,1)) * i
next
return SubStr(cIE,9,1) = Str(nTot%9,1)


//**************************************************************************************************
static function ValidIE_RS(cIE)
return SubStr(cIE,10,1) = Modulo11(Left(cIE,9),2,9)


//**************************************************************************************************
static function ValidIE_SC(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_SE(cIE)
return SubStr(cIE,9,1) = Modulo11(Left(cIE,8),2,9)


//**************************************************************************************************
static function ValidIE_SP(cIE)
local cStr
local nTot
local nMul
local aMul := {1,3,4,5,6,7,8,10}
local i
*
if Left(cIE,1) = "P"
   cStr := SubStr(cIE,2,8)
   nTot := 0
   for i := 1 to 8
       nTot += Val(SubStr(cStr,i,1)) * aMul[i]
   next
   return SubStr(cIE,10,1) = Right(Str(Int(nTot%11)),1)
else
   cStr := Left(cIE,8)
   nTot := 0
   for i := 1 to 8
       nTot += Val(SubStr(cStr,i,1)) * aMul[i]
   next
   cStr += Right(Str(Int(nTot%11)),1) + SubStr(cIE,10,2)
   *
   nMul := 2
   nTot := 0
   for i := 11 to 1 step -1
       nTot += Val(SubStr(cStr,i,1)) * nMul
       nMul := if(nMul=10, 2, nMul+1)
   next
   return SubStr(cIE,9,4) == SubStr(cStr,9,3)+Right(Str(Int(nTot%11)),1)
end


//**************************************************************************************************
static function ValidIE_TO(cIE)
return SubStr(cIE, 1,2) = "29"                                   .and.; // código do Estado
       SubStr(cIE, 3,2) $ "01.02.03.99"                          .and.; // posições excluídas do cálculo
       SubStr(cIE,11,1) = Modulo11(Left(Stuff(cIE,3,2,""),8),2,9)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Mensagem por Marcos »

Olá a todos e parabéns ao Maligno pela postagem, esta questão de inscrição estadual é complicado, pelo menos pra mim, porque eu penso que além da conferência da Inscrição para ver se está correta, temos que saber também c a mesma está ativa e cadastrada no Sintegra, porque se o Cliente não é contribuinte, ou seja, se ele não está cadastrado no Sintegra existem alguns produtos que mudam de situação tributária na emissão da NF, assim penso que não adiantaria conferir a Inscrição e não verificar c está ou não ativa e cadastrada no Sintegra.
C alguém se habilitar a desenvolver algo no sentido, eu tenho muito interesse em ajudar.
Abraços,
Marcos.
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
Responder