contato@archdevtech.com

Telefone : +55 19 9.9895-7345

NF-e no Protheus: Como Resolver os Erros 002 e 029

Ao transmitir uma NF-e pelo TOTVS Protheus, você pode se deparar com mensagens como:

002 – Não foi possível assinar a NF-e – entre em contato com o responsável.

029 – Falha no Schema do XML.

Apesar da primeira mensagem levar naturalmente à investigação do certificado digital, nem sempre o certificado é a verdadeira origem do problema.

Em alguns cenários, principalmente envolvendo NF-e de devolução, notas de entrada e documentos fiscais referenciados, o problema pode estar na própria estrutura do XML gerado pelo Protheus.

Neste artigo vamos analisar um caso real em que uma NF-e de entrada de devolução apresentava exatamente essas mensagens e entender como o referenciamento da nota fiscal de origem no Documento de Entrada do Protheus influencia a geração do XML.

O cenário

O documento analisado era uma NF-e modelo 55 de entrada, emitida pelo próprio estabelecimento.

Algumas informações importantes presentes no XML eram:

<natOp>DEV DE VENDA</natOp>
<mod>55</mod>
<tpNF>0</tpNF>
<finNFe>4</finNFe>

Temos, portanto:

  • tpNF = 0: operação de entrada;
  • finNFe = 4: NF-e com finalidade de devolução;
  • natureza da operação: DEV DE VENDA.

Os produtos utilizavam CFOP de entrada de devolução, como:

<CFOP>1201</CFOP>

Até aqui, o XML apresentava características compatíveis com uma operação de entrada referente a uma devolução.

O problema apareceu ao analisar os itens.

O grupo DFeReferenciado

Em cada item da NF-e estava sendo gerada uma estrutura semelhante a esta:

<DFeReferenciado>
    <chaveAcesso></chaveAcesso>
    <nItem>0</nItem>
</DFeReferenciado>

Esse é um ponto crítico.

O grupo DFeReferenciado permite relacionar o item da NF-e atual com um documento fiscal anteriormente emitido.

Simplificando, podemos interpretar:

Quando esse grupo é informado, espera-se que exista efetivamente um documento fiscal de origem.

No XML analisado, entretanto, tínhamos:

<chaveAcesso></chaveAcesso>
<nItem>0</nItem>

Ou seja, o grupo estava sendo criado, mas sem uma chave de acesso válida e sem um item de origem válido.

Essa situação é diferente de simplesmente não informar um documento referenciado.

Se não existe informação válida para compor o grupo, a aplicação não deveria criar uma estrutura vazia como:

<DFeReferenciado>
    <chaveAcesso></chaveAcesso>
    <nItem>0</nItem>
</DFeReferenciado>

É justamente esse tipo de estrutura que deve ser investigado quando ocorre uma falha de Schema.

Por que aparece também “Não foi possível assinar a NF-e”?

Esse detalhe pode confundir bastante durante o diagnóstico.

Ao receber:

002 - Não foi possível assinar a NF-e
029 - Falha no Schema do XML

é natural começar verificando:

  • validade do certificado A1/A3;
  • senha do certificado;
  • cadeia de certificados;
  • TSS;
  • comunicação com o TSS;
  • permissões;
  • configuração SSL/TLS.

Essas verificações continuam sendo importantes quando há indícios de problema no certificado.

Porém, quando existe simultaneamente uma mensagem explícita de Falha no Schema do XML, vale analisar o XML antes de concentrar toda a investigação no certificado.

A aplicação pode estar tentando processar ou assinar um XML que já contém uma estrutura incompatível com o Schema utilizado.

A relação com a Reforma Tributária

Outro detalhe importante do XML analisado é que ele já contém os novos grupos de IBS e CBS.

Por exemplo:

<IBSCBS>
    <CST>000</CST>
    <cClassTrib>000001</cClassTrib>

    <gIBSCBS>
        <vBC>4477.85</vBC>

        <gIBSUF>
            <pIBSUF>0.1000</pIBSUF>
            <vIBSUF>4.48</vIBSUF>
        </gIBSUF>

        <gIBSMun>
            <pIBSMun>0</pIBSMun>
            <vIBSMun>0</vIBSMun>
        </gIBSMun>

        <vIBS>4.48</vIBS>

        <gCBS>
            <pCBS>0.9000</pCBS>
            <vCBS>40.30</vCBS>
        </gCBS>

    </gIBSCBS>
</IBSCBS>

Isso mostra que estamos trabalhando com um XML já adequado aos novos layouts relacionados à Reforma Tributária.

Consequentemente, o ambiente Protheus/TSS precisa estar atualizado para trabalhar com os Schemas correspondentes.

Mas há outro ponto: a geração do DFeReferenciado depende de o ERP possuir corretamente as informações que relacionam o documento atual ao documento de origem.

É aí que entramos no Documento de Entrada do Protheus.

Como o Protheus relaciona uma Nota de Entrada com a nota de origem

No Protheus, o Documento de Entrada trabalha principalmente com:

SF1 → Cabeçalho da Nota Fiscal de Entrada
SD1 → Itens da Nota Fiscal de Entrada

Para estabelecer a relação entre um item de entrada e seu documento fiscal de origem, existem três campos particularmente importantes na SD1:

D1_NFORI
D1_SERIORI
D1_ITEMORI

Eles representam, respectivamente:

D1_NFORI   → Número da nota fiscal de origem
D1_SERIORI → Série da nota fiscal de origem
D1_ITEMORI → Item da nota fiscal de origem

A própria documentação da TOTVS orienta o preenchimento desses campos com as informações da nota de origem em documentos de entrada que precisam desse relacionamento.

Conceitualmente:

SD1 - Item da entrada

D1_NFORI   = Nota original
D1_SERIORI = Série original
D1_ITEMORI = Item original

Isso cria a amarração entre o movimento atual e o movimento que lhe deu origem.

Exemplo prático

Imagine que originalmente tenha sido emitida a NF-e:

Nota: 123456
Série: 1

e o produto devolvido estava no:

Item: 0001

No Documento de Entrada relacionado à devolução, o item poderia possuir:

D1_NFORI   = 123456
D1_SERIORI = 1
D1_ITEMORI = 0001

O relacionamento conceitual passa a ser:

NF-e original
123456 / Série 1
       │
       └── Item 0001
              │
              ▼
       Documento de Entrada
              │
              └── Item da devolução

É essa informação de origem que permite ao Protheus reconhecer a relação entre os movimentos.

O relacionamento não deve ser confundido com a chave de acesso

Um detalhe importante é que:

D1_NFORI

não é a chave de acesso da NF-e.

O campo contém o número da nota de origem.

Da mesma maneira:

D1_SERIORI

contém a série e:

D1_ITEMORI

identifica o item correspondente.

A chave eletrônica da NF-e possui 44 posições e é outra informação.

Portanto, não devemos fazer algo como:

D1_NFORI = 3526...

utilizando os 44 dígitos da chave.

O Protheus utiliza os relacionamentos do documento para localizar e tratar as informações fiscais correspondentes.

Como informar a nota de origem no Documento de Entrada

Durante a inclusão do Documento de Entrada, é necessário verificar se o item está corretamente relacionado à nota fiscal original.

Dependendo do processo utilizado, versão do Protheus e configuração da rotina, essa informação pode ser obtida automaticamente pelo processo de devolução ou informada por meio dos campos correspondentes.

O resultado esperado na SD1 é:

D1_NFORI     preenchido
D1_SERIORI   preenchido
D1_ITEMORI   preenchido

Por exemplo:

D1_DOC      = 339060
D1_SERIE    = 1
D1_ITEM     = 01

D1_NFORI    = 123456
D1_SERIORI  = 1
D1_ITEMORI  = 01

Nesse exemplo temos dois documentos diferentes.

O primeiro conjunto:

D1_DOC
D1_SERIE
D1_ITEM

identifica o documento que está sendo lançado agora.

O segundo:

D1_NFORI
D1_SERIORI
D1_ITEMORI

identifica de onde aquele movimento se originou.

Essa diferença é fundamental.

Como consultar diretamente no banco

Em uma investigação técnica, podemos verificar rapidamente os itens da SD1.

Por exemplo:

SELECT
    D1_DOC,
    D1_SERIE,
    D1_ITEM,
    D1_COD,
    D1_CF,
    D1_NFORI,
    D1_SERIORI,
    D1_ITEMORI
FROM SD1010
WHERE D1_DOC = '339060'
  AND D_E_L_E_T_ = '';

A tabela física poderá variar conforme empresa/ambiente, por isso SD1010 é apenas um exemplo.

O objetivo é verificar se estamos encontrando situações como:

D1_NFORI    = ''
D1_SERIORI  = ''
D1_ITEMORI  = ''

ou referências incompletas/inconsistentes.

Se o XML está produzindo DFeReferenciado, vale comparar diretamente essas informações com aquilo que foi gravado na SD1.

O reflexo fiscal dessa referência

O relacionamento não é relevante apenas para a transmissão da NF-e.

A documentação da TOTVS também utiliza:

D1_NFORI
D1_SERIORI
D1_ITEMORI

para estabelecer a referência à nota de origem nos documentos de entrada.

Depois do processamento fiscal, esse relacionamento pode refletir na SFT através de campos como:

FT_NFORI
FT_SERORI
FT_ITEMORI

Essa informação também participa de processos fiscais relacionados aos documentos referenciados e ao registro C113 do SPED Fiscal.

Portanto, não estamos falando simplesmente de “um campo necessário para passar o XML”.

Estamos falando do relacionamento fiscal entre documentos dentro do Protheus.

E nas Notas de Saída?

Existe uma lógica equivalente no faturamento.

Para operações de saída, o relacionamento utiliza campos como:

C6_NFORI
C6_SERIORI
C6_ITEMORI

no item do Pedido de Venda.

Após o faturamento, o relacionamento correspondente aparece nos itens da nota através de:

D2_NFORI
D2_SERIORI
D2_ITEMORI

Podemos resumir assim:

ENTRADA
SD1
 ├── D1_NFORI
 ├── D1_SERIORI
 └── D1_ITEMORI


SAÍDA
SC6
 ├── C6_NFORI
 ├── C6_SERIORI
 └── C6_ITEMORI

          ↓ faturamento

SD2
 ├── D2_NFORI
 ├── D2_SERIORI
 └── D2_ITEMORI

A TOTVS documenta esse relacionamento tanto para operações de entrada quanto para operações de saída.

Atenção: nem toda devolução exige a mesma forma de referência

Aqui existe uma armadilha importante.

Encontrar:

<finNFe>4</finNFe>

não significa automaticamente que devemos simplesmente preencher qualquer referência para fazer a nota passar.

A necessidade e a forma de referenciamento dependem da operação fiscal, CFOP, documento de origem e regras vigentes da NF-e.

No caso analisado, por exemplo, aparecia:

<CFOP>1201</CFOP>

Portanto, antes de alterar o documento, é necessário determinar:

  1. qual é a NF-e que originou a devolução;
  2. quais itens da NF-e original estão sendo devolvidos;
  3. se o processo do Protheus está corretamente relacionando esses itens;
  4. se o XML deveria possuir DFeReferenciado;
  5. se a referência deve ocorrer no nível exigido pelo layout/regra aplicável;
  6. se Protheus e TSS estão atualizados para o Schema utilizado.

O objetivo não é “preencher a tag até o XML passar”.

O objetivo é fazer com que o relacionamento fiscal existente na operação seja corretamente representado no Protheus e, consequentemente, no XML.

Como eu diagnosticaria o erro 002 + 029

Quando aparecer:

002 - Não foi possível assinar a NF-e
029 - Falha no Schema do XML

eu seguiria esta sequência:

1. Salvar o XML gerado antes da transmissão

Não trabalhar somente com a mensagem apresentada na tela.

O XML geralmente revela muito mais.

2. Procurar tags vazias ou estruturas incompletas

Especialmente grupos novos ou condicionais.

No nosso caso:

<DFeReferenciado>
    <chaveAcesso></chaveAcesso>
    <nItem>0</nItem>
</DFeReferenciado>

chamou imediatamente a atenção.

3. Identificar a operação fiscal

Verificar:

tpNF
finNFe
CFOP
TES
Finalidade da NF-e
Documento de origem

4. Conferir a SD1

Consultar:

D1_NFORI
D1_SERIORI
D1_ITEMORI

e comparar com a nota original.

5. Conferir a nota de origem

Validar:

Número
Série
Item
Produto
Quantidade
Chave da NF-e

Não basta existir uma referência; ela precisa apontar para o documento correto.

6. Gerar novamente o XML

Depois de corrigir o processo no ERP, gerar novamente a NF-e e comparar o trecho do XML.

Se houver referência válida, espera-se uma estrutura coerente com o documento de origem, por exemplo:

<DFeReferenciado>
    <chaveAcesso>CHAVE-DE-44-DIGITOS-DA-NFE-DE-ORIGEM</chaveAcesso>
    <nItem>1</nItem>
</DFeReferenciado>

Caso aquele grupo não seja aplicável à operação, ele não deve ser artificialmente criado apenas com valores vazios.

7. Somente depois investigar assinatura/certificado

Se o XML estiver válido e a mensagem 002 continuar ocorrendo, aí sim aprofundamos a investigação em:

Certificado digital
TSS
SmartClient/AppServer
cadeia ICP-Brasil
TLS
permissões
configuração do certificado

Essa ordem evita perder horas investigando certificado quando a causa real está na montagem do XML.

Conclusão

A combinação dos erros:

002 - Não foi possível assinar a NF-e
029 - Falha no Schema do XML

não deve ser interpretada automaticamente como problema no certificado digital.

No caso analisado, o XML forneceu uma pista muito mais relevante:

<DFeReferenciado>
    <chaveAcesso></chaveAcesso>
    <nItem>0</nItem>
</DFeReferenciado>

Em operações que possuem relacionamento com uma nota anterior, é fundamental verificar como esse vínculo foi registrado no Protheus.

Para Documentos de Entrada, três campos merecem atenção especial:

D1_NFORI
D1_SERIORI
D1_ITEMORI

Eles estabelecem o relacionamento do item atual com a nota fiscal de origem e podem refletir posteriormente nas informações fiscais utilizadas pelo sistema.

Por isso, diante de uma falha de Schema, o melhor diagnóstico não é simplesmente perguntar:

“O certificado está funcionando?”

A pergunta mais útil é:

“Qual estrutura do XML não está atendendo ao Schema e quais dados do Protheus fizeram essa estrutura ser gerada?”

Essa mudança na forma de investigar costuma reduzir bastante o tempo necessário para encontrar a causa do problema.

Referências técnicas

Documentação TOTVS — Manual de utilização do SPED Fiscal (FIS0009), incluindo orientação sobre D1_NFORI, D1_SERIORI, D1_ITEMORI e documentos referenciados.

Documentação TOTVS — Relacionamento entre notas de remessa/devolução, com os relacionamentos de origem utilizados nas operações de entrada e saída.

Documentação técnica da NF-e — leiaute e Notas Técnicas vigentes aplicáveis ao XML da NF-e e aos grupos introduzidos/alterados pela Reforma Tributária.

Categorias:

Posts Relacionados :-