Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Bom dia. Gostaria de saber se mais alguém está passando por esse problema:

Ao executar o comando de enviar a nota para o WebService de MT, estava retornando uma exceção vazia. Quando tentava reenviar a nota me retornava um erro de duplicidade, e para minha surpresa, a nota realmente foi transmitida. Pelo que eu percebi, o erro acontece quando executa o comando Self.Enviar.Executar dentro das units do componente, e logo em seguida executa o Self.Retorno.Executar (envio síncrono). Para resolver temporariamente aqui para mim conseguir fazer os testes, eu coloquei um sleep de 3 segundos antes do comando de executar o retorno, então pelo que me parece, o problema está em ele tentar executar o comando de retorno, mas a nota não ter sido enviada ainda. Só pra constar, isso aparentemente só está acontecendo com os testes feitos em MT, pois estou fazendo testes de envio para o servidor de homologação de SP e não tenho esse problema. Alguém mais chegou a passar por alguma situação parecida? Ou talvez seja somente problema no servidor de homologação?

Se alguém tiver alguma informação, agradeço desde já. Valeuu

Postado

Opa, desculpa, estou me referindo à NFC-e, e estou tentando enviar em ambiente de homologação para o webservice da sefaz de MT. O que está acontecendo exatamente é que ao chamar a função de executar o retorno dentro da rotina de envio da nota (Self.Retorno.Executar) , está retornando false, e quando vou visualizar a mensagem de retorno/exception (Self.Retorno.Msg), ela está vazia. Quando eu tento consultar a nota no sefaz, ela transmitiu com sucesso. O problema é que, se for debugando e parar exatamente na função Self.Retorno.Executar, esperar uns 3 segundos e então continuar com a execução, ela me retorna true e transmite também, mas dar problema na hora de executar o retorno. Para resolver isso eu coloquei um sleep antes de executar essa função, e resolveu temporariamente (pelo menos para continuar com os testes até achar uma solução). Aqui o código de onde eu adicionei o sleep:

 

  self.Enviar.FLote := ALote;
  self.Enviar.FSincrono := ASincrono;
  if not(Self.Enviar.Executar) then
     begin
       if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
          TACBrNFe( FACBrNFe ).OnGerarLog(Self.Enviar.Msg);
       raise EACBrNFeException.Create(Self.Enviar.Msg);
     end;

  if not ASincrono then
   begin
    Self.Retorno.Recibo := Self.Enviar.Recibo;
    Sleep(3000);
    if not(Self.Retorno.Executar) then
       begin
         if Assigned(TACBrNFe( FACBrNFe ).OnGerarLog) then
            TACBrNFe( FACBrNFe ).OnGerarLog(Self.Retorno.Msg);
         raise EACBrNFeException.Create(Self.Retorno.Msg);
       end;
   end;

Como nosso envio não é assíncrono, me parece que se ele tenta executar o retorno muito rápido, a nota ainda não foi transmitida (ou algo assim). Se eu tiro o sleep de 3 segundos, ele transmite a nota, mas a função Self.Retorno.Executar me retorna false, e retorna uma mensagem vazia para o usuário.

Não sei se consegui explicar direito, mas isso só está acontecendo com o servidor de homologação do MT, pois fiz testes com o de SP e não tive problemas com a função de enviar a nota.

Postado

Conforme eu suspeitava, aparentemente isso só está acontecendo quando tento enviar para o servidor de homologação de MT. Fiz testes essa manhã com um certificado de um cliente de Roraima, e enviou sem nenhum problema. 

  • 1 mês depois ...
  • Este tópico foi criado há 3311 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.