Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado

Olá Amigos boa tarde!

 

Estou com o seguinte problema:

Tenho uma NFSe cancelada com o arquivo XML da NFSe salvo no banco de dados, ao salvar o arquivo XML para arquivo utilizando o comando ACBrNFSe1.NotasFiscais.Items[0].SaveToFile() o componente está salvando o arquivo XML sem as informações de cancelamento, porém, se o arquivo for salvo utilizando o comando ACBrNFSe1.NotasFiscais.Items[0].SaveToStream() o componente gera o arquivo XML com as Tags de cancelamento.

 

Outro detalhe é que se você utilizar um visualizador de XML (como o próprio IE) no arquivo salvo com SAVETOSTREAM() ( o que tem as tags de cancelamento ), o arquivo é dado como inválido. 

 

Percebi que há diferenças entre o código SaveToFile e SaveToStream, essas diferenças são propositais?

Não seria mais interessante ter um mesmo código e apenas alterar o salvamento de Stream para File quando for o caso, para que não haja diferenças em mudanças futuras? (algo como no código exemplo abaixo)

function NotaFiscal.SaveToFile(CaminhoArquivo: string): boolean;
var
  sl : TStrings;
  ss : TStringStream;
begin
  try
    sl := TStringList.Create;
    try
      ss := TStringStream.Create('');
      try
        SaveToStream( ss );
        ss.Position := 0;
        sl.LoadFromStream( ss );
      finally
        ss.Free;
      end;

      if DFeUtil.EstaVazio(CaminhoArquivo) then
      begin
        if TACBrNFSe( TNotasFiscais( Collection ).ACBrNFSe ).Configuracoes.Arquivos.EmissaoPathNFSe then
          CaminhoArquivo := TACBrNFSe( TNotasFiscais( Collection ).ACBrNFSe ).Configuracoes.Arquivos.GetPathRPS(Self.NFSe.DataEmissao)
        else
          CaminhoArquivo := TACBrNFSe( TNotasFiscais( Collection ).ACBrNFSe ).Configuracoes.Arquivos.GetPathRPS(0);

        CaminhoArquivo := NotaUtil.PathWithDelim(CaminhoArquivo) + Self.NFSe.InfID.ID + '-Rps.xml';
      end;

      if DFeUtil.EstaVazio(CaminhoArquivo) or not DirectoryExists(ExtractFilePath(CaminhoArquivo)) then
        raise Exception.Create('Caminho Inválido: ' + CaminhoArquivo);

      sl.SaveToFile( CaminhoArquivo );
    finally
      sl.Free;
    end;
    NomeArq := CaminhoArquivo;
    Result   := True;
  except
    Result := False;
    raise;
  end;
end;

Muito obrigado pela atenção de todos.

 

 

19-NFSe com SAVETOFILE.xml

19-NFSe com SAVETOSTREAM.xml

Gilson do Carmo
WindSoft Sistemas

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