Página 1 de 4

Tabela de NCM com o CEST correspondente.

Enviado: 12 Jun 2017 11:24
por Itamar M. Lins Jr.
Ola!
Tem para download essa tabela ?
Qual o meu prazo para adequação?
O convênio ICMS 60/17 estabelece uma adoção progressiva.

01/07/2017 Indústrias e importadores
01/10/2017 Atacadistas
01/04/2018 Demais segmentos econômicos
http://www.asseinfo.com.br/blog/cest/
Saudações,
Itamar M. Lins Jr.

Tabela de NCM com o CEST correspondente.

Enviado: 12 Jun 2017 15:50
por JoséQuintas
No próprio link que mencionou indica a lei que tem a tabela.
Talvez dê pra baixar e usar algum componente pra extrair a informação, já que é html, que por sua vez é xml.

Tabela de NCM com o CEST correspondente.

Enviado: 12 Jun 2017 15:57
por gilbertosilverio
Ola Itamar,

Da uma olhada no forum do UNINFE da yahoo, foi postado a uns 15 dias la no forum um arquivo contando os CEST.

Tabela de NCM com o CEST correspondente.

Enviado: 12 Jun 2017 16:06
por Itamar M. Lins Jr.
Ola!
No próprio link que mencionou indica a lei que tem a tabela.
Eu vi, não estava querendo fazer a importação na unha, sempre mudam isso depois que a gente conclui.

Saudações,
Itamar M. Lins Jr.

Tabela de NCM com o CEST correspondente.

Enviado: 12 Jun 2017 17:18
por Jairo Maia
Olá Itamar,

Montei e uso essa tabela, mas tem um problema que é o fato de vários NCM´s terem vários CEST´s. Veja por exemplo o NCM 11010010 (farinha de trigo). Esse NCM tem 28 CEST´s, então não dá para classificar de forma automática, precisa ver exatamente qual é a embalgem desse produto, por exemplo se 1Kg se 5KG, etc.

Em anexo a tabela de correspondência com os CEST´s atualizados pelo Convênio ICMS de 07 de Abril de 2017:
TabCEST.rar
(29.68 KiB) Baixado 244 vezes

Tabela de NCM com o CEST correspondente.

Enviado: 14 Jun 2017 08:08
por dbdc5554
Jairo BOM dia

ob pela tabela.

Quant oa varios cest para o mesmo NCM é coisa de Burrocrata rs

eu pego o CEST da tabela +++++ se o cest estiver no cad de produto pego de la.
deixei desta forma para estes casos caso o cliente tenha um NCM que aponte para varios CEST

Ob

Paivae

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 14:29
por JoséQuintas
Agora que fui mexer com isso.
Estou estranhando alguns números dessa tabela.
ncm.png
Considerando a ordem física do DBF, parece que era a categoria inteira, e os zeros ficaram à esquerda ao invés da direita.
O que já não vale pra estes outros.
ncm2.png
Por enquanto só fiz um fonte convertendo isso pra .... um fonte que retorna um array com tudo.
E ajustando alguns caracteres pra não depender de codepage.

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL cTxt

   Set( _SET_CODEPAGE, "PTISO" )
   SetMode(40,100)
   CLS
   USE TABCEST
   cTxt := "// Tabela CEST" + hb_Eol()
   cTxt += hb_Eol()
   cTxt += "FUNCTION TabelaCest()" + hb_Eol()
   cTxt += hb_Eol()
   cTxt += [   LOCAL aTabela := { ;] + hb_Eol()
   DO WHILE ! Eof()
      cTxt += [      { "] + tabcest->Ncm + [", "] + tabcest->Cest + [", "] + Limpa( tabcest->Descricao ) + [" } , ;]
      cTxt += hb_Eol()
      SKIP
   ENDDO
   CLOSE DATABASES
   cTxt += [      { "X", "X", "X" } }] + hb_Eol()
   cTxt += hb_Eol()
   cTxt += "RETURN aTabela" + hb_Eol()

   Checa( cTxt )
   hb_MemoWrit( "teste.prg", cTxt )

   RETURN

STATIC FUNCTION Limpa( cText )

   cText := Trim( cText )
   cText := StrTran( cText, Chr(10), "" )
   cText := StrTran( cText, Chr(13), "" )
   cText := StrTran( cText, ["], "" )
   cText := StrTran( cText, Chr(161), "i" )
   cText := StrTran( cText, Chr(198), "a" )
   cText := StrTran( cText, Chr(162), "o" )
   cText := StrTran( cText, Chr(130), "e" )
   cText := StrTran( cText, Chr(160), "a" )
   cText := StrTran( cText, Chr(135), "c" )
   cText := StrTran( cText, Chr(252), "2" )
   cText := StrTran( cText, Chr(131), "a" )
   cText := StrTran( cText, Chr(163), "u" )
   cText := StrTran( cText, Chr(228), "o" )
   cText := StrTran( cText, Chr(163), "u" )
   cText := StrTran( cText, Chr(136), "e" )
   cText := StrTran( cText, Chr(147), "o" )
   cText := StrTran( cText, Chr(133), "a" )
   cText := StrTran( cText, Chr(224), "o" )
   cText := StrTran( cText, Chr(181), "a" )
   cText := StrTran( cText, Chr(39), "" )

   RETURN cText

STATIC FUNCTION Checa( cTxt )

   LOCAL cLetra

   FOR EACH cLetra IN cTxt
      DO CASE
      CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
      CASE cLetra $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      CASE cLetra $ "0123456789"
      CASE cLetra $ "{}=(%$:).,/-; "
      CASE cLetra == Chr(34)
      CASE cLetra == Chr(13)
      CASE cLetra == Chr(10)
      OTHERWISE
         ? cLetra, Asc( cLetra ), Substr( cTxt, cLetra:__EnumIndex - 25, 50 )
      ENDCASE
   NEXT

   RETURN cTxt
Foi só uma idéia inicial.
Talvez melhor um XML como resource, ou o MySQL, ou outra coisa.

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 14:36
por JoséQuintas
É referente a um grupo de NCMs..
ncm3.png

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 15:12
por JoséQuintas
Comecei a ajustar manualmente, mas vai longe.
E ajustar manual pode gerar erros.
Seria possível usar a rotina pra gerar novamente sem acrescentar zeros nos códigos?

Saudades do IE8, onde era só salvar o fonte da página.....

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 15:51
por JoséQuintas
Fui converter.....
Até que minhas rotinas pra XML estão sensacionais.... rs

Primeiro teste.
Direto do fonte html do site da Fazenda:
(Cortei parte da descrição pra caber numa linha)

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 16:10
por JoséQuintas
Pegando o início mais fácil de entender a tela
ncm5.png
Só restou separar aonde tem mais de um NCM, onde os códigos estão separados por <br>

Me espantei com o tamanho do fonte.
Ajudou o html ter um padrão pras informações, com certeza.
É um bom exemplo de uso do FOR EACH
Reduzi um pouco o fonte, da postagem anterior pra esta, com menos variáveis.... mas entrou o IF.

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 16:35
por JoséQuintas
Voltando ao que interessa, que é a tabela:
O primeiro caso dá pra ajustar automático.
Agora os dos capítulos.... só manual mesmo.

Mas isso significa que TUDO dentro desses capítulos é ST?
ncm6.png

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 16:45
por JoséQuintas
Parei aqui, agora levar filho na consulta médica....

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL cXml, cXmlTabela, cXmlRow, cXmlCol, cXmlColList, cCest, aNcm, cDesc, oElement

   Set( _SET_CODEPAGE, "PTISO" )
   CLS
   cXml := MemoRead( "pagina.html" )

   FOR EACH cXmlTabela IN MultipleNodeToArray( cXml, "table" )
      FOR EACH cXmlRow IN MultipleNodeToArray( cXmlTabela, "tr" )
         cXmlColList := MultipleNodeToArray( cXmlRow, "td" )
         IF Len( cXmlColList ) != 1 // Titulos
            cCest := XmlNode( cXmlColList[ 2 ], "p" )
            aNcm  := hb_RegExSplit( "<br>", XmlNode( cXmlColList[ 3 ], "p" ) )
            cDesc := XmlNode( cXmlColList[ 4 ], "p" )
            FOR EACH oElement IN aNcm
               ?? "[" + AllTrim( cCest ) + "]"
               ?? "[" + AllTrim( oElement ) + "]"
               ?? "[" + AllTrim( Pad( cDesc, 30 ) ) + "]"
               ?
            NEXT
         ENDIF
      NEXT
   NEXT

   RETURN
O primeiro problema que deu era o ? no lugar errado.

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 16:49
por Jairo Maia
Olá José,

Sim, dá pra gerar a tabela com os zeros a direita. Amanhã posto uma com zeros a direita e também com espaços a direita, para decidir qual fica mais fácil.

É que anexei a que uso conforme o tratamento que faço do NCM, que é da seguinte forma:
Não achou o NCM completo, vai removendo os caracteres da direita para a esquerda e faz o PadL() sempre com 8 dígitos e pesquisa novamente, já que alguns casos, podem sim não ter o NCM com 8 dígitos mas o grupo se enquadra.

Quanto a pergunta se o grupo todo é ST, a resposta é:
Significa que o Grupo todo é passível de ST, então tem que informar o CEST. Se tem ou não, depende de cada estado. Mas estando contemplado na tabela, a informação do CEST é obrigatória.

Tabela de NCM com o CEST correspondente.

Enviado: 22 Jun 2017 16:53
por JoséQuintas
Sim, dá pra gerar a tabela com os zeros a direita.
Não faça isso, vai ser pior.
Tive uma idéia, continuo o post na volta do médico.
Mas ao que parece, consegui gerar.