Ir para conteúdo
  • Cadastre-se

dev botao

ERRO EM BRANCO AO EMITIR NF-e


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

Recommended Posts

  • Membros Pro

Boa noite, nas tentativas de solucionar esse problema fui debugar o código linha a linha e transmitiu normal, agora a pergunta é: o que pode está acontecendo? quando transmito retorna o erro com o X vermelho, quando debugo da certo. :( 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

consegui!!!

o problema está nessa procedure:

 

procedure TDFeWebService.EnviarDados;
Var
  Tentar, Tratado: Boolean;
begin
  { Sobrescrever apenas se necessário }

  FPRetWS := '';
  FPRetornoWS := '';

  { Verifica se precisa converter o Envelope para UTF8 antes de ser enviado.
     Entretanto o Envelope pode já ter sido convertido antes, como por exemplo,
     para assinatura.
     Se o XML está assinado, não deve modificar o conteúdo }
  if not XmlEstaAssinado(FPEnvelopeSoap) then
    FPEnvelopeSoap := ConverteXMLtoUTF8(FPEnvelopeSoap);

  Tentar := True;
  while Tentar do
  begin
    Tentar := False;
    Tratado := False;

    if FPConfiguracoes.Certificados.VerificarValidade and
       (FPDFeOwner.SSL.CertDataVenc < Now) then
      raise EACBrDFeException.Create('Data de Validade do Certificado já expirou: '+
                                     FormatDateBr(FPDFeOwner.SSL.CertDataVenc));

    try
      FPRetornoWS := FPDFeOwner.SSL.Enviar(FPEnvelopeSoap, FPURL, FPSoapAction, FPMimeType);
      sleep(3000); // ALTERADO POR JAKSON PARENTE
    except
      if Assigned(FPDFeOwner.OnTransmitError) then
        FPDFeOwner.OnTransmitError( FPDFeOwner.SSL.HTTPResultCode,
                                    FPDFeOwner.SSL.InternalErrorCode,
                                    FPURL, FPEnvelopeSoap, FPSoapAction,
                                    Tentar, Tratado) ;

      if not (Tentar or Tratado) then
        raise;
    end;
  end;

  { Resposta sempre é UTF8, ParseTXT chamará DecodetoString, que converterá
    de UTF8 para o formato nativo de  String usada pela IDE }
  FPRetornoWS := ParseText(FPRetornoWS, True, True);
end;

 

percebi que quando eu fazia o debug a NFe era transmitida normalmente, depois eu coloquei a variavel "FPRetornoWS" dentro de um showmessage pra ler o que estava escrito, daí percebi que o problema poderia ser de tempo, coloquei esse sleep com 3 segundos e resolveu, pode ser que seja útil pra alguém que venha a passar o mesmo sufoco que passei srsrs

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não precisa colocar sleep basta configurar o componente corretamente.

// tempo de timeout
ACBrNFe1.Configuracoes.WebServices.TimeOut := 15000;                  

// tempo padrão que vai aguardar para consultar após enviar a NF-e 
ACBrNFe1.Configuracoes.WebServices.AguardarConsultaRet := 5000;      

// Intervalo entre as tentativas de envio    
ACBrNFe1.Configuracoes.WebServices.IntervaloTentativas := 5000;      

// quantidade de tentativas de envio    
ACBrNFe1.Configuracoes.WebServices.Tentativas := 10;               

// ajustar "AguardarConsultaRet" com o valor retornado pelo webservice (True/False)
ACBrNFe1.Configuracoes.WebServices.AjustaAguardaConsultaRet := True; 

 

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Moderadores
2 minutos atrás, Jakson disse:

entendi Régys, eu havia tentado aumentando o TimeOut até 20000 e mesmo assim não tinha dado certo daí coloquei o sleep e ficou primeira. 

muito obrigado pela atenção!

Lembrando que agora pra frente seu fonte não vai se atualizar caso tenhamos melhorias ou novas implementações pois seu svn marcou o arquivo como não atualizável!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

Bom dia, estou com 2 clientes que estão com este mesmo problema de erro em branco e não conseguem emitir nenhuma nota.

Notei que se simplesmente mandar consultar o status do serviço pelo componente também ocorre o mesmo erro, já segui as orientações do Regys mais acima e também já fiz o teste utilizando sleep sugerido pelo Jakson, porém, depurando eu vejo que o problema sempre ocorre com o retorno da chamada do webservice voltando em branco sempre mesmo antes de passar pelo sleep.

Este cliente estava emitindo notas normalmente até dia 31/07/2018 e não houve nenhuma alteração de versão, ambiente, nada, simplesmente começou a retornar este erro em branco. 

Será que teria a ver com alguma definição nova que passou a vigorar a partir de 01/08 pela Receita de SP ?

Curiosamente tenho outros clientes que continuam emitindo nota normalmente, apenas estes dois não conseguem emitir de maneira nenhuma e já comparei as configurações e estão todas idênticas.

Alguém teria alguma sugestão ?

[]'s

Link para o comentário
Compartilhar em outros sites

Pessoal, para ajudar quem estiver passando pela mesma situação, consegui "resolver" o meu problema aqui (graças a umas dicas valiosas do Regys), não sei se é a melhor maneira, mas funcionou, basicamente configurei diretamente no meu componente as propriedades da seguinte maneira:


//estes configurei diretamente no componente
ACBrNFe1.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
ACBrNFe1.Configuracoes.Geral.HttpLib := httpWinHttp;
ACBrNFe1.Configuracoes.Geral.SSLLib := libCustom;
ACBrNFe1.Configuracoes.Geral.SSLXmlSignsLib := xsMsXml;
ACBrNFe1.Configuracoes.WebServices.SSLType:=LT_TLSv1_2;

//estes foram diretamente via código
ACBrNFe1.Configuracoes.WebServices.TimeOut := 15000;                  
ACBrNFe1.Configuracoes.WebServices.AguardarConsultaRet := 5000;      
ACBrNFe1.Configuracoes.WebServices.IntervaloTentativas := 5000;      
ACBrNFe1.Configuracoes.WebServices.Tentativas := 10;               
ACBrNFe1.Configuracoes.WebServices.AjustaAguardaConsultaRet := True;

ACBrNFe1.SSL.SSLType:=LT_TLSv1_2;


Dai foi !!!

Como disse, não sei se é a melhor ou a maneira mais correta, se alguém tiver alguma observação fique a vontade para comentar e contribuir.

[]'s

Editado por Ivan Orosco
Link para o comentário
Compartilhar em outros sites

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