Tabela IBPT (Download)

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Tabela IBPT (Download)

Mensagem por Itamar M. Lins Jr. »

Olá!
Onde eu baixo a tabela ?
Só lá no site de olho no imposto ? Não quis fazer o cadastro...

Parece que toda ora muda tem uma que mal começou e já vai acabar.
Captura de tela 2021-12-17 173351.png
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Tabela IBPT (Download)

Mensagem por rochinha »

Amiguinhos,

Itamar M Lins Jr
Vá no site https://deolhonoimposto.ibpt.org.br/ e se cadastre, não tem segredo, use seu CNPJ ou de algum cliente pois será usado apenas para baixar os arquivos.

todo dia 30 ela recebe atualização. Um saco.

Você terá de importar para sua aplicação o conteúdo do arquivo .CSV.

Caso queira incorporar em seu sistema tal facilidade segue um código que pode te ajudar.

Código: Selecionar todos

/*
   Compilar usando: hbmk2 IBPTax.Prg -lxhb
*/

#include "inkey.ch"

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT_DEFAULT

FuncTion Main( versaotb, uf, nTipoTabela )

   Local cMsg
   Local nCursor
   Local nPointer := 0
   Local nLinha := MaxRow()/2
   Local nEol, cConteudo, cLinha
   Local nRegistro, cBuffer, nLenArq, nLido
   Local cEol := Chr( 13 ) + Chr( 10 )

   Local aEstr := {;
                {"codigo"     ,"N",   9, 0},;
                {"ex"         ,"N",   3, 0},;
                {"tabela"     ,"N",   1, 0},;
                {"descricao"  ,"C", 255, 0},;
                {"aliqnac"    ,"N",   5, 2},;
                {"aliqimp"    ,"N",   5, 2},;
                {"aliqest"    ,"N",   5, 2},;
                {"aliqmun"    ,"N",   5, 2},;
                {"vigenciai"  ,"D",   8, 0},;
                {"vigencian"  ,"D",   8, 0},;
                {"chave"      ,"C",   6, 0},;
                {"versao"     ,"C",   6, 0},;
                {"fonte"      ,"C",   4, 0},;
                {"totalnac"   ,"N",   5, 2},;
                {"totalimp"   ,"N",   5, 2};
                }

   Local siglas := "AC.AL.AP.AM.BA.CE.DF.ES.GO.MA.MT.MS.MG.PA.PB.PR.PE.PI.RJ.RN.RS.RO.RR.SC.SP.SE.TO"
 
   Request DBFCDX
   RddRegister('DBFCDX',1)
   RddSetDefault('DBFCDX')

   Request OrdKeyNo
   Request OrdKeyCount

   SET CENTURY ON
   SET DATE BRIT
 
   Private cCampo
   default versaotb := "17.1.B", uf := "SP", nTipoTabela := 1

   if (versaotb=nil .or. uf=nil .or. nTipoTabela=nil)
      Alert( "Digite tbIBPTSP.exe 17.1.B SP 1" )
      quit
   endif

   if !File( "TabelaIBPTax"+uf+versaotb+".csv" )
      Alert( "Arquivo TabelaIBPTax"+uf+versaotb+".csv NÆo encontrado!" + CRLF + CRLF + ;
             "Digite tbIBPTSP.exe 17.1.B SP 1" )
      quit
   endif

   nCursor := SetCursor( 0 )
 
   Private cArquivoDBF := "IBPT.DBF"  // nome do arquivo .DBF a ser gerado
 
   DBCreate( cArquivoDBF, aEstr )
   Use ( cArquivoDBF ) Shared New

   Private cArquivoCSV := "TabelaIBPTax"+uf+versaotb+".csv"
   Private nHandle := FOpen( cArquivoCSV, 2 )

   nRegistro := 0
   cBuffer := Space( 1200 )                  // se houver linha maior aumente o 1200
   nLenArq := FSeek( nHandle, nPointer, 2 )  // pega tamanho arquivo
   FSeek( nHandle, nPointer, 0 )             // posiciona o pointer noinicio

   nLido := FRead( nHandle , @cBuffer, 1200 )
   nEol := AT( cEol, cBuffer )
   nPointer += nEol + 1           // vamos ignorar a linha de nomes de campo
   FSeek( nHandle, nPointer, 0 )  // posiciona o pointer na segunda linha
 
   nTotCampos := 13     // total de campos menos os campos totalnac e totalimp

   do While nEol > 0

      aCampos := {}
      nLido := FRead( nHandle , @cBuffer, 1200 )
      nEol := AT( cEol, cBuffer )

      If nEol > 0

         cLinha := Left( cBuffer, nEol - 1 ) + ";"

         For x=1 To nTotCampos

             cConteudo:=SubSt( cLinha, 0, At( ";", cLinha ) )
             cLinha:= StrTran( cLinha, cConteudo, Nil, 1, 1 )  // remove apenas esta sequencia

             cConteudo:=Left( cConteudo, Len( cConteudo ) - 1 )  // tira o ";" do final

             AaDd( aCampos, cConteudo )
    
         Next

         If (nTipoTabela=1) .Or. (nTipoTabela=2 .And. aCampos[3]="0") .Or. (nTipoTabela=3 .And. aCampos[3]="1")

            Append Blank  // cria o registro vazio no dbf

            For x=1 To nTotCampos
                cCampo := Field( x )
                cConteudo := aCampos[x]
                If ValType( &cCampo. ) = "C"
     	           If x = 4 
     		          cConteudo := SubStr( cConteudo,2)	
     		          cConteudo := Left( cConteudo, Len( Upper(CConteudo) )-1 )
  		           Endif
                   cConteudo := RemoverAcentos( cConteudo, .t. )
                EndIf 
                If     ValType( &cCampo. ) = "N"
                       cConteudo := Val( cConteudo )
                ElseIf ValType( &cCampo. ) = "D"
                       cConteudo := CToD( cConteudo )
                Else
                      //cConteudo := Hb_AnsiToOem( cConteudo )  // Harbour 3.0
                      //cConteudo := Win_AnsiToOem( cConteudo )  // Harbour 3.2 ou superior
                EndIf
                Replace &cCampo. With cConteudo  // salva todos campo
            Next

            Replace totalnac With aliqnac+aliqest+aliqmun // salva total aliquota nacional
            Replace totalimp With aliqimp+aliqest+aliqmun // salva total aliquota importados

         EndIf
   
      EndIf
 
      nPointer += nEol + 1            // incrementa o pointer
      If nPointer >= nLenArq          // se fim de arquivo,
         Exit                           // fim...
      Else                            // se nao,
         FSeek( nHandle, nPointer, 0 )  // posiciona o pointer
      EndIf
      
   EndDo
 
   If nTipoTabela = 1
      cMsg := "Arquivo "+cArquivoDBF+" Criado com c¢digos NCM e NBS;;"
      cMsg += "NCM = Nomenclatura Comum do Mercosul     ;"
      cMsg += "NBS = Nomenclatura Brasileira de Servi‡os"
   ElseIf nTipoTabela = 2
      cMsg := "Arquivo "+cArquivoDBF+" Criado com c¢digos NCM;;"
      cMsg += "NCM = Nomenclatura Comum do Mercosul"
   ElseIf nTipoTabela = 3
      cMsg := "Arquivo "+cArquivoDBF+" Criado com c¢digos NBS;;"
      cMsg += "NBS = Nomenclatura Brasileira de Servi‡os"
   EndIf
 
   Alert( cMsg ) // versÆo 3.0
 
   SetCursor( nCursor )

Return Nil

********************************************************************************  
/*  
 * Remover os acentos do texto recebido  
 * 30/03/2017 - 07:38:54  
 */  
FUNCTION RemoverAcentos(cTexto,lUpper)  

	//Hb_Default( @lUpper, .f. )
	
	cTexto := AnsiToOem( cTexto ) // Win_AnsiToOem( cTexto )
	
	// acento agudo
	cTexto := StrTran( cTexto, "á", "a" )
	cTexto := StrTran( cTexto, "é", "e" )
	cTexto := StrTran( cTexto, "í", "i" )
	cTexto := StrTran( cTexto, "ó", "o" )
	cTexto := StrTran( cTexto, "ú", "u" )
	cTexto := StrTran( cTexto, "Á", "A" )
	cTexto := StrTran( cTexto, "É", "E" )
	cTexto := StrTran( cTexto, "Í", "I" )
	cTexto := StrTran( cTexto, "Ó", "O" )
	cTexto := StrTran( cTexto, "Ú", "U" )
	cTexto := StrTran( cTexto, " ", "a" )
	cTexto := StrTran( cTexto, "‚", "a" )
	cTexto := StrTran( cTexto, "¡", "a" )
	cTexto := StrTran( cTexto, "¢", "a" )
	cTexto := StrTran( cTexto, "£", "a" )
	cTexto := StrTran( cTexto, "µ", "A" )
	cTexto := StrTran( cTexto, "", "E" )
	cTexto := StrTran( cTexto, "Ö", "I" )
	cTexto := StrTran( cTexto, "à", "O" )
	cTexto := StrTran( cTexto, "é", "U" )
	
	// acento circunflexo
	cTexto := StrTran( cTexto, "â", "a" )
	cTexto := StrTran( cTexto, "ê", "e" )
	cTexto := StrTran( cTexto, "î", "i" )
	cTexto := StrTran( cTexto, "ô", "o" )
	cTexto := StrTran( cTexto, "û", "u" )
	cTexto := StrTran( cTexto, "Â", "A" )
	cTexto := StrTran( cTexto, "Ê", "E" )
	cTexto := StrTran( cTexto, "Î", "I" )
	cTexto := StrTran( cTexto, "Ô", "O" )
	cTexto := StrTran( cTexto, "Û", "U" )
	cTexto := StrTran( cTexto, "¶", "A" )
	cTexto := StrTran( cTexto, "â", "O" )
	cTexto := StrTran( cTexto, "ƒ", "a" )
	cTexto := StrTran( cTexto, "“", "o" )

	
	// til
	cTexto := StrTran( cTexto, "ã", "a" )
	cTexto := StrTran( cTexto, "õ", "o" )
	cTexto := StrTran( cTexto, "Ã", "A" )
	cTexto := StrTran( cTexto, "Õ", "O" )
	cTexto := StrTran( cTexto, "Ç", "A" )
	cTexto := StrTran( cTexto, "å", "O" )
	cTexto := StrTran( cTexto, "Æ", "a" )
	cTexto := StrTran( cTexto, "ä", "o" )
	
	// ce-cedilha
	cTexto := StrTran( cTexto, "ç", "c" )
	cTexto := StrTran( cTexto, "Ç", "C" )
	cTexto := StrTran( cTexto, "€", "C" )
	cTexto := StrTran( cTexto, "‡", "c" )
	
	// trema
	cTexto := StrTran( cTexto, "ü", "u" )
	cTexto := StrTran( cTexto, "Ü", "U" )
	
	// crase
	cTexto := StrTran( cTexto, "à", "a" )
	cTexto := StrTran( cTexto, "è", "e" )
	cTexto := StrTran( cTexto, "ì", "i" )
	cTexto := StrTran( cTexto, "ò", "o" )
	cTexto := StrTran( cTexto, "ù", "u" )
	cTexto := StrTran( cTexto, "À", "A" )
	cTexto := StrTran( cTexto, "È", "E" )
	cTexto := StrTran( cTexto, "Ì", "I" )
	cTexto := StrTran( cTexto, "Ò", "O" )
	cTexto := StrTran( cTexto, "Ù", "U" )
	
	cTexto := StrTran( cTexto, "¶", "A" )
	cTexto := StrTran( cTexto, "â", "O" )
	cTexto := StrTran( cTexto, "ƒ", "a" )
	cTexto := StrTran( cTexto, "“", "o" )
	
	If lUpper
		cTexto := Upper(cTexto)
	EndIf

Return cTexto
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder