Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado (editado)

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
Postado

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

Postado

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?
 

  • Moderadores
Postado

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