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.
Saudações,
Itamar M. Lins Jr.
Tabela IBPT (Download)
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Tabela IBPT (Download)
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.
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.