Clipper On Line • Ver Tópico - Tabela de NCM com o CEST correspondente.

Tabela de NCM com o CEST correspondente.

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

 

Tabela de NCM com o CEST correspondente.

Mensagempor Jairo Maia » 22 Jun 2017 16:59

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 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

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 18:44

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 21:44

O fonte gerando um fonte.... rs

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

test.prg
\cvsfiles\josequintas\sefazclass\ze_xmlfunc.prg
\cvsfiles\josequintas\sefazclass\ze_miscfunc.prg


O resultado:
Uma função que retorna tudo em array.

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 65 vezes
teste.prg
o fonte gerado
(189.74 KiB) Baixado 79 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 22:10

Pra completar:

Rotina pra retornar a lista para determinado NCM:

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:

#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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 22:16

Ficaram pendentes 2 CEST que tem NCM em branco.

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor fladimir » 22 Jun 2017 22:27

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

fladimir
Colaborador

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

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 22:40

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 22:49

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 22:58

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 22 Jun 2017 23:16

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor fladimir » 23 Jun 2017 00:11

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

fladimir
Colaborador

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

Tabela de NCM com o CEST correspondente.

Mensagempor gilbertosilverio » 23 Jun 2017 09:07

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

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor Jairo Maia » 23 Jun 2017 12:35

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.
/*
  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 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

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 23 Jun 2017 14:31

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Tabela de NCM com o CEST correspondente.

Mensagempor JoséQuintas » 23 Jun 2017 14:59

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

mais um pouco.

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

Acabou de chegar o aviso.

cest.png
cest.png (8.45 KiB) Visualizado 3497 vezes


NT 2015.003 versão 1.94

https://www.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=DRiCiO978HY=
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Anterior Próximo



Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Google [Bot] e 7 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