Ir para conteúdo
  • Cadastre-se

dev botao

Limpar o WebServices.retorno


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

Recommended Posts

Amigos está ocorrendo o seguinte:

Estou emitindo NFC-e normalmente no modo normal on-line e no meio do dia o cliente precisou mudar para contingência Off-line, até ai tudo bem, mas no meu sistema uso e leio algumas informações de retorno do webservice: ex: acbrnfe.webservices.retorno.chavenfe.

Acontece que quando mudo para contingencia off-line esse retorno fica em cache (da última venda transmitida), existe alguma forma de dar um clear nele, pois so dou clear em acbrnfe.notasfiscais.clear;

Grato.

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você pode testar uma alteração que fiz?

Nela eu fiz a limpeza dos objetos antes do envio.

Isso garante que a resposta nunca uso o retorno da ultima consulta em caso de erro.

Fiz também um tratamento e inclui um a checagem do retEnviNFe para pegar o retorno 103 e 105.

Tenho usado assim faz algum tempo e não tive problemas com falsos retornos.

 

pcnRetConsReciNFe.pas

ACBrDFeWebService.pas

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Waldir Paim disse:

Você pode testar uma alteração que fiz?

Nela eu fiz a limpeza dos objetos antes do envio.

Isso garante que a resposta nunca uso o retorno da ultima consulta em caso de erro.

Fiz também um tratamento e inclui um a checagem do retEnviNFe para pegar o retorno 103 e 105.

Tenho usado assim faz algum tempo e não tive problemas com falsos retornos.

 

pcnRetConsReciNFe.pas

ACBrDFeWebService.pas

O Problema é que quando for atualizar o ACBR lembrar de mudar isso, não é ?

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
Em 04/12/2015 at 14:57, fernandesdouglas disse:

Será que assim resolve:

            ACBrNFe1.WebServices.Retorno.ChaveNFe := '';
            Retorno := ACBrNFe1.WebServices.Retorno.Executar;

Tem algumas propriedades que não posso zerar (read only).

Também estou com o mesmo pensamento, e fui ver que algumas propriedades são read only.

Seria possível o pessoal do ACBr criar um método '.Clear', algo assim, para não ter necessidade de darmos merge com nossas alterações "próprias"?

ACBrNFe.WebServices.Enviar.Clear;
ACBrNFe.WebServices.Clear;

Muito obrigado.

Editado por Leandro Araújo

Leandro Araújo, Analista de Sistemas.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Leandro,

O que você acha de anexar aqui no fórum as alterações que você fez e que julga ser de utilidade de toda a comunidade?

Assim podemos avaliar e disponibilizar a todos.

Deixando assim o componente mais completo.

  • 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

Link para o comentário
Compartilhar em outros sites

Resolvi alterando a unit 'ACBrNFeWebServices.pas', incluindo um método '.Clear' para a classe 'TNFeRecepcao'.

procedure TNFeRecepcao.Clear;
begin
  Self.FLote := EmptyStr;
  Self.FRecibo := EmptyStr;
  // FNotasFiscais: TNotasFiscais;
  // Fversao: String;
  // FTpAmb: TpcnTipoAmbiente;
  // FverAplic: String;
  Self.FcStat := 0;
  // FcUF: integer;
  Self.FxMotivo := EmptyStr;
  Self.FdhRecbto := 0;
  // FTMed: integer;
  // FSincrono: Boolean;
end;

Dai antes de qualquer envio eu limpo para evitar algum engano no meu bloco except.

// Limpando cStat, dhRecbto, xMotivo etc.
ACBrNFe1.WebServices.Enviar.Clear;
// ...
ACBrNFe1.Enviar(FLote, FImprimir, FSincrono);
ACBrNFe1.NotasFiscais.Items[0].GravarXML;

//....

// No except:
on E: EACBrDFeException do
begin
  FCStat := ACBrNFe1.WebServices.Enviar.cStat;

  if FCStat <> 0 then
  begin
  // Aqui o cStat é tratado em 'ProcessarAposSucessoEnvioNFe'.
  end
  else
  begin
  // Algum outro erro (Falha de comunicação etc). 'ProcessarAposErroEnvioNFe'.
  end;
end;

O que acontece é que após um envio/consulta com sucesso (100), e ao se realizar outro envio/consulta e ocorrer um erro de comunicação por exemplo, ainda está setada a informação do cStat como 100 nos retornos do WebService, no caso apenas estou limpando esses valores, isso também para rejeições, as quais agora o componente lança uma exception e nos tratamentos de excessões pegamos o cStat da rejeição.


Para mim esse procedimento foi necessário, pois utilizo o componente de NF-e em um DataModule, ou seja, o componente só é de fato "zerado" quando encerro a aplicação.
Vai em anexo a unit 'ACBrNFeWebServices', com um pequeno teste, na linha 1218.
Não sei, mas talvez seja necessário fazer para os outros webservices.

Muito obrigado.

ACBrNFeWebServices.pas

37 minutos atrás, Italo Jurisato Junior disse:

Boa tarde Leandro,

O que você acha de anexar aqui no fórum as alterações que você fez e que julga ser de utilidade de toda a comunidade?

Assim podemos avaliar e disponibilizar a todos.

Deixando assim o componente mais completo.

Obrigado pela oportunidade Italo, teve um colega, o Waldir Paim, que fez uma alteração dessas também, apenas mandei o modo com que resolvi aqui no meu caso.

 

Leandro Araújo, Analista de Sistemas.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
Em 29/12/2015 at 07:53, Italo Jurisato Junior disse:

Bom dia Leandro,

Muito obrigado pela colaboração, vamos avaliar e se estiver tudo Ok vamos disponibilizar.

@Italo Jurisato Junior, apenas para fins de feedback, gostaria de dizer que a alteração a respeito da limpeza dos retornos dos webservices funcionaram perfeitamente, agora não tenho mais riscos de pegar o retorno/cStat de um envio anterior, paramos de ter erros com "falso positivo" de nota autorizada/rejeição.

Muito obrigado.

Leandro Araújo, Analista de Sistemas.

Link para o comentário
Compartilhar em outros sites

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