Migrando a NF-e 3.10 para 4.00

A NFeLibrary, a partir da versão 2018/01, passa a suportar a geração do arquivo XML no layout da versão 4.00 conforme descrito na NT 2016/002. A NT 2016/002 traz informações detalhadas sobre as alterações feitas e recomendamos que os desenvolvedores façam a leitura da NT antes de iniciar a migração dos seus sistemas.

Esta nova versão do XML inclui diversas alterações que afetam diretamente a geração do arquivo XML. Com o objetivo de minimizar o impacto para o desenvolvedor, a NFeLibrary foi modificada para permitir que as aplicações que a utilizam possam ser rapidamente adaptadas para atender as alterações do novo layout.

Apesar do encapsulamento feito pela NFeLibrary da complexidade do projeto e do descritivo abaixo com as alterações necessárias para adaptação para o novo layout, é altamente recomendado que o desenvolver examine o manual de orientação e as notas técnicas para que saiba quais são as alterações que afetarão diretamente sua aplicação.

É extremamente importante ressaltar que, uma vez migrada a aplicação para a nova versão do layout, identificada como 4.00 não será mais possível gerar o XML na versão 3.10. Portanto é necessário que o desenvolver teste sua aplicação em cada SEFAZ atendida pela aplicação, garantindo assim que uma nota fiscal não seja recusada pela SEFAZ.

É recomendado também que o desenvolvedor faça um backup completo do seu ambiente de desenvolvimento (código fonte) antes de iniciar a migração, garantindo assim que, por qualquer eventualidade, seja possível voltar à versão anterior.

Definição do protocolo TLS 1.2 ou superior como padrão de comunicação

A partir da versão 4.00, os WS’s da NF-e irão trabalhar somente com o protocolo TLS 1.2 ou superior.

Esta mudança é feita internamente pela NFeLibrary.dll e o desenvolvedor não precisará se preocupar com isso.

O TLS 1.2 é suportado no Windows 7 ou superior. Máquinas com versões de sistema operacionais mais antigos não conseguirão consumir os WS’s da versão 4.00 da NF-e.

Também é necessário ter no mínimo o Microsoft .NET 4.5 (recomedável ter a atualização para 4.5.2) instalado no equipamento.

Usuários de Windows 7 Service Pack 1 e Windows Server 2008 R2 SP1 que não conseguirem estabelecer a conexão com TLS 1.2, devem instalar o Service Pack 2.

Nova função NFeGeraXMLNFe4_00

A função NFeGeraXMLNFe é considera obsoleta.

A partir de agora, os desenvolvedores deverão usar a nova função NFeGeraXMLNFe4_00 para geração do XML da NF-e.

Esta nova função tem uma interface simplificada com apenas um parâmetro do tipo tNFeGeraXMLNFe4_00_Param. Esta nova assinatura permitirá que novas alterações sejam feitas de forma mais transparente e com menos impacto para os desenvolvedores, pois a inclusão de novos campos na estrutura não acarretará alteração na assinatura da função.

A Workspace de exemplo foi alterada para utilizar esta nova função, sendo uma fonte prática de consulta para o desenvolvedor.

Alterações no layout da NF-e

Várias alterações foram intruduzidas no layout da versão 4.00. Muitos deles são obrigatórios somente para determinados segmentos ou em operações específicas. Destacaremos abaixo os principais. Cada desenvolvedor deverá avaliar as particularidades dos negócios dos seus clientes para decidir quais novos campos precisarão ou não preencher.

Abaixo a relação das mudanças:

  • Remoção do campo ide.indPag (indicador da forma de pagamento). Este campo continua existindo na estrutura tNFe, pois será alimentado pela função NFeLerXMLAutorizado, quando estiver lendo um XML de versão antiga. Entretanto, a função de geração irá ignorar o conteúdo deste campo, caso o desenvolvedor continue a informá-lo.
  • Incluída a opção "5" (operação presencial, fora do estabecimento) para o campo ide.indPres (indicador de presença do comprador).
  • Inclusão da opção "02" (modelo 02 da Nota Fiscal) para o campo ide.NFref.refNF.mod.
  • Inclusão de novos campos no grupo det.prod: indEscala, CNPJFab e cBenef.
  • Inclusão de um novo grupo "rastro" dentro de det.prod. Este grupo é de preenchimento obrigatório no caso de medicamentos e produtos farmacêuticos.
  • Inclusão de novo campo det.prod.med.cProdANVISA.
  • Exclusão dos campos nLoteqLote, dFab e dVal, do grupo det.prod.med, que agora fazem parte do grupo "rastro".
  • Inclusão dos campos descANP, pGLP, pGNn, pGNi e vPart, no grupo det.prod.comb.
  • Exclusão do campo det.prod.comb.pMixGN.
  • Inclusão de campos para identificar o valor devido relativo ao Fundo de Combate à Pobreza: pFCP, vBCFCP, vFCP, vBCFCPST, pFCPST, vFCPST, pCFPSTRet, vFCPSTRet, pST e vBCFCPUFDest, em det.imposto.ICMS.{XX}.
  • Inclusão de novos campos de totalização em total.ICMSTot: vFCP, vFCPST, vFCPSTRet e vIPIDevol.
  • Inclusão de novos códigos para o campo transp.modFrete.
  • O grupo pag agora é obrigatório e não pode mais se repetir. Dentro dele, foi incluído um novo grupo detPag, que pode se repetir até 100 vezes. Também foi incluído um novo campo vTroco dentro do grupo pag.
  • Foram criadas novas opções para os campos pag.detPag.tPag e pag.detPag.card.tBand.
  • Incluído novo campo urlChave. O desenvolvedor que utiliza a NFeLibrary não deve preencher este campo na estrutura tNFe. Ele será gerado pela função NFeAssinarNFCe e existe um campo no parâmetro para informar a URL.

NFeDistribuicaoDFe

  • Para utilização desta função informe "1.01" (para servidores operando com SSL3) ou "4.00" (para servidores operando com TLS 1.2) no parâmetro sVersao.

Sigla do WS

A sigla do WS de algumas UF’s (BA, PR e SP) foi alterada para a versão 4.00. Consulte a lista aqui.

NFeLibrary.dll - IMPORTANTE

As alterações para atender as novas especificações do layout 4.00 também afetaram a NFeLibrary.dll. Para atender as especificações, novas funções internas foram criadas e também foi adicionado o arquivo WS4.XML com os endereços relativos à versão 4.00.

Portanto todos os emitentes que desejam utilizar a nova versão do layout deverão obrigatoriamente atualizar a DLL para a versão 4.0.3.4 (fornecida juntamente com a NFeLibrary).

Outro detalhe importante que deve ser verificado é que a nova versão da DLL não funcionará com as chaves de emissão emitidas para versões anteriores da DLL.

As licenças adquiridas a partir de 01/12/2016 receberão sem custo a chave para trabalhar com a nova versão.

Licenças adquiridas antes desta data, precisarão ser atualizadas de forma onerosa para receber a chave compatível com a versão 4.00.

Para verificar a questão das licenças, por favor entre em contato conosco.

IMPORTANTE: como as funcionalidades não exigem que a licença seja informada para uso em ambiente de homologação, ao realizar testes com a Library e com a nova DLL, todas as funcionalidades serão executadas com sucesso. Porém, ao instalar a DLL no cliente a aplicação poderá parar de funcionar se a licença do cliente não estiver atualizada. Portanto, antes de colocar a aplicação no cliente, recomendamos verificar a questão da licença para que o cliente não pare o faturamento após a atualização da DLL pela não atualização da licença de uso da DLL.