Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

estou fazendo assim:

 

  NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
  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 := nfe.Configuracoes.Geral.PathSalvar;
  if OpenDialog1.Execute then
     begin
     nfe.NotasFiscais.Clear;
     NFe.EventoNFe.idLote := NumeroLote;
     with NFe.EventoNFe.Evento.Add do
     begin
     infEvento.dhEvento := now;
     infEvento.tpEvento := teCancelamento;
//     infEvento.cOrgao   := RetornarCodigoUF(Emitente.Empresa.UF); //coloca o codigo do estado q deseja tranmitir
     infEvento.cOrgao   := 91;
     infEvento.detEvento.nProt := NFe.NotasFiscais.Items[0].NFe.procNFe.nProt;
     infEvento.detEvento.xJust := vAux;
     end;
     NFe.EnviarEventoNFe(NumeroLote);
     nfe.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
     if not(InputQuery('WebServices Cancelamento', 'Justificativa', vAux)) then
        exit;
     nfe.Cancelamento(vAux);
     MemoResp.Lines.Text   := UTF8Encode(nfe.WebServices.Cancelamento.RetWS);
     memoRespWS.Lines.Text := UTF8Encode(nfe.WebServices.Cancelamento.RetornoWS);
     LoadXML(MemoResp, WBResposta);
     ShowMessage(IntToStr(nfe.WebServices.Cancelamento.cStat));
     ShowMessage(nfe.WebServices.Cancelamento.Protocolo);
     end;
 
Postado (editado)

Bom dia. Esse código está meio estranho, pois vc está tentando usar a NFe antes de carrega-la do XML selecionado e o mesmo esta acontecendo com a variável VAux. Além disso vc está dando o comando de cancelamento pelo modo antigo e pelo evento também.

Tente fazer assim:

 

 

 

NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));
  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 := nfe.Configuracoes.Geral.PathSalvar;
  if OpenDialog1.Execute then
     begin
     nfe.NotasFiscais.Clear;
     nfe.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
     NFe.EventoNFe.idLote := NumeroLote;
     with NFe.EventoNFe.Evento.Add do
     begin
     infEvento.dhEvento := now;
     infEvento.tpEvento := teCancelamento;
     infEvento.cOrgao   := 91;
     infEvento.detEvento.nProt := NFe.NotasFiscais.Items[0].NFe.procNFe.nProt;
     if not(InputQuery('WebServices Cancelamento', 'Justificativa', vAux)) then
       exit;
     infEvento.detEvento.xJust := vAux;
     end;
     NFe.EnviarEventoNFe(NumeroLote);      
     end;
 
Editado por Astrogildo82
Postado

Usando como base o ACBRMonitor2:

 

 if Application.MessageBox('Confirma?', 'Atenção', mb_applmodal+mb_iconquestion+mb_yesno+mb_defbutton1) = 6 then

  begin

   dm.ACBrNFe1.NotasFiscais.Clear;

   dm.ACBrNFe1.NotasFiscais.LoadFromFile(sCaminhoArquivo);

   sJustifNFe := '';

   // Solicitar justificativa

   while Length(sJustifNFe)<15 do

    begin

     InputQuery('WebServices Cancelamento', 'Justificativa (mínimo 15 caracteres)', sJustifNFe);

     sJustifNFe :=  TrimLeft(TrimRight(sJustifNFe));

     if Length(sJustifNFe)<15 then

      ShowMessage('Você deve digitar uma justificativa com no mínimo 15 caracteres!');

    end;

   //

   dm.ACBrNFe1.WebServices.Consulta.NFeChave := dm.ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.chNFe;

   if not dm.ACBrNFe1.WebServices.Consulta.Executar then

    raise Exception.Create(dm.ACBrNFe1.WebServices.Consulta.Msg);

   //dm.ACBrNFe1.Cancelamento(sJustifNFe);

   //

   vOK := 0;

   NumeroLote := StrToInt(FormatDateTime('yymmddhhmm', NOW));

   dm.ACBrNFe1.EventoNFe.Evento.Clear;

   with dm.ACBrNFe1.EventoNFe.Evento.Add do

    begin

     infEvento.CNPJ            := copy(LimpaNumero(dm.ACBrNFe1.WebServices.Consulta.NFeChave),7,14);

     infEvento.cOrgao          := StrToIntDef(copy(LimpaNumero(dm.ACBrNFe1.WebServices.Consulta.NFeChave),1,2),0);

     infEvento.dhEvento        := now;

     infEvento.tpEvento        := teCancelamento;

     infEvento.chNFe           := dm.ACBrNFe1.WebServices.Consulta.NFeChave;

     infEvento.detEvento.nProt := dm.ACBrNFe1.WebServices.Consulta.Protocolo;

     infEvento.detEvento.xJust := sJustifNFe;

    end;

   try

    dm.ACBrNFe1.EnviarEventoNFe(NumeroLote);

    vOK := 1;

    Resposta := dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo+sLineBreak+

                '[CANCELAMENTO]'+sLineBreak+

                'Versao='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.verAplic+sLineBreak+

                'VerAplic='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.VerAplic+sLineBreak+

                'CStat='+IntToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat)+sLineBreak+

                'XMotivo='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XMotivo+sLineBreak+

                'CUF='+IntToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cOrgao)+sLineBreak+

                'ChNFe='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.chNFe+sLineBreak+

                'DhRecbto='+DateTimeToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento)+sLineBreak+

                'NProt='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt+sLineBreak+

                'xEvento='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xEvento+sLineBreak+

                'nSeqEvento='+IntToStr(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nSeqEvento)+sLineBreak+

                'CNPJDest='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.CNPJDest+sLineBreak+

                'XML='+dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML+sLineBreak;

   except

    raise Exception.Create(dm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.xMotivo);

   end;

 

Fincuinou perfeitamente.

 

Abraços,

 

Vanderlei ([email protected])

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