Ir para conteúdo
  • Cadastre-se

Erro ao encerrar um MDFe: Falha no schema XML


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

Recommended Posts

Postado

Prezado Amarildo: abaixo a minha rotina de encerramento e anexo o XML que estou tentando encerrar.

procedure TfrmMDFe.btnEncerraClick(Sender: TObject);
begin
  inherited;
  ConfiguraACBRMDFe;
  OpenDialog1.Title := 'Selecione o MDFe';
  OpenDialog1.DefaultExt := '*-MDFe.xml';
  OpenDialog1.Filter := 'Arquivos MDFe (*-MDFe.xml)|*-MDFe.xml|Arquivos XML (*.xml)|*.xml|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := DM.vpatharqmdf;
  try
  if OpenDialog1.Execute then
  begin
    ACBrMDFe.Manifestos.Clear;
    ACBrMDFe.Manifestos.LoadFromFile(OpenDialog1.FileName);
    ACBrMDFe.EventoMDFe.Evento.Clear;
    with ACBrMDFe.EventoMDFe.Evento.Add do
    begin
      with ACBrMDFe.Manifestos.Items[0].MDFe do
      begin
        vcodmdf:= ide.cMDF;
      end;
      // pesquisa tabela de mdf
      if DM.cdsMDF.Active = True then
        DM.cdsMDF.Close;
      DM.cdsMDF.Params[0].AsInteger:= vcodmdf;
      DM.cdsMDF.Open;
      infevento.chMDFe:= DM.cdsMDFCHAVE.AsString;
      infEvento.CNPJCPF:= DM.vcnpj;
      infEvento.dhEvento:= now;
      infEvento.tpEvento:= teEncerramento;
      infEvento.nSeqEvento:= 1;
      infEvento.detEvento.xJust:= 'Transporte finalizado';
      infEvento.detEvento.nProt:= DM.cdsMDFPROTOCOLOENVIO.AsString;
      infEvento.detEvento.dtEnc := Date;
      infEvento.detEvento.cUF:= strtoint(copy(inttostr(DM.cdsMDFCOD_MUNIENCERRA.AsInteger),1,2));
      infEvento.detEvento.cMun:= DM.cdsMDFCOD_MUNIENCERRA.AsInteger;
    end;
    ACBrMDFe.EnviarEvento(1);
    // atualiza tabela de MDFe
    DM.cdsMDF.Edit;
    DM.cdsMDFSITUACAO.AsString:= 'Encerrado';
    DM.cdsMDFUFFINAL.AsString:= vufencerra;
    DM.cdsMDFDATAENCERRA.AsDateTime:= now;
    DM.cdsMDFCOD_SITUACAO.AsInteger:= 132;
    DM.cdsMDF.Post;
    DM.cdsMDF.ApplyUpdates(0);
    Application.MessageBox('MDFe encerrado com sucesso.','MDFe', MB_OK);
  end
  else
  except
    on E:Exception do
    begin
      raise Exception.Create('TfrmMDFe.ActionEncerrarExecute -> ' + E.Message);
    end;
  end;

end;

Obs.: como estou ainda em ambiente de teste (homologação), nem tudo está redondinho. Neste caso específico, verifiquei agora que na tabela do MDFe não gravei o protocolo de envio e, no entanto, em infEvento.detEvento.nProt:= DM.cdsMDFPROTOCOLOENVIO.AsString passo para o evento um campo que está vazio. Será que não seria este o problema?

 

mdfe nº 185 veículo placa PDK-2320-mdfe.xml

  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora ACBr Pro

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 2764 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...