Ir para conteúdo
  • Cadastre-se

dev botao

Cce Informações Do Destinatário


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

Recommended Posts

Olá amigos, bom dia!

Não encontrei no exemplo e no fórum uma opção para  adicionar as informações do destinatário na CC-e. 

Preciso descobrir como preencher as informações (Razão, Endereço, Bairro, Cep, Cidade, Cidade, Estado, Fone, IE)

Segue abaixo o código que estou usando para enviar a CC-e. 

Alguém conhece uma forma de enviar diferente da usada no exemplo?


try
    Application.ProcessMessages;
    Aguarde(True,'Enviando Carta de correção...');
    Application.ProcessMessages;
    if frmAlertaNFe = nil then frmAlertaNFe := TfrmAlertaNFe.Create(Application);
    NumeroLote := dtm.GetGenerator('GEN_ID_CARTA_CORRECAO');
    dtm.NFe.EventoNFe.Evento.Clear;
    dtm.NFe.EventoNFe.idLote := NumeroLote;
    with dtm.NFe.EventoNFe.Evento.Add do
    begin      
      infEvento.chNFe               := dtm.cdsNotaFiscalCHAVE_ACESSO.AsString;
      infEvento.CNPJ                := copy(dtm.cdsNotaFiscalCHAVE_ACESSO.AsString,7,14);
      infEvento.dhEvento            := Now;
      infEvento.tpEvento            := teCCe;
      infEvento.DescEvento          := 'Carta de Correção'
      infEvento.nSeqEvento          := GetNumSeqCartaC(dtm.cdsNotaFiscalID_NOTA_FISCAL.AsInteger);
      infEvento.detEvento.xCorrecao := AnsiToAscii(edtCorrecaoAnterior.Text)+ AnsiToAscii(edtCorrecao.Text);
    end;
 
    if dtm.NFe.EnviarEventoNFe(NumeroLote) then
    begin
      with dtm.NFe.WebServices.EnvEvento do
      begin
        if not(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat in [135, 136]) then
        begin
          MemoResp.Lines.Add('Ocorreu o seguinte erro ao enviar a carta de correção:');
          MemoResp.Lines.Add('Código: '+IntToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));
          MemoResp.Lines.Add('Motivo: '+EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
        end
        else
        begin
          dtm.cdsCartaCorrecao.Append;
          dtm.cdsCartaCorrecaoID_CARTA_CORRECAO.AsInteger := NumeroLote;
          dtm.cdsCartaCorrecaoID_NOTA_FISCAL.AsInteger    := dtm.cdsNotaFiscalID_NOTA_FISCAL.AsInteger;
          dtm.cdsCartaCorrecaoNUMERO_SEQUENCIAL.AsInteger := EventoRetorno.retEvento.Items[0].RetInfEvento.nSeqEvento;
          dtm.cdsCartaCorrecaoPROTOCOLO.AsString          := EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
          dtm.cdsCartaCorrecaoDATA_HORA.AsDateTime        := EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
          dtm.cdsCartaCorrecaoTEXTO_CORRECAO.AsString     := AnsiToAscii(edtCorrecao.Text);
          dtm.cdsCartaCorrecaoXML.AsString                := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
          dtm.cdsCartaCorrecao.Post;
          if dtm.cdsNotaFiscal.ApplyUpdates(0) <> 0 then
            dtm.cdsNotaFiscal.CancelUpdates;
        end;
        memoTmp.Text := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
        memoRespWS.Lines.Text := UTF8Encode(dtm.NFe.WebServices.EnvEvento.RetornoWS);
        LoadXML(memoTmp, WBResposta);
        MemoResp.Lines.Add('');
        MemoResp.Lines.Add('Data do Evento.....: '+DateTimeToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento));
        MemoResp.Lines.Add('Número do Protocolo: '+EventoRetorno.retEvento.Items[0].RetInfEvento.nProt);
        MemoResp.Lines.Add('Código do Status...: '+IntToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));
        MemoResp.Lines.Add('Motivo do Status...: '+EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
      end;
    end
    else
    begin
      with dtm.NFe.WebServices.EnvEvento do
      begin
        MemoResp.Lines.Add('Ocorreram erros ao tentar efetuar o cancelamento:');
        MemoResp.Lines.Add('');
        MemoResp.Lines.Add('Lote....: '     + IntToStr(EventoRetorno.idLote));
        MemoResp.Lines.Add('Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb));
        MemoResp.Lines.Add('Orgao...: '    + IntToStr(EventoRetorno.cOrgao));
        MemoResp.Lines.Add('Status..: '   + IntToStr(EventoRetorno.cStat));
        MemoResp.Lines.Add('Motivo..: '   + EventoRetorno.xMotivo);
      end;
    end;
    Aguarde(false,'');
    FreeAndNil(frmAlertaNFe);
    lblQtdCarta.Caption := 'Carta de Correção Emitidas: '+IntToStr(dtm.cdsCartaCorrecao.RecordCount);
    Correcao := edtCorrecao.Text;
  except
    on E: Exception do
    begin
      Aguarde(false,'');
      dtm.cdsNotaFiscal.CancelUpdates;
      if frmAlertaNFe = nil then frmAlertaNFe := TfrmAlertaNFe.Create(Application);
      frmAlertaNFe.edtResposta.Lines.Text := E.Message;
      frmAlertaNFe.ShowModal;
    end;
  end;

 

Editado por desenvolvedor2
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Você não preenche estas informações na CC-e, você linka a nota eletrônica e o evento já pega isso.

Quanto ao componente você deve carregar o XML da nota que vai ser corrigida antes e ai preencher somente os dados da CC-e.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Olá Regys, bom dia!


Agradeço o seu retorno.
Modifiquei o código mas continuei com o mesmo problema.
Poderia verificar se estou fazendo algo de forma errada? 

Segue abaixo o código o xml da carta de correção e um print do DANFE.

 

try
    Application.ProcessMessages;
    Aguarde(True,'Enviando Carta de correção...');
    Application.ProcessMessages;
    if frmAlertaNFe = nil then frmAlertaNFe := TfrmAlertaNFe.Create(Application);
    NumeroLote := dtm.GetGenerator('GEN_ID_CARTA_CORRECAO');
    if not dtm.NFe.NotasFiscais.LoadFromFile(dtm.cdsConfiguracaoPATH_NFE_SAIDA.AsString+'\'+dtm.cdsNotaFiscalCHAVE_ACESSO.AsString+'-procNfe.xml') then
      raise Exception.Create('Não foi possível carregar o XML da Nota Fiscal Eletrônica correspondente!');
    dtm.NFe.EventoNFe.Evento.Clear;
    dtm.NFe.EventoNFe.idLote := NumeroLote;
    with dtm.NFe.EventoNFe.Evento.Add do
    begin
      // DESCOBRIR COMO PREENCHER AS INFORMAÇÕES (RAZÃO, ENDERECO, BAIRRO, CEP, CIDADE, ESTADO, FONE, IE)
      infEvento.chNFe               := dtm.cdsNotaFiscalCHAVE_ACESSO.AsString;
      infEvento.CNPJ                := copy(dtm.cdsNotaFiscalCHAVE_ACESSO.AsString,7,14);
      infEvento.dhEvento            := Now;
      infEvento.tpEvento            := teCCe;
      infEvento.nSeqEvento          := GetNumSeqCartaC(dtm.cdsNotaFiscalID_NOTA_FISCAL.AsInteger);
      infEvento.detEvento.xCorrecao := AnsiToAscii(edtCorrecaoAnterior.Text)+ AnsiToAscii(edtCorrecao.Text);
    end;

    if dtm.NFe.EnviarEventoNFe(NumeroLote) then
    begin
      with dtm.NFe.WebServices.EnvEvento do
      begin
        if not(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat in [135, 136]) then
        begin
          MemoResp.Lines.Add('Ocorreu o seguinte erro ao enviar a carta de correção:');
          MemoResp.Lines.Add('Código: '+IntToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));
          MemoResp.Lines.Add('Motivo: '+EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
        end
        else
        begin
          dtm.cdsCartaCorrecao.Append;
          dtm.cdsCartaCorrecaoID_CARTA_CORRECAO.AsInteger := NumeroLote;
          dtm.cdsCartaCorrecaoID_NOTA_FISCAL.AsInteger    := dtm.cdsNotaFiscalID_NOTA_FISCAL.AsInteger;
          dtm.cdsCartaCorrecaoNUMERO_SEQUENCIAL.AsInteger := EventoRetorno.retEvento.Items[0].RetInfEvento.nSeqEvento;
          dtm.cdsCartaCorrecaoPROTOCOLO.AsString          := EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
          dtm.cdsCartaCorrecaoDATA_HORA.AsDateTime        := EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
          dtm.cdsCartaCorrecaoTEXTO_CORRECAO.AsString     := AnsiToAscii(edtCorrecao.Text);
          dtm.cdsCartaCorrecaoXML.AsString                := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
          dtm.cdsCartaCorrecao.Post;
          if dtm.cdsNotaFiscal.ApplyUpdates(0) <> 0 then
            dtm.cdsNotaFiscal.CancelUpdates;
        end;
        memoTmp.Text := EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
        memoRespWS.Lines.Text := UTF8Encode(dtm.NFe.WebServices.EnvEvento.RetornoWS);
        LoadXML(memoTmp, WBResposta);
        MemoResp.Lines.Add('');
        MemoResp.Lines.Add('Data do Evento.....: '+DateTimeToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento));
        MemoResp.Lines.Add('Número do Protocolo: '+EventoRetorno.retEvento.Items[0].RetInfEvento.nProt);
        MemoResp.Lines.Add('Código do Status...: '+IntToStr(EventoRetorno.retEvento.Items[0].RetInfEvento.cStat));
        MemoResp.Lines.Add('Motivo do Status...: '+EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo);
      end;
    end
    else
    begin
      with dtm.NFe.WebServices.EnvEvento do
      begin
        MemoResp.Lines.Add('Ocorreram erros ao tentar efetuar o cancelamento:');
        MemoResp.Lines.Add('');
        MemoResp.Lines.Add('Lote....: '     + IntToStr(EventoRetorno.idLote));
        MemoResp.Lines.Add('Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb));
        MemoResp.Lines.Add('Orgao...: '    + IntToStr(EventoRetorno.cOrgao));
        MemoResp.Lines.Add('Status..: '   + IntToStr(EventoRetorno.cStat));
        MemoResp.Lines.Add('Motivo..: '   + EventoRetorno.xMotivo);
      end;
    end;
    Aguarde(false,'');
    FreeAndNil(frmAlertaNFe);
    lblQtdCarta.Caption := 'Carta de Correção Emitidas: '+IntToStr(dtm.cdsCartaCorrecao.RecordCount);
    Correcao := edtCorrecao.Text;
  except
    on E: Exception do
    begin
      Aguarde(false,'');
      dtm.cdsNotaFiscal.CancelUpdates;
      if frmAlertaNFe = nil then frmAlertaNFe := TfrmAlertaNFe.Create(Application);
      frmAlertaNFe.edtResposta.Lines.Text := E.Message;
      frmAlertaNFe.ShowModal;
    end;
  end;


 

331410282213490001725500100000002310000002351101101-procEventoNFe.xml

post-16033-0-50158000-1413980012_thumb.p

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

 

Para imprimir a CC-e completa é necessário:

 

1. Carregar o XML da NF-e

2. Carregar o XML do evento de CC-e

3. Imprimir o Evento.

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Olá Regys!

Eu reparei que o xml de carta de correção não tem essas informações, mesmo arquivos gerados por outros emissores, acredito então que essas informações só poderão ser visualizadas quando eu crio o PDF ou mesmo imprimo o Danfe estando ele vinculado a NFe.

Seria essa a questão?

 

 

Sim o XML não tem os dados da NF-e, somente os dados da correção mesmo, porque como eu disse antes, ela é vinculada a nf-e.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...