Pesquisar na Comunidade
Showing results for tags 'xmlsemautorizacao'.
Encontrado 1 registro
-
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