Ir para conteúdo
  • Cadastre-se

Erro AcbrNFe apos mudança para Sincrono


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

Recommended Posts

Postado

Srs. boa tarde!

Gostaria da ajuda de vocês para resolver um problema com NFe. A situação é a seguinte:

Até 31/08/2025 funciona tudo ok!
O Sistema enviava a nota da seguinte forma:    
   ACBrNFeSaida.Enviar(StrToInt(vNumLote));

Devido a obrigatoriedade da forma de envio sincrona para 1 unica nota a partir de 01/09/2025, configurei para enviar da seguinte forma:
      ACBrNFeSaida.Enviar(StrToInt(vNumLote), false, True);

Ai começou a msg de erro, conforme imagem em anexo.
A nota vai para receita normalmente, mas alguma coisa mudou quando o componente recepciona o xml homologado, pois erro erro ocorre até quando faço uma consulta pela chave da nfe.

    ACBrNFeSaida.WebServices.Consulta.NFeChave := ChaveCte;
    ACBrNFeSaida.WebServices.Consulta.Executar;


Quando eu consulto pelo XML homologado que baixei da receita, o erro não ocorre.

   ACBrNFeSaida.NotasFiscais.LoadFromFile(sCaminhoXml);
   ACBrNFeSaida.Consultar;


Desde ja agradeço

image.jpeg

  • Moderadores
Postado
21 minutos atrás, TRodrigues_ disse:


Devido a obrigatoriedade da forma de envio sincrona para 1 unica nota a partir de 01/09/2025, configurei para enviar da seguinte forma:
      ACBrNFeSaida.Enviar(StrToInt(vNumLote), false, True);

Ai começou a msg de erro, conforme imagem em anexo.

Precisa ver exatamente onde o erro ocorre, não creio que seja no método de envio.

O tratamento da resposta para modo síncrono, você ajustou?

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

Projeto ACBr

 

 

Postado (editado)

@BigWings o erro ocorre justamente nos metodos enviar e consultar. Como comentei o enviar, envia normalmente para receita, a receita homologa, mas quando o componente deveria tratar a resposta enviada pela receita, o erro ocorre. Não completa o metodo enviar e consultar.

As configurações para salvar os arquivos estão assim:

  ACBrNFeSaida.Configuracoes.Arquivos.PathSchemas := ExtractFilePath(application.ExeName) + 'SCHEMAS\';
  ACBrNFeSaida.Configuracoes.Arquivos.PathNFe     := ExtractFilePath(application.ExeName) + 'ARQNFE\' + copy(FormatDateTime('ddmmyyyy',now),3,6) + '\NFEs';
  ACBrNFeSaida.Configuracoes.Arquivos.PathEvento  := ExtractFilePath(application.ExeName) + 'ARQNFE\' + copy(FormatDateTime('ddmmyyyy',now),3,6) + '\CANCs';
  ACBrNFeSaida.Configuracoes.Arquivos.PathInu     := ExtractFilePath(application.ExeName) + 'ARQNFE\' + copy(FormatDateTime('ddmmyyyy',now),3,6) + '\INUTs';

Se o problema fosse o componente não conseguir baixar o xml de resposta, acredito que o erro seria diferente.

Encontrei este topico:

 

Editado por TRodrigues_
  • Moderadores
Postado
6 minutos atrás, TRodrigues_ disse:

@BigWings o erro ocorre justamente nos metodos enviar e consultar. Como comentei o enviar, envia normalmente para receita, a receita homologa, mas quando o componente deveria tratar a resposta enviada pela receita, o erro ocorre. Não completa o metodo enviar e consultar.

Cola o teu código completo de envio e tratamento da resposta.

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

Projeto ACBr

 

 

Postado (editado)

@BigWings não chega no tratamento da resposta, pq o erro ocorre no enviar. Se no metodo enviar da erro, não tem resposta para tratar.
 

  ACBrNFeSaida.Enviar(StrToInt(vNumLote), false, True);
  

//Se estivesse tudo ok, na linha abaixa trataria a resposta do protocolo.

  If ACBrNFeSaida.WebServices.Retorno.cStat = 100 then
  Begin
    Gauge1.Progress := Gauge1.Progress + 40;
    MmAlerta.Text := 'NOTA ENVIADA COM SUCESSO';
    Gauge1.Progress := 100;
    vNprot := ACBrNFeSaida.WebServices.Retorno.Protocolo;
    vChAcesso := ACBrNFeSaida.WebServices.Retorno.ChaveNFe;
    vDigval := ACBrNFeSaida.WebServices.Retorno.NFeRetorno.ProtDFe.Items[0].digVal;
    vDthr := ACBrNFeSaida.WebServices.Retorno.NFeRetorno.ProtDFe.Items[0].dhRecbto;
    vsta := ACBrNFeSaida.WebServices.Retorno.NFeRetorno.ProtDFe.Items[0].cStat;

    //alimenta os campos da nota com informacoes do protocolo
    With IBQTmp do
    Begin
      Close;
      Sql.Clear;
      Sql.Add('UPDATE NOTASSAIDA SET DIGVALUE_NFE = :DIGV, CHAVEACESSO_NFE = :CHAVE, PROTOCOLO_NFE = :PROT, DTPROT_NFE = :DT, HRPROT_NFE = :HR, STAT_NFE = :STA');
      Sql.Add('WHERE LANCTONOTAS = ' + IntToStr(IBQNotaSaidaLANCTONOTAS.Value));
      ParamByName('DIGV').AsString := vDigval;
      ParamByName('CHAVE').AsString := vChAcesso;
      ParamByName('PROT').AsString := vNprot;
      ParamByName('DT').AsDate := vDthr;
      ParamByName('HR').AsTime := vDthr;
      ParamByName('STA').AsInteger := vsta;
      ExecSQL;
      Transaction.CommitRetaining;
    end;

  end
  else begin
    MmAlerta.Text := ACBrNFeSaida.WebServices.Retorno.xMotivo;
    vNprot := ACBrNFeSaida.WebServices.Retorno.Protocolo;
    vChAcesso := ACBrNFeSaida.WebServices.Retorno.ChaveNFe;
    vsta := ACBrNFeSaida.WebServices.Retorno.NFeRetorno.ProtDFe.Items[0].cStat;

    With IBQTmp do
    Begin
      Close;
      Sql.Clear;
      Sql.Add('UPDATE NOTASSAIDA SET CHAVEACESSO_NFE = :CHAVE, STAT_NFE = :STA');
      Sql.Add('WHERE LANCTONOTAS = ' + IntToStr(IBQNotaSaidaLANCTONOTAS.Value));
      ParamByName('CHAVE').AsString := vChAcesso;
      ParamByName('STA').AsInteger := vsta;
      ExecSQL;
      Transaction.CommitRetaining;
    end;

    Messagebox(application.Handle,'A nota não recebeu retono do SEFAZ, favor verificar!','NFe SEM RETORNO',MB_OK+MB_ICONWARNING+MB_SYSTEMMODAL);

  end;

  ACBrNFeSaida.NotasFiscais.Clear;

  IBQNotaSaida.Close;
  IBQNotaSaida.Open;
 

 

Editado por TRodrigues_
  • Consultores
Postado

em algum momento tu nao dá um ACBrNFe.NotasFicais.Clear?
pesquisa no seu fonte e coloca ponto de parada e testa

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Moderadores
Postado
32 minutos atrás, TRodrigues_ disse:

    vsta := ACBrNFeSaida.WebServices.Retorno.NFeRetorno.ProtDFe.Items[0].cStat;

Essa linha é suspeita de causar o erro.

No modo síncrono não existe o WebServices.Retorno, WebServices.Retorno.cStat sempre vai ser 0, você deve acessar WebServices.Enviar para ver a resposta.

32 minutos atrás, TRodrigues_ disse:

@BigWings não chega no tratamento da resposta, pq o erro ocorre no enviar. Se no metodo enviar da erro, não tem resposta para tratar.

Se é realmente no ACBrNFe.Enviar, depure dentro do código do ACBr pra saber que que linha o erro ocorre.

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

Projeto ACBr

 

 

Postado

@Juliomar Marchettientão foi na depuração passo a passo que identifiquei o erro no metodo .enviar.
Se notar no codigo que postei acima, não existe ACBrNFe.NotasFicais.Clear entre o .enviar e a tentativa de ler o retorno da receita (
If ACBrNFeSaida.WebServices.Retorno.cStat = 100 then), sem contar que antes de mudar o parametro do enviar para Sincrono estava tudo ok, o clear não iria surgir do nada so por mudar o paramentro, rsrs. Lembrando que utilizo delphi 7. Vou atualizar o acbr e tentar novamente, pelo menos encontrei um topico que o pessoal estava como o mesmo problema e conseguiram solucionar.  


 


Por enquanto muito obrigado! Darei continuidade amanhã.

 

  • Consultores
Postado

 

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Postado

estou com o mesmo problema aqui 

 

mudei a recepção dos dados para o Enviar .. até que deu certo ... porém alguns dados não chegam

 

eu preciso do numero de recibo que não vem no Enviar, tinha apenas no Retorno .. esse recibo é recibo do envio ou reciibo do lote?

e não achei onde pegar o Digest para guardar também.

 

Aqui eu trato assim os dados

 

                     AuxChaveNFe := ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID;
                     AuxChaveNFe := Copy(AuxChaveNFe, 4, 44);

                     dmCad.qryNotSai.Edit;
                     dmCad.qryNotSaiDANFE_IMP.Value := 1;  // Marca o Danfe como Impresso
                     dmCad.qryNotSaiPROTOCOLONFE.Value :=  ACBrNFe1.WebServices.Enviar.Protocolo; // Retorno.Protocolo;    // NFeRetorno.ProtDFe.Items[0].nProt; // ProtNFe.Items[0].nProt; // Salva o protocolo de envio
                     dmCad.qryNotSaiCHAVENFE.Value :=      AuxChaveNFe; //ACBrNFe1.WebServices.Enviar. Retorno.ChaveNFe;     // NFeRetorno.ProtDFe[0].chDFe;       // Salva a chave da NFe
                     dmCad.qryNotSaiDIGESTNFE.Value :=     ''; //ACBrNFe1.WebServices.Retorno. .NFeRetorno.ProtDFe[0].digVal;      // Salva o Digito validador da NFe
                     dmCad.qryNotSaiMOTIVONFE.Value :=     ACBrNFe1.WebServices.Enviar.xMotivo; //Retorno.xMotivo;      // NFeRetorno.ProtDFe[0].xMotivo;     // Salva o Motivo da NFe
                     dmCad.qryNotSaiDATA_AUTORIZA.Value := obterDhRecbto(ACBrNFe1.WebServices.Enviar.RetWS);               // Salva a data e hora da autorização de uso
                     dmCad.qryNotSaiRECIBONFE.Value :=     ACBrNFe1.WebServices.Retorno.NFeRetorno.nRec;                   // Salva o numero do recibo da NFe
                     dmCad.qryNotSai.Post;
                     dmCad.qryNotSai.ApplyUpdates;

 

Marcelo Henrique Morini
Analista de Sistemas e Programador
Plásticos Assencio Ltda
[email protected]
Ibitinga - SP
Delphi Tokio 10.2 (ACBr - Jedi - Zeos - Rave - QuickReport - FastReport) > Firebird 2.5 em Windows 10 64b

  • Consultores
Postado
6 horas atrás, marcelo morini disse:

mudei a recepção dos dados para o Enviar .. até que deu certo ... porém alguns dados não chegam

Exatamente pois não é o mesmo lá na NT de 2013 tem todas as informações.

6 horas atrás, marcelo morini disse:

eu preciso do numero de recibo que não vem no Enviar, tinha apenas no Retorno .. esse recibo é recibo do envio ou reciibo do lote?

Número de recebi é porque ao enviar assincrono conforme está na NT tu manda X notas se quiser. dai tu tem para consultar o lote e ver.

já sincronoé só uma e já tem a retorno então não tem consulta de lote

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
5 minutos atrás, Juliomar Marchetti disse:

Exatamente pois não é o mesmo lá na NT de 2013 tem todas as informações.

Número de recebi é porque ao enviar assincrono conforme está na NT tu manda X notas se quiser. dai tu tem para consultar o lote e ver.

já sincronoé só uma e já tem a retorno então não tem consulta de lote

 

Ah entendi ... show de bola 

 

deu certo aqui então ... valeu pela ajuda. 🙏🏼

Marcelo Henrique Morini
Analista de Sistemas e Programador
Plásticos Assencio Ltda
[email protected]
Ibitinga - SP
Delphi Tokio 10.2 (ACBr - Jedi - Zeos - Rave - QuickReport - FastReport) > Firebird 2.5 em Windows 10 64b

  • Solution
Postado

@Juliomar Marchetti @BigWings e todos os demais colegas que ajudaram, muito obrigado!

Consegui resolver na terça no período da tarde!

A causa do problema, realmente era a falta de atualização do meu acbr, eu tinha feito uma atualização anteriormente, mas cometi algum erro. 
Para resolver, exclui as pasta  fontes, lib e pacotes, apos isso, fiz um update (SVN Update), fiz a depuração passo a passo novamente, e deu erro no assinar, então fiz a atualização dos schemas. Rodei novamente e não teve mais erro no .enviar.


Precisei fazer alguns ajustes para conseguir pegar os dados que eu precisava do retorno, abaixo:
 

ACBrNFeSaida.Enviar(StrToInt(vNumLote), false, True);

 vNprot         := ACBrNFeSaida.WebServices.Enviar.Protocolo;
 vMotivo       := ACBrNFeSaida.WebServices.Enviar.xMotivo;
 vChAcesso := ApenasNumerosStr(ACBrNFeSaida.NotasFiscais.Items[0].NFe.infNFe.id);
 vsta             := ACBrNFeSaida.WebServices.enviar.cStat;

  If ACBrNFeSaida.WebServices.enviar.cStat = 100 then
  Begin
    vChAcesso := ACBrNFeSaida.NotasFiscais[0].NFe.procNFe.chNFe;
    vDigval        := ACBrNFeSaida.NotasFiscais[0].NFe.procNFe.digVal;
    vDthr           := ACBrNFeSaida.NotasFiscais[0].NFe.procNFe.dhRecbto;
    vsta             := ACBrNFeSaida.NotasFiscais[0].NFe.procNFe.cStat;
end;

  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 282 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.