Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Olá boa tarde o código de cancelamento abaixo é compatível com a versão 2.0?

procedure TfrmDemo_ACBrCTe.btnCancCTeClick(Sender: TObject);
var
 vAux : String;
begin
 OpenDialog1.Title := 'Selecione o CTe';
 OpenDialog1.DefaultExt := '*-cte.xml';
 OpenDialog1.Filter := 'Arquivos CTe (*-cte.xml)|*-cte.xml|Arquivos XML (*.xml)|*.xml|Todos os Arquivos (*.*)|*.*';
 OpenDialog1.InitialDir := ACBrCTe1.Configuracoes.Geral.PathSalvar;

 if OpenDialog1.Execute then
  begin
   ACBrCTe1.Conhecimentos.Clear;
   ACBrCTe1.Conhecimentos.LoadFromFile(OpenDialog1.FileName);
   if not(InputQuery('WebServices Cancelamento', 'Justificativa', vAux))
    then exit;

   ACBrCTe1.Cancelamento(vAux);
   MemoResp.Lines.Text :=  UTF8Encode(ACBrCTe1.WebServices.Cancelamento.RetWS);
   memoRespWS.Lines.Text :=  UTF8Encode(ACBrCTe1.WebServices.Cancelamento.RetWS);
   LoadXML(MemoResp, WBResposta);
   ShowMessage(IntToStr(ACBrCTe1.WebServices.Cancelamento.cStat));
   ShowMessage(ACBrCTe1.WebServices.Cancelamento.Protocolo);
  end;
end;

Se não for como faço?  

 

Obrigado

Postado

Fiz assim:

procedure TfrmDemo_ACBrCTe.Button1Click(Sender: TObject);
var  vAux, idLote, cte: String;
begin

  if not(InputQuery('WebServices Eventos: Cancelamento', 'Digite o nr. do CTE: ', cte)) then
    exit;

  DmTabelas.CdsVendas.Close;
  DmTabelas.CdsVendas.Params[0].AsInteger:= StrToInt(cte);
  DmTabelas.CdsVendas.Open;

  ACBrCTe1.Conhecimentos.Clear;


  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 (Digite mais de 15 caracteres)', vAux)) then
    exit;

  with ACBrCTe1.EventoCTe.Evento.Add do
  begin
    infevento.chCTe           := DmTabelas.CdsVendasCHAVENFE.AsString;
    infEvento.CNPJ            := edtEmitCNPJ.Text;
    infEvento.dhEvento        := Now;
    infEvento.tpEvento        := teCancelamento;
    infEvento.cOrgao          := 35;
    infEvento.detEvento.xJust := vAux;
    infEvento.detEvento.nProt := DmTabelas.CdsVendasPROTOCOLO.AsString;
  end;

   DmTabelas.CdsVendas.Close;

   ACBrCTe1.EnviarEventoCTe(StrToInt(idLote));

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


end;

Mas está dando o erro conforme imagem em anexo, o que pode ser?

 

Obrigado

 

 

post-9052-0-75305200-1399666898_thumb.jp

Postado

Consegui com o código abaixo:

procedure TfrmDemo_ACBrCTe.Button1Click(Sender: TObject);
var  vAux, idLote, cte: String;
begin

  vAux:= 'CTE Cancelado por desacordo comercial';

  if not(InputQuery('WebServices Eventos: Cancelamento', 'Digite o nr. do CTE: ', cte)) then
    exit;

  DmTabelas.CdsVendas.Close;
  DmTabelas.CdsVendas.Params[0].AsInteger:= StrToInt(cte);
  DmTabelas.CdsVendas.Open;

  idLote := FormatDateTime('yymmddhhmm', now);

  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 (Digite mais de 15 caracteres)', vAux)) then
    exit;



  with ACBrCTe1.EventoCTe.Evento.Add do
  begin

    InfEvento.tpAmb           := taProducao;
    ACBrCTe1.Eventocte.idLote := StrToInt(idLote);
    infevento.chCTe           := DmTabelas.CdsVendasCHAVENFE.AsString;
    infEvento.CNPJ            := edtEmitCNPJ.Text;
    infEvento.dhEvento        := Now;
    infEvento.tpEvento        := teCancelamento;
    InfEvento.nSeqEvento      := 1;
    infEvento.detEvento.xJust := vAux;
    infEvento.detEvento.nProt := DmTabelas.CdsVendasPROTOCOLO.AsString;
    infEvento.cOrgao          := 35;
    InfEvento.detEvento.xCondUso := '';
  end;

   DmTabelas.CdsVendas.Close;

   ACBrCTe1.EnviarEventoCTe(StrToInt(idLote));

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


end;

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