Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • 1 mês depois ...
  • Membros Pro
Postado

Italo, verifiquei ontem o Post referente a mudanças, achei bem bacana, mas pelo que entendi, chegará uma hora que será obrigatório o uso, certo? Conseguiram analisar aquela situação que eu passei?

 

  • Membros Pro
Postado
5 minutos atrás, Italo Giurizzato Junior disse:

Boa tarde @luisclaudio_jr,

Chamei a Equipe ACBr para juntos tentarmos encontrar uma solução.

Sem problemas, porque creio que muitos aqui devem carregar por fora antes, pra fazer as validações que eu citei.. Principalmente saber se realmente é uma NFe por exemplo, não uma NFS.. cte.. e por ai vai, então creio que hora que descontinuar, irá ser um problema pra muitos.

 

  • Consultores
Postado
6 minutes ago, luisclaudio_jr said:

Sem problemas, porque creio que muitos aqui devem carregar por fora antes, pra fazer as validações que eu citei.. Principalmente saber se realmente é uma NFe por exemplo, não uma NFS.. cte.. e por ai vai, então creio que hora que descontinuar, irá ser um problema pra muitos.

 

Boa tarde!

Um dos questionamentos que foram levantados é se ao testar esta string XML retirada do banco de dados no validador da Sefaz ele apresenta erro.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado
2 minutos atrás, Diego Foliene disse:

Boa tarde!

Um dos questionamentos que foram levantados é se ao testar esta string XML retirada do banco de dados no validador da Sefaz ele apresenta erro.

Vou atualizar tudo meu acbr e refazer os testes, mas lembro que o problema era ao jogar em um xmlString e depois jogar pro componente, se eu colocasse direto sem passar pelo xmlstring dava certo.
Outro fator que eu levantei, que funciona 100% na rotina atual, é na nova que ocorre, então, o XML é valido.

Se voltarmos uns posts atrás, eu coloquei exatamente a minha rotina aqui: ( eu carrego antes pra validar N coisas, que antes haviamos mt problemas de usuarios indicarem xml incorreto etc..)

E lembro que no meu teste, se eu jogasse direto no loadFromFile sem passar pelo processo anterior, não ocorria o problema.

var

  aXml: XMLString;

  sl: TStringList;

 ADoc := TXMLDocument.Create(nil);

 try
    ADoc.Active := True;
    ADoc.Version := '1.0';
    ADoc.Encoding := 'utf-8';
    ADoc.Options := [doNodeAutoIndent];

    vTam := TamanhodoArquivo(arquivo); //aruivo em branco
    if (vTam < 100) then
    begin
      abort;

    end;
  
      ADoc.LoadFromFile(arquivo);
   

    aXml := ADoc.XML.Text;
  finally
    sl.Free;
  
  end;

  DM_NFE.ACBrNFe1.NotasFiscais.Clear;
  DM_NFE.ACBrNFe1.NotasFiscais.Add;

    DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

 

  • Consultores
Postado
49 minutos atrás, luisclaudio_jr disse:

E lembro que no meu teste, se eu jogasse direto no loadFromFile sem passar pelo processo anterior, não ocorria o problema.

Nesse caso, Não seria melhor carregar o arquivo diretamente pelo componente?

Com certeza há alguma diferença ao carregar nessa outra classe e jogar o valor em uma string. E isso possivelmente pode estar fazendo alguma modificação que está invalidando o xml.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado
1 minuto atrás, EMBarbosa disse:

Nesse caso, Não seria melhor carregar o arquivo diretamente pelo componente?

Com certeza há alguma diferença ao carregar nessa outra classe e jogar o valor em uma string. E isso possivelmente pode estar fazendo alguma modificação que está invalidando o xml.

Então, antes faziamos isso, mas tinhas muitos problemas de por exemplo usuario importar xml de nfe ao invés de cte, ou uma NFS, ou até mesmo eventos (usuario é leigo, devemos sempre nos lembrar que não dá pra confiar)  antes de jogar pro componente validamos algumas coisas, se é por exemplo uma NF-e (pra não importar um cte, nfs..), pra ver se ela não é um Resumo, se tem as tags que devem ter e tudo mais,Outra coisa, que não sei se ja pegaram por ai, mas é o XML Serpro, (aquele que compram e gera, ele vem faltando umas coisas nas tags como versao,então nesse ponto a gente também valida pra poder deixar o XML apto pra uso.posso mandar uns pra vcs se quiserem)  e ai é necessario uma intervenção antes pra poder colocar o que falta e poder ler.

O ponto que to trazendo, é que sempre funcionou com o método antigo, foi mudar a lib que começou a dar os problemas nos testes.

Em ultimos casos, eu posso revalidar a forma aqui e "chamar" duas vezes o arquivo, validar em uma e se tudo certo chamar novamente, mas pensando agora na comunidade, quando for obrigatório (e a rotina ficou sensacional, muito rapida, eu estava com uma lentidão enorme ctes com 1800 chaves), com certeza vai dar muita dor de cabeça pra todos.

  • Consultores
Postado
40 minutos atrás, luisclaudio_jr disse:

Então, antes faziamos isso, mas tinhas muitos problemas de por exemplo usuario importar xml de nfe ao invés de cte, ou uma NFS, ou até mesmo eventos (usuario é leigo, devemos sempre nos lembrar que não dá pra confiar)  antes de jogar pro componente validamos algumas coisas, se é por exemplo uma NF-e (pra não importar um cte, nfs..), pra ver se ela não é um Resumo, se tem as tags que devem ter e tudo mais,

Entendi essa parte. Acho legal vocês terem uma inteligência para blindar o sistema e o usuário... mas uma coisa é validar o xml, outra é alterar/modificar.

Se alterássemos o xml isso poderia ser considerado uma adulteração do documento. Esse é um cuidado que estamos tendo cada vez mais com nossas rotinas e incentivamos a todos a terem também.

41 minutos atrás, luisclaudio_jr disse:

Outra coisa, que não sei se ja pegaram por ai, mas é o XML Serpro, (aquele que compram e gera, ele vem faltando umas coisas nas tags como versao,então nesse ponto a gente também valida pra poder deixar o XML apto pra uso.posso mandar uns pra vcs se quiserem)  e ai é necessario uma intervenção antes pra poder colocar o que falta e poder ler.

Não tenho certeza do que se trata. Mas se é um XML de um DF-e, ele tem que ser válido. Você não precisa e nem deveria (minha opinião pessoal) modificar um xml para que seu sistema aceite... pode ser muito perigoso.

Por outro lado, se ele foi aceito pelo webservice e não aceito pelo componente, então realmente precisamos validar. Nesse caso, é mais interessante criar um novo tópico para podermos tratar isso de forma específica e não misturar o assunto com esse tópico aqui.

Por favor, se for o caso crie um novo tópico e anexe o XML para que possamos validar.

48 minutos atrás, luisclaudio_jr disse:

O ponto que to trazendo, é que sempre funcionou com o método antigo, foi mudar a lib que começou a dar os problemas nos testes.

Sim. E estamos interessadíssimos em entender o que está acontecendo. É como você disse no final, preocupamos com a comunidade e não queremos nenhuma dor de cabeça pra ninguém.

Mas mantenha a mente aberta... pode ser que o método anterior estava aceitando um XML que ele deveria na verdade recusar. E agora está recusando.

50 minutos atrás, luisclaudio_jr disse:

Em ultimos casos, eu posso revalidar a forma aqui e "chamar" duas vezes o arquivo

O que eu pensei, seria apenas alterar essa linha:

1 hora atrás, luisclaudio_jr disse:

DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(aXml)

para algo assim:

DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(arquivo);

Mas foi só uma ideia para resolver seu problema enquanto validamos a situação. Acho que não conseguimos reproduzir o problema ainda...

Então, voltando ao que você postou antes...

1 hora atrás, luisclaudio_jr disse:

Vou atualizar tudo meu acbr e refazer os testes, mas lembro que o problema era ao jogar em um xmlString e depois jogar pro componente, se eu colocasse direto sem passar pelo xmlstring dava certo.

Assim que você atualizar e refazer os testes, nos avise por favor. Se tiver alguma outra informação que julgar importante, fique a vontade de compartilhar.

Muito obrigado até o momento.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Membros Pro
Postado
46 minutos atrás, EMBarbosa disse:

Entendi essa parte. Acho legal vocês terem uma inteligência para blindar o sistema e o usuário... mas uma coisa é validar o xml, outra é alterar/modificar.

Se alterássemos o xml isso poderia ser considerado uma adulteração do documento. Esse é um cuidado que estamos tendo cada vez mais com nossas rotinas e incentivamos a todos a terem também.

Não tenho certeza do que se trata. Mas se é um XML de um DF-e, ele tem que ser válido. Você não precisa e nem deveria (minha opinião pessoal) modificar um xml para que seu sistema aceite... pode ser muito perigoso.

Por outro lado, se ele foi aceito pelo webservice e não aceito pelo componente, então realmente precisamos validar. Nesse caso, é mais interessante criar um novo tópico para podermos tratar isso de forma específica e não misturar o assunto com esse tópico aqui.

Por favor, se for o caso crie um novo tópico e anexe o XML para que possamos validar.

Sim. E estamos interessadíssimos em entender o que está acontecendo. É como você disse no final, preocupamos com a comunidade e não queremos nenhuma dor de cabeça pra ninguém.

Mas mantenha a mente aberta... pode ser que o método anterior estava aceitando um XML que ele deveria na verdade recusar. E agora está recusando.

O que eu pensei, seria apenas alterar essa linha:

para algo assim:

DM_NFE.ACBrNFe1.NotasFiscais.LoadFromString(arquivo);

Mas foi só uma ideia para resolver seu problema enquanto validamos a situação. Acho que não conseguimos reproduzir o problema ainda...

Então, voltando ao que você postou antes...

Assim que você atualizar e refazer os testes, nos avise por favor. Se tiver alguma outra informação que julgar importante, fique a vontade de compartilhar.

Muito obrigado até o momento.

 

Entendo perfeitamente, alguma sugestão pra validarmos se o XML pertence a um evento, cte, nfe.. talvez até mesmo quem sabe uma função do ACBR onde ele devolvesse algo nesse sentido? Nisso, ja Eliminariamos algumas validações nesse sentido antes da chamada.
Referente a Serpro, eles tem acesso ao servidor do governo onde ficam os XMLS, mas não sei pq cargas, eles não liberam o XML original e meio que remontam e pra resolver temos que indicar umas tags que faltam na mão e concordo sobre o XML, mas em muitos casos que usamos aqui é pra facilitar dados, nada fiscalmente que seja obrigatório a assinatura fiscal correta, ou algo nesse sentido. Posso estar liberando uns xmls que consegui aqui pra vocês, mas fiz um teste e o validador da sefaz ja acusa erro.
Sobre o metodo, sim, vou modificar aqui pra fazer por hora tanto a leitura pra validar caso dê certo eu subo direto, sem passar pelo xmlstring e após testes relato por aqui

  • Curtir 1
  • Consultores
Postado

Bom dia @luisclaudio_jr,

Vou lhe mostrar um fragmento de código de uma aplicação que fiz a uns quase 20 anos.

Muito mal feita por sinal.

A diferença é que o XML é lido do disco e não do banco de dados.

procedure TfrmEmissorDFE.CarregaArquivo;
var
 ArquivoXML: TStringList;
 Tamanho: Integer;
 PathEvento: String;
begin
 ArquivoXML := TStringList.Create;
 ArquivoXML.LoadFromFile(edtArquivo.Text);

 TipoDFE := 0;
 if pos('<infNFe', ArquivoXML.Text) > 0
  then TipoDFE := 1;
 if pos('<infCte', ArquivoXML.Text) > 0
  then TipoDFE := 2;
 if pos('InfNfse', ArquivoXML.Text) > 0
  then TipoDFE := 3;
 if pos('infMDFe', ArquivoXML.Text) > 0
  then TipoDFE := 4;
 if pos('procEventoNFe', ArquivoXML.Text) > 0
  then TipoDFE := 5;
 if pos('procEventoCTe', ArquivoXML.Text) > 0
  then TipoDFE := 6;
 if pos('procEventoMDFe', ArquivoXML.Text) > 0
  then TipoDFE := 7;

 ArquivoXML.Free;

 // ****************************************************************************
 // Nota Fiscal Eletrônica
 // ****************************************************************************
 if TipoDFE = 1
  then begin
   // Carrega no Componente o NFe salvo em Arquivo XML
   NFe.NotasFiscais.Clear;
   NFe.NotasFiscais.LoadFromFile(edtArquivo.Text, False);

(...)

Note que no LoadFromFile estou informando o segundo parâmetro com o valor False, pois se não informar o XML vai ser gerado novamente.

Devemos tomar cuidado também com o LoadFromString e LoadFromStream, eles também tem esse segundo parâmetro.

  • Curtir 2
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado
3 horas atrás, Italo Giurizzato Junior disse:

Bom dia @luisclaudio_jr,

Vou lhe mostrar um fragmento de código de uma aplicação que fiz a uns quase 20 anos.

Muito mal feita por sinal.

A diferença é que o XML é lido do disco e não do banco de dados.

procedure TfrmEmissorDFE.CarregaArquivo;
var
 ArquivoXML: TStringList;
 Tamanho: Integer;
 PathEvento: String;
begin
 ArquivoXML := TStringList.Create;
 ArquivoXML.LoadFromFile(edtArquivo.Text);

 TipoDFE := 0;
 if pos('<infNFe', ArquivoXML.Text) > 0
  then TipoDFE := 1;
 if pos('<infCte', ArquivoXML.Text) > 0
  then TipoDFE := 2;
 if pos('InfNfse', ArquivoXML.Text) > 0
  then TipoDFE := 3;
 if pos('infMDFe', ArquivoXML.Text) > 0
  then TipoDFE := 4;
 if pos('procEventoNFe', ArquivoXML.Text) > 0
  then TipoDFE := 5;
 if pos('procEventoCTe', ArquivoXML.Text) > 0
  then TipoDFE := 6;
 if pos('procEventoMDFe', ArquivoXML.Text) > 0
  then TipoDFE := 7;

 ArquivoXML.Free;

 // ****************************************************************************
 // Nota Fiscal Eletrônica
 // ****************************************************************************
 if TipoDFE = 1
  then begin
   // Carrega no Componente o NFe salvo em Arquivo XML
   NFe.NotasFiscais.Clear;
   NFe.NotasFiscais.LoadFromFile(edtArquivo.Text, False);

(...)

Note que no LoadFromFile estou informando o segundo parâmetro com o valor False, pois se não informar o XML vai ser gerado novamente.

Devemos tomar cuidado também com o LoadFromString e LoadFromStream, eles também tem esse segundo parâmetro.

Interessante, assim que der um respiro aqui vamos fazer testes, valeu meu caro.

  • Curtir 1
  • 3 semanas depois ...
  • Membros Pro
Postado

Boa noite pessoal
fui testar a rotina, atualizei todo o acbr porém quando descomentei >{.$DEFINE USE_ACBr_XMLDOCUMENT}  ao instalar o componente deu o erro abaixo:

C:\ACBR\Fontes\ACBrDFe\ACBrNFe\PCNNFe\ACBrNFeXmlWriter.pas(174) Error: E2170 Cannot override a non-virtual method
C:\ACBR\Fontes\ACBrDFe\ACBrNFe\Base\Servicos\ACBrNFe.Inut.pas(2484) Fatal: F2063 Could not compile used unit 'ACBrNFe.RetInut.pas'
Compilation failure
Erro ao compilar o pacote "ACBr_NFe.dpk".

 

Só ocorre quando descomenta, se deixar comentado instala sem problemas.

 

  • Consultores
Postado

Boa noite @luisclaudio_jr,

Abra a unit ACBrNFeXmlWrite, vá até a linha 174 e altere ela deixando da seguinte forma:

function ObterNomeArquivo: string; overload;

Ou seja troque o override por overload.

Salve a alteração e tente instalar novamente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado
20 minutos atrás, Italo Giurizzato Junior disse:

Boa noite @luisclaudio_jr,

Abra a unit ACBrNFeXmlWrite, vá até a linha 174 e altere ela deixando da seguinte forma:

function ObterNomeArquivo: string; overload;

Ou seja troque o override por overload.

Salve a alteração e tente instalar novamente.

Valeu!

  • Curtir 1
  • 3 meses depois ...
  • Membros Pro
Postado (editado)

Boa tarde amigos!
Estive com uma agenda complicada pra alterar tudo e começar os testes, mas vamos lá;
 

Estou com componente atualizado desde quarta-feira, tentei com varios XMLS e obtive o mesmo retorno, no caso, eu to pegando via LoadFromFile, passando o caminho do XML, sem tratar o arquivo, pegando ele do mesmo jeito que recebo (que antes, dava certo se eu não tratasse nada), porém agora não importa mais nada:

Ao debugar, notei que:

procedure TACBrXmlDocument.LoadFromXml(AXmlDocument: string); <- nessa procedure,

  loadedDoc := xmlParseDoc(PAnsiChar(ansistring(AXmlDocument)));  <- ele entra como NIL aqui..

pelo que vi,  ele cai aqui na procedure  RaizeExceptionTratandoNaoCarregamentoDLL
if LibXml2InterfaceInicializada then
    raise EACBrXmlException.Create(xmlGetLastError()^.message)53240902558157045425550000025390241305912792.xml

 

Podem realizar testes e ver se por ai, chegam no mesmo resultado? testei com 4xmls de fornecedores diferentes

'XML declaration allowed only at the start of the document'  <- recebo isso... pela função, teria alguma DLL diferente que eu teria que estar usando? (é meu ambiente mesmo, que utilizo no dia a dia..)
Anexei um xml de fornecedor, caso precisem.

 

Editado por luisclaudio_jr
  • Consultores
Postado

Bom dia!

30 minutes ago, luisclaudio_jr said:

pelo que vi,  ele cai aqui na procedure  RaizeExceptionTratandoNaoCarregamentoDLL
if LibXml2InterfaceInicializada then
    raise EACBrXmlException.Create(xmlGetLastError()^.message)

Se ele está caindo neste trecho de código, é provável que esteja falhando em inicializar a LibXML.

Na propriedade ACBrDFe.Configuracoes.Geral.SSLXmlSignLib, foi definido o valor xsMsXml? Caso o seja, por favor, defina o valor xsLibXml2 e faça um novo teste.

Se ainda assim persistir o problema, tente adicionar as dlls que tem AQUI, na mesma pasta do seu .EXE, escolhendo de acordo com a arquitetura que compila a sua aplicação e não a do SO

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado
1 hora atrás, Italo Giurizzato Junior disse:

Boa tarde @luisclaudio_jr,

Olha o que eu encontrei no XML que você anexou.

image.png

Esse XML esta sendo gerado pelo componente ACBrNFe?35241007859054000156550010013173981013173997.xml

Se sim, tem alguma coisa errada nele.

Mandei o xml errado, peguei um certinho aqui, validei inclusive.
 

Fiz o processo da DLL, coloquei como abaixo, mas mesmo assim, o erro ainda continua igual.. :

 

image.thumb.png.e5d1c0e4e4af9c1966006708616e90f5.png

O que é mais estranho, que antes, julho, quando falamos eu consegui simular os testes, dava erro de XML(porque eu tratava, jogava em string), e não caia nessa parte.

Anexei um XML valido, para analise, se puderem tentar por ai pra ver se realmente não é alguma falha..

  • Consultores
Postado
29 minutes ago, luisclaudio_jr said:

Mandei o xml errado, peguei um certinho aqui, validei inclusive.
 

Fiz o processo da DLL, coloquei como abaixo, mas mesmo assim, o erro ainda continua igual.. :

 

image.thumb.png.e5d1c0e4e4af9c1966006708616e90f5.png

O que é mais estranho, que antes, julho, quando falamos eu consegui simular os testes, dava erro de XML(porque eu tratava, jogava em string), e não caia nessa parte.

Anexei um XML valido, para analise, se puderem tentar por ai pra ver se realmente não é alguma falha..

Boa tarde @luisclaudio_jr!

Um pequena sugestão de melhoria:

//Aqui você está limpando a lista de notas na memória do componente.
DM_NFe.ACBrNFe1.NotasFiscais.Clear;
//Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor zero.

//Aqui você está adicionando uma nota na lista.
DM_NFe.ACbrNFe1.NotasFiscais.Add;
//Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor 1. 

try
  //Aqui você está carregando uma nota NFe na lista...
  DM_NFe.ACBrNFe1.NotasFiscais.LoadFromFile(arquivo);
  //Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor 2.

//....

Então no final do processo, você fica com duas notas na lista, uma com todas as informações em branco e uma com as informações que foram carregadas do XML.

Portanto, esta linha DM_NFe.ACBrNFe1.NotasFiscais.Add; pode ser removida.

Essa observação foi feita considerando apenas este trecho de código que disponibilizou. Se entre esta linha e o LoadFromFile você preenche as informações da nota, ou sua intenção é de fato ter duas notas na lista, então está correto.

  • Curtir 1
Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado
39 minutos atrás, Diego Foliene disse:

Boa tarde @luisclaudio_jr!

Um pequena sugestão de melhoria:

//Aqui você está limpando a lista de notas na memória do componente.
DM_NFe.ACBrNFe1.NotasFiscais.Clear;
//Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor zero.

//Aqui você está adicionando uma nota na lista.
DM_NFe.ACbrNFe1.NotasFiscais.Add;
//Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor 1. 

try
  //Aqui você está carregando uma nota NFe na lista...
  DM_NFe.ACBrNFe1.NotasFiscais.LoadFromFile(arquivo);
  //Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor 2.

//....

Então no final do processo, você fica com duas notas na lista, uma com todas as informações em branco e uma com as informações que foram carregadas do XML.

Portanto, esta linha DM_NFe.ACBrNFe1.NotasFiscais.Add; pode ser removida.

Essa observação foi feita considerando apenas este trecho de código que disponibilizou. Se entre esta linha e o LoadFromFile você preenche as informações da nota, ou sua intenção é de fato ter duas notas na lista, então está correto.

Opa, obrigado, é uma só mesmo..

  • Curtir 1
  • Membros Pro
Postado
Em 18/10/2024 at 17:42, Diego Foliene disse:

Boa tarde @luisclaudio_jr!

Um pequena sugestão de melhoria:

//Aqui você está limpando a lista de notas na memória do componente.
DM_NFe.ACBrNFe1.NotasFiscais.Clear;
//Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor zero.

//Aqui você está adicionando uma nota na lista.
DM_NFe.ACbrNFe1.NotasFiscais.Add;
//Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor 1. 

try
  //Aqui você está carregando uma nota NFe na lista...
  DM_NFe.ACBrNFe1.NotasFiscais.LoadFromFile(arquivo);
  //Depois que passar desta linha, ACBrNFe.NotasFiscais.Count vai ter o valor 2.

//....

Então no final do processo, você fica com duas notas na lista, uma com todas as informações em branco e uma com as informações que foram carregadas do XML.

Portanto, esta linha DM_NFe.ACBrNFe1.NotasFiscais.Add; pode ser removida.

Essa observação foi feita considerando apenas este trecho de código que disponibilizou. Se entre esta linha e o LoadFromFile você preenche as informações da nota, ou sua intenção é de fato ter duas notas na lista, então está correto.

Pessoal, não sei se deixei confuso a ultima resposta, mas o problema não era isso acima(só agradeci a dica para não cometer novamente).. rsrs Sigo sem conseguir passar daquele except.. chegaram a testar por ai pra ver se carregava?

 

  • Curtir 1
×
×
  • 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.