Ir para conteúdo
  • Cadastre-se

dev botao

dev botao

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

Recommended Posts

Postado

Bom dia,

 

gostaria de sugerir a alteração no arquivo em anexo.

senti necessidade pois já utilizamos a função semelhante, na vertente da NFe (GetPathNFe), para determinar a localização do arquivo gerado, conforme podem ver pelo exemplo abaixo.

No caso da função alterada optei não mexer na ordem dos parâmetros, de modo a ficar igual a GetPathNFe, pois não tinha como determinar a extensão do uso da mesma fora do componente.  ACBrNFeConfiguracoes.pas

 

//NFe

function loadXML(chave_nfe:string; ID_SITUACAO_NFE: integer; dtEmissao: tdatetime = 0; dtRecebimento: tdatetime = 0): boolean;
var
OpenDialog1: topendialog;
sFilePathXML: string;
bFileNotFoundXML, bCancelXML: boolean;
DataXML : tdatetime;
begin
  result := false;
  OpenDialog1 := topendialog.Create(nil);
  OpenDialog1.Title := 'Selecione a NFe';
  OpenDialog1.DefaultExt := '*-nfe.XML';
  OpenDialog1.Filter := 'Arquivos NFe (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := dm_conexao.NFe.Configuracoes.Geral.PathSalvar;
  try
    bFileNotFoundXML := true;
    if (ID_SITUACAO_NFE > 1) and (length(chave_nfe) > 0) then
    begin
      if dm_conexao.NFE.Configuracoes.Arquivos.EmissaoPathNFe then
        DataXML := dtEmissao
      else
        if not (dtRecebimento = 0) then
          DataXML := dtRecebimento;
 
      sFilePathXML :=PathWithDelim(dm_conexao.NFE.Configuracoes.Arquivos.GetPathNFe( DataXML)) +
        OnlyNumber(chave_nfe) + '-nfe.xml';
 
      bFileNotFoundXML := not fileexists(sFilePathXML);
      if (bFileNotFoundXML) and (dm_conexao.NFe.Configuracoes.Arquivos.PastaMensal) then
      begin
        dm_conexao.NFe.Configuracoes.Arquivos.PastaMensal := false;
 
        sFilePathXML :=PathWithDelim(dm_conexao.NFE.Configuracoes.Arquivos.GetPathNFe( DataXML)) +
        OnlyNumber(chave_nfe) + '-nfe.xml';
        bFileNotFoundXML := not fileexists(sFilePathXML);
 
        dm_conexao.NFe.Configuracoes.Arquivos.PastaMensal := true;
      end;
 
      if not bFileNotFoundXML then
        try
          dm_conexao.NFe.NotasFiscais.Clear;
          dm_conexao.NFe.NotasFiscais.LoadFromFile(sFilePathXML, true);
        except
          bFileNotFoundXML := true;
        end;
 
      bCancelXML := false;
      while (bFileNotFoundXML) and (not bCancelXML) do
      begin
        bCancelXML := not OpenDialog1.Execute;
        if (not bCancelXML) then
        if isnullempty(OpenDialog1.FileName) then
          ShowMessage('Desculpe, mas tem de selecionar um arquivo para processar.')
        else
          try
            dm_conexao.NFe.NotasFiscais.Clear;
            dm_conexao.NFe.NotasFiscais.LoadFromFile(OpenDialog1.FileName, true);
            if OnlyNumber(dm_conexao.NFe.NotasFiscais.Items[inf].NFe.infNFe.id) = chave_nfe then
              bFileNotFoundXML := false
            else
              ShowMessage('Arquivo não corresponde a chave do registo'+#13+'Por favor certifique se é o arquivo correto!');
          except
            ShowMessage('Arquivo inválido'+#13+'Por favor certifique se o arquivo tem o formato correto!');
          end;
      end;
    end;
 
    if not bFileNotFoundXML then
    begin
      inc(inf);
      result := true;
    end;
  finally
    OpenDialog1.Free;
  end;
end;
 

//EVENTO NFe

function loadEventoXML(chave_nfe:string; tipoEvento: TpcnTpEvento; dtEmissao: tdatetime = 0; iSeq: integer = 1): boolean;
var
  OpenDialog1: topendialog;
  sFilePathXML: string;
  bFileNotFoundXML, bCancelXML: boolean;
  DataXML : tdatetime;
begin
  result := false;
  OpenDialog1 := topendialog.Create(nil);
  OpenDialog1.Title := 'Selecione a NFe';
  OpenDialog1.DefaultExt := '*-nfe.XML';
  OpenDialog1.Filter := 'Arquivos NFe (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := dm_conexao.NFe.Configuracoes.Geral.PathSalvar;
  try
    bFileNotFoundXML := true;
    if (length(chave_nfe) > 0) then
    begin
      sFilePathXML :=  PathWithDelim(dm_conexao.NFE.Configuracoes.Arquivos.GetPathEvento(tipoEvento,dtEmissao,'')) + TpEventoToStr(tipoEvento) +
           OnlyNumber(chave_nfe) +IntToStrZero(iSeq, 2) + '-procEventoNFe.xml';
 
      bFileNotFoundXML := not fileexists(sFilePathXML);
      if (bFileNotFoundXML) and (dm_conexao.NFe.Configuracoes.Arquivos.PastaMensal) then
      begin
        dm_conexao.NFe.Configuracoes.Arquivos.PastaMensal := false;
 
        sFilePathXML :=PathWithDelim(dm_conexao.NFE.Configuracoes.Arquivos.GetPathEvento(tipoEvento, DataXML,''))  + TpEventoToStr(tipoEvento) +
          OnlyNumber(chave_nfe) +IntToStrZero(iSeq, 2) + '-procEventoNFe.xml';
        bFileNotFoundXML := not fileexists(sFilePathXML);
 
        dm_conexao.NFe.Configuracoes.Arquivos.PastaMensal := true;
      end;
 
      if not bFileNotFoundXML then
        try
          dm_conexao.NFe.EventoNFe.Evento.Clear;
            dm_conexao.NFe.EventoNFe.LerXML(sFilePathXML) ;
        except
          bFileNotFoundXML := true; //xml invalido
        end;
 
      bCancelXML := false;
      while (bFileNotFoundXML) and (not bCancelXML) do
      begin
        bCancelXML := not OpenDialog1.Execute;
        if (not bCancelXML) then
        if isnullempty(OpenDialog1.FileName) then
          ShowMessage('Desculpe, mas tem de selecionar um arquivo para processar.')
        else
          try
            dm_conexao.NFe.EventoNFe.Evento.Clear;
            dm_conexao.NFe.EventoNFe.LerXML(OpenDialog1.FileName) ;
            if OnlyNumber(dm_conexao.NFe.EventoNFe.Evento.Items[0].infEvento.chNFe) = chave_nfe then
              bFileNotFoundXML := false
            else
              ShowMessage('Arquivo não corresponde a chave do registo'+#13+'Por favor certifique se é o arquivo correto!');
          except
            ShowMessage('Arquivo inválido'+#13+'Por favor certifique se o arquivo tem o formato correto!');
          end;
      end;
    end;
 
    if not bFileNotFoundXML then
    begin
      inc(inf);
      result := true;
    end;
  finally
    OpenDialog1.Free;
  end;
end;
 
 

 

atentamente

João Paulo

ACBrNFeConfiguracoes.pas

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