Ir para conteúdo
  • Cadastre-se

dev botao

ACBrNFSeX erro em LoadFromFile


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1016 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Bom dia, em reposta a solicitação de @Italo Giurizzato Junior feita via Discord abro esse topico.

Eu baixo o XML da NFSe mesmo oficial direto do site do provedor, dai carrego ele no componente para poder imprimir

ACBrNFSeX1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
ACBrNFSeX1.NotasFiscais.Imprimir;

acredito que nesse momento o XML esta carregado no componente certo?

Dai quero agora em seguida salvar ele no meu BD e facho assim:

Query.ParamByName('pArquivoFiscal').Value := ACBrNFSeX1.NotasFiscais.Items[0].XML;

Ai ele salva o RPS ao invés do XML original da NFSe que acabei de carregar no componente, o que esta errado nesse caso, como posso fazer isso?

Segundo ja falamos no Discor sera necessario fazer o metodo LoadFromFile popular completamente o componente e na hora salvar pela propriedade NotasFiscais.Items[0].XML ele disponibilizar o XML da NFSe originalmente carregado.

  • Consultores
Postado

Boa tarde,

Antes de executar o LoadFromFile esta sendo executado o Clear?

    ACBrNFSeX1.NotasFiscais.Clear;
    ACBrNFSeX1.NotasFiscais.LoadFromFile(OpenDialog1.FileName, False);
    ACBrNFSeX1.NotasFiscais.Imprimir;

 

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

Boa noite,

Sim eu faço o clear, veja o trecho do meu código.

ConfiguraACBrNFSeX(); //Aqui eu passo as informações de configuração do componente e do contribuinte
ACBrNFSeX1.NotasFiscais.Clear;
ACBrNFSeX1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);

  • Membros Pro
Postado

Repare que a impressão ocorre com sucesso, o problema é que em seguida quero salvar o XML no BD dessa forma que com o componente antigo estava funcionando normalmente.

Query.ParamByName('pArquivoFiscal').Value := ACBrNFSeX1.NotasFiscais.Items[0].XML;

ai ela salva como se fosse o RPS e não o XML da NFSe mesmo como era antes.

  • Consultores
Postado
12 horas atrás, Destak disse:

Repare que a impressão ocorre com sucesso, o problema é que em seguida quero salvar o XML no BD dessa forma que com o componente antigo estava funcionando normalmente.

Query.ParamByName('pArquivoFiscal').Value := ACBrNFSeX1.NotasFiscais.Items[0].XML;

ai ela salva como se fosse o RPS e não o XML da NFSe mesmo como era antes.

Bom dia,
ACBrNFSeX1.NotasFiscais.Items[0].XMLOriginal não resolve o seu caso?

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
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 !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Membros Pro
Postado

Boa tarde,

Tanto usando ACBrNFSeX1.NotasFiscais.Items[0].XML quanto ACBrNFSeX1.NotasFiscais.Items[0].XMLOriginal o problema permanece a mesma coisa mas agora mudou um pouco a forma que esta sendo salva no BD veja.

Na imagem em anexo o ultimo registro é o que esta com problema, pois salvei ele conforme descrito nesse topico, usando o ACBrNFSeX1.NotasFiscais.LoadFromFile, ja os demais registros da imagem salvei logo em seguida da emissao da NFSe no mesmo momento e usando a propriedade ACBrNFSeX1.NotasFiscais.Items[0].XML.

No componente antigo isso esta funcionando normalmente, mas novo novo é que ocorre esse problema.

Erro salva NFSe no BD.jpg

  • Membros Pro
Postado

Boa tarde,

Vamos la, tanto no componente antigo quanto no novo os passos e os momentos são exatamente os mesmo:

1. faco a consulta pelo numero do protocolo ConsultarLoteRps dai o componente salva o XML no caminho aqui definido alem de abrir a impressao com sucesso.

2. executo o LoadFromFile seleciono o XMLs acima informado que acabou de ser baixado, nesse momento a impressao é aberta com sucesso.

3. Salvo no BD usando a seguinte propriedade NotasFiscais.Items[0].XML e ai é que esta a diferenca entre o componente novo e o antigo, no componente novo salva errado ja no antigo salva corretamente.

Segue em anexo todos os XMLs referente a descrição acima para analise.

XMLs comp novo e antigo.zip

  • Membros Pro
Postado

Boa noite,

Após a atualização dos fontes de hoje 24/02/2022 o problema desse topico foi corrigido, verifiquei que voce removeu a propriedade:

ACBrNFSeX1.NotasFiscais.Items[0].XML

e criou as duas novas

ACBrNFSeX1.NotasFiscais.Items[0].XmlNfse e ACBrNFSeX1.NotasFiscais.Items[0].XmlRps

Isso resolveu o problema obrigado.

Porem durante os testes verifiquei um novo problema parecido com esse mas no metodo ACBrNFSeX1.NotasFiscais.GravarXML ele esta salvando o XML do Rps e nao o da NFSe, o passo a passo é o seguinte:

ACBrNFSeX1.NotasFiscais.Clear;
ACBrNFSeX1.NotasFiscais.LoadFromString(Query.FieldByName('ArquivoFiscal').AsString);

e depois

ACBrNFSeX1.NotasFiscais.GravarXML(SaveDialog1.FileName+'.xml');

Esta salvando o XML do Rps ao inves da NFSe que acabei de carregar no componente, segue o XML que ele esta salvando em anexo.

NFS-E 000000064 - 18 C2 55.xml

  • Membros Pro
Postado

Bom dia,

O que acha criar uma variável não obrigatória no método tipo Rps ou NFSe e se não informar nada ele assumi NFSe como era no antigo componente e ai nao gera quebra no código existente, veja abaixo:

ACBrNFSeX1.NotasFiscais.GravarXML(SaveDialog1.FileName+'.xml',"Rps ou NFSe ou nada ai ele assumi NFSe");

Dessa forma atenderia diversas possíveis demandas, como no caso de validar o Rps no site do provedor ou e alguma situação subir o Rps manualmente para o site do provedor para efetiva emissão da NFSe num caso de indisponibilidade do WebService mas o site esta ON, dentre outras utlidades.

  • Consultores
Postado

Neste caso fica por conta do desenvolvedor o que ele deseja salvar.

Pode ser desta forma, principalmente se temos as duas propriedades (XmlRps e XmlNfse) carregadas, com esse parâmetro defino o que deseja salvar.

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

  • Consultores
  • Solution
Postado

Boa tarde,

Faça um teste com a unit em anexo.

A assinatura da função ficou da seguinte forma:

    function GravarXML(const NomeArquivo: String = '';
      const PathArquivo: String = ''; aTipo: TtpXML = txmlNFSe): Boolean;

Note que os 3 parâmetros possuem um valor padrão, se você informar somente o nome e o tipo de XML devemos chamar a função da seguinte forma:

// Para salvar o Xml da NFSe
Resultado := GravarXML('NomeDoXml');

// Para salvar o Xml do Rps
Resultado := GravarXML('NomeDoXml', '', txmlRps);

ACBrNFSeXNotasFiscais.pas

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

Boa noite,

Não tive tempo de testar, mas farei isso a partir de quinta-feira e retorno aqui ok, desde de ja e como sempre obrigado.

  • Curtir 1
  • Este tópico foi criado há 1016 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...