Ir para conteúdo
  • Cadastre-se

dev botao

Consulta de Eventos MDFe


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

Recommended Posts

Boa tarde estou com dificuldade em obter os dados vinculados no evento de inclusão nf, nao sei o que estou fazendo de erado,

nesse trecho sempre esta vazio > procEventoMDFe.Items[I].RetEventoMDFe.infEvento.DetEvento.infDoc.Count

 

 

  FACBrMDFe.WebServices.Consulta.MDFeChave := FMDfeModel.ChvMdfe;
  FACBrMDFe.WebServices.Consulta.Executar;

 with FACBrMDFe.WebServices.Consulta do
  begin
    for I := 0 to pred(procEventoMDfe.Count) do
    begin
      if (procEventoMDFe.Items[I].RetEventoMDFe.InfEvento.tpEvento = teInclusaoDFe) and
        (procEventoMDFe.Items[I].RetEventoMDFe.InfEvento.nSeqEvento >= ASequencia) then
      begin
       try
          LModel := TMdfeEventosModel.Create();
          LMdfeNfeModel := TMdfeNfeModel.Create();

          LModel.CarregarProtocolo(procEventoMDFe.Items[I].RetEventoMDFe.retEvento.Items[0].RetInfEvento.nProt);
          LModel.MdfeId := FMDfeModel.Id;
          LModel.CodigoOperacao := IntToStr(ALote);
          LModel.MdfeDescricaoOperacao := 'Inclusão de DF-e';
          LModel.Status := procEventoMDFe.Items[I].RetEventoMDFe.retEvento.Items[0].RetInfEvento.cStat;
          LModel.HistoricoOperacao := procEventoMDFe.Items[I].RetEventoMDFe.retEvento.Items[0].RetInfEvento.xMotivo;
          LModel.Protocolo := procEventoMDFe.Items[I].RetEventoMDFe.retEvento.Items[0].RetInfEvento.nProt;
          LModel.DataHoraOperacao := procEventoMDFe.Items[I].RetEventoMDFe.retEvento.Items[0].RetInfEvento.dhRegEvento;
          LModel.Sequencia := procEventoMDFe.Items[I].RetEventoMDFe.retEvento.Items[0].RetInfEvento.nSeqEvento;
          LModel.Persiste();

          for J := 0 to pred(procEventoMDFe.Items[I].RetEventoMDFe.infEvento.DetEvento.infDoc.Count) do
          begin
            LMdfeNfeModel.CarregarEvento(LModel.Id);
            LMdfeNfeModel.NumMdfe := FMDfeModel.NumMdfe;
            LMdfeNfeModel.SerieMdfe := FMDfeModel.SerieMdfe;
            LMdfeNfeModel.Codcidade := FMDfeModel.CodMunCarrega;
            LMdfeNfeModel.Cidade := TCidadesDAO.GetDado('Cidade', FMDfeModel.CodMunCarrega);
            LMdfeNfeModel.CodigoCidadeCarrega := FMDfeModel.CodMunCarrega;
            LMdfeNfeModel.CodigoCidadeDescarrega := procEventoMDFe.Items[I].RetEventoMDFe.infEvento.DetEvento.infDoc.Items[J].cMunDescarga;
            LMdfeNfeModel.CidadeDescarrega := procEventoMDFe.Items[I].RetEventoMDFe.infEvento.DetEvento.infDoc.Items[J].xMunDescarga;
            LMdfeNfeModel.ChvNfe := procEventoMDFe.Items[I].RetEventoMDFe.infEvento.DetEvento.infDoc.Items[J].chNFe;
            LMdfeNfeModel.MdfeEventId := LModel.Id;
            LMdfeNfeModel.Persiste();
          end;
          ASequencia := procEventoMDFe.Items[I].RetEventoMDFe.InfEvento.nSeqEvento;
        finally
          FreeAndNil(LModel);
          FreeAndNil(LMdfeNfeModel);
        end;
      end;
    end;

Link para o comentário
Compartilhar em outros sites

Ha Resolvi o problema desa forma 

FACBrMDFe.WebServices.Consulta.MDFeChave := FMDfeModel.ChvMdfe;
  FACBrMDFe.WebServices.Consulta.Executar;
  ACBrUtil.WriteToTXT(SysTempDir + 'temp.xml', ACBrUtil.ConverteXMLtoUTF8(FACBrMDFe.WebServices.Consulta.RetornoWS), False, False);

  LXMLDocument.LoadFromFile(SysTempDir + 'temp.xml');
  Self.PercorrerXML(LXMLDocument.DocumentElement);

 

procedure TForm1.PercorrerXML(const AXMLDocument: IXMLNode);
var
  LIndexPrincipal, LIndexProcEventoMDFe, LIndexEventoMDFe: Integer;
  LNodeProcEvento, LNodeEventoMDFe, LNode: IXMLNode;
  LNodeNameProcEventoMDFe, LNodeName: String;
begin
  if AXMLDocument <> nil then
  begin
    if AXMLDocument.HasChildNodes then
      for LIndexPrincipal := 0 to Pred(AXMLDocument.ChildNodes.Count) do
      begin
        LNodeNameProcEventoMDFe := AXMLDocument.ChildNodes[LIndexPrincipal].NodeName;
        if 'procEventoMDFe' = LNodeNameProcEventoMDFe then
        begin
          LNodeProcEvento := AXMLDocument.ChildNodes[LIndexPrincipal];
          LNode := GetNodeXML(LNodeProcEvento, 'retEventoMDFe');
          Self.PersistDadosRetornoEvento(LNode);
          LNode := GetNodeXML(LNodeProcEvento, 'eventoMDFe');
          LNode := GetNodeXML(LNode, 'infEvento');
          Self.PersistDetEvento(LNode);
        end;
        Self.PercorrerXML(AXMLDocument.ChildNodes[LIndexPrincipal]);
      end;
  end;
end;

Editado por Carlos.Batista
Link para o comentário
Compartilhar em outros sites

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