Página 1 de 1

IE MT

Enviado: 25 Jun 2011 17:09
por Laudelino Scarmagnani
Olá pessoal,
tenho a seguinte rotina para calculo da IE do estado do Mato Grosso:

Código: Selecionar todos

mascara:="9999999999-9"
      base   :=padr(origem,11,"0")
      vmul   :={3,2,9,8,7,6,5,4,3,2} // PESO DOS DIGITOS
      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)
   SGINSCR = VBASE2
   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
      sgresult=1
	else
      sginscrest:=strtran(transform(val(sginscr),mascara)," ","0")
      sginscrest:=strtran(sginscrest,",",".")
   endif
Está retornando com digito incorreto. Acontece que esta rotina para incrição com 11 digitos. O Cliente tem a inscrição 13192112-6, ou seja, 9 digitos. O Estado do Mato Grosso, quantos digitos tem a IE?
Algue teria como corrigir a rotina acima? Compilo em xHarbour.
Agradeço a ajuda.
Laudelino

IE MT

Enviado: 25 Jun 2011 17:28
por Maligno
Veja nesse tópico os códigos para todos os Estados e compare-os. E nesse link aqui um programa de teste e geração de IEs e outros documentos.

IE MT

Enviado: 25 Jun 2011 18:15
por alxsts
Olá!

Veja este link.

IE MT

Enviado: 26 Jun 2011 16:42
por Laudelino Scarmagnani
Boa tarde.
No link passado por alxsts, o numero da inscrição é com onze digitos. A que eu passei e consultei no MT é com 9 dígitos. As duas estão valendo?
Laudelino

IE MT

Enviado: 26 Jun 2011 16:57
por Maligno
MT tem 11 dígitos. É o MS que tem 9.

IE MT

Enviado: 26 Jun 2011 17:30
por Laudelino Scarmagnani
Maligno, boa tarde.
Só para constar: a inscrição 13192112-6, se consultada, passa e está ok. Então, na minha rotina, inclui 0013192112-6 e o dígito fechou. Consultei no site do MT e aceitou a consulta, só que ao mostrar os dados, vem sem os zeros à esquerda.
Laudelino

IE MT

Enviado: 26 Jun 2011 17:41
por Maligno
Ah, sim. Muitas vezes é necessário inserir zeros à esquerda antes de passar pelo cálculo. É o seu caso. Mas a representação gráfica independe desses zeros. É só no cálculo que eles devem ser considerados obrigatoriamente. Só não coloque zeros dentro da função de cálculo, a fim de evitar erros.
Pegue o programa que mencionei na segunda mensagem. Até prova em contrário, ele está validando tudo certinho. E ainda gera DVs para criar números de teste.