Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

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.

 

  • Moderadores
Postado

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
Postado
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 é ?

Postado

Será que assim resolve:

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

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

  • Curtir 1
  • 3 semanas depois ...
Postado (editado)
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.

  • Consultores
Postado

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

Postado

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.

Postado
2 horas atrás, Italo Jurisato Junior disse:

Bom dia Leandro,

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

Apenas uma sugestão, o projeto ACBr tem nos ajudado muito.
Obrigado pela atenção.

 

Leandro Araújo, Analista de Sistemas.

  • 2 semanas depois ...
Postado
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.

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