Ir para conteúdo
  • Cadastre-se

dev botao

Obter Texto De Correção No Retorno Da Cce


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

Recommended Posts

Bom dia pessoal!

Estou com uma dificuldade em obter o retorno do texto de correção da CCe, para poder gravar no banco de dados.

Isso está acontecendo depois que migramos para a versão 3.10.

Segue o código:

 

 

  
Dtm.ACBrNFe1.EventoNFe.Evento.Clear;

  with Dtm.ACBrNFe1.EventoNFe.Evento.Add do
  begin
    vChave := Trim(OnlyNumber(DTM.ibd_NotasFiscais.FieldByName('OUT_NFE_CHAVE').AsString));
    infEvento.chNFe := vChave;
    CodOrgao := StrToInt(Copy(vChave, 1, 2));
    infEvento.cOrgao := CodOrgao;
    infEvento.CNPJ := Dtm.ibd_Empresa.FieldByName('OUT_EMI_CNPJCPF').AsString;
    infEvento.dhEvento := Now;
    infEvento.tpEvento := teCCe;
    infEvento.nSeqEvento := StrToInt(EdtSeqEvento.Text);
    infEvento.detEvento.xCorrecao := EdtCorrecao.Text;
  end;
  Dtm.ACBrNFe1.EnviarEventoNFe(Lote);

if (Dtm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Count > 0) then
  begin
    if (Dtm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat = 135) then
    begin
      Dtm.ibd_cartacorrecao.Append;
      Dtm.ibd_cartacorrecao.FieldByName('CCE_CHAVE').AsString :=
      Trim(OnlyNumber(DTM.ibd_NotasFiscais.FieldByName('OUT_NFE_CHAVE').AsString));

      Dtm.ibd_cartacorrecao.FieldByName('CCE_SEQ_EVENTO').AsString :=
      EdtSeqEvento.Text;

      Dtm.ibd_cartacorrecao.FieldByName('CCE_COD_EVENTO').AsString := '110110';

      Dtm.ibd_cartacorrecao.FieldByName('CCE_MOTIVO').AsString :=      
      Dtm.ACBrNFe1.WebServices.EnvEvento.DadosMsg;

      Dtm.ibd_cartacorrecao.FieldByName('CCE_VERSAO').AsString :=
      Dtm.ACBrNFe1.WebServices.EnvEvento.versao;

      Dtm.ibd_cartacorrecao.FieldByName('DATA').AsDateTime := Date;

      Dtm.ibd_cartacorrecao.FieldByName('CCE_DESCR_EVENTO').AsString :=
      'Carta de Correção';

      Dtm.ibd_cartacorrecao.Post;
      Dtm.ibd_cartacorrecao.Transaction.CommitRetaining;

      Application.MessageBox(
      PChar(Dtm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo), 'Monitor NFe',
      MB_ICONINFORMATION + MB_OK);
    end
    else
    begin
      Application.MessageBox(
      PChar(Dtm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo), 'Monitor NFe',
      MB_ICONEXCLAMATION + MB_OK);
    end;
  end;

Na parte onde quero obter o texto informado na Carta, que seria nesta linha:

Dtm.ibd_cartacorrecao.FieldByName('CCE_MOTIVO').AsString := Dtm.ACBrNFe1.WebServices.EnvEvento.DadosMsg;

está recebendo como se fosse uma parte do xml...

 

Já tentei várias formas, como por ex:

Dtm.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.InfEvento.detEvento.xCorrecao;

mas retorna vazio...

alguém pode ajudar?

 

 

 

Link para o comentário
Compartilhar em outros sites

Fiz isso, e agora estou com outro problema...

na parte de impressão:

 

Dtm.ACBrNFe1.EventoNFe.Evento.Clear;


    if not (FileExists(vPath)) then
    begin
      Showmessage('Não encontrado: ' + vPath);
      Exit;
    end;


    if Dtm.ACBrNFe1.EventoNFe.LerXML(vPath) then
    begin
      // Danfe estático
      if (Dtm.ACBrNFe1.DANFE = Dtm.ACBrNFeDANFERave1) then
      begin
        Dtm.ACBrNFe1.DANFE := Dtm.ACBrNFeDANFERaveCB1;
        Dtm.ACBrNFeDANFERaveCB1.MostrarSetup := True;
        Dtm.ACBrNFeDANFERaveCB1.MostrarPreview := True;
        Dtm.ACBrNFeDANFERaveCB1.MostrarStatus := True;
        Dtm.ACBrNFe1.DANFE.Logo := '';
      end;
      Dtm.ACBrNFe1.ImprimirEvento;
    end
    else
      Showmessage('Não encontrado: ' + vPath);

simplesmente aparece 'Access violation'

 

agradeço a atenção

Link para o comentário
Compartilhar em outros sites

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