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:
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.
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.
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..
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
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?
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.