Ir para conteúdo
  • Cadastre-se

dev botao

Problema Para Encerrar O Mdfe


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

Recommended Posts

  • Membros Pro

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

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Laster,

 

Inclua a linha em negrito.

 

(...)

 ACBrMDFe1.Manifestos.LoadFromFile(cArqMDFe);
 

 ACBrMDFe1.EventoMDFe.Evento.Clear;
 

 with ACBrMDFe1.EventoMDFe.Evento.Add do
 begin

(...)
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
  • Solution

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.

Link para o comentário
Compartilhar em outros sites

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