Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2744 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá pessoal!

 

Venho pedir ajuda aos colegas para um problema que estou enfrentando em meu sistema.

Tenho um sistema em Delphi que emite NFe usando o ACBrNFe há vários anos em produção em várias empresas.

Depois que atualizei para o trunk2, estou tendo frequentemente casos de NFe sendo autorizada mas o XML não é atualizado com o protocolo de autorização.

A maioria das notas é autorizada sem problemas mas alguns casos ocorre o erro.

Percebi que o erro ocorre em situações onde a comunicação falha e o sistema não consegue obter a resposta se a NFe foi autorizada.

Numa chama posterior de Consulta de Status o sistema busca atualizar o XML com a autorização mas alguma coisa está falhando.

Posto abaixo o código de como estou fazendo:

    ACBrNFe1.NotasFiscais.Clear;

    arqnfe := path_sistema+'XML\'+DM.CDSConfigCNPJ.AsString+'\';
    arqnfe := arqnfe + FormatDateTime('yyyymm',DM3.CDSNotaFiscDATA_EMISSAO.AsDateTime)+'\';
    arqnfe := arqnfe + DM3.CDSNotaFisc.FieldByName('CHAVENFE').AsString + '-nfe.xml';

    if FileExists(arqnfe) then
       ACbrNFe1.NotasFiscais.LoadFromFile(arqnfe)
    else
       begin
       ShowMessage('*** NÃO FOI POSSÍVEL CARREGAR O XML DO ARQUIVO ***');
       exit;
       end;

    ACBrNFe1.Consultar;

     if ACBrNFe1.WebServices.Consulta.cStat in [100,150] then
        begin
        // NF Autorizada, Grava Chave NFE
        DM3.CDSNotaFisc.Edit;
        DM3.CDSNotaFisc.FieldByName('STATUS').AsInteger         := 1;
        DM3.CDSNotaFisc.FieldByName('CHAVENFE').AsString      := ACBrNFe1.WebServices.Consulta.NFeChave;
        DM3.CDSNotaFisc.FieldByName('PROTAUTUSO').AsString := ACBrNFe1.WebServices.Consulta.Protocolo;
        DM3.CDSNotaFisc.Post;

        ACBrNFe1.NotasFiscais.Items[0].GravarXML(arqnfe);
        end
     else if ACBrNFe1.WebServices.Consulta.cStat in [101,151,135,155] then
        begin
        // NFE CANCELADA

        DM3.CDSNotaFisc.Edit;
        DM3.CDSNotaFisc.FieldByName('STATUS').AsInteger    := 2;
        DM3.CDSNotaFisc.FieldByName('CHAVENFE').AsString   := ACBrNFe1.WebServices.Consulta.NFeChave;
        DM3.CDSNotaFisc.FieldByName('PROTAUTUSO').AsString := ACBrNFe1.WebServices.Consulta.Protocolo;
        DM3.CDSNotaFisc.Post;
        end
     else if ACBrNFe1.WebServices.Consulta.cStat in [205] then
        begin
        // NFE DENEGADA
        DM3.CDSNotaFisc.Edit;
        DM3.CDSNotaFisc.FieldByName('STATUS').AsInteger    := 3;
        DM3.CDSNotaFisc.FieldByName('CHAVENFE').AsString   := ACBrNFe1.WebServices.Consulta.NFeChave;
        DM3.CDSNotaFisc.FieldByName('PROTAUTUSO').AsString := '';
        DM3.CDSNotaFisc.Post;
        end;

   ShowMessage('Resposta da Sefaz: '+IntToStr(ACBrNFe1.WebServices.Consulta.cStat)+'-'+
                                     ACBrNFe1.WebServices.Consulta.XMotivo);

Em que ponto eu poderia melhorar o código para que esse problema não ocorresse mais ?

Agradeço a quem puder me dar alguma dica.

 

Aloisio Pires Neto

Programador

 

 

  • Este tópico foi criado há 2744 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.