Foi liberado na paleta de componentes ACBr um novo componente para baixar e manipular a tabela de impostos aproximados do IBPT, segue um exemplo de como utilizar o componente para efetuar o download e manipular os dados baixados.
var I: Integer; begin // configurar a URL do arquivo para ser baixado // Você configurar como quiser, para o seu site ou servidor proprios // deixarei a tabela atualizada sempre no endereço // https://regys.com.br/arquivos/AcspDeOlhoNoImpostoIbptV.0.0.1.csv if Trim(URL) <> '' then ACBrIBPTax1.URLDownload := Trim(URL); // se o path do arquivo não for passado o componente tenta baixar da URL // informada na propriedade URLDownload // Se o path for passado ele abre diretamente o arquivo informado if ACBrIBPTax1.AbrirTabela(Path Arquivo .csv) then begin // versão do arquivo lVersao.Caption := 'Versão: ' + ACBrIBPTax1.VersaoArquivo; // exemplo de como popular uma tabela com os dados baixados tmpCadastro.Close; tmpCadastro.DisableControls; try for I := 0 to ACBrIBPTax1.Itens.Count - 1 do begin tmpCadastro.Append; tmpCadastroNCM.AsString := ACBrIBPTax1.Itens[I].NCM; tmpCadastroEx.AsString := ACBrIBPTax1.Itens[I].Excecao; tmpCadastroTabela.AsInteger := Integer(ACBrIBPTax1.Itens[I].Tabela); tmpCadastroAliqNacional.AsFloat := ACBrIBPTax1.Itens[I].AliqNacional; tmpCadastroAliqInternacional.AsFloat := ACBrIBPTax1.Itens[I].AliqImportado; tmpCadastro.Post; end; finally tmpCadastro.First; tmpCadastro.EnableControls; end; end; end;
Existe outros métodos no componente tais como:
Método para efetuar o download da tabela, não esquecer de informar o enderço na propriedade URLDownload
ACBrIBPTax1.DownloadTabela
método para exportar o arquivo para diversos formatos
ACBrIBPTax1.Exportar(path arquivo, tipo);
Parâmetros:
Path Arquivo: caminho onde deseja salvar o arquivo
Tipo: Formato do arquivo, os formatos disponibilizados são: exCSV, exDSV, exXML, exHTML, exTXT
Existe um overload para o método ACBrIBPTax1.Exportar(path arquivo, delimitador), onde o parâmetro delimitador pode ser utilizado para gerar um arquivo Texto com valores separados pelo delimitador informado.
Você também pode procurar por um NCM específico na tabela utilizando esse exemplo:
var ex: String; tabela: Integer; aliqNac, aliqImp: Double; begin if ACBrIBPTax1.Procurar(Codigo NCM, ex, tabela, aliqNac, aliqImp) then begin ShowMessage( 'Exceção: ' + ex + sLineBreak + 'Tabela: ' + IntToStr(tabela) + sLineBreak + 'Aliq Nac: ' + FloatToStr(aliqNac) + sLineBreak + 'Aliq Imp: ' + FloatToStr(aliqImp) ); end else showmessage('Código não encontrado!'); end;
estou tendo dificuldades em utilizar o componente. necessito do token. onde e como informo este token?
O token é utilizado somente quando você quer ler os dados diretamente da API do IBPT, neste caso você precisa efetuar um cadastro no site https://deolhonoimposto.ibpt.org.br/ e gerar o token ou você pode utilizar a tabela off-line somente abrindo o arquivo como é mostrado no demo do ACBrIBPTax.
Bom dia Régis, desde já agradeço o seu conhecimento compartilhado.
Gostaria de saber se existe um link fixo para que eu possa deixar gravado e sempre que o cliente quiser baixar a tabela, ele escolher só a versão, e assim eu concateno com o link fixo.
Diretamente do site do IBPT não, mas você pode baixar e subir para uma hospedagem sua e utilizar esse link como referência.
Boa Noite Regis o Arquivo https://regys.com.br/arquivos/AcspDeOlhoNoImpostoIbptV.0.0.1.csv nao esta mas publicado. esta dando erro 404. obrigado.
Este arquivo não deve ser mais utilizado, utilize a versão mais nova do arquivo IBPT, você pode pegar aqui:
https://www.regys.com.br/arquivos/TABELAS_IBPT_16.2.A.zip
Olá Régys, tenho uma dúvida simples sobre a nova tabela IBPT. Gostaria de saber de que forma diferencio uma classificação fiscal de Produto de uma de Serviço ? Seria o campo “tipo”, onde 0 seria produto e 1 e 2 seria serviço ?
Agradeço desde já!
0 – NCM (mercadorias)
1 – NBS (Serviços)
2 – LC 116 (Serviços)
Olá Régys. Na minha aplicação, o componente ACBrIBPTax lê o arquivo CSV e passa essas informações para uma FDQuery. Porém, alguns registros não grava corretamente o campo descrição, estou tendo esse problema com caracteres especiais. Um exemplo: Um registro onde a descrição da classificação fiscal seria “Demolição” o componente ACBrIBPTax passa “Demoli??o” para a minha FDQuery. Ou seja, o componente da ACBr substitui os caracteres especiais por pontos de interrogação. Você saberia me dizer o motivo desse problema e como resolve-lo ? Agradeço desde já!
Você não está considerando o UNICODE provavelmente, tente fazer a conversão de UNICODE para String ou vice-e-versa, vai depender de como está na sua base de dados.
Desculpa cara não entendi. Como assim não estou considerando o UNICODE ? Eu dei uma pesquisada, usei funções do Delphi do tipo “Utf8ToAnsi()” ; “AnsiToUtf8()” ; “UTF8Decode()” ; “UTF8Encode()” ; UTF8ToUnicode(). Nenhuma me ajudou, desculpa se eu citei alguma besteira, pois sou inexperiente em programação Delphi. Se vc puder me explicar um pouco mais detalhadamente ou até exemplificar com uma linha ou pequeno trecho de código, me ajudaria muito. Agradeço desde já!!
Verifique se o charset que está usando para conectar ao seu banco de dados é o mesmo no qual o banco de dados foi utilizado.
Em minha base de dados está tudo OK. Fiz o seguinte teste… Usei o método DownloadTabela e Exportar… Informei um diretório qualquer e depois abri o arquivo que eu tinha acabado de fazer Download. Neste arquivo, os caracteres especiais ja estavam “bugados”, da forma quem mencionei anteriormente onde um “ç” por exemplo estava trocado por “?”. O Arquivo vem dessa forma logo após ser feito o download via componente ACBrIBPTax, isso que está me complicando a vida.
Estive debugando o método Download do componente… A codificação de caractéres do arquivo baixado é Ansi, e vem com os caractéres especiais todos corretos.. Após feita verificação na propriedade ParseText passar pelo seguinte trecho de código no arquivo ACBrSocket:
if ParseText then
RespHTTP.Text := ACBrUtil.ParseText( RespHTTP.Text, True, IsUTF8 )
else
RespHTTP.Text := ACBrUtil.DecodeToString( RespHTTP.Text, IsUTF8 );
Tanto ParseText = True ou ParseText = False, os caracteres especiais do arquivo são todos subtituídos por um ponto de interrogação (“?”). Sabe me dizer se é devido a codificação do arquivo ou esse trecho de código está com problema ?
Estranho, aqui eu tenho utilizado ele abrindo o arquivo diretamente da máquina, já baixado, não uso mais o Download, penso que seria interessante abrir um tópico no fórum ACBr com um passo-a-passo explicando o problema para que possamos lhe ajudar melhor por lá.
Olá, tenho disponível o Token após ter feito cadastro e cadastro da empresa onde sou desenvolvedor. Com o Token disponível, como configuro o componente ACBrIBPTax para que através do meu Software eu faça o download da tabela leia o arquivo CSV e atualiza meu banco de dados ?
O componente ACBrIBPTax somente abre o arquivo diretamente ou efetua o download de um local seu, ele não baixa diretamente do site do IBPT.
Você precisa baixar o arquivo e hospedar em algum ftp ou servidor web próprio, feito isso basta seguir o Demo que está na pasta \exemplos do repositório ACBr.
Oi Régys boa tarde. Sabe onde encontro a tabela atualizada?
Tente baixar pelo site do IBPT, se não conseguir segue o link: https://www.regys.com.br/arquivos/TABELAS_IBPT_16.2.A.zip
Oi Regys ! Teremos alguma alteração no componente ref. ao uso do Token disponibilizado pelo IBPT ?
Ainda estou verificando como fazer dentro do componente, mas sim, teremos um método para download da tabela baseado no token.
Regys voce sabe se existe uma rotina em outra linguagem, clipper por exemplo, para baixar a tabela no seu site ?
Não conheço nenhuma rotina, mas o arquivo está no layout csv separado por delimitador, penso que qualquer linguagem conseguiria ler o arquivo e traduzi-lo para o formato necessário.
Regis, gostaria de tirar uma duvida
quando usamos a tabela do IBPT para mencionar a carga tributaria na NF … devemos aplicar o percentual indidicado na tabela sobre o valor total do item e este valor informar em dados adicionais da NF, certo? minha duvida é se devo considerar como base de calculo o valor do item sem ipi, certo?
Você deveria considerar o valor bruto do produto, ou seja, Quantidade X Valor Unitário.
Lembre-se que essa informação é meramente ilustrativa e nunca vai refletir realmente o que foi pago de imposto, mas somente uma estimativa.
Só entrando no assunto para instalar o componente de forma manual deve-se copilar antes as bibliotecas requeridas e depois ACBrTCP.
Se tiver erro o Regys mim corrija.
Compile e instale os pacotes base e depois o ACBrTCP.
Regys, Por favor pode me da uma ajuda to tentando achar o ACBrIBPTax para instalar mais não to achando ja atualizei o ACBr como vc disse em outro post.. e nada.. Utilizo delphi 7 e 2007 em outro projeto..e firebird..
1. Mudou o repositório dos seus fontes? Alteração no endereço do repositório do Projeto ACBr.
2. Recompilou tudo?
Regys,
Foi liberada uma nova tabela IBPT, porém o componente do ACBR não consegue fazer a leitira da mesma, pois pelo que pude perceber a nova tabela tem estrutura diferente da primeira.
E agora?
Faça um update do seu repositório, veja que o endereço do ACBr agora mudou, veja mais em: Alteração no endereço do repositório do Projeto ACBr
Consegui, tive problema na hora de copilar na função FloatToString mais e porque uso o delphi XE2 já resolvi obrigado!
E parabéns pela iniciativa como foi útil será a centenas de pessoas.
Obrigado, que bom que ajudou 🙂
Na verdade esse erro é porque você não recompilou todos os pacotes, o FloatToString está no pacote ACBrComum, ele precisa se recompilado antes de qualquer outro pacote.
Régys onde baixo o componente? Atualizei o ACBr e ele não se encontra no pacote!
Você recompilou os pacotes do ACBr depois de atualizar? se não recompilar o novo componente não aparece.
Bom, tentei já havia tentado enviar o valor liquido mas a NFe não valida por erro de soma, então fiz o seguinte ajustei a implementação do cupom fiscal para que saia igual a NFe.
Ex:
Total do cupom + Descontos aplicados nos itens
Valor total do item 10,00-Desconto 1,00=9,00
Valor total do cupom 9,00
Valor aprox dos tributos 2,89(28,90%)
Considerando que temos apenas um item no cupom, ou mais itens com o mesmo NCM, a aIiquota IBPTAX sofre esta alteração apenas em cupons com descontos nos itens.
Att;
Genilson
O erro de soma é uma coisa o cálculo é outra.
O Erro de soma provavelmente ocorreu porque houve diferença no somatório total do que foi calculado nos itens, somente isso.
Quanto ao cálculo, se você incluir o imposto eu particularmente penso que está errado porque o cliente não pagou aquele valor de desconto que você considerou, por isso acho que o correto seria não considerar o desconto, visto que o cliente paga efetivamente o valor sem ele.
Boa noite Regys, vejá este exemplo:
quantidade 1; unitario 10,00; desconto 1,00; total do item 9,00; aliquota do ncm 01012100 na tabela IBPTax 32,09%
Total.ICMSTot.vTotTrib := 9,00
A NFe ficou assim
Valor aprox dos tributos 2,89(28,90%)
Valor total dos produtos 10,00
Desconto 1,00
Valor total da nota 9,00
Se você fizer os cálculos verá que foi considerado o valor dos produtos sem desconto para cálculo dos tributos, e na minha interpretação o calculo deveria considerar o valor total dos produtos menos o desconto para que fosse impresso no Danfe 2,89(32,09%). Na implementação do cupom fiscal ficou assim, já na NFe ficou como no exemplo anterior, a principio o valor é mesmo mas como a alíquota ficou diferente está causando duvidas junto ao clientes, qual a sua opinião?
Obrigado desde já.
Eu considero que o correto é o valor líquido, porque a lei diz que devemos mostrar em cima do que o consumidor está pagando, como ele paga o valor com desconto, portanto, ao meu ver devemos considerar esse valor para efeitos de cálculo.
Regis caso algum código NCM não estiver na lista o calculo é obrigatório?
O cálculo é obrigatório para a venda de todas as mercadorias, independente de estar na tabela IBPT ou não, a tabela é meramente um auxiliar, para os casos em que o NCM não consta na tabela, envie um e-mail ao IBPT assim ele atualizam na próxima versão da tabela, e enquanto a liberação da versão não sai você deve calcular a mão.
Boa tarde Régys, estou com uma duvida, por exemplo, no NCM 84021900 alíquota Nacional 26,33%, tenho duas empresas em uma a alíquota para emissão de NFE de PIS é 0,65% e COFINS 3% já na outra PIS 1,65% e COFINS 7,06%, por ser diferente devo fazer algum calculo para chegar na alíquota aproximada ou posso utilizar 26,33 para as duas empresas.
A alíquota IBPT independe de regime tributário ou tipo de imposto. Veja mais em: Dúvidas e respostas sobre a utilização da tabela IBPT
Eu preciso necessariamente utilizar os índices da tabela IBP ou seu eu quiser eu posso informar os índices de acordo como eu achar melhor calcula-los ? A tabela é uma referencia legal obrigatória ou apenas uma forma de facilitar as coisas para o contribuinte se posicionar para esse cálculo ?
É obrigatório a inclusão da TAG VTotTrib ? Ou posso apenas narrar os valores no campo informações adicionais sem necessariamente mexer com essa TAG ?
Não é obrigatório utilizar a tabela do IBPT, você pode fazer seu cálculo próprio a lei é clara você pode calcular por conta própria ou usar o índice de um órgão reconhecido pelo governo, neste caso o IBPT.
A tag não é obrigatório por enquanto, isso é dito no manual inclusive, mas se você for mostrar seria ideal preenchê-la também, visto que sistemas de informação de quem recebe o XML podem querer utilizar para algum fim no futuro.
Régys voce sabe qual é o caminho oficial para baixar o arquivo direto da IBTP.
Sim claro, basta fazer o cadastro nesse endereço: http://deolhonoimposto.ibpt.com.br/, todo final de tarde eles enviam para os novos cadastrados, enviam também sempre que existe uma nova atualização, geralmente a atualização ocorre a cada 6 meses ou antes se for necessário por alguma força de lei.
Olá Regys, no componente a propriedade Arquivo eu coloco o nome do arquivo com a extensão ou o path completo ? porque esta no formato de stringlist ?
A propriedade arquivo é conteúdo do arquivo texto lido, você deve passar o path completo do arquivo no método AbrirTabela ou deixar em branco para que ele baixe utilizando o endereço web informado na propriedade URLDonwload.
Faltou adicionar um método para Popular os itens a partir da propriedade Arquivo caso ela já tenha sido carregada antes (count > 0).
Isso é útil, por exemplo, se já tivermos o arquivo gravado num blob no BD e o carregarmos a partir de um TStream.
Cleber a ideia é usar o arquivo carregado da internet ou txt para popular uma tabela no banco de dados, cruzar as informações e obter a alíquota aproximada, não faz muito sentido manter o arquivo texto guardado no banco, carregar e procurar todas as vezes, o ideal é sempre baixar o arquivo ler o conteúdo e atualizar a tabela no banco de dados, assim você pode usar a informação de maneira mais simples e mais tranquila.
Perfeito, vou fazer isso!
Abraços e obrigado!
Parabens Régys pela iniciativa. Obrigado !
***este eu não encontrei na tabela IBP 33049010
Tente enviar um e-mail ao IBPT (mayara@ibpt.com.br), acho que esse seria o caminho mais tranquilo e correto.
Boa noite, Régys!
Caso, o código da NCM não exista na tabela Ibp, <>. Tem alguma sugestão de como eu posso conseguir o índice da alíquota Nacional para eu fazer o cálculo na NF-e?
Acho que o caminho mais correto seria primeiro enviar um e-mail a eles, assim eles incluem, e provavelmente já te respondem qual a alíquota, lembrando que a tabela do IBPT ainda está em fase inicial, provavelmente vários NCMs vão estar faltando, principalmente os menos utilizados.
obrigado !!1
Boa tarde!
Gostaria de saber com a Lei 12.741 eu devo informar na Nf-e as alíquotas discriminadas de todos os impostos ou somente destacar o resumo como Valor aprox. usando a tabela IBPT?
Muito obrigado e parabéns pelo post!.
Pedro.
Essa dúvida já está respondida no artigo sobre a lei 12.741, você vai usar a alíquota de valor aproximado disponibilizada pela IBPT.
Regys, li o manual do IBPT, mais uma coisa não ficou clara, pelo menos pra mim. Quando uma empresa do Simples Nacional fizer uma venda, qual alíquota será usada? Aliquota Nacional ? ou Aliquota de Importação? Se a empresa comprou esse produto como produto importado?
aliqNac: Alíquota utilizada quando a origem da mercadoria for 0,3,4 ou 5
aliqImp: Alíquota utilizada quando a origem da mercadoria for diferente de 0,3,4 ou 5
Aê menino, parabéns pelo grande trabalho que você fez e nos polpou. Grande Régys, sempre prestativo. Agradeço em nome da comunidade inteira. Tenho certeza que falo em nome de todos. Abração.
Existe um custo para a empresa se adequar? Quanto as empresas de software tem cobrado?
Olha eu não tenho visto ninguém cobrar, porque isso é uma obrigação da legislação, o cliente tem que fazer é o software de certa forma somente reflete a obrigação da lei.
Antes de tudo parabéns pelo trabalho, tenho algumas duvidas:
1. eu consigo vincular este componente ao componente acbrecf, ou devo procurar o ncm, calcular o valor e imprimir na descrição do item?
2.teria algum exemplo de um cupom impresso?
3.como considerar o desconto/acrescimo da venda se o imposto eh calculado e impresso na linha do item?
4. o campo ACBrIBPTax1.Itens[I].Tabela, ja notei que nessa tabela existem itens com o codigo 0 e 1 devo considerar o maior?
5. precisarei exibir esse valor na NFE também ou so no ECF?
desculpe a metralhadora de perguntas eh que está tão em cima e ainda estou um pouco perdido.
1. Não, ele não se vincula, o intuito na verdade é você baixar a tabela na tua base de dados e usar os dados quando necessário.
2. Não tenho um exemplo, mas é simples, basta seguir o artigo que mostro como utilizar o ACBrECF e ACBrNFe, no caso do ACBrECF se você preencher as propriedades o ACBrECF imprimi sozinho no rodapé, no vaso da nota eletrônica você deve adicionar ao item ao as informações complementares, como achar melhor.
3. você considera o valor total do item, o valor final, neste valor você aplica a taxa de imposto aproximado e tem o valor aproximado do imposto, dai você pode imprimir no item ou acumular para imprimir no fim.
4. Veja na documentação da tabela IBPT, esse campo tabela informa se é NCM (mercadoria) ou NBS (Serviço), você usa conforme o tipo de mercadoria.
5. Você deve exibir o valor sempre que for venda a consumidor, independente do que estiver utilizando (Cupom fiscal, Nota eletrônica, etc)
A impressão pode ser por item ou nas informações complementares ou rodapé no caso do ECF, a tendência está sendo imprimir nas informações complementares e rodapé.
Olá Régys, o componente AcbrIBPTAX foi descontinuado ? reeintalei todos os componentes acbr mas agora meu projeto da erro de compilação falatando IBPTAX notei que não existe o pacote mais no download via SVN … como baixa-lo ?
Ele faz parte do pacote ACBrTCP, basta instalar esse pacote que ele estará disponível.