Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado (editado)

Caros,

 

Usando a última versão do trunk, quando chama ACBrNFe.NotasFiscais.SaveToTXT, o componente gera um arquivo com cabeçalho duplicado, como o exemplo abaixo:

NOTA FISCAL|5
NOTA FISCAL|1
A|versao|NFe...
...
NOTA FISCAL|1
A|versao|NFe...
...

Segue uma sugestão de correção:

function TNotasFiscais.SaveToTXT(PathArquivo: String): Boolean;
var
  loSTR: TStringList;
  ArqXML, Alertas, ArqTXT : String;
  I: Integer;
begin
  Result:=False;
  loSTR := TStringList.Create;
  try
    loSTR.Clear;
    for I := 0 to Self.Count - 1 do
    begin
      ArqTXT := Self.Items[I].GerarXML(ArqXML, Alertas, True);
      loSTR.Text := loSTR.Text +
                      copy(ArqTXT,14,length(ArqTXT));
    end;
    
    if loSTR.Count > 0 then
    begin
      loSTR.Insert(0,'NOTA FISCAL|'+IntToStr(Self.Count));
      for I := loSTR.Count - 1 downTo 0 do begin
        if loSTR.Strings[I] = '' then
          loSTR.Delete(I);
      end;

      if DFeUtil.EstaVazio(PathArquivo) then
        PathArquivo := PathWithDelim(TACBrNFe( FACBrNFe ).Configuracoes.Geral.PathSalvar)+'NFe.TXT';
      loSTR.SaveToFile(PathArquivo);
      Result:=True;
    end;
  finally
    loSTR.free;
  end;
end;

Essa correção faz os seguintes itens:

  • Remove o cabeçalho NOTA FISCAL|1 que aparecem individualmente por nota, e que vem do TNFeW

  • Adiciona os arquivos TXT por meio de loSTR.Text := loSTR.Text + ... ao invés de Add. Dessa maneira, cada linha do TXT estará em uma linha do arquivo de saída, o que é necessário para que possamos limpar as linhas em branco mais abaixo;

  • Alterei o trecho que remove as linhas em branco para um for invertido (downTo), que acho que fica mais claro que o while que estava antes, e que cumpre a mesma função.


 

O pas alterado segue anexo por conveniencia.

 

Abraços,

Gabriel.

ACBrNFeNotasFiscais.pas

Editado por Gabriel Frones
  • Moderadores
Postado

Boa noite

antes de subir o código gostaria de saber se já verificou por acaso senão está carregando duas vezes ao componente a NF-e

ou se está limpando ele antes de carregar?

 

 

Estive analisando os log do svn e não tem nada que faria o que está repassando acima ou que mudanças que afetaria isso!

 

fazia tempo que não atualiza o seu svn?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Juliomar,

 

Na verdade, no exemplo que eu coloquei, eu carreguei 5 NFe's diferentes. Só que essa linha só deveria aparecer uma vez no arquivo todo (ela identifica justamente quantas NFe's seguem abaixo):

NOTA FISCAL|5

Eu dei uma vasculhada pra tentar descobrir quando o problema começou. Acho que a última vez que a função SaveToTXT funcionou perfeitamente, foi na revisão 7482, de 22/09/2014. Nesse commit, o arquivo era preenchido assim:

      loSTR.Text := loSTR.Text +
                      copy(ArqTXT,14,length(ArqTXT));

Então, esse copy já eliminava o "NOTA FISCAL|1" que tem em cada nota, e talvez seja uma solução melhor que o StringReplace que eu coloquei. Depois desse, o próximo commit que teve nessas linhas aí já quebraram a geração do TXT aqui nos meus testes.

 

Abraços,

Gabriel.

  • Moderadores
Postado

Boa noite!

ainda assim veja que é usado por diversos usuários e como faz um tempo somente vi você postar pois procurei e ninguém mais relatou o problema que você informa!

 

faz tempo que você não atualiza seu svn?

se for isso então sugiro começar a manter semanal pelo menos o update!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado (editado)

Pra ter duas NFe's no arquivo exportado... na verdade, eu fiquei com "preguiça" de preencher todos os campos de novo com dados diferentes, mas esse seria o ideal para o teste. rs

 

PS: Alterei o arquivo do post inicial para usar um copy no lugar do StringReplace, igual estava na revisão 7482.

Editado por Gabriel Frones
  • Este tópico foi criado há 3503 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.