Ir para conteúdo
  • Cadastre-se

dev botao

Problema ao Enviar CT-e


Ver Solução Respondido por luighi.augusto,
  • Este tópico foi criado há 2572 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia.
Estou com um problema e não sei como solucionar.
Quando utilizo o ACBrCTe.Enviar, o sistema trava e não realiza mais nada, não retorna erro, nem falha.
Alguem pode me ajudar?
 

"Sefaz.ACBrCTe.Enviar(ds.DataSet.FieldByName('conhecimento').AsInteger)"

Postado

Boa tarde.
Ele solicita os certificados sim.
Ele entra no enviar, e o sistema simplesmente não responde mais.
Verifiquei se era o Schemas, mas esta certo.
Não tenho ideia do travamento.

Em 08/12/2017 at 11:50, Milton Neves disse:

estou emitindo um cte de complemento de valores e esta dando a mensagem abaixo.....Podem me ajudar ? emissor gratuito 3,0

image.png

Pode ser devido as alterações da SEFAZ, a menos que esteja muito enganado, os emissores gratuitos foram descontinuados.
http://www.dino.com.br/releases/secretaria-da-fazenda-vai-desativar-seus-emissores-de-nota-fiscal-eletronica-e-conhecimento-de-transporte-eletronico-dino89080603131

Postado

Consegui encontrar o problema.
FPConfiguracoesCTe.WebServices.AguardarConsultaRet

Ele esta com esse valor: 2147483648

Por mais que eu altere no componente o tempo para aguardar o retorno, ele continua utilizando este valor.
Comentei a linha do Sleep, e esta funcionando corretamente agora.

Mas, eu que não estou conseguindo configurar corretamente, ou é realmente um erro no codigo?

Citar

function TCTeRetRecepcao.Executar: Boolean;
var
  IntervaloTentativas, Tentativas: Integer;
begin
  Result := False;

  TACBrCTe(FPDFeOwner).SetStatus(stCTeRetRecepcao);
  try
    //Sleep(FPConfiguracoesCTe.WebServices.AguardarConsultaRet);

    Tentativas := 0; // Inicializa o contador de tentativas
    IntervaloTentativas := max(FPConfiguracoesCTe.WebServices.IntervaloTentativas, 1000);

    while (inherited Executar) and
      (Tentativas < FPConfiguracoesCTe.WebServices.Tentativas) do
    begin
      Inc(Tentativas);
      sleep(IntervaloTentativas);
    end;
  finally
    TACBrCTe(FPDFeOwner).SetStatus(stCTeIdle);
  end;

  if FCTeRetorno.CStat = 104 then  // Lote processado ?
    Result := TratarRespostaFinal;
end;

 

  • Moderadores
Postado
19 minutos atrás, luighi.augusto disse:

Mas, eu que não estou conseguindo configurar corretamente, ou é realmente um erro no codigo?

Por acaso está chamando o método de Status de Serviço antes do envio?

Se está, qual o XML retornado por ele?

Essa configuração é ajustada na chamada a esse método com base no retorno do tempo médio de resposta do webservice.
 

ACBrCTeWebservices.pas, linha 688:

function TCTeStatusServico.TratarResposta: Boolean;
var
  CTeRetorno: TRetConsStatServ;
begin
  FPRetWS := SeparaDados(FPRetornoWS, 'cteStatusServicoCTResult');
[...]
    if FPConfiguracoesCTe.WebServices.AjustaAguardaConsultaRet then
      FPConfiguracoesCTe.WebServices.AguardarConsultaRet := FTMed * 1000;

 

Você também pode configurar a propriedade AjustaAguardaConsultaRet para não fazer esse ajuste.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
2 minutos atrás, BigWings disse:

Por acaso está chamando o método de Status de Serviço antes do envio?

Se está, qual o XML retornado por ele?

Essa configuração é ajustada na chamada a esse método com base no retorno do tempo médio de resposta do webservice.
 

ACBrCTeWebservices.pas, linha 688:


function TCTeStatusServico.TratarResposta: Boolean;
var
  CTeRetorno: TRetConsStatServ;
begin
  FPRetWS := SeparaDados(FPRetornoWS, 'cteStatusServicoCTResult');
[...]
    if FPConfiguracoesCTe.WebServices.AjustaAguardaConsultaRet then
      FPConfiguracoesCTe.WebServices.AguardarConsultaRet := FTMed * 1000;

 

Você também pode configurar a propriedade AjustaAguardaConsultaRet para não fazer esse ajuste.

Exatamente, fiz uma função para verificar se a SEFAZ esta em operação.
 

O XML de retorno é:

Citar

<?xml version="1.0" encoding="UTF-8"?>
<retConsStatServCte versao="3.00" xmlns="http://www.portalfiscal.inf.br/cte">
  <tpAmb>2</tpAmb>
  <verAplic>SP-CTe-04-12-2017</verAplic>
  <cStat>107</cStat>
  <xMotivo>Serviço em Operação</xMotivo>
  <cUF>35</cUF>
  <dhRecbto>2017-12-11T13:46:33-02:00</dhRecbto>
  <tMed>1</tMed>
</retConsStatServCte>

Eu configurei o AjustaAguardaConsultaRet, porem ele não exerceu nenhuma alteração no Sleep.

image.png.ce35fc422670bb3b6f3f86678eed3425.png

Coloquei o Valor 1000 apenas para testar, mas não houve qualquer alteração.

  • Consultores
Postado

Boa tarde Luighi,

Se você esta consultando o Status antes do envio, te aconselho não fazer isso, pois o teu cliente poderá ser bloqueado pela SEFAZ por consumo indevido.

A muito tempo atrás o ACBrCTe realizava essa ação automaticamente, mas removemos para evitar o consumo indevido do web services de consulta a status de serviço.

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

Meu codigo esta exatamente assim:

Citar

  caminho := Path + qConsulta.FieldByName('chave_cte').AsString + '-CTe.xml';
  Sefaz.ACBrCTe.Conhecimentos.Clear;
  Sefaz.ACBrCTe.Conhecimentos.LoadFromFile(caminho, False);
  Sefaz.ACBrCTe.WebServices.Consulta.Executar;

Esta variavel Path, armazena o caminho padrão das pastas.
E mesmo utilizando o LoadFromString, tambem gera o mesmo erro.

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

The popup will be closed in 10 segundos...