Tabela de NCM com o CEST correspondente.

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

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

Tabela de NCM com o CEST correspondente.

Mensagem por Jairo Maia »

Legal...
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Voltei, vamos lá:

Não sei se é melhor deixar como está, ou completar com X.
Em branco pode parecer arquivo ruim... rs

Na hora de pesquisar NCM, vamos pesquisar:

12345678
1234567X
123456XX
12345XXX
1234XXXX
12XXXXXX

Pode confirmar na tabela CEST, que há quase todos esses casos acima, entre 2 e 7 dígitos, e vários terminam com zero.
O X representaria qualquer número naquela posição.
Desta forma, vamos conseguir pesquisar até aonde é o capítulo inteiro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

O fonte gerando um fonte.... rs

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL cXml, cXmlTabela, cXmlRow, cXmlCol, cXmlColList, cCest, aNcm, cDesc, oElement, cTxt := ""

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

   cTxt := [FUNCTION CestList()] + hb_Eol() + hb_Eol()
   cTxt += [   LOCAL aList := {}] + hb_Eol() + hb_Eol()
   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
               cTxt += [   Aadd( aList, { ]
               cTxt += ["] + SoNumeros( cCest ) + [", ]
               cTxt += ["] + Pad( SoNumeros( oElement ), 8, "X" ) + [", ]
               cTxt += ["] + AllTrim( StrTran( cDesc, ["], "" ) ) + [" } )]
               cTxt += hb_Eol()
            NEXT
         ENDIF
      NEXT
   NEXT
   cTxt += hb_Eol() + [   RETURN aList] + hb_Eol()
   hb_MemoWrit( "teste.prg", cTxt )

   RETURN
Funções que faltam....
Nem precisa perguntar.... só olhar o hbp

Código: Selecionar todos

test.prg
\cvsfiles\josequintas\sefazclass\ze_xmlfunc.prg
\cvsfiles\josequintas\sefazclass\ze_miscfunc.prg
O resultado:
Uma função que retorna tudo em array.

Código: Selecionar todos

FUNCTION CestList()

   LOCAL aList := {}

   Aadd( aList, { "", "XXXXXXXX", "DESCRIÇÃO" } )
   Aadd( aList, { "0100100", "38151210", "Catalisadores em colmeia cerâmica ou metálica para conversão catalítica de gases de escape de veículos e outros catalisadores" } )
   Aadd( aList, { "0100100", "38151290", "Catalisadores em colmeia cerâmica ou metálica para conversão catalítica de gases de escape de veículos e outros catalisadores" } )
 ...
   RETURN aList
Anexos
test.prg
o que gera o outro fonte, direto do html (deixando só as "tables")
(1.22 KiB) Baixado 89 vezes
teste.prg
o fonte gerado
(189.74 KiB) Baixado 102 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Pra completar:

Rotina pra retornar a lista para determinado NCM:

Código: Selecionar todos

FUNCTION CestFromNcm( cNcm )

   LOCAL oCest, nCont, aList := {}

   cNcm := SoNumeros( cNcm )
   IF Len( cNcm ) == 8
      FOR nCont = 8 TO 2 STEP -1
         FOR EACH oCest IN CestList()
            IF Pad( Left( cNcm, nCont ), 8, "X" ) == oCest[ 2 ]
               AAdd( aList, oCest )
            ENDIF
         NEXT
         IF Len( aList ) > 0
            EXIT
         ENDIF
      NEXT
   ENDIF

   RETURN aList
E rotina de teste:

Código: Selecionar todos

#include "inkey.ch"

FUNCTION Main()

   LOCAL cNcm := Space(8), GetList := {}, oElement, aList

   CLS
   SetMode( 30, 100 )
   DO WHILE .T.
      @ 2, 1 SAY "Código NCM a pesquisar:" GET cNcm PICTURE "@R 99.99.99.99"
      READ

      IF LastKey() == K_ESC
         EXIT
      ENDIF
      aList := CestFromNcm( cNcm )

      Scroll( 3, 0, MaxRow(), MaxCol(), 0 )
      @ 3, 0 SAY ""
      FOR EACH oElement IN aList
         @ Row() + 1, 1 SAY oElement[ 1 ] PICTURE "@R 99.99.99.99"
         @ Row(), Col() + 2 SAY oElement[ 2 ] PICTURE "@R 99.99.99.99"
         @ Row(), Col() + 2 SAY Pad( oElement[ 3 ], 60 )
      NEXT
   ENDDO

   RETURN NIL
Não serve AScan(), porque retornaria apenas um código, apesar que não sei se vai acontecer de ter mais de um.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Ficaram pendentes 2 CEST que tem NCM em branco.

Código: Selecionar todos

   Aadd( aList, { "0199900", "        ", "Outras peças, partes e acessórios para veículos automotores não relacionados nos demais itens deste anexo" } )
   Aadd( aList, { "2899900", "        ", "Outros produtos comercializados pelo sistema de marketing direto porta-a-porta a consumidor final não relacionados em outros itens deste anexo" } )

E o programa em execução, que esqueci da codepage..... rs
ncm7.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Tabela de NCM com o CEST correspondente.

Mensagem por fladimir »

direto do site? é isso q entendi mesmo?
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

No caso, como eu precisava olhar a formatação, baixei o html, mas apaguei toda parte antes e depois das tabelas.
Foi direto do html baixado, equivalente ao site, mas com esses dois blocos apagados, o inicial e o final.

Agora que salvei tudo, dá pra testar direto do site, inclusive com alguns ajustes adicionais, por exemplo dos NCM em branco, e retirando os títulos.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Mas pera aí.... e isto?
C O N V Ê N I O
Cláusula primeira O inciso I da cláusula sexta do Convênio ICMS 92/15, de 25 de agosto de 2015, passa a vigorar com a seguinte redação:
“I - ao § 1º da cláusula terceira, a partir de:
a) 1º de julho de 2017, para a indústria e o importador;
b) 1º de outubro de 2017, para o atacadista;
c) 1ª de abril de 2018, para os demais segmentos econômicos;”.
Cláusula segunda O inciso II da cláusula trigésima sexta do Convênio ICMS 52/17, de 7 de abril de 2017, passa a vigorar com a seguinte redação:
“II - relativamente ao disposto no inciso I do caput da cláusula vigésima primeira, a partir de:
a) 1º de julho de 2017, para a indústria e o importador;
b) 1º de outubro de 2017, para o atacadista;
c) 1º de abril de 2018, para os demais segmentos econômicos;”.
Cláusula terceira Este convênio entra em vigor na data de sua publicação no Diário Oficial da União.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Pronto.
Atendendo a pedidos... rs.... direto do site que contém a lei.
Direto do site para um fonte em Harbour....
ncm.png
É executar esse módulo, e depois adicionar o fonte gerado ao aplicativo, pronto para ser compilado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Só comentário:
Contando do post antes de mexer no fonte, aleração, teste, editar o print-screen, postar, alterar o post, etc.... foram 9 minutos.
Até que foi rápido.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Tabela de NCM com o CEST correspondente.

Mensagem por fladimir »

Parabéns, muito útil.
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.
gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Tabela de NCM com o CEST correspondente.

Mensagem por gilbertosilverio »

Ola Jose Quintas,

Parabéns pela sua contribuição, ficou muito fácil verificar os CEST com esta tua tabela.

So para completar, creio que o link que você usou esta desatualizado, acho que o correto e esse aqui:

https://www.confaz.fazenda.gov.br/legis ... 7/CV052_17

Estava testando aqui, e justamente uma CHUPETA (39.26.90.90) , não consta na sua matriz. Pelo que verifiquei foram includos outros itens.

Peço a gentiliza, se possível, recriar esta matriz, e postar aqui, pois tentei aqui o xhb que uso, mais não consegui gera-la, baseada na tua rotina.
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Tabela de NCM com o CEST correspondente.

Mensagem por Jairo Maia »

Olá Pessoal,

Apenas para mostrar o raciocínio que uso em meus sistemas quando está cadastrando um produto que tenha mais de um CEST para o mesmo NCM.

Para dar certo o exemplo precisa usar a tabela que postei nesse tópico (com zeros a esquerda): TabCEST

Após compilar, digite o NCM 23.0990.10, que não existe na tabela, mas existe o grupo e tem CEST: Ração tipo "pet" para animais domésticos. Então retornará o CEST do grupo 23.09 da tabela.

Depois, digite o NCM postado acima: 39.2690.90. Veja que esse NCM tem 3 CEST´s, e veja como o exemplo se comporta ao classificar o produto.

Claro que é um exemplo simples, e dependendo do NCM talvez a descrição seja truncada, pois no exemplo estou usando o Hb_Alert(), mas a ideia está bem clara, espero que ajude também.

Código: Selecionar todos

/*
  Compilar Hbmk2 exemplo.prg -lxhb
*/

#include "inkey.ch"

REQUEST DBFCDX
REQUEST HB_CODEPAGE_PT850

Function Main()
 Local cCodNcm, cCest
 
 Clear Screen
 hb_SetCodepage('PT850')
 rddSetDefault( "DBFCDX" )
 
 Do While .t.
  cCodNcm := Space( 10 )
  @ 2,2 say "Digite o código NCM com 8 dígitos:" Get cCodNcm Picture "@R 99.9999.99" Valid Len( StrTran( cCodNcm, " ", "" ) ) = 8
  Read
  
  If LastKey() = K_ESC
   Exit
  Else
   cCodNcm := Trim( cCodNcm )
  EndIf
 
  cCest := PegaCest( cCodNcm )
  If !Empty( cCest )
   Hb_Alert( "Cest retornado => " + cCest, Nil, "B+/W" )
  Else
   Hb_Alert( "Sem Cest" )
  EndIf
 
 EndDo
 
Return Nil

Function PegaCest( cCodNcm )  // pesquisa, classifica e retorna o CEST pelo NCM
 Local GetList:={}, aCests:={}, cCest, x, cCodNcmFix, nOpc, cMsg, nLen
 
 If Select( "TabCEST" ) = 0
  Use TabCEST Shared New
 EndIf
 
 If !File( "TabCEST.Cdx" )
  Index On ( ncm ) To "TabCEST.Cdx"
 Else
  Set Index To "TabCEST.Cdx"
 EndIf
 
 cCodNcmFix := cCodNcm
 
 Seek cCodNcm
 If !Found()
  For x=1 To 6
   cCodNcm := Left( cCodNcm, 7 )  // se não achou, procura pelos subgrupos e até o grupo
   cCodNcm := StrZero( Val( cCodNcm ), 8 )
   Seek cCodNcm
   If Found()
    Exit
   EndIf
  Next
 EndIf
  
 If !Found()   
  cCest := ""
  Hb_Alert( "O Ncm " + cCodNcm + " não é passível de ST.;Para esse NCM não existe CEST!", Nil, "B+/W" )
 Else

  aCests:={}
  While ( ncm = cCodNcm )
   AaDd( aCests, { cest, Trim( descricao ) } )
   Skip
  EndDo
   
  nLen := Len( aCests )
  If Len( aCests ) > 1

   For x=1 To nLen
    cMsg := "Opção => " + Hb_NToS( x ) + " de " + Hb_NToS( nLen ) + " - Código CEST => " + aCests[ x, 1 ]
    cMsg += ";O Produto sendo cadastrado se enquadra nessa Descrição?:"
    cMsg += ";;" + aCests[x,2] + ";"
    nOpc := Hb_Alert( cMsg, { "Proximo", "Classificar", "Sair" }, "B+/W" )
    If nOpc = 0 .Or. nOpc = 3
     Exit
    ElseIf nOpc = 2
     cCest := aCests[x,1]
     Hb_Alert( "Produto com NCM: " + cCodNcmFix + " Classificado com o CEST => " + aCests[x,1] + ";;" + aCests[x,2], Nil, "B+/W" )
     Exit
    EndIf
    If ( x = nLen )
     x := 0
    EndIf
   Next
    
 Else
  cCest := aCests[1,1]
  Hb_Alert( "Produto com NCM: " + cCodNcmFix + ";Produto com Somente um CEST => " + aCests[1,1] + ";;" + aCests[1,2], Nil, "B+/W" )
 EndIf
EndIf
  
 Return ( cCest )
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

Não entendi.
No caso desse código, o resultado está ok.
Mas falta atualizar para o link que foi comentado que é mais atualizado, ainda não verifiquei.
ncm2.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Tabela de NCM com o CEST correspondente.

Mensagem por JoséQuintas »

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

mais um pouco.

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

Acabou de chegar o aviso.
cest.png
cest.png (8.45 KiB) Exibido 4643 vezes
NT 2015.003 versão 1.94

https://www.nfe.fazenda.gov.br/portal/e ... iCiO978HY=
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder