Validação da Numeração de Notas Fiscais e Integridade dos XMLs na Exportação de dados fiscais NT 0705/2026

Resumo da Nota Técnica

Foi implementada uma melhoria no processo de exportação de notas fiscais do FACILITE para identificar inconsistências antes da exportação dos documentos.
A rotina passou a realizar três verificações principais: lacunas na sequência numérica das notas fiscais, existência dos arquivos XML e integridade estrutural desses arquivos.
Quando um XML não é encontrado no caminho informado, o sistema tenta recuperá-lo a partir dos dados armazenados no banco de dados. Caso sejam identificadas inconsistências, elas são apresentadas ao usuário, que poderá avaliar a continuidade da exportação conforme as permissões existentes.

Detalhes da Nota Tecnica

1. Validação da sequência numérica das notas fiscais

Foi implementada uma rotina para verificar a continuidade da numeração das notas fiscais registradas na tabela NFISCAL.

A validação considera o período informado e os agrupamentos por empresa e tipo de documento, identificando números ausentes entre as notas existentes.

Quando são encontradas lacunas, o sistema registra as seguintes informações:

• Empresa.

• Tipo da nota fiscal.

• Número inicial e final ausentes.

• Data da nota anterior.

• Data da nota posterior.

Também é calculada a quantidade total de números ausentes.

A rotina permite identificar tanto uma nota isolada quanto intervalos de numeração que estejam faltando.

2. Verificação da existência dos arquivos XML

Além da sequência numérica, o sistema verifica se os arquivos XML associados às notas fiscais existem fisicamente no caminho registrado no banco de dados.

A consulta considera os campos da tabela NFISCAL necessários para identificar a empresa, o tipo e o número da nota, o caminho do XML, a chave de acesso e a data de emissão.

São considerados os documentos dos tipos:

NF, NC, N1, N2, N3, N4, N5, N6, N7, N8 e N9.

A verificação utiliza a rotina FileExists para conferir a existência do arquivo informado em NF_CAMINHONFE.

Quando o XML não é encontrado, o sistema tenta recuperá-lo antes de classificá-lo como ausente.

3. Recuperação de XML pelo banco de dados

Foi implementada uma rotina de recuperação dos arquivos XML utilizando a tabela CARGADESCARGA_PDV, que armazena conteúdos de arquivos enviados pelo PDV.

O conteúdo do XML é obtido pelo campo:

CDPDV_CONTEUDOARQUIVO

A localização do arquivo correspondente utiliza o nome composto pela chave de acesso da nota, seguido de -NFe.xml, e o filtro de tipo de arquivo XML.

Processo de recuperação

Quando o XML não existe no caminho informado, o sistema:

1. Consulta a tabela CARGADESCARGA_PDV.

2. Localiza o arquivo correspondente à chave de acesso da nota.

3. Obtém o conteúdo armazenado no banco de dados.

4. Verifica se o conteúdo corresponde à chave de acesso esperada.

5. Cria os diretórios necessários, quando aplicável.

6. Grava o arquivo recuperado no caminho original registrado em NF_CAMINHONFE.

A gravação utiliza recursos de fluxo de memória, leitura de BLOB e gravação de arquivo.

Otimização do processamento

Durante os testes, foi identificada lentidão na abordagem inicial, que utilizava um LEFT JOIN envolvendo o campo BLOB para todas as notas.

A consulta foi otimizada para buscar inicialmente apenas os dados da tabela NFISCAL. A consulta de recuperação na CARGADESCARGA_PDV passou a ser realizada individualmente somente para as notas cujo XML não foi encontrado.

O SQL de recuperação também passou a ser configurado uma única vez, fora do laço de processamento.

Essa alteração melhorou o desempenho durante a validação.

Limitação: quando não existe uma cópia correspondente na tabela CARGADESCARGA_PDV, o sistema não consegue recuperar o XML por esse mecanismo. Esse cenário foi identificado, por exemplo, na nota 000738, emitida localmente.

4. Validação da integridade dos XMLs

Além de verificar se os arquivos existem, foi implementada uma validação para identificar XMLs inválidos ou corrompidos.

A rotina auxiliar criada foi:

ValidarArquivoXml

A validação verifica as seguintes condições:

Integridade estrutural

O sistema tenta interpretar o arquivo XML. Arquivos com tags não fechadas, divergências entre tags de abertura e fechamento ou outras estruturas malformadas são identificados como inválidos.

Elemento principal

É verificado se o elemento principal corresponde a uma das estruturas esperadas:

nfeProc

NFe

Chave de acesso

Quando a chave de acesso está preenchida, o sistema verifica se ela corresponde à identificação da NF-e presente no XML.

Tratamento de exceções

Caso ocorra algum erro durante a leitura ou interpretação do arquivo, a exceção é capturada e sua descrição é armazenada no campo MOTIVO.

A validação verifica a estrutura e a consistência básica do XML. Ela não representa uma validação completa contra o esquema XSD da NF-e nem consulta a situação de autorização do documento na SEFAZ.

5. Organização das inconsistências encontradas

Os resultados da validação são organizados em três estruturas de dados, permitindo apresentar cada tipo de inconsistência separadamente.

1

Para os XMLs inválidos, são armazenadas informações como empresa, tipo, número da nota, caminho do arquivo e motivo da inconsistência.

6. Integração com o processo de exportação

A validação foi integrada à função pcdVerificarSequenciaNotas, responsável por coordenar as verificações antes da exportação.

O processamento contempla:

1. Inicialização das estruturas de dados.

2. Verificação das lacunas na numeração das notas fiscais.

3. Verificação da existência dos arquivos XML.

4. Tentativa de recuperação dos XMLs ausentes.

5. Validação estrutural dos XMLs existentes ou recuperados.

6. Consolidação das inconsistências encontradas.

7. Apresentação dos resultados ao usuário.

A ordem foi ajustada para garantir que os resultados de XMLs ausentes e inválidos sejam preenchidos antes da montagem da mensagem consolidada.

Também foi corrigida a montagem da mensagem para preservar todas as seções de inconsistências, incluindo lacunas numéricas, XMLs ausentes e XMLs inválidos.

7. Continuidade da exportação

Quando são identificadas inconsistências, o sistema apresenta um formulário com os resultados e permite ao usuário avaliar se deseja continuar com a exportação.

Caso o usuário opte por continuar, o sistema verifica a permissão 7.22.13.008, registra a decisão por meio de vloFuncoesBpl.fncLogoperacao e autoriza a continuidade conforme o controle de acesso.

Quando não for possível prosseguir, a exportação é interrompida, preservando o controle sobre documentos com inconsistências.

8. Validações realizadas

Durante os testes, foram validados os seguintes cenários:

• Identificação de notas ausentes na sequência numérica.

• Identificação de XML inexistente no caminho informado.

• Recuperação de XML pelo banco de dados.

• Criação dos diretórios necessários para a recuperação.

• Identificação de XML com tags não fechadas.

• Identificação de XML com divergência entre tags.

• Apresentação consolidada das inconsistências.

• Registro da decisão de continuar a exportação.

Também foram identificados exemplos reais de XMLs inválidos, como a nota 009699, com a estrutura nfeProc incompleta, e a nota 009748, com divergência entre as tags cEANTrib e prod.

Configuração

Para permitir que o usuário continue a exportação mesmo quando houver inconsistências, é necessário possuir a permissão 7.22.13.008.

Será necessário substituir o aplicativo Util e fazer atualizações de tabelas. e substituir na pasta BPL o arquivo TDPEXPDADOSFISCAISXE8.bpl.

Questões:

1. Quais verificações passaram a ser realizadas antes da exportação das notas fiscais?
A) Apenas consulta da situação das notas na SEFAZ.
B) Verificação de lacunas numéricas, existência dos XMLs e integridade estrutural dos arquivos.
C) Somente conferência dos valores totais das notas.
D) Apenas verificação da existência de arquivos na pasta de exportação.

2. O que acontece quando um arquivo XML não é encontrado no caminho registrado?
A) O sistema exclui a nota fiscal do banco de dados.
B) O sistema ignora a nota e continua a exportação automaticamente.
C) O sistema tenta recuperar o XML pela tabela CARGADESCARGA_PDV antes de classificá-lo como ausente.
D) O sistema gera um novo XML sem consultar os dados armazenados.

3. Qual é a finalidade da permissão 7.22.13.008 nesse processo?
A) Permitir a alteração da numeração das notas fiscais.
B) Autorizar a continuidade da exportação mesmo com inconsistências, registrando a decisão do usuário.
C) Permitir a exclusão automática dos XMLs inválidos.
D) Alterar a chave de acesso das notas fiscais durante a exportação.

Vídeo
https://youtu.be/Us5tFU7lg6I
  


Parâmetros Envolvidos

Não há parâmetros envolvidos.

» Nota Técnica