Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia !

 

Estou tentando cancelar uma NFe e não consigo, testei ta,bém pelo "DEMO" e ocorre o mesmo erro.

 

 

Por favor me ajude ! pois preciso colocar em produção 

 

 

Segue XML para análise e rotina do cancelamento

 

 

procedure TF_nota.cancelar_nfe;

var
  numerolote : integer;
  NumeroProtocolo , sjustificativa , XMLCancelamento ,  MotivoStatus  : string;
  CodigoStatus  : integer;
  DataHoraEvento : Tdate;
  xxx_chave ,   xxx_cnpj ,   xxx_protocolo : string;
 
begin
  NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
  // carregar o xml da nota fiscal eletronica, pode ser omitido
  dm_acbr.AcbrNFe1.NotasFiscais.Clear;
  dm_acbr.AcbrNFe1.NotasFiscais.LoadFromFile(snome_arq_xml);
  // Criar o cancelamento
  dm_acbr.AcbrNFe1.EventoNFe.Evento.Clear;
  dm_acbr.AcbrNFe1.EventoNFe.idLote := NumeroLote;
  //
  with dm_acbr.AcbrNFe1.EventoNFe.Evento.Add do
  begin
    xxx_chave                 := dm_acbr.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe;
    xxx_cnpj                  := dm_acbr.ACBrNFe1.NotasFiscais.Items[0].NFe.Emit.CNPJCPF;
    xxx_protocolo             := dm_acbr.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.nProt;
    //
    showmessage('Chave: ' + xxx_chave + #13 + 'CNPJ Emitente: ' + xxx_cnpj + #13 + 'Protocolo: ' + xxx_protocolo );
    //
    infEvento.chNFe           := xxx_chave;
    infEvento.CNPJ            := xxx_cnpj;
    infEvento.detEvento.nProt := xxx_protocolo ;
    //
    infEvento.dhEvento        := NOW;
    infEvento.tpEvento        := teCancelamento;
    infEvento.nSeqEvento      := strtoint(ed_sequencia.text);
    //
    infEvento.detEvento.xJust := ed_jus1.text;
  end;
 
// Enviar o evento de cancelamento
if dm_acbr.AcbrNFe1.EnviarEventoNFe(NumeroLote) then // solicita senha do certificado digital
  begin
    with dm_acbr.AcbrNFe1.WebServices.EnvEvento do
    begin
      if EventoRetorno.retEvento.Items[0].RetInfEvento.cStat <> 135 then
      begin
        raise Exception.CreateFmt(
          'Ocorreu o seguinte erro ao cancelar a nota fiscal eletrônica:'  + sLineBreak +
          'Código:%d' + sLineBreak +
          'Motivo: %s', [
            EventoRetorno.retEvento.Items[0].RetInfEvento.cStat,
            EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo
        ]);
        MemoResp.Lines.Text :=  UTF8Encode(dm_acbr.ACBrNFe1.WebServices.EnvEvento.RetWS);
        memoRespWS.Lines.Text :=  UTF8Encode(dm_acbr.ACBrNFe1.WebServices.EnvEvento.RetornoWS);
        LoadXML(MemoResp, WBResposta);
        ShowMessage(IntToStr(dm_acbr.ACBrNFe1.WebServices.EnvEvento.cStat));
        ShowMessage(dm_acbr.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt);
      end;
  // retornos
      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;
    end;
  end
  else
  begin
    with dm_acbr.AcbrNFe1.WebServices.EnvEvento do
    begin
      raise Exception.Create(
        'Ocorreram erros ao tentar efetuar o cancelamento:' + sLineBreak +
        'Lote: '     + IntToStr(EventoRetorno.idLote) + sLineBreak +
        'Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb) + sLineBreak +
        'Orgao: '    + IntToStr(EventoRetorno.cOrgao) + sLineBreak +
        sLineBreak +
        'Status: '   + IntToStr(EventoRetorno.cStat) + sLineBreak +
        'Motivo: '   + EventoRetorno.xMotivo
      );
    end;
  end;
end;
 
 
Obrigado
 
GSN - São Paulo / SP

 

 

NFe35150311199459000182550010000004451000004455.XML

  • Consultores
Postado

Bom dia,

 

Primeiramente, por favor não post como texto fragmento do seu código, inclua-o em um arquivo txt e post como anexo.

 

Segundo o que vem a ser 573?

 

É o código da rejeição?

 

Não encontrei esse código na nota técnica mais recente, qual é a descrição do mesmo?

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

Amigo Ítalo,

 

bom dia !

 

 

Obrigado pela sugestão.

 

Talvez não tenho explicado melhor.

 

 

Foi gerado uma nota fiscal eletrônica , onde foi gerado um XML de autorização de uso, quando tento fazer o cancelamento dessa mesma nota, carregando o XML da nota fiscal autorizada, ocorre erro: 573: Retorno := 'Motivo: 573 -> Rejeição: Duplicidade de Evento';

Pensei que havia algo errado no meu código fonte, tentei fazer o teste pélo "Demo" do ACBR e ocorreu o mesmo erro.

 

Será que estou fazendo algo de errado no meu código, não consegui achar o erro.

 

Será que alguem poderia me dar uma luz, vou enviar o meu código fonte em anexo txt anexo e arquivo XML da nota autorizada.;

 

 

Obrigado

 

GSN - SP

 

cancela_nfe_codigo_fonte.txt

NFe35150311199459000182550010000004451000004455.XML

Postado
Cancelamento pelo emitente (Cód.: 110111) 135150185721771 25/03/2015 às 14:46:08-03:00 25/03/2015 às 14:46:10

 

Ela já foi cancelada por isso está dando a duplicidade, agora veja se não foi vc quem cancelou a nota acima estão as informações do evento de cancelamento retirado do portal da NFe.

Postado

Olá , consultei a nota no portal nacional , a nota consta como cancelada desde ontem 25/03/2015 às 14:46:10 (segundo o horario do Ambiente Nacional)

 

Tente carregar o XML e realizar uma consulta da mesma, assim sera retornado o protocolo de cancelamento.

 

feito isso , você pode alterar o status da nota dentro do seu software.

Postado

Thiago ou William matos

 

boa tarde amigos

 

como faço pra consulta o status da nota através do XML pra trazer o status de cancela, pois com essas informações posso gravar no meu banco de dados , seria isso né?

 

 

Pelo exemplo não consegui, poderia me dar uma luz

 

 

Obrigado 

Postado (editado)

Página 13 do manual do componente ACBrNFe(disponível na seção downloads aqui do fórum), tem a explicação da função consultar();

 

Sugiro que de uma olhada nisso, pois isso vai te dar o norte para o que vc quer fazer.

Editado por Tiago Ravache
  • Curtir 1
Postado
ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromStream(XMLStream); //Carrega o XML da Nota
ACBrNFe1.Consultar;

Já o retorno você obtem atraves das propiedades contidas em: "ACBrNFe1.WebServices.Consulta."

 

por exemplo:

ACBrNFe1.WebServices.Consulta.cStat;     // Codigo de Status
ACBrNFe1.WebServices.Consulta.Protocolo; // retorna o ultimo protocolo válido ( no caso da nota cancelada o protocolo de cancelamento ) (corrijam-me se estiver errado)
ACBrNFe1.WebServices.Consulta.RetornoWS; // retorna o stream do XML( no caso da nota cancelada, o xml de cancelamento

//E etc...
 

Não sei se a explicação foi clara , porém

 

A melhor opção e fazer oque o Tiago disse, ler o manual e depois analisar o demo,se você olhar com atenção , o demo vai te ajudar a entender o funcionamento na pratica.

  • Curtir 1
  • Obrigado 1
Postado

Thiago e William Mattos

 

bom dia !

 

 

Agradeço muito pela sua resposta , deu certinho

 

Precisando de mim, estarei à disposição no for necessário.

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