Ir para conteúdo
  • Cadastre-se

dev botao

Danfe de Cancelamento NFE igual ao da venda?


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

Recommended Posts

Olá pessoal, atualmente estou fazendo testes de NFE, 

Finalizei a parte do cancelamento da nota, gerou o xml de cancelamento e mandei imprimir, mas a impressão ou visualização é idêntica ao da nota emitida, é isso mesmo?

Até o número da nota é igual ao da venda?

Estava pesquisando no fórum e vi que há opção de ativar a opção NFECancelada para sair a escrita de nota cancelada, se eu deixar ativado essa opção, na emissão de uma venda ela sai como cancelada também então eu só estou ativando essa opção na hora que estou cancelado, está correto?

 

Estou trabalhando com a versão ACBrNFe Ver: 2.0.0a do componente e ve310

 

Outra coisa que fiquei na dúvida, quanto a trabalhar com eventos, o exemplo disponibilizado no svn está por eventos? Pois estou me embasando nesse exemplo e não soube identificar essa funcionalidade e se possível, indicar um link onde está explicando a atualização dos comandos por eventos e o motivo do mesmo.

 

Obrigado.

 

Link para o comentário
Compartilhar em outros sites

Não amigo, o retorno do xml é diferente, então veja ai parte do código que uso aqui pra ver se te ajuda...

 

if CDS_CONTROLENFTIPO_NF.Text='NF-e' then
  ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFe
else
  ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFCe;

form1.ACBRNFe1.DANFE:=form1.ACBrNFeDANFeRL1;

Form1.ACBrNFe1.EventoNFe.Evento.Clear;

  with Form1.ACBrNFe1.EventoNFe.Evento.Add do
   begin
     infEvento.chNFe := VChave;
     infEvento.CNPJ   := VCNPJ;
     infEvento.dhEvento := now;
     infEvento.tpEvento := teCancelamento;
     infEvento.detEvento.xJust:= memo_texto_CANC.Text;// campo memo aonde deverá conter no mínimo 15 caracteres e no máximo 255
     infEvento.detEvento.nProt:=VnumProt
     infEvento.nSeqEvento := SeqEvento;

   end;
   ACBrNFe1.EventoNFe.GerarXML;
   ACBrNFe1.EnviarEvento(StrToInt(VNumLote));

  Memo_resultado_canc.Lines.Add('Cód.Retorno.: '+ IntToStr( ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));

  if (ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=135) or (ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=136) then
    Memo_resultado_canc.Lines.Add('Situação....:'+ ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo +' Aprovado!')
  else
    Memo_resultado_canc.Lines.Add('Situação....:'+ ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo +' Com Falha!');

  Memo_resultado_canc.Lines.Add('Chave.......:'+ ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe);
  Memo_resultado_canc.Lines.Add('Data/Hora...:'+FormatDateTime('dd/mm/yyyy hh:mm:ss',      ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento));
  Memo_resultado_canc.Lines.Add('Nº Protocolo: '+ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt);
 
 screen.Cursor:=crDefault;
if (Form1.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=135) or (Form1.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=136) then begin

    Form1.ACBrNFe1.ImprimirEvento;

Link para o comentário
Compartilhar em outros sites

15 horas atrás, Edy disse:

Não amigo, o retorno do xml é diferente, então veja ai parte do código que uso aqui pra ver se te ajuda...

 

if CDS_CONTROLENFTIPO_NF.Text='NF-e' then
  ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFe
else
  ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFCe;

form1.ACBRNFe1.DANFE:=form1.ACBrNFeDANFeRL1;

Form1.ACBrNFe1.EventoNFe.Evento.Clear;

  with Form1.ACBrNFe1.EventoNFe.Evento.Add do
   begin
     infEvento.chNFe := VChave;
     infEvento.CNPJ   := VCNPJ;
     infEvento.dhEvento := now;
     infEvento.tpEvento := teCancelamento;
     infEvento.detEvento.xJust:= memo_texto_CANC.Text;// campo memo aonde deverá conter no mínimo 15 caracteres e no máximo 255
     infEvento.detEvento.nProt:=VnumProt
     infEvento.nSeqEvento := SeqEvento;

   end;
   ACBrNFe1.EventoNFe.GerarXML;
   ACBrNFe1.EnviarEvento(StrToInt(VNumLote));

  Memo_resultado_canc.Lines.Add('Cód.Retorno.: '+ IntToStr( ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));

  if (ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=135) or (ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=136) then
    Memo_resultado_canc.Lines.Add('Situação....:'+ ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo +' Aprovado!')
  else
    Memo_resultado_canc.Lines.Add('Situação....:'+ ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo +' Com Falha!');

  Memo_resultado_canc.Lines.Add('Chave.......:'+ ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe);
  Memo_resultado_canc.Lines.Add('Data/Hora...:'+FormatDateTime('dd/mm/yyyy hh:mm:ss',      ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento));
  Memo_resultado_canc.Lines.Add('Nº Protocolo: '+ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt);
 
 screen.Cursor:=crDefault;
if (Form1.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=135) or (Form1.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat=136) then begin

    Form1.ACBrNFe1.ImprimirEvento;

Edy bom dia, obrigado pelo exemplo, vou estudar por ele agora,

 

Só uma pergunta, de onde você tirou esse exemplo? Pois na minha pasta svn, no exemplo NFE o botão "Cancelar NFE com xml" está assim o código...

 

var
  idLote,vAux : String;
begin
  OpenDialog1.Title := 'Selecione a NFE';
  OpenDialog1.DefaultExt := '*-nfe.XML';
  OpenDialog1.Filter := 'Arquivos NFE (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := ACBrNFe1.Configuracoes.Arquivos.PathSalvar;
  if OpenDialog1.Execute then
  begin
    ACBrNFe1.NotasFiscais.Clear;
    ACBrNFe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);

    idLote := '1';
    if not(InputQuery('WebServices Eventos: Cancelamento', 'Identificador de controle do Lote de envio do Evento', idLote)) then
       exit;
    if not(InputQuery('WebServices Eventos: Cancelamento', 'Justificativa', vAux)) then
       exit;
    ACBrNFe1.EventoNFe.Evento.Clear;
    ACBrNFe1.EventoNFe.idLote := StrToInt(idLote) ;
    with ACBrNFe1.EventoNFe.Evento.Add do
    begin
     infEvento.dhEvento := now;
     infEvento.tpEvento := teCancelamento;
     infEvento.detEvento.xJust := vAux;
    end;
    ACBrNFe1.EnviarEvento(StrToInt(idLote));

    MemoResp.Lines.Text := ACBrNFe1.WebServices.EnvEvento.RetWS;
    memoRespWS.Lines.Text := ACBrNFe1.WebServices.EnvEvento.RetornoWS;
    LoadXML(ACBrNFe1.WebServices.EnvEvento.RetornoWS, WBResposta);
    ShowMessage(IntToStr(ACBrNFe1.WebServices.EnvEvento.cStat));
    ShowMessage(ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt);
  end;

Obrigado.

Link para o comentário
Compartilhar em outros sites

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