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

Esse convênio 60/2017 é exatamente o texto que eu postei numa mensagem anterior.
Será que a Fazenda está lendo o fórum PCToledo e viu minha mensagem? kkkkk
cest2.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
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 »

José, mas estou achando que neste século essa coisa ainda passa a ser obrigatória.

Tente se puder adaptar seu utilitário ao site do convênio 52 de 7 de Abril. O utilitário que postei acima é funcional para identificar o CEST, tudo bem. Eu também extraí a tabela pelo html do site da SEFAZ, mas acabei de pegar um erro: o CEST 3926.90.90 tem 4 CEST´s, e não 3 CEST´s como na minha tabela. Queria ver se conseguiria usando seu aplicativo atualizar minha tabela.
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 »

Aproveitando, a título de curiosidade e fugindo um pouco do CEST.... aquilo de tabela NCM com alíquotas... acho que não dá muito certo.
Como muita gente deve saber, NBM (Nomenclatura Brasileira de Mercadorias) foi substituída depois de 1996 pelo NCM (Nomenclatura Comum do Mercosul).
Mas as leis não.

Aqui só uma parte:
nbm.png
Isso está neste endereço, em São Paulo.

https://www.confaz.fazenda.gov.br/legis ... -estaduais

Coisas do Brasil.....
Agora pergunto: alguém ainda tem o NBM de 1996 nos aplicativos?
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 »

Tente se puder adaptar seu utilitário ao site do convênio 52 de 7 de Abril. O utilitário que postei acima é funcional para identificar o CEST, tudo bem. Eu também extraí a tabela pelo html do site da SEFAZ, mas acabei de pegar um erro: o CEST 3926.90.90 tem 4 CEST´s, e não 3 CEST´s como na minha tabela. Queria ver se conseguiria usando seu aplicativo atualizar minha tabela.
Atualizei, e ocorreu o mesmo problema.

O html está diferente nessa parte.
Enquanto os outros tem (BR) separando os códigos, esse usa espaço em branco e também parágrafo.
Então são 3 formatações diferentes para a mesma informação/coluna.
erro.png
Bom... elementar... quando chegar no nível da coluna, vou ter que testar as 3 formatações.
Exatamente esta parte vai precisar tratar as 3 situações:

Código: Selecionar todos

aNcm  := hb_RegExSplit( "(br)", XmlNode( cXmlColList[ 3 ], "p" ) )
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 »

Esse deu mais trabalho.
cest3.png
cest4.png
Bom... o problema era a coluna de NCM, então.... criar um tratamento especial pra ela.

Código: Selecionar todos

               aNcm  := PegaNcm( cXmlColList[ 3 ] )
Já posto os fontes em seguida

Ah sim... o problema dos caracteres é porque fiz em modo console, e o modo console é em inglês e não em português.
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
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 »

JoséQuintas escreveu:Atualizei, e ocorreu o mesmo problema.
O html está diferente nessa parte.
Enquanto os outros tem (BR) separando os códigos, esse usa espaço em branco e também parágrafo.
Putz... Que "M". Isso mesmo. Valeu a dica.
JoséQuintas escreveu:Já posto os fontes em seguida
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 »

A codepage era UTF8 mesmo, fiz a conversão do jeito antigo, ajustando um por um, testando e alterando, por isso a demora.
O próprio test.prg vai mostrando os caracteres que não reconhece ou não consegue converter.
É ir alterando o fonte, acrescentando as "novidades", até ele não mostrar nada.
test.zip
(37.65 KiB) Baixado 213 vezes
test.prg -> o que gera o fonte teste.prg
test.hbp -> gera o test.exe

teste.prg -> o fonte gerado com a tabela
ze_cest.prg -> rotina de validação e de teste
testvalida.hbp -> gera o testvalida.exe

precisa ze_miscfunc.prg e ze_xmlfunc.prg, da sefazclass

https://github.com/JoseQuintas/sefazclass

No xHarbour o FOR/EACH é mais fraco, acho que precisaria mudanças nele, pelo menos nessa rotina adicional de conversão.
E se não me engano, o CreateObject() obriga a especificar a versão em MSXML2.ServerXMLHTTP.6.0
Mas não mexo com xHarbour, nem adianta me perguntar.... rs

Nota: aqui Harbour 3.4, mingw 7.1, nenhum componente adicional, nem libcurl, nem hbssl, nem hbmysql, nada, só fontes do Harbour 3.4
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 »

Por causa dos testes acabei esquecendo de uma coisa:

Pra não ter que carregar a lista toda hora, uma opção é criar uma variável estática.
Algo mais ou menos assim:

Código: Selecionar todos

FUNCTION ValidaCest()

   STATIC oCestList := {}

   IF Len( oCestList ) == 0
      oCestList := CestList()
   ENDIF
Desta forma, só vai precisar rodar a rotina de carregar o array uma única vez.
Isso se é que vai ser demorado, porque me pareceu que é rápido e nem precisaria disso.
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
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á José,

Cara... muito legal seu trabalho. Parabéns e obrigado. Ficou muito bom.
JoséQuintas escreveu:Pra não ter que carregar a lista toda hora, uma opção é criar uma variável estática.
Relamente é rápido mesmo, mas com a variável estática fica melhor. Embora no meu caso vou ajustar em DBF para manter a estrutura do meu sistema.

Mantive a acentuação. Alterei a codificação para PT850 e troquei a função Ajusta() por Hb_UTF8ToStr( cTxt ). Mas se quiser manter PTISO e quiser a acentuação na descrição, pode fazer (nessa ordem):

Código: Selecionar todos

cTxt := Hb_UTF8ToStr( cTxt )
cTxt := Win_AnsiToOEM( cTxt )
Agora um outro pedido: Não sei trabalhar com o FOR EACH, então queria saber como fazer para não entrar os códigos do anexo XXVI. O anexo 26 é somente para produtos vendidos porta a porta, e nele tem vários grupos inteiros que pode atrapalhar quando se trata de comércio. No html ele está assim: <p class="Subtitulo">ANEXO XXVI</p>. A partir desse ponto, pode interromper, já que abaixo são somente os demais anexos irrelevantes para nosso caso.

O CEST é definido nos anexos II a XXVI, sendo o XXVI somente para venda porta a porta e pode atrapalhar.

Editado:
Entendi esse FOR EACH. Vou fazer as alterações.

Valeu...
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 »

Em todo caso:

Tem horas que é só porque consideramos difícil, que acabamos não aprendendo.

O FOR/NEXT trabalha com uma variável
Neste caso nCont

Código: Selecionar todos

FOR nCont = 1 TO 10
NEXT
o FOR/EACH também.
Neste caso oElemento, que vai representar cada elemento do array

Código: Selecionar todos

FOR EACH cElemento IN { 1, 2, 3 }
NEXT
O que confunde talvez seja usar a segunda variável, mas o FOR/NEXT também pode usar outra variável.

Código: Selecionar todos

FOR nCont = 1 TO nTotal
NEXT

Código: Selecionar todos

FOR EACH oElemento IN aValueList
NEXT
Vamos lembrar do velho arquivo BAT
Isso é um FOR/EACH

Código: Selecionar todos

FOR %%A IN ( 1 2 3 ) DO ECHO %%A
E finalmente, igual na rotina de XML

Código: Selecionar todos

FOR nCont = 1 TO AlgumCalculo()
NEXT

Código: Selecionar todos

FOR EACH cXmlCol IN AlgumCalculo()
NEXT
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
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 »

JoséQuintas escreveu:Tem horas que é só porque consideramos difícil, que acabamos não aprendendo.
Pois é... Mas aqui foi uma coisa muito engraçada. No início eu tentei usar na migração o TRY/CATCH com o Harbour e nunca conseguia. Fiquei muito tempo tentando, e só depois que desisti descobri que para usar o TRY/CATCH com Harbour tinha que incluir o arquivo hbcompat.ch.

Por alguma razão minha mente entrou em bloqueio, e toda vez que eu via o FOR/EACH associava ao TRY/CATCH. Pode parecer engraçado, mas eu tinha esse bloqueio até agora pela manhã.

Fiz as alterações necessárias e atualizei minha tabela de CEST da forma que já vinha usando com os zeros a esquerda.

Quem quiser remover o ANEXO XXVI basta na função MAIN() do arquivo test.prg logo abaixo de cXml := DownloadFazenda() colocar:

Código: Selecionar todos

 nIniXml := Hb_At( ["Subtitulo">ANEXO I</p>], cXml )
 nFimXml := Hb_At( ["Subtitulo">ANEXO XXVI</p>], cXml )
 cXml := SubStr( cXml, nIniXml, ( nFimXml - nIniXml ) )
Não esquecer de declarar as variáveis:

Código: Selecionar todos

Local nFimXml, nIniXml
Valeu. Obrigado.
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 »

Esse porta a porta confundiu.

Se é vendedor ambulante, ele não é indústria, porque teria ST?
Mesmo que indique direto da indústria para o consumidor, de uma porta até outra, também confunde aplicar ST.

Alguma conclusão sobre essa parte?
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 »

Sobre a quebra pra retirar os anexos...
Como minhas funções não são rígidas quanto à formatação do xml, basta tirar a parte final, e nem precisa de variável.

Código: Selecionar todos

cXml := Substr( cXml, 1, At( [Subtitulo">ANEXO XXVI</p>], cXml ) )
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
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 »

JoséQuintas escreveu:Esse porta a porta confundiu.

Se é vendedor ambulante, ele não é indústria, porque teria ST?
Mesmo que indique direto da indústria para o consumidor, de uma porta até outra, também confunde aplicar ST.

Alguma conclusão sobre essa parte?
Imagina as empresas, Avon, Tupperware, Jequiti por exemplo. São empresas cuja atividade principal se destina a venda por marketing direto (porta a porta), e com o agravante de boa parte dos produtos serem importados.

Nesse caso, vendas internas a essas empresas são efetuadas com ST, o anexo XXVI tem praticamente tudo que é possível vender porta a porta. No caso de importação, o ICMS é recolhido por Antecipação. Isso é para garantir a tributação diretamente as empresas, já que na maioria são vendedoras autônomas, difícil de fiscalizar.

No caso de produto nacional vendido a empresas com essa atividade: Substituição Tributária = Imposto recolhido no momento da venda pelo fabricante, com cessação de cobrança nas operações posteriores.
No caso de importação: Antecipação = Imposto recolhido pelo destinatário. Se importar, o ICMS deve ser recolhido quando o produto entra no estado destino.
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 »

Correção com teste prático

Código: Selecionar todos

   // Retira anexo
   //cXml := Substr( cXml, 1, At( [VENDA DE MERCADORIAS PELO SISTEMA PORTA A PORTA], cXml ) )
   //
No commit dá pra ver exatamente a diferença

https://github.com/JoseQuintas/AllInOne ... a9877037d9
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