Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao encerrar um MDFe: Falha no schema XML


Ver Solução Respondido por Josafar Nascimento da Silv,
  • Este tópico foi criado há 2185 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

  • Administradores
Postado

Obrigado por reportar.

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

Consultora SAC ACBr

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á 2185 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.