Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Quando habilito as variáveis: ConfigArquivos.SalvarCFe e/ou ConfigArquivos.SalvarCFeCanc ocorre o salvamento do respectivo arquivo previamente configurado, correto?

Bom, meu problema foi que quando existe um path mal configurado ou algum problema de permissão de gravação de arquivo é gerada uma exceção, e essa exceção me fez com que eu não continuasse com meu processo de venda, porém o cupom havia sido emitido pelo SAT normalmente.

No meu caso eu acabei contornando fazendo um tratamento mais abaixo na chamada da função principal: EnviarDadosVenda e/ou CancelarUltimaVenda, porém, achei importante sugerir a ACBr o tratamento dentro das próprias funções DecodificaRetorno6000 e DecodificaRetorno7000 no caso de erro no salvamento do arquivo continuar com a execução normalmente.

  procedure TACBrSAT.DecodificaRetorno6000;
  // ...
  if fsConfigArquivos.SalvarCFe then
  begin
    NomeCFe := CalcCFeNomeArq(fsConfigArquivos.PastaCFeVenda);
	try
       CFe.SaveToFile(NomeCFe);
   	   DoLog('  Gravando XML Venda recebido: '+NomeCFe);
	except
       on E: Exception do begin	
          DoLog('  Erro Gravando XML Venda recebido: '+NomeCFe + ' -> ' + E.Message );
	   end;
	end;	
  end;
procedure TACBrSAT.DecodificaRetorno7000;
// ...
if fsConfigArquivos.SalvarCFeCanc then
  begin
    NomeCFe := CalcCFeCancNomeArq(fsConfigArquivos.PastaCFeCancelamento);
	try
      CFeCanc.SaveToFile(NomeCFe);
      DoLog('  Gravando XML Cancelamento recebido: '+NomeCFe);
	except
      on E: Exception do begin	
         DoLog('  Erro gravando XML Cancelamento recebido: '+NomeCFe + ' -> ' + E.Message);
	  end;
	end;
  end;

Sem mais, deixo registrado um problema que tive e minha sugestão... 

Muito Obrigado,

Luiz Henrique

  • Fundadores
Postado

Mas se o ACBr não consegue salvar o arquivo... isso não merece um Exception?

Se apenas ignorarmos os erros de Arquivos não salvos... e após vários dias de Operação...  teríamos várias vendas emitidas, sem o XMlL em disco...

Acho que cabe a aplicação verificar se o Path informado é válido, antes de iniciar a Venda, afinal a coleta dos XMLs é do interesse dela

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Daniel, bom dia! Primeiramente queria lhe agradecer pelo retorno.

Então, o problema de dar o exception me preocupa no simples fato do cupom estar emitido.

O Algoritimo que fiz acima simplesmente esta ignorando o salvamento. (relamente não acho que seja a melhor solução), mas poderiamos bolar algo que tenhamos a informação do erro do salvamento do arquivo sem a ocorrência da excessão, pois sem a excessão o sistema dá fluxo no fechamento (já que o cupom está emitido).

Eu contornei conforme abaixo e, como salvo também em banco consigo reconstruir o arquivo para salvar na pasta.

...
   try
      FACBrSat.EnviarDadosVenda;
   except
      on E: Exception do begin
         FErros.Add(E.Message);
      end;
   end;
...

 

  • 2 semanas depois ...
  • Fundadores
Postado

Uma opção, seria desabilitar ConfigArquivos.SalvarCFe e ConfigArquivos.SalvarCFeCanc , pois nesse caso não passaria nesse local do código...

E você poderia escrever uma rotina de persistência do XML em Banco de Dados...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Solution
Postado

Daniel, bom dia!

Aproveitei sua dica e acabei contornando da seguinte forma, acho que ficou melhor.

Não salvo o arquivo no processo de emissão do cupom, porém salvo posteriormente tratando o que preciso conforme código abaixo.


 


   FACBrSat.ConfigArquivos.SalvarCFe        := false;
   FACBrSat.ConfigArquivos.SalvarCFeCanc    := false;
   ...
   FACBrSat.EnviarDadosVenda;
   if FACBrSat.Resposta.codigoDeRetorno = 6000 then begin
      try
         NomeCFe := FACBrSat.CalcCFeNomeArq( FACBrSat.ConfigArquivos.PastaCFeVenda );
         FACBrSat.CFe.SaveToFile(NomeCFe);
      Except
         on E: Exception do begin
            ...
         end;
      end;
   end;

 

  • Curtir 1
  • Este tópico foi criado há 1009 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.