Ir para conteúdo
  • Cadastre-se

dev botao

Problema Na Hora de importar Txt Com Valores da NFE


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

Recommended Posts

veja o enconding do mesmo!utf-8 ansi e como está configurado no monitor

observe que valores de txt divergente de valor xml 

valores de data 

<dhEmi>1899-12-30T00:00:00-03:00</dhEmi>

aqui e a parte do txt. =>2015-08-27T00:00:00-03:00

se for so configurar utf-8 como faço pelo acbr 

eu acredito que seja na forma que a rotina que esta 

pegando os valores ....

se for...porfavor onde eu encontro essa rotina ja procurei pelo acbr inteiro 

e nao consegui encontrar

agradeço pela ajuda desde ja...!

 

23150806121527000150550010000000011000000013-nfe.xml

NFe.TXT

Editado por Alexsandro Lopes

 

 

Link para o comentário
Compartilhar em outros sites

Fiz a importação do seu TXT no Demo do ACBr (em Lazarus)... O XML gerado parece correto...

 

NFe.XML

sim aparentemente esta correto .!! 

estou usando delphi 7 nao sei se tem alguma coisa haver mais se for em qual fonte eu encontro o código de rotina

onde ele pega o txt ler e poe na nota campo a campo... para que eu possa altera-lo   para delphi 7 ....

o txt que te enviei foi gerado ontem na hora do post aqui no forum e o acbr esta atualizado pelo 'svn' mais atual..

  OpenDialog1.FileName  :=  '';
  OpenDialog1.Title := 'Selecione a NFE';
  OpenDialog1.DefaultExt := '*-nfe.XML';
  OpenDialog1.Filter := 'Arquivos NFE (*-nfe.XML)|*-nfe.XML|Arquivos XML (*.XML)|*.XML|Arquivos      TXT (*.TXT)|*.TXT|Todos os Arquivos (*.*)|*.*';
  OpenDialog1.InitialDir := ACBrNFe1.Configuracoes.Geral.PathSalvar;
  if OpenDialog1.Execute then
  begin
    ACBrNFe1.NotasFiscais.Clear;
    //tenta TXT
    ACBrNFe1.NotasFiscais.Add;
    NFeRTXT := TNFeRTXT.Create(ACBrNFe1.NotasFiscais.Items[0].NFe);
    NFeRTXT.CarregarArquivo(UTF8Encode(OpenDialog1.FileName));
    if NFeRTXT.LerTxt then
       NFeRTXT.Free

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

unit pcnNFeRTXT.pas

procedure TNFeRTXT.LerRegistro(const Registro: String);

linha: 261

       (*B09*)NFe.ide.dEmi := LerCampo(tcDatHor, 'dhEmi');

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

    if (nfe.infNFe.Versao < 3.10) then
     begin
       (*B09*)NFe.ide.dEmi := LerCampo(tcDat, 'dEmi');
      (*B10*)NFe.ide.dSaiEnt := LerCampo(tcDat, 'dSaiEnt');
     (*B10a*)NFe.ide.hSaiEnt := LerCampo(tcHor, 'hSaiEnt');

     end
    else
     begin
       (*B09*)NFe.ide.dEmi := LerCampo(tcDatHor, 'dhEmi');
              NFe.Ide.dSaiEnt := LerCampo(tcDatHor, 'dhSaiEnt');
     end;
  end;

aQUI ESTA CORRETO ELE ESTA PEGANDO O VALOR QUE A FUNÇAO ESTA PASSANDO PARA ELE DIREITINHO ...

 

 

function TNFeRTXT.LocalizarPosicaoTAG(TAG: String; Conteudo: String): Integer;
var
  i, contador: Integer;
begin
  TAG := Trim(TAG);
  conteudo := copy(conteudo, 1, pos('|' + TAG + '¨', conteudo));
  contador := 0;
  for i := 1 to length(conteudo) do
    if conteudo = '|' then
      inc(contador);
  result := contador;
end;
Quando TAG esta referente a DATA Ele retorna zero entao nao identifica valores para o campo alguma soluçao ou esta desatualizado  

ja tentei de varias formas e sempre ele me retorna os valores equivocados .....

 

Editado por Alexsandro Lopes

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Verifique se seus fontes estão corretos... Aqui está tudo funcionando adequadamente...

Na dúvida apague a Unit e baixe novamente

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Verifique se seus fontes estão corretos... Aqui está tudo funcionando adequadamente...

Na dúvida apague a Unit e baixe novamente

me manda suas pastas do acbr pq pode ter sido alguma mudança que vc realizou pois ja esta tudo atualizado...e nao consigo fazer da certo  preciso da pasta acbrnfe2,pcn2...pra comparar aqui com as minhas

 

 

  if ID = 'A' then
  begin
     NFe.infNFe.Versao := LerCampo(tcDe2, 'versao');
  end;
  if ID = 'A' then
  begin
     NFe.infNFe.Versao :=3.10; //deixei dessa forma la; LerCampo(tcDe2, 'versao');
  end;

 

Mais um detalhe. Verificando para encontrar o erro identifiquei que quando ele passa por esse codigo acima,

O NFe.infNFE.vesao vem com o valor correto que é o 3.10. No entanto ele muda para a versao 2.0.

Nao consigo achar de onde vem esse valor já que a versao é carregada pelo arquivo .TXT e lá esta 3.10.

Editado por Alexsandro Lopes

 

 

Link para o comentário
Compartilhar em outros sites

Isso não bom... dessa maneira o componente não saberá mais ler XMLs de outras versões (antigos)

sim sei disso mais eu nao sei de onde ele esta trazendo esse valor 2

 que nao e pra trazer de forma alguma que ele traz ....dessa  variável...

por enquanto eu nunca precisei ler um arquivo de notas antigas ...

 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você usa o Trunk2, correto ?

Verifique se seus fontes estão corretamente atualizados... havia um bug na leitura dessa propriedade, que já foi corrigido a algumas semanas (veja no Change-Log.txt)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Você usa o Trunk2, correto ?

Verifique se seus fontes estão corretamente atualizados... havia um bug na leitura dessa propriedade, que já foi corrigido a algumas semanas (veja no Change-Log.txt)

Nao Daniel .!  eu uso o Trunk mesmo

obs: todos os componentes estao 100% atualizados do dia que venho me comunicando com vc ate hoje ja baixei a pasta            acbr umas 3 vezes para garantir que o servido nao estava com erros ....

 

 

Link para o comentário
Compartilhar em outros sites

sei que pode ser tosca a maneira que fiz aqui pra poder corrigir mais esta dando certo e por enquanto e uma solução

procedure TNFeRTXT.LerRegistro(const Registro: String);
var
  i, j, k: Integer;
  ok: Boolean;
  versao:double;
begin
  FRegistro := Registro;
  FID := UpperCase(copy(Registro, 2, pos('|', FRegistro) - 2));
  if FID = '' then
    exit;

  if ID = 'A' then
  begin
    versao:=StrtoFloat(trim(StringReplace(copy(FRegistro,4,4),'.',',',    [rfReplaceall])));
    NFe.infNFe.Versao :=versao;//LerCampo(tcDe2, 'versao');
  end;

 

Editado por Alexsandro Lopes

 

 

Link para o comentário
Compartilhar em outros sites

Ola o mesmo erro esta ocorrendo com acbrnfemonitor versao 9.07.2 nesse caso ele apresenta erro e nao gera o xml. informando que a data 1899-01-01t00:00:00 invalida.. agora com o acbrmonitor plus versao 1.09.01 ele gera o xml mais com essa data 1899-01-01. sendo assim nenhum dos dois compilado funciona a geracao correta do xml. Alguem conseguiu descobrir o motivo. Pois nas versoes anteriores tudo funciona perfeitamente. Grato

Nilton Bonilha - São Paulo - SP

xHarbour.

LOGOSFW.jpg.aed61309847a9f4c30e8328f9c17

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Isto foi acertado a um tempo no Trunk2, portanto o monitor plus funciona, lembro que foi eu quem atendi este caso.

Como não estamos fazendo mais alterações no trunk então o monitor antigo não vai ter esse acerto, por favor migre para o Trunk2.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Ola Regys , até ja estou utilizando o trunk2. mas como utilizo o compilado, acho que deveriam deixar ele funcionando. Mesmo que não fosse dar continuidade, ao menos finalizar ele em funcionamento, visto que em versoes anterioresesse erro nao ocorria. Grato

Nilton Bonilha - São Paulo - SP

xHarbour.

LOGOSFW.jpg.aed61309847a9f4c30e8328f9c17

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Ola Regys , até ja estou utilizando o trunk2. mas como utilizo o compilado, acho que deveriam deixar ele funcionando. Mesmo que não fosse dar continuidade, ao menos finalizar ele em funcionamento, visto que em versoes anterioresesse erro nao ocorria. Grato

Como assim usa o trunk2 compilado? Desculpe não deu para entender a frase.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

rs.. ja baixei o trunk2 e vou iniciar o trabalho com ele.. Mas eu utilizava o AcbrNfemonitor compilado, a ultima versão dele funcionando, se nao me engano 09.4 pois a partir dai começa o erro no dhemi conforme o post. isso em MAio, acredito que a mudança para trunk2 é inevitavel, mas acredito que deveriam deixar a ultima versao do acbrnfemonitor compilado perfeita, para que possamos utilizar ate migrar definitivamente para o PLUS. Pelo que entendi o PLUS é a junçao do monitor com NFE, particularmente não gostei muito da integração pois obriga  instalar um aplicativo mais pesado apenas para utilizar a NFE. Pelo que entendi e vi nos arquivos nao tem no trunk2 o projeto NFE individual. Entao acho que a versao compliada no acbrnfemonitor 0.9.07 deveria funcionar. Abraço.

Nilton Bonilha - São Paulo - SP

xHarbour.

LOGOSFW.jpg.aed61309847a9f4c30e8328f9c17

Link para o comentário
Compartilhar em outros sites

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