Ir para conteúdo
  • Cadastre-se

dev botao

Erro Ao Enviar Evento De Cancelamento Na Versão Atual Da Acbrnfe


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

Recommended Posts

Olá boa tarde, estou tendo um problema no envio do evento de cancelamento da Nfe. Atualizei o componente pelo repositório a versão 2.00 e estou tendo o seguinte erro ao enviar o evento, vou colocar o print do mesmo abaixo

 

          dtm.NFe.EventoNFe.Evento.Clear;
          dtm.NFe.EventoNFe.idLote := NumeroLote;
 
          with dtm.NFe.EventoNFe.Evento.Add do
          begin
            infEvento.chNFe    := ChaveNFe;
            infEvento.CNPJ     := copy(ChaveNFe,7,14);
            infEvento.dhEvento := now;
            infEvento.tpEvento := teCancelamento;
            infEvento.detEvento.xJust := frmCancelaNFe.edtJustificativa.Text;
            infEvento.detEvento.nProt := Protocolo;
          end;

 

 

 

 

agradeço se alguém puder ajudar pois não encontrei em nenhum lugar na internet

post-16033-0-56086900-1417715750_thumb.p

Link para o comentário
Compartilhar em outros sites

Olá, bom dia!

Recompilei todos os componentes relacionados com a NFe e NFCe e estão todos funcionando exceto para envio de eventos.
Sim, os fontes do componente foram atualizados usando o SVN e a estrutura das pastas está preservada.
O instalador sempre dava erro, então resolvi atualizar pelo SVN e recompilar. 
 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom então garanto como está sua compilação!

sugiro que tenha primeiro os fontes do ACBr em um único local, com a cor verde nos icones, caso não esteja efetue um revert no svn e exclua os arquivos que não fazem parte

depois execute o .bat que tem no svn raiz para limpar seu micro!

então utilize o instalador do ACBr

e se ocorrer problemas anexe o log para ajudar!

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

  • Moderadores

        dtm.NFe.EventoNFe.Evento.Clear;

          dtm.NFe.EventoNFe.idLote := NumeroLote;

 

          with dtm.NFe.EventoNFe.Evento.Add do

          begin

            infEvento.chNFe    := ChaveNFe;

            infEvento.CNPJ     := copy(ChaveNFe,7,14);

            infEvento.dhEvento := now;

            infEvento.tpEvento := teCancelamento;

            infEvento.detEvento.xJust := frmCancelaNFe.edtJustificativa.Text;

            infEvento.detEvento.nProt := Protocolo;

          end;

Anexe o restante da sua rotina.
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Olá!

O problema está acontecendo com qualquer evento André.

Segue a rotina como solicitado
 

Function CancelarNFeChave(ChaveNFe,Protocolo:String):Boolean;
var NumeroLote,CodigoStatus: Integer;
    NumeroProtocolo,XMLCancelamento,MotivoStatus,sStatus :String;
    DataHoraEvento : TDateTime;
begin
  try
    frmCancelaNFe := TfrmCancelaNFe.create(application);
    frmCancelaNFe.edtChaveAcesso.Text := ChaveNFe;
    frmCancelaNFe.edtProtocolo.Text   := Protocolo;
    frmCancelaNFe.ShowModal;
 
    if frmCancelaNFe.ModalResult = mrOk then
    begin
 
      Trans('ABRIR','');
      try
        if frmAlertaNFe = nil then frmAlertaNFe := TfrmAlertaNFe.Create(Application);
        try
          Application.ProcessMessages;
          Aguarde(True,'Cancelando Nota Fiscal...');
          Application.ProcessMessages;
          NumeroLote := dtm.GetGenerator('GEN_ID_LOTE');
          dtm.cdsNotaFiscalARQUIVO_NOTA.SaveToFile(dtm.cdsConfiguracaoPATH_NFE_SAIDA.AsString+'\'+dtm.cdsNotaFiscalCHAVE_ACESSO.AsString+'-procNfe.xml');
          dtm.NFe.NotasFiscais.Clear;
          if not dtm.NFe.NotasFiscais.LoadFromFile(dtm.cdsConfiguracaoPATH_NFE_SAIDA.AsString+'\'+dtm.cdsNotaFiscalCHAVE_ACESSO.AsString+'-procNfe.xml') then
            raise Exception.Create('Não foi possível carregar o XML da Nota Fiscal Eletrônica correspondente!');
 
          if dtm.cdsNotaFiscalMODELO_NOTA.AsInteger = 55 then
          begin
            dtm.NFe.Configuracoes.Geral.ModeloDF    := moNFe;
            dtm.NFe.Configuracoes.Geral.VersaoDF    := ve200;
            dtm.NFe.Configuracoes.Geral.PathSchemas := ExtractFilePath(Application.ExeName)+'\Schemas\ve200';
          end
          else if dtm.cdsNotaFiscalMODELO_NOTA.AsInteger = 65 then
          begin
            dtm.NFe.Configuracoes.Geral.ModeloDF    := moNFCe;
            dtm.NFe.Configuracoes.Geral.VersaoDF    := ve310;
            dtm.NFe.Configuracoes.Geral.PathSchemas := ExtractFilePath(Application.ExeName)+'\Schemas\ve310';
          end;
 
          dtm.NFe.EventoNFe.Evento.Clear;
          dtm.NFe.EventoNFe.idLote := NumeroLote;
 
          with dtm.NFe.EventoNFe.Evento.Add do
          begin
            infEvento.chNFe    := ChaveNFe;
            infEvento.CNPJ     := copy(ChaveNFe,7,14);
            infEvento.dhEvento := now;
            infEvento.tpEvento := teCancelamento;
            infEvento.detEvento.xJust := frmCancelaNFe.edtJustificativa.Text;
            infEvento.detEvento.nProt := Protocolo;
          end;
 
          if dtm.NFe.EnviarEventoNFe(NumeroLote) then
          begin
            with dtm.NFe.WebServices.EnvEvento do
            begin
              if EventoRetorno.retEvento.Items[0].RetInfEvento.cStat <> 135 then
              begin
                frmAlertaNFe.edtDados.Lines.Add('Ocorreu o seguinte erro ao cancelar a nota fiscal eletrônica:');
                frmAlertaNFe.edtDados.Lines.Add('Código: '+IntToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));
                frmAlertaNFe.edtDados.Lines.Add('Erro..: '+EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
              end
              else
              begin
                DataHoraEvento  := EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
                NumeroProtocolo := EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
                XMLCancelamento := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
                CodigoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.cStat;
                MotivoStatus    := EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo;
 
                frmAlertaNFe.edtDados.Lines.Add('Data e hora do evento: '+DateToStr(DataHoraEvento));
                frmAlertaNFe.edtDados.Lines.Add('Número do protocolo..: '+NumeroProtocolo);
                frmAlertaNFe.edtDados.Lines.Add('Código do Status.....: '+IntToStr(CodigoStatus));
                frmAlertaNFe.edtDados.Lines.Add('Motovo do Status.....: '+MotivoStatus);
 
 
                // ARMAZENANDO O XML DE CANCELAMENTO
                dtm.cdsNotaFiscal.Edit;
                dtm.cdsNotaFiscalXML_CANCELAMENTO.AsString    := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
                dtm.cdsNotaFiscal.Post;
                If dtm.cdsNotaFiscal.ApplyUpdates(0) <> 0 then
                begin
                  dtm.cdsNotaFiscal.CancelUpdates;
                end;
 
                // CONSULTANDO O STATUS DA NOTA
                dtm.NFe.WebServices.Consulta.NFeChave := dtm.cdsNotaFiscalCHAVE_ACESSO.AsString;
                dtm.NFe.WebServices.Consulta.Executar;
                frmAlertaNFe.edtDados.Lines.Add('REALIZANDO CONSULTA...');
                frmAlertaNFe.edtDados.Lines.Add(UTF8Encode(dtm.NFe.WebServices.Consulta.RetWS));
                frmAlertaNFe.edtDados.Lines.Add(UTF8Encode(dtm.NFe.WebServices.Consulta.RetornoWS));
 
                case dtm.NFe.WebServices.Consulta.cStat of
                  100: sStatus := 'AUTORIZADA';
                  101: sStatus := 'CANCELADA';
                  105: sStatus := 'AGUARDANDO';
                  110: sStatus := 'DENEGADA';
                end;
                if dtm.NFe.WebServices.Consulta.cStat > 200 then
                 sStatus := 'REJEITADA';
 
                dtm.cdsNotaFiscal.Edit;
                dtm.cdsNotaFiscalULTIMO_STATUS_SEFAZ.AsString := GetRetorno(dtm.NFe.WebServices.Consulta.cStat);
                dtm.cdsNotaFiscalXML_ULTIMO_RETORNO.AsString  := UTF8Encode(dtm.NFe.WebServices.Consulta.RetornoWS);
                dtm.cdsNotaFiscalSTATUS.AsString              := sStatus;
                if sStatus = 'AUTORIZADA' then
                begin
                  dtm.cdsNotaFiscalCHAVE_ACESSO.AsString := dtm.NFe.WebServices.Consulta.NFeChave;
                  dtm.cdsNotaFiscalPROTOCOLO.AsString    := dtm.NFe.WebServices.Consulta.Protocolo;
                end;
                dtm.cdsNotaFiscal.Post;
 
                Movimento_estoque_Lote;
 
                if dtm.cdsNotaFiscal.ApplyUpdates(0) <> 0 then
                begin
                  dtm.cdsNotaFiscal.CancelUpdates;
                  Trans('FECHAR','R');
                end
                else
                  Trans('FECHAR','C');
              end;
            end;
          end
          else
          begin
            with dtm.NFe.WebServices.EnvEvento do
            begin
              frmAlertaNFe.edtDados.Lines.Add('Ocorreram erros ao tentar efetuar o cancelamento:');
              frmAlertaNFe.edtDados.Lines.Add('');
              frmAlertaNFe.edtDados.Lines.Add('Lote....: '     + IntToStr(EventoRetorno.idLote));
              frmAlertaNFe.edtDados.Lines.Add('Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb));
              frmAlertaNFe.edtDados.Lines.Add('Orgao...: '    + IntToStr(EventoRetorno.cOrgao));
              frmAlertaNFe.edtDados.Lines.Add('Status..: '   + IntToStr(EventoRetorno.cStat));
              frmAlertaNFe.edtDados.Lines.Add('Motivo..: '   + EventoRetorno.xMotivo);
            end;
          end;
          frmAlertaNFe.ShowModal;
        finally
          Aguarde(false,'');
          FreeAndNil(frmAlertaNFe);
        end;
      except
        on E: Exception do
        begin
          Trans('FECHAR','R');
          Aguarde(false,'');
          dtm.cdsNotaFiscal.Edit;
          dtm.cdsNotaFiscalALERTA_VALIDACAO.AsString := E.Message;
          dtm.cdsNotaFiscal.Post;
          if dtm.cdsNotaFiscal.ApplyUpdates(0) <> 0 then
            dtm.cdsNotaFiscal.CancelUpdates;
          if frmAlertaNFe <> nil then
          Begin
            frmAlertaNFe.edtResposta.Lines.Text := E.Message;
            frmAlertaNFe.ShowModal;
          end
          else
            Application.MessageBox(pchar('Erro ao cancelar NFCe - '+E.Message),'Atenção!',MB_ICONINFORMATION+MB_TASKMODAL);
        end;
      end;
    end;
  finally
    FreeAndNil(frmCancelaNFe);
  end;
end;

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Infelizmente não consigo reproduzir o problema, não tenho certificado do RJ, mas ao tentar enviar um evento de cancelamento pelo menos recebo o retorno do WebService, e pela imagem postada por você o servidor não entende o que vc está enviando.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Aproveitando o tópico, também estou com problemas no cancelamento. Mas o problema não é na transmissão, mas sim ao tentar ler o arquivo xml do evento antes na versão 2.00 funcionava certinho, agora na 3.10 não.

 

Antes na 2.00 eu fazia assim

ACBrNFe1.EventoNFe.LerXML( Path_Can+'\'+ChaveNFe+'1101111-procEventoNFe.xml');  Funcionava 100%

 

Agora na 3.10 mudou o número do evento para início da chave.

1101111-procEventoNFe

 

ACBrNFe1.EventoNFe.LerXML( Path_Can+'\1101111'+ChaveNFe+'-procEventoNFe.xml'); 

 

Não consegue ler o arquivo. A função de leitura continua a mesma, ou tem outra específica ?

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Estou tendo o mesmo ERRO utilizando o ACBR 0.8.12.0 openssl , estou gerando dessa forma e ele me retorna o erro.

 

NFe.CancelarNFe(25141270120167000171550010000719961701201677,ERRO NA PREPARACAO DA NOTA FISCAL)

ERRO:

Cod.Erro HTTP: 400 Bad Request

 

notei que  no ACBR não tem mais a opção se o cancelamento deveria ser por EVENTO ou NORMAL , presumo que todos agora estão usando EVENTO por ser obrigatorio e foi eliminado correto ?.
 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

no caso não é o ACBr mas sim o sefaz mesmo!

outra coisa é que foi mantido para compatibilidade por um tempo o mesmo procedimento!

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

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