Ir para conteúdo
  • Cadastre-se

dev botao

Método : DistribuicaoDFePorChaveNFe Erro recuperar : NSU


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 2249 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Prezados
Companheiros

Com auxílio dos senhores eu consegui criar rotina com finalidade de efetuar Download do Arquivo XML da Nota Fiscal Eletrônica emitida por terceiros contra nosso CNPJ.

Utilizamos para isto o método DistribuicaoDFePorChaveNFe.

A sequência de procedimentos é :
- Manifestação de Ciência da Operação
- Consulta utilizando DistribuicaoDFePorChaveNFe
- Download do Arquivo XML

Assim, parte da rotina ficou da seguinte forma :
  acbrnfNota.DistribuicaoDFePorChaveNFe(UFtoCUF(Configuracoes.CodEstado),Trim(strCnpj),Trim(edtChave.Text));
  dtOcorrencia_Consulta    := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.dhResp;
  inCodOcorrencia_Consulta := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.cStat;
  stOcorrencia_Consulta    := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;
  stArquivoXml_Consulta    := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.XML;
  stNroNsu_Consulta        := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].NSU;

Observamos então que esta última parte da rotina :
  " stNroNsu_Consulta  := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].NSU;" está apresentando problema.

Consultando chave de NFE , a execução deste comando ora resulta em uma mensagem de erro assim :   "List index out of bounds (0)"  e ora não apresenta erro.
 
Sabem os companheiros o que pode estar ocasionando este erro?

Grato

Postado

Companheiros

Experimentei modificar a linha da seguinte forma :

try
  stNroNsu_Consulta        := acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].NSU;
except
  stNroNsu_Consulta        := '';
end;

e deu certo porque desta forma isolei o problema por enquanto.

Meu objetivo agora é implementar em definitivo a solução que os senhores indicarem.

GRato

 

  • Consultores
  • Solution
Postado

Boa tarde Carlos,

Se ocorre erro é porque nenhuma nota foi retornada pela consulta, logo não existe nenhum elemento na lista: docZip.

Você também pode colocar um IF checando a quantidade de elementos.

If acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.DocZip.Count > 0 then

(...)

Lembre-se que o DistribuicaoDFePorChaveNFe já realiza o Download do XML da nota desde que esta tenha sido manifestada pelo destinatário.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 2 semanas depois ...
Postado

Sr. Italo

Conforme sua orientação, criei rotina para averiguar se após utilização do Método : DistribuicaoDFePorChaveNFe a Sefaz retornou algum arquivo XML, da seguinte forma :

        if not(acbrnfNota.WebServices.DistribuicaoDFe.retDistDFeInt.DocZip.Count > 0) then
          begin
            msgMensagem.Mensagem := 'Atenção!                                                    ' + #13 + #13 +
                                    'Embora a Consulta tenha sido efetuada de forma correta      ' + #13 +
                                    'A Secretaria de Fazenda não disponibilizou até este momento ' + #13 +
                                    'o download do Arquivo XML!                                  ' + #13 + #13 +
                                    'Por favor, aguarde 1 minuto e faça nova tentativa';
            msgMensagem.ShowMessage;
            Abort;
          end;

Assim, se nenhum arquivo xml foi retornado estou exibindo uma mensagem sugerindo ao usuário tentar fazer o download mais tarde.

Em primeiro momento esta alteração estava produzindo resultado, pois em algumas vezes o download do Arquivo Xml ocorria com êxito e outras não.

Mas, o que observamos nas últimas 2 semanas é que agora sempre ocorre erro em todas tentativas de utilização do Método : DistribuicaoDFePorChaveNFe.

Sabem os companheiros se o serviço associado a este métoto está desativado pela Sefaz?

Grato

  • Consultores
Postado

Boa tarde Carlos,

Antes de permitir que o usuário faça essa consulta você esta checando se a chave da nota em questão que será informada no método DistribuicaoDFePorChaveNFe já foi manifestada?

Lembre-se o DistribuicaoDFe só vai baixar o XML completo da nota se esta for previamente manifestada pelo destinatário, ou seja, o envio do evento de Manifestação do Destinatário foi enviando.

Outra coisa importante, a recepção dos eventos de Manifestação do Destinatário bem como o DistribuicaoDFe são serviços disponibilizados pelo Ambiente Nacional.

O Ambiente Nacional só vai vincular o evento de Manifestação do Destinatário a nota se esta já tenha sido compartilhada pela SEFAZ-Autorizadora.

Se a SEFAZ-Autorizadora (por exemplo SEFAZ-SP) não compartilhou a nota, o Ambiente Nacional não tem como vincular o evento de Manifestação do Destinatário a nota e consequentemente não tem como disponibilizar o XML completo da mesma.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Sr. Italo:

Na rotina que criei, a primeira ação é efetuar Manifestação de Ciência da Operação, caso não tenha ocorrido ainda.

Na sequência eu faço a Consulta e tento obter o arquivo xml.

O Sr. acha que dá certo fazer tudo isto ao mesmo tempo?

Teria a Sefaz condições de processar estas 2 requisições ( Manifestação e Consulta ) ?

Restou também uma dúvida com relação ao arquivo xml de consulta que é gerado no momento da Consulta.

Na primeira linha temos a seguinte instrução :
  <distDFeInt xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">

A versão não deveria ser a 1.02b ?

Grato

  • Consultores
Postado

Bom dia Carlos,

Com relação a versão, não devemos confundir a versão da Nota Técnica com a versão do Schema.

Para você ter uma ideia a versão da NF-e é 4.00 e do Manual é 6.00

 

Eu particularmente não me simpatizo com esse procedimento.

1. Enviar o evento de Manifestação pelo simples fato de já possuirmos o DANFE.

2. Executar o método DistribuicaoDFePorChaveNFe.

Pois qual é a garantia que o Ambiente Nacional já possui a nota para lhe retornar?

As notas são manifestadas através de qual evento?

Lembre-se que o evento Ciência da Operação hoje chamado de Ciência da Emissão, não é um evento conclusivo, sendo assim existe um prazo de 180 dias a contar da data de emissão da nota para o destinatário enviar um outro evento conclusivo que pode ser: Confirmação da Operação, Operação Não Realizada (requer justificativa) ou Desconhecimento da Operação.

 

Por outro lado quando utilizamos o método DistribuicaoDFePorUltNSU temos uma relação de documentos que podem ser: Resumos de Notas, Notas, Resumos de Eventos ou Eventos.

Se nessa lista temos o resumo da nota de numero 1500 isso significa que a SEFAZ-Autorizadora já compartilhou o XML da nota com o Ambiente Nacional.

Neste caso posso enviar o evento de Manifestação do Destinatário e terei a certeza que nas próximas execuções no método DistribuicaoDFePorUltNSU terei o XML completo da nota.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Este tópico foi criado há 2249 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.