Clipper On Line • Ver Tópico - Sobre a tabela de NCM

Sobre a tabela de NCM

Discussão sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (ECF, TEF, SINTEGRA, NF-e, ECD, EFD, etc.)

Moderador: Moderadores

 

Sobre a tabela de NCM

Mensagempor rossine » 07 Mai 2019 09:09

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.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Sobre a tabela de NCM

Mensagempor rochinha » 12 Mai 2019 19:59

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:
   // Se encontrado o BACKUP.RAR descompacta
   if file( "TbIBPTSP.dbf" )
      ImportaIBPTax(oWnd)
      fErase( "TbIBPTSP.dbf" )
   endif


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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Sobre a tabela de NCM

Mensagempor rubens » 13 Mai 2019 09:32

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 de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Sobre a tabela de NCM

Mensagempor fladimir » 13 Mai 2019 15:34

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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Sobre a tabela de NCM

Mensagempor rubens » 13 Mai 2019 18:17

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 de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Sobre a tabela de NCM

Mensagempor fladimir » 13 Mai 2019 19:18

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 de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Sobre a tabela de NCM

Mensagempor Jairo Maia » 13 Mai 2019 21:20

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 de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Sobre a tabela de NCM

Mensagempor rubens » 13 Mai 2019 21:30

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 de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Sobre a tabela de NCM

Mensagempor rochinha » 14 Mai 2019 02:09

Amiguinhos,

Automatize o seu FTP:
   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:
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:
/*
*
* 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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Sobre a tabela de NCM

Mensagempor rubens » 14 Mai 2019 08:41

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 de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Sobre a tabela de NCM

Mensagempor rochinha » 14 Mai 2019 13:57

Amiguinhos,

O IBPT tem uma API para pegar informações direto de sua base. [url=https://deolhonoimposto.ibpt.org.br/Site/API#!//Produtos_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 fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Sobre a tabela de NCM

Mensagempor rossine » 16 Mai 2019 17:17

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.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Sobre a tabela de NCM

Mensagempor André Corrêa » 01 Ago 2019 11:34

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 de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Sobre a tabela de NCM

Mensagempor Jairo Maia » 01 Ago 2019 11:59

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 de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Sobre a tabela de NCM

Mensagempor fladimir » 01 Ago 2019 12:05

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.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Próximo



Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 12 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro