Conseguir baixar a DANFCE em contingência sem a necessidade de transmitir a nota previamente para a Sefaz

A ideia seria disponibilizar um novo parâmetro opcional chamado tipo_emissao no body do endpoint de Emitir NFC-e para criar uma nota em contingência quando a Sefaz está com o serviço paralisado e assim conseguir baixar o DANFCE.

Request Body:

{
"infNFe": { ... },
"infNFeSupl": { ... },
"ambiente": "homologacao",
"referencia": "string"
"tipo_emissao": "string"
}

O parametro tipo_emissao poderia asumir dois valores, "tipo_emissao": "normal" ou "tipo_emissao": "contingencia", caso não seja informado a API da Nuvem Fiscal pode considerar ele como “normal” por padrão para evitar quebras.

Caso seja passado o valor “contingencia” a API da Nuvem Fiscal não deve tentar transmitir esse documento para a Sefaz. No caso seria feita apenas a validação de schema e retornado a resposta padrão do endpoint como os valores de status como pendente ou criado um novo valor status especifico para a contingência. No objeto de autorizacao os campos codigo_status e motivo_status poderiam assumir os valores "codigo_status": 999 e "motivo_status": "Registrada como Contingencia Offline".

Response Data:

{
"id": "string",
"ambiente": "homologacao",
"created_at": "2023-08-04T12:23:00Z",
"status": "pendente",
"referencia": "string",
"data_emissao": "2023-08-04T12:23:00Z",
"modelo": 0,
"serie": 0,
"numero": 0,
"valor_total": 0,
"chave": "string",
"autorizacao": {
    "digest_value": "string",
    "id": "string",
    "ambiente": "homologacao",
    "status": "pendente",
    "autor": {},
    "chave_acesso": "string",
    "data_evento": "2023-08-04T12:23:00Z",
    "numero_sequencial": 0,
    "data_recebimento": "2023-08-04T12:23:00Z",
    "codigo_status": 999,
    "motivo_status": "Registrada como Contingencia Offline",
    "numero_protocolo": "",
    "codigo_mensagem": 0,
    "mensagem": "",
    "tipo_evento": "string"
  }
}

Nesse cenário seria possível realizar a impressão do DANFCE utilizando o id retornado na requisição anterior com os dados da nota, QrCode e as mensagens de “Emitida em Contingência” e “Pendente de autorização”.

Depois quando a Sefaz voltasse a responder seria feita um nova tentativa de emissão pelo endpoint de Emitir NFC-e só que dessa vez passando o tipo_emissao como normal para autorizar a nota.

1 curtida

Bom dia, @tecnologia.

Obrigado pela sugestão.

Não seria melhor a Nuvem Fiscal incluir essa nota que foi emitida em contingência em uma fila de processamento para que seja transmitida para a SEFAZ assim que ela estiver disponível, evitando que você tenha que fazer uma nova requisição?

Bom dia,

Seria uma boa opção. A minha única duvida seria em relação a impressão da DANFCE, será possível baixar o PDF enquanto a NFC-e está fila aguardando ser enviada?

Sim, seria possível.

1 curtida

Sim, seria possível.

Isso resolveria o problema, obrigado.

Olá Srs! Como ficou esta questão de contingência? Qual o procedimento atual adotado pela API e quais opções temos? Obrigado.

Bom dia, @alexandre. Seja bem-vindo à Nuvem Fiscal.

Já está disponível.

Para utilizar o recurso, basta enviar a NFC-e com o campo tpEmis=9. Após isso, o PDF do DANFCE ficará disponível em seu modelo de contingência offline e a API irá transmitir a nota para a SEFAZ de forma automática assim que possível.

ótimo @arimateia, então o fluxo recomendado seria:

  1. Tentar enviar a NFCe normalmente

  2. Ok, realiza impressao da DANFCE

  3. Senão, Avaliar o retorno e caso em contingencia, enviar com o tpEmis=9

  4. realizar impressão da DANFCE em contigencia

  5. aguardar que automaticamente será enviado a nota para SEFAZ quando disponível.

Seria isto?

Obrigado.

@alexandre

Exatamente.

1 curtida

Obrigado! Qual sua sugestao de controle para que uma segunda nota, o usuário não perca tempo esperando dar o erro, ou seja, uma forma em ficar já em contingencia automaticamente e retornar quando normalizar? Tem algum EndPoint que poderíamos usar para controlar este chaveamento?

Olá, @alexandre.

Sobre a questão da entrada automática em contingência, realmente é algo delicado e depende de vários fatores. O fluxo recomendado pode variar de acordo com as circunstâncias, como o tempo de resposta da SEFAZ, instabilidades, erros ou timeouts na conexão.

Uma possibilidade comum de entrada em contingência é por conta de timeout na comunicação com a SEFAZ. Quando isso ocorre, é importante que a nota seja verificada posteriormente (usando o endpoint de sincronização) para garantir que não foi recepcionada e autorizada. Se a nota for autorizada posteriormente, e uma segunda nota em contingência já tiver sido emitida, será necessário realizar o cancelamento da duplicada.

Outro critério relevante que pode ser utilizado é a Consulta do Status do Serviço da SEFAZ autorizadora para verificar se ela está em operação no momento. Dependendo do resultado dessa consulta, é possível decidir se vale a pena tentar novamente a emissão ou já entrar em contingência diretamente, sem aguardar falhas subsequentes. Esse tipo de consulta pode ajudar a economizar tempo e evitar frustrações para o usuário, pois ele não precisaria esperar que o sistema tentasse emitir a nota repetidamente em um cenário onde a SEFAZ está fora do ar.