Sobre a tabela de NCM

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

rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Sobre a tabela de NCM

Mensagem por rossine »

Olá,

Teria alguma maneira de baixar e manter a tabela NCM atualizada em nossos sistemas ?

Obrigado.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Sobre a tabela de NCM

Mensagem por rochinha »

Amiguinhos,

rossine tem uma galera no forum usando a tabela IBPT como base para o trabalho com NCM e impostos.

Cadastre-se no IBPT para poder baixar as tabelas atualizadas.

Um forense disponibilizou este aplicativo show-de-bola para transformar a tabela .CSV/.XLS para .DBF

Assim você automatiza:

Código: Selecionar todos

   // Se encontrado o BACKUP.RAR descompacta
   if file( "TbIBPTSP.dbf" )
      ImportaIBPTax(oWnd)
      fErase( "TbIBPTSP.dbf" )
   endif

Código: Selecionar todos

FUNCTION ImportaIBPTax(oWnd)
   local cDbf, nRegNumbers := 0
   IF PERG('Tem certeza desta exportacao de registros(S/N)?') = 'S'
         USE TbIBPTSP SHARED NEW
         USE IBPT        SHARED NEW
         dbSelectArea( "IBPT" )
         dbGotop()
         cMsg := "Aguarde. Eliminando [#] registro(s)."
         do while .not. eof()
            dbRLock()
            dbDelete()
            dbRUnLock()
            // cMsg
            cMsg := strTran( cMsg, "[#]", alltrim(str(recno())) )
            //oWnd:SetMsg( cMsg )
            dbSkip()
         enddo
         //
         dbSelectArea( "TbIBPTSP" )
         dbGotop()
         cMsg := "Aguarde. Importando dados. [#] registro(s) contados."
         do while .not. eof()
            M->CODIGO     := TbIBPTSP->CODIGO
            M->EX         := TbIBPTSP->EX
            M->TIPO       := TbIBPTSP->TIPO
            M->DESCRICAO  := TbIBPTSP->DESCRICAO
            M->FEDERALNAC := TbIBPTSP->FEDERALNAC
            M->FEDERALIMP := TbIBPTSP->FEDERALIMP
            M->ESTADUAL   := TbIBPTSP->ESTADUAL
            M->MUNICIPAL  := TbIBPTSP->MUNICIPAL
            M->INI_VALID  := TbIBPTSP->INI_VALID
            M->FIM_VALID  := TbIBPTSP->FIM_VALID
            M->CHAVE      := TbIBPTSP->CHAVE
            M->VERSAO     := TbIBPTSP->VERSAO
            M->FONTE      := TbIBPTSP->FONTE
            //M->TOTALNAC   := TbIBPTSP->TOTALNAC
            //M->TOTALIMP   := TbIBPTSP->TOTALIMP
            dbSelectArea( "IBPT" )
            IBPT->(dbAppend())
            IBPT->CODIGO     := VAL(TbIBPTSP->CODIGO)
            IBPT->EX         := TbIBPTSP->EX
            IBPT->TABELA     := TbIBPTSP->TIPO
            IBPT->DESCRICAO  := TbIBPTSP->DESCRICAO
            IBPT->ALIQNAC    := TbIBPTSP->FEDERALNAC
            IBPT->ALIQIMP    := TbIBPTSP->FEDERALIMP
            IBPT->ALIQEST    := TbIBPTSP->ESTADUAL
            IBPT->ALIQMUN    := TbIBPTSP->MUNICIPAL
            IBPT->VIGENCIAI  := TbIBPTSP->INI_VALID
            IBPT->VIGENCIAN  := TbIBPTSP->FIM_VALID
            IBPT->CHAVE      := TbIBPTSP->CHAVE
            IBPT->VERSAO     := TbIBPTSP->VERSAO
            IBPT->FONTE      := TbIBPTSP->FONTE
            //IBPT->TOTALNAC   := TbIBPTSP->TOTALNAC
            //IBPT->TOTALIMP   := TbIBPTSP->TOTALIMP
            IBPT->(dbCommit())
            dbSelectArea( "TbIBPTSP" )
            cMsg := strTran( cMsg, "[#]", alltrim(str(recno())) )
            //oWnd:SetMsg( cMsg )
            dbSkip()
         enddo
         //MENSAGEM("Operacao terminada:"+CRLF+CRLF+"Foram transferidos "+alltrim(str(nRegNumbers))+" registros.")
   ENDIF
   return nil
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.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Sobre a tabela de NCM

Mensagem por rubens »

Bom dia...

O idela seria conseguir baixar direto do ibpt, aí sim.. resolveria o problema...
Se alguém tiver rotina que faz isso e puder disponibilizar seria ótimo...

Obrigado...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Sobre a tabela de NCM

Mensagem por fladimir »

usa o acbr e resolve tb.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Sobre a tabela de NCM

Mensagem por rubens »

Boa tarde...

Mas Fladimir... Usar o ACBR? Tem opção de baixar a tabela IBPT pelo acbr?

Obg
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Sobre a tabela de NCM

Mensagem por fladimir »

O ACBR baixa a tabela NCM atualizada.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Sobre a tabela de NCM

Mensagem por Jairo Maia »

Rubens, você não é cadastrado no site https://deolhonoimposto.ibpt.org.br/? Se não for, se cadastre, assim quando sair uma nova versão da tabela, você receberá um email, então vá no site, faz login e baixe a tabela. Após isso passe para DBF.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Sobre a tabela de NCM

Mensagem por rubens »

Boa noite...

Já faço isso Jairo, inclusive uso um programa que você disponibilizou aqui para converter para DBF. Mas isso tudo é manual... depois que tenho a tabela tenho que sair atualizando os clientes um a um... Ainda não tenho FTP para o sistema fazer isso.. Agora imagine isso online, sendo feito do jeito que baixávamos xml pelo impnfe do Daniel.. Coloca um botão para atualizar ou o próprio sistema pudesse baixar a tabela quando houvesse uma nova versão e atualizasse. Pronto...
Eu vi isso em alguns programas.. Tem um item lá ataulizar IPBT. Agora não sei se atualizava do site de olho no imposto ou no ftp do programador.... (hum que seria um boa né...a gente baixa, transforma em dbf e disponibiliza no ftp... é uma possibilidade kkk)...

abçs...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Sobre a tabela de NCM

Mensagem por rochinha »

Amiguinhos,

Automatize o seu FTP:

Código: Selecionar todos

   if ! file( "TbIBPTSP.dbf" )

      downloadIBPTax()

      // Chama rotina de importação se for o caso

   endif
Eu uso a seguinte rotina para fazer envio e recebimento de arquivos via FTP:

Código: Selecionar todos

function downloadIBPTax()  
   cArquivoRemoto := "TbIBPTSP.dbf"
   //
   fErase( "C:\TEMP\"+cArquivoRemoto ) 
   //
   if ! IsInternet( "www.google.com" ) // Use alguma funcao propria
      // Evitando mensagem de erros
      return .f.
   endif
   // 
   cFTPServerName     := "158.159.160.161"
   cFTPLoginID        := "usuario@dominio.com.br"
   cFTPPassword       := "*********"
   cServerFolder      := "downloads"
   cLocalFolder       := "C:\TEMP"
   // 
   ws := TdWebService():new()
   ws:GetFile( "/"+cArquivoRemoto, "C:\TEMP\"+cArquivoRemoto, cFTPServerName, cFTPLoginID, cFTPPassword )
   ws:end()
   //
   return .t.
Código da classe modificada com a opção de FTP:

Código: Selecionar todos

/*
 *
 * Classe WebService
 *
 */
#include "dll.ch"

//static xdll

CLASS TdWebService
   DATA hOpen
   DATA sbuffer HIDDEN
   DATA xDLL HIDDEN

   METHOD New(buffersize) CONSTRUCTOR

   METHOD FTPGetFile( cRemoteFile, cNewFile, nFailIfExists, nFlagsAndAttribs, nFlags, nContext )
   METHOD FTPPutFile( cLocalFile, cNewRemoteFile, nFlags, nContext )

   METHOD OpenWS(url)

   METHOD End()
ENDCLASS

METHOD New(conexion,buffersize) CLASS TdWebService
   DEFAULT buffersize:=64000
   ::sbuffer:=buffersize
   xDll:=LoadLib32("wininet.dll")
   ?"teste"
   ::hOpen := InternetOpen("TdWebService", 1,,, 0)
   RETURN Self

METHOD OpenWS(url) CLASS TdWebService
   local hFile,ret,xml
   hFile := InternetOpenUrl(::hOpen, url,"",0,,0)
   xml:=space(::sbuffer)
   InternetReadFile(hFile, @xml, ::sbuffer, @Ret)
   return subst(alltrim(xml),1,len(alltrim(xml))-5)

METHOD FTPGetFile( cRemoteFile, cNewFile, nFailIfExists, nFlagsAndAttribs, nFlags, nContext ) CLASS TdWebService
   local hFile,ret,xml
   lFile := FTPGetFile(::hOpen, cRemoteFile, cNewFile,,0,, @ret) // nFailIfExists, nFlagsAndAttribs, nFlags, nContext )
   return lFile

METHOD FTPPutFile( cLocalFile, cNewRemoteFile, nFlags, nContext ) CLASS TdWebService
   local hFile,ret,xml
   lFile := FTPPutFile( ::hOpen, cLocalFile, cNewRemoteFile, nFlags, nContext )
   return lFile

METHOD End() CLASS TdWebService
   FreeLib32(xDll)
   return nil

DLL32 FUNCTION InternetOpen( cApp as LPSTR, n1 AS DWORD, n2 AS LPSTR, n3 AS LPSTR, n4 AS DWORD ) AS LONG PASCAL FROM "InternetOpenA" LIB xdll
Dll32 Function InternetReadFile(hFile As 7, @sBuffer As 8, lNumBytesToRead As 7, @lNumberOfBytesRead As 7) As 7 PASCAL Lib xdll
Dll32 Function InternetOpenUrl(hInternetSession As 7, lpszUrl As 8, lpszHeaders As 8, dwHeadersLength As 7, dwFlags As 7, dwContext As 7) As 7 FROM "InternetOpenUrlA" PASCAL Lib xdll
DLL32 FUNCTION InternetCloseHandle( hSession AS LONG ) AS BOOL PASCAL LIB xdll
DLL32 FUNCTION InternetConnect( hInternet AS LONG, cServerName AS LPSTR, nServerPort AS LONG, cUserName AS LPSTR, cPassword AS LPSTR, nService AS LONG, nFlags AS LONG, @nContext AS PTR ) AS LONG PASCAL FROM "InternetConnectA" LIB xDll
DLL32 FUNCTION InternetWriteFile( hFile AS LONG, cBuffer AS LPSTR, lSize AS LONG, @nSize AS PTR ) AS BOOL PASCAL LIB xDll
DLL32 FUNCTION InternetSetFilePointer( hFile AS LONG, nDistanceToMove AS LONG, nReserved AS LPSTR, nSeekMethod AS LONG, @nContext AS PTR ) AS BOOL PASCAL LIB xDll
DLL32 FUNCTION InternetFindNextFile( hFTPDir AS LONG, @cWin32DataInfo AS LPSTR ) AS BOOL PASCAL FROM "InternetFindNextFileA" LIB xDll
DLL32 FUNCTION FtpOpenFile( hFTP AS LONG, cRemoteFile AS LPSTR, n1 AS LONG, n2 AS LONG, n3 AS LONG ) AS LONG PASCAL FROM "FtpOpenFileA" LIB xDll
DLL32 FUNCTION FTPGetFile( hConnect AS LONG, cRemoteFile AS LPSTR, cNewFile AS LPSTR, nFailIfExists AS LONG, nFlagsAndAttribs AS DWORD, nFlags AS DWORD, @nContext AS PTR ) AS BOOL PASCAL FROM "FtpGetFileA" LIB xDll
DLL32 FUNCTION FTPPutFile( hConnect AS LONG, cLocalFile AS LPSTR, cNewRemoteFile AS LPSTR, nFlags AS DWORD, @nContext AS PTR ) AS BOOL PASCAL FROM "FtpPutFileA" LIB xDll
DLL32 FUNCTION FtpFindFirstFile( hFTP AS LONG, cMask AS LPSTR, @cWin32DataInfo AS LPSTR, n1 AS LONG, n2 AS LONG ) AS LONG PASCAL FROM "FtpFindFirstFileA" LIB xDll
Façam suas adaptções pois uso eu Fivewin.
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.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Sobre a tabela de NCM

Mensagem por rubens »

Bom dia...
:{ :{ :{
p.s. Da próxima vez vou pedir os números da mega sena do próximo sorteio ... kkkkkk
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Sobre a tabela de NCM

Mensagem por rochinha »

Amiguinhos,

O IBPT tem uma API para pegar informações direto de sua base. [url=https://deolhonoimposto.ibpt.org.br/Sit ... odutos_Get]API IBPT[/b]

O problema é que você tem de fazer muito consumo para cada NCM. nA MINHA OPINIÃO A API só serve para uma ou outra busca. Consumí-la para atualizar a base não vale a pena já que a base é atualizada a cada 2 ou 3 meses.

Contabilizando o numero de atualizações que se fariam, baixando o arquivo, enviando para o FTP e deixando seu software em seus clientes baixarem automaticamente é infinitamente menor do que fazer mais de 11.000 requisições por cliente.

Baixar e upar o arquivo ainda será infinitamente menor o suporte do que perfazer no escritório tanto consumo, gerar o arquivo e upar.

Eu até cheguei a ver a API mas analisando no global vi que seria muito desperdício de consumo.
Da próxima vez vou pedir os números da mega sena do próximo sorteio ... kkkkkk
Talvez no próximo, pois passei os últimos número para um amigo, ele ganhou e o telefone dele não atende mais.
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.
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Sobre a tabela de NCM

Mensagem por rossine »

Obrigado pessoal,

Irei testar estas opções aqui e ver se consigo automatizar isto.

Valeu pelas dicas,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
André Corrêa
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 03 Nov 2015 07:46
Localização: Caraguatatuba/SP

Sobre a tabela de NCM

Mensagem por André Corrêa »

Bom dia,

Como os colegas têm feito com as atualizações das alíquotas, visto o IBPT não disponibilizar mais o download
do CSV e a API não ter um método para download da tabela completa?
Atualmente, o único método disponibilizado permite que seja feita a requisição código por código.
Em bancos de dados mais extensos isso gera uma carga bem grande, além de demorar muito mais do que
deveria.
Alguém desenvolveu alguma solução para esse problema, ou estão atualizando um a um mesmo?

Obrigado,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Sobre a tabela de NCM

Mensagem por Jairo Maia »

Bom dia André,

De onde você tirou que o IBPT não está mais disponibilizando a tabela no formato .CSV?

A tabela atual é a 19.2.A com vigência entre hoje 01/08/2019 até 31/10/2019. Baixei diretamente em https://deolhonoimposto.ibpt.org.br/. Para você baixar você tem que ser cadastrado, e estar logado.

Se não é cadastrado, basta se cadastrar e logar, então baixar.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Sobre a tabela de NCM

Mensagem por fladimir »

Segundo tenho acompanhado, muitos nem atualizam, deixam uma lá, pq o sistema tem q informar, mas o percentual é de responsabilidade do cliente junto ao seu contador até onde temos vistos.

Resumindo, tem os q atualizam e os q não atualizam.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder