Ir para conteúdo
  • Cadastre-se

dev botao

Problema Para Encerrar O Mdfe


Ver Solução Respondido por Iaster Costa Aki,
  • Este tópico foi criado há 3662 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Estou tentando fazer o encerramento, mas esta retornando um erro. Estou em ambiente de HOMOLOGAÇÃO.  Deve ser uma coisa boba, já revisei minha rotinha e não consegui encontrar o problema. O erro que retorna é :-

 

chMDFe is unspected according to content model of parent element.

 

 

minha rotina de cancelamento :-

 

  frmStatusReceita := TfrmStatusReceita.Create(Self);
  mdf.carregaMFDe(iMDFe);
  mdf.IdUsuario            := iIdUsuario;
  mdf.Encerra              := Now;
  Result                   := False;

  ACBrMDFe1.Manifestos.Clear;
  frmStatusReceita.JvMemo1.Lines.Add('================Iniciando===========================');
  frmStatusReceita.JvMemo1.Lines.Add('Carregando configurações....');
  configuraMDFe(mdf.IdEmpresa); {carrega informações da empresa (configuracao, geral, webservice) no ACBRMDFe1}
  frmStatusReceita.Show;
  frmStatusReceita.BringToFront;

//  carregaMDFe(iMDFe);
  cArqMDFe                 := mdf.MDFePath;
  JvOpenDialog1.Title      := 'Selecione o MDFe';
  JvOpenDialog1.DefaultExt := '*-MDFe.xml';
  JvOpenDialog1.Filter     := 'Arquivos MDFe (*-MDFe.xml)|*-MDFe.xml|Arquivos XML (*.xml)|*.xml|Todos os Arquivos (*.*)|*.*';
  JvOpenDialog1.InitialDir :=  ExtractFileDir(mdf.MDFePath);

  if not FilesExists(cArqMDFe) then
  begin
    if JvOpenDialog1.Execute then
      cArqMDFe := JvOpenDialog1.FileName;
  end;

  if FilesExists(cArqMDFe) then
  begin
    frmStatusReceita.JvPanel1.Caption := '  Ecerramento do MDFe';
    frmStatusReceita.Label1.Caption   := 'Processando...  ';
    Application.ProcessMessages;
    frmStatusReceita.JvMemo1.Lines.Add('Carregando MDFe [' + IntToStr(mdf.Numero) + ']');
    ACBrMDFe1.Manifestos.LoadFromFile(cArqMDFe);

    with ACBrMDFe1.EventoMDFe.Evento.Add do
    begin
     infEvento.chMDFe          := Copy(ACBrMDFe1.Manifestos.Items[0].MDFe.infMDFe.ID, 5, 44);
     infEvento.CNPJ            := IntToStr(mdf.EmiCNPJ);
     infEvento.dhEvento        := mdf.Encerra;
     infEvento.tpEvento        := teEncerramento;
     infEvento.nSeqEvento      := 1;
     infEvento.detEvento.nProt := ACBrMDFe1.Manifestos.Items[0].MDFe.procMDFe.nProt;
     infEvento.detEvento.dtEnc := mdf.Encerra;
     infEvento.detEvento.cUF   := StrToInt(Copy(IntToStr(ACBrMDFe1.Manifestos.Items[0].MDFe.infDoc.infMunDescarga.Items[0].cMunDescarga),1,2));
     infEvento.detEvento.cMun  := ACBrMDFe1.Manifestos.Items[0].MDFe.infDoc.infMunDescarga.Items[0].cMunDescarga;
    end;

    frmStatusReceita.JvMemo1.Lines.Add('Lendo o certificado e consultando a receita, AGUARDE...');

    try
      Result    := False;
      ACBrMDFe1.Configuracoes.WebServices.Ambiente := StrToTpAmb(Result, IntToStr(mdf.TpAmbiente));

      ACBrMDFe1.EnviarEventoMDFe( iMDFe ); // Numero do Lote

      frmStatusReceita.JvMemo1.Lines.Add('');
      frmStatusReceita.ativaBotao(True);
      registraRetorno(iSegundo, True, 1);
      Result := True;
    except
      frmStatusReceita.Label1.Caption := 'ERRO !!!  ';
      frmStatusReceita.ativaBotao(True);
      registraRetorno(iSegundo, False, 1);
    end;
 

 

 

segue em anexo a mensagem de erro e o xml em questão.

 

35141101223016000126580000000000021000000255-mdfe.xml

post-7615-0-42083600-1416397894_thumb.pn

  • Membros Pro
  • Solution
Postado

Italo, acabei de descobrir o problema.

 

minha variavel mdf.EmiCNPJ é do tipo int64. Quando faço a atribuição  infEvento.CNPJ  := IntToStr(mdf.EmiCNPJ);  retorna o CNPJ, mas o CNPJ em questão tem um zero a esquerda! e nesta conversão o zero some! Estou mudando o código do meu sistema para receber o CNPJ do arquivo XML. Assim não terei mais problemas com isto.

 

obrigado.

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