Ir para conteúdo
  • Cadastre-se

dev botao

[Dúvida]Lendo Xml Da Nfe Pelo Componente Acbrnfe


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

Recommended Posts

Postado

Bom meu sistema tem que importar a NFe para o banco de dados,estou usando o TACBrNFe para carregar um XML,porém na hora da compilação recebo isso:

Build
  [Warning] UDBUpdater.pas(31): Method 'Destroy' hides virtual method of base type 'TThread'
  [Error] UDBUpdater.pas(61): Undeclared identifier: 'cUF'
  [Error] UDBUpdater.pas(62): Undeclared identifier: 'cNF'
  [Error] UDBUpdater.pas(63): Undeclared identifier: 'natOp'
  [Error] UDBUpdater.pas(64): Undeclared identifier: 'indpag'
  [Error] UDBUpdater.pas(65): Undeclared identifier: 'cMod'
  [Error] UDBUpdater.pas(66): Undeclared identifier: 'serie'
  [Error] UDBUpdater.pas(67): Undeclared identifier: 'cEmi'
  [Error] UDBUpdater.pas(67): Undeclared identifier: 'cEmi'
  [Error] UDBUpdater.pas(68): Undeclared identifier: 'cSaiEnt'
  [Error] UDBUpdater.pas(68): Undeclared identifier: 'cSaiEnt'
  [Error] UDBUpdater.pas(69): Undeclared identifier: 'tpNf'
  [Error] UDBUpdater.pas(69): Undeclared identifier: 'tpNf'
  [Error] UDBUpdater.pas(70): Undeclared identifier: 'cMunfg'
  [Error] UDBUpdater.pas(71): Undeclared identifier: 'tpImp'
  [Error] UDBUpdater.pas(72): Undeclared identifier: 'tpEmis'
  [Error] UDBUpdater.pas(73): Undeclared identifier: 'cDV'
  [Error] UDBUpdater.pas(74): Undeclared identifier: 'tpAmb'
  [Error] UDBUpdater.pas(75): Undeclared identifier: 'finNFe'
  [Error] UDBUpdater.pas(76): Undeclared identifier: 'procEmi'
  [Error] UDBUpdater.pas(77): Undeclared identifier: 'verProc'
  [Error] UDBUpdater.pas(79): Undeclared identifier: 'CNPJ'
  [Error] UDBUpdater.pas(84): Undeclared identifier: 'CNPJ'
  [Error] UDBUpdater.pas(86): Undeclared identifier: 'xFant'
  [Error] UDBUpdater.pas(87): Undeclared identifier: 'dest_ie'
  [Fatal Error] UFrmMain.pas(7): Could not compile used unit 'UDBUpdater.pas'

E aqui está a função

procedure TDBUpdater.AtualizaXML(Arquivo : string);
var
  nfe : TAcBrNFE;
  i : integer;
  nfeid,emit_cnpj,emit_nome,emit_fantasia,emit_ie,dest_cnpj,dest_nome,dest_fantasia,dest_mail,cUF,cNF,natOp,indPag,cMod,serie,nNf,cMunfg,tpImp,tpEmis,cDv,tPamb,finNfe,procEmi,verProc : string;
  prod_nome,prod_ean : string;
begin
  nfe := TAcBrNFE.Create(nil);
  nfe.NotasFiscais.LoadFromFile(arquivo);
  //DADOS DO CABEÇALHO
  //-- infNFe
  nfeid := ExtractFileName(arquivo);
  cUF := nfe.NotasFiscais.Items[0].NFe.infNFe.cUF;
  cNF := nfe.NotasFiscais.Items[0].NFe.infNFe.cNF;
  natOp := nfe.NotasFiscais.Items[0].NFe.infNFe.natOp;
  indpag := nfe.NotasFiscais.Items[0].NFe.infNFe.indpag;
  cMod := nfe.NotasFiscais.Items[0].NFe.infNFe.cMod;
  serie := nfe.NotasFiscais.Items[0].NFe.infNFe.serie;
  cEmi := nfe.NotasFiscais.Items[0].NFe.infNFe.cEmi;
  cSaiEnt := nfe.NotasFiscais.Items[0].NFe.infNFe.cSaiEnt;
  tpNf := nfe.NotasFiscais.Items[0].NFe.infNFe.tpNf;
  cMunfg := nfe.NotasFiscais.Items[0].NFe.infNFe.cMunfg;
  tpImp := nfe.NotasFiscais.Items[0].NFe.infNFe.tpImp;
  tpEmis := nfe.NotasFiscais.Items[0].NFe.infNFe.tpEmis;
  cDV := nfe.NotasFiscais.Items[0].NFe.infNFe.cDV;
  tpAmb := nfe.NotasFiscais.Items[0].NFe.infNFe.tpAmb;
  finNFe := nfe.NotasFiscais.Items[0].NFe.infNFe.finNFe;
  procEmi := nfe.NotasFiscais.Items[0].NFe.infNFe.procEmi;
  verProc := nfe.NotasFiscais.Items[0].NFe.infNFe.verProc;
  //-- Emit
  emit_cnpj := nfe.NotasFiscais.Items[0].NFe.Emit.CNPJ;
  emit_nome := nfe.NotasFiscais.Items[0].NFe.Emit.xNome;
  emit_fantasia := nfe.NotasFiscais.Items[0].NFe.Emit.xFant;
  emit_ie := nfe.NotasFiscais.Items[0].NFe.Emit.IE;
  //-- Dest
  dest_cnpj := nfe.NotasFiscais.Items[0].NFe.Dest.CNPJ;
  dest_nome := nfe.NotasFiscais.Items[0].NFe.Dest.xNome;
  dest_fantasia := nfe.NotasFiscais.Items[0].NFe.Dest.xFant;
  dest_ie := nfe.NotasFiscais.Items[0].NFe.Dest.IE;

E também tenho outra dúvida que é em relação a leitura dos impostos nos itens,visto que existem vária tags para o icms como <ICMS00> <ICMS20>,como eu faço a leitura dessa tag?

 

Obrigado.

  • Moderadores
Postado

Boa noite

no caso a unit UDBUpdater.pas não faz parte do projeto acbr no entanto vi que no código abaixo

onde você pega informações do componente TACBrNFe está assim

cUF := nfe.NotasFiscais.Items[0].NFe.infNFe.cUF;

o que seria o cUF que recebe a atribuição? é uma variável interna de sua unit ou até mesmo uma propriedade?

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

TDBUpdater é a minha classe que faz atualização do banco de dados.

Como da para perceber no inicio da função cUF é uma variavel local do tipo string,o que faz parte do AcBR é o TAcBrNFe,o qual eu pretendo usar para ler XML e importar a nfe no ERP que sou desenvolvedor.

E sobre a minha outra dúvida que postei aqui mesmo sobre a leitura das tags de ICMS (ICMS00,ICMS20,etc)?

O Componente unifica isso ou teria que ser verificado a existencia de cada tag.

Agradeço pela atenção.

Postado (editado)

Obrigado clever-x pela ajuda,mas ainda falta o outro erro.

procedure TDBUpdater.AtualizaXML(Arquivo : string);
var
  nfe : TAcBrNFE;
  i : integer;
  _nfeid,_emit_cnpj,_emit_nome,_emit_fantasia,_emit_ie,_dest_cnpj,_dest_nome,_dest_fantasia,_dest_mail,_cUF,_cNF,_natOp,_indPag,_cMod,_serie,_nNf,_cMunfg,_tpImp,_tpEmis,_cDv,_tPamb,_finNfe,_procEmi,_verProc : string;
  prod_nome,prod_ean : string;
begin
  nfe := TAcBrNFE.Create(nil);
  nfe.NotasFiscais.LoadFromFile(arquivo);
  //DADOS DO CABEÇALHO
  //-- infNFe
  _nfeid := ExtractFileName(arquivo);
  _cUF := nfe.NotasFiscais.Items[0].NFe.infNFe.cUF;
  _cNF := nfe.NotasFiscais.Items[0].NFe.infNFe.cNF;
  _natOp := nfe.NotasFiscais.Items[0].NFe.infNFe.natOp;
  _indpag := nfe.NotasFiscais.Items[0].NFe.infNFe.indpag;
  _cMod := nfe.NotasFiscais.Items[0].NFe.infNFe.cMod;
  _serie := nfe.NotasFiscais.Items[0].NFe.infNFe.serie;
  _cEmi := nfe.NotasFiscais.Items[0].NFe.infNFe.cEmi;
  _cSaiEnt := nfe.NotasFiscais.Items[0].NFe.infNFe.cSaiEnt;
  _tpNf := nfe.NotasFiscais.Items[0].NFe.infNFe.tpNf;
  _cMunfg := nfe.NotasFiscais.Items[0].NFe.infNFe.cMunfg;
  _tpImp := nfe.NotasFiscais.Items[0].NFe.infNFe.tpImp;
  _tpEmis := nfe.NotasFiscais.Items[0].NFe.infNFe.tpEmis;
  _cDV := nfe.NotasFiscais.Items[0].NFe.infNFe.cDV;
  _tpAmb := nfe.NotasFiscais.Items[0].NFe.infNFe.tpAmb;
  _finNFe := nfe.NotasFiscais.Items[0].NFe.infNFe.finNFe;
  _procEmi := nfe.NotasFiscais.Items[0].NFe.infNFe.procEmi;
  _verProc := nfe.NotasFiscais.Items[0].NFe.infNFe.verProc;
  //-- Emit
  _emit_cnpj := nfe.NotasFiscais.Items[0].NFe.Emit.CNPJ;
  _emit_nome := nfe.NotasFiscais.Items[0].NFe.Emit.xNome;
  _emit_fantasia := nfe.NotasFiscais.Items[0].NFe.Emit.xFant;
  _emit_ie := nfe.NotasFiscais.Items[0].NFe.Emit.IE;
  //-- Dest
  _dest_cnpj := nfe.NotasFiscais.Items[0].NFe.Dest.CNPJ;
  _dest_nome := nfe.NotasFiscais.Items[0].NFe.Dest.xNome;
  _dest_fantasia := nfe.NotasFiscais.Items[0].NFe.Dest.xFant;
  _dest_ie := nfe.NotasFiscais.Items[0].NFe.Dest.IE;

Build Messages

[Error] UDBUpdater.pas(61): Undeclared identifier: 'cUF'
[Error] UDBUpdater.pas(62): Undeclared identifier: 'cNF'
[Error] UDBUpdater.pas(63): Undeclared identifier: 'natOp'
[Error] UDBUpdater.pas(64): Undeclared identifier: 'indpag'
[Error] UDBUpdater.pas(65): Undeclared identifier: 'cMod'
[Error] UDBUpdater.pas(66): Undeclared identifier: 'serie'
[Error] UDBUpdater.pas(67): Undeclared identifier: '_cEmi'
[Error] UDBUpdater.pas(67): Undeclared identifier: 'cEmi'
[Error] UDBUpdater.pas(68): Undeclared identifier: '_cSaiEnt'
[Error] UDBUpdater.pas(68): Undeclared identifier: 'cSaiEnt'
[Error] UDBUpdater.pas(69): Undeclared identifier: '_tpNf'
[Error] UDBUpdater.pas(69): Undeclared identifier: 'tpNf'
[Error] UDBUpdater.pas(70): Undeclared identifier: 'cMunfg'
[Error] UDBUpdater.pas(71): Undeclared identifier: 'tpImp'
[Error] UDBUpdater.pas(72): Undeclared identifier: 'tpEmis'
[Error] UDBUpdater.pas(73): Undeclared identifier: 'cDV'
[Error] UDBUpdater.pas(74): Undeclared identifier: 'tpAmb'
[Error] UDBUpdater.pas(75): Undeclared identifier: 'finNFe'
[Error] UDBUpdater.pas(76): Undeclared identifier: 'procEmi'
[Error] UDBUpdater.pas(77): Undeclared identifier: 'verProc'
[Error] UDBUpdater.pas(79): Undeclared identifier: 'CNPJ'
[Error] UDBUpdater.pas(84): Undeclared identifier: 'CNPJ'
[Error] UDBUpdater.pas(86): Undeclared identifier: 'xFant'
[Error] UDBUpdater.pas(87): Undeclared identifier: '_dest_ie'
[Fatal Error] UFrmMain.pas(7): Could not compile used unit 'UDBUpdater.pas'
 

Sei que deu uns erros porque eu renomeei as variáveis mas é pra deixar claro que o erro não está dando por causa das minhas variáveis declaradas.

E pelo que eu percebi tem moderador que lê o tópico(porque deu warn) e não responde,não sei se é propositalmente ou falta de conhecimento sobre o componente.

Agradeço a todos que LEEM o tópico e RESPONDEM tentando ajudar.

Editado por rdxdt
  • Moderadores
Postado

Sei que deu uns erros porque eu renomeei as variáveis mas é pra deixar claro que o erro não está dando por causa das minhas variáveis declaradas.

E pelo que eu percebi tem moderador que lê o tópico(porque deu warn) e não responde,não sei se é propositalmente ou falta de conhecimento sobre o componente.

Agradeço a todos que LEEM o tópico e RESPONDEM tentando ajudar.

Moderador existe para deixar o fórum em ordem e não pra responder gente FOLGADA.
  • Curtir 1
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
  • Moderadores
  • Solution
Postado

Primeiro vamos deixar claro o papel do moderador de um fórum, o trabalho dele é ler os tópicos avaliando posts que estão indo contra as regras do fórum, flooding é contra as regras e o Juliomar lhe alertou sobre isso, não necessariamente ele é obrigado a responder, até porque pode não entender do assunto, mas a obrigação dele como moderador e ler cada post, cada tópico, cada fórum, procurando coisas que vão contras as regras, isso é feito para manter um mínimo de organização no fórum facilitando a vida de todo mundo. Não entenda mal, mas você fez flooding e ele lhe alertou, somente isso.

 

 

O seu problema está bem claro e o compilador já deu a dica, os identificadores não estão declarados isso porque essas propriedades não existem no componente ou você está chamando de forma incorreta, por você está chamando as propriedade sempre a partir do caminho: nfe.NotasFiscais.Items[0].NFe.infNFe.XXXX, essas propriedades não existem ai neste caminho, infNFe não tem essas propriedades.

 

Veja no demo do ACBrNFe como chamar corretamente as propriedades que necessita, basicamente a forma como está usando o componente está errada, simples assim.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Postado (editado)

Primeiro vamos deixar claro o papel do moderador de um fórum, o trabalho dele é ler os tópicos avaliando posts que estão indo contra as regras do fórum, flooding é contra as regras e o Juliomar lhe alertou sobre isso, não necessariamente ele é obrigado a responder, até porque pode não entender do assunto, mas a obrigação dele como moderador e ler cada post, cada tópico, cada fórum, procurando coisas que vão contras as regras, isso é feito para manter um mínimo de organização no fórum facilitando a vida de todo mundo. Não entenda mal, mas você fez flooding e ele lhe alertou, somente isso.

 

 

O seu problema está bem claro e o compilador já deu a dica, os identificadores não estão declarados isso porque essas propriedades não existem no componente ou você está chamando de forma incorreta, por você está chamando as propriedade sempre a partir do caminho: nfe.NotasFiscais.Items[0].NFe.infNFe.XXXX, essas propriedades não existem ai neste caminho, infNFe não tem essas propriedades.

 

Veja no demo do ACBrNFe como chamar corretamente as propriedades que necessita, basicamente a forma como está usando o componente está errada, simples assim.

Agradeço pela resposta válida e haveria alguma documentação da estrutura do componente? 

Algum manual ou algo do tipo?

 

 

E sobre moderação, bom em todos os fóruns em que fui moderador,e inclusive o que eu administro ,os moderadores tem embasamento sobre o conteúdo,e respondem independentemente da pessoa ser folgada ou não,agora eu cheguei a suspeitar de que quem tem conhecimento deixa esperando afim de forçar as pessoas a pagarem.

Além do mais eu nunca chamaria um "cliente" em potencial de folgado.

E Flooding é quando se posta de maneira repetida num curto espaço de tempo,no caso eu esperei o tópico cair (e foi uns 2 dias se não me engano para mandar um up),ou eu deveria abrir um novo tópico para o mesmo ficar em cima,porque eu dúvido que alguém vai ir até a 5ª página para ler.

 

Mas agradeço mesmo ao Régis Silveira por responder ,e também ao colega clever-x que me informou sobre o ICMS.

Editado por rdxdt
  • Moderadores
Postado

Colega, não vou iniciar uma discussão contigo a respeito de como se comportar ou não em um fórum, veja, você fez algo contra as regras do deste fórum, lhe alertaram, somente isso, te passei educadamente a explicação sobre isso e você preferiu agir com sarcasmo.

 

Quanto a forçar o pagamento, somos pouco mais de 10 usuários para responder a mais de 7.000, desculpe se eu ou qualquer outro que passa o dia neste fórum respondendo as várias perguntas postadas não conseguimos responder a sua pergunta dentro tantas em tempo considerado hábil para você, ninguém aqui força pagamento, trabalhamos todos de graça, doando conhecimento e tentando ajudar quem precisa. o ACBrSAC é somente uma forma de pagar as despesas do projeto, fórum e tudo o mais, não vou entrar em discussão quanto a isso.

 

Voltando a sua dúvida, lhe respondi educadamente e com tudo que é necessário para você fazer o que você quer, infelizmente tenho que concordar com o André já que uma simples visualizada no Demo do ACBrNFe e lendo a resposta que lhe passei seria suficiente para sanar o problema, mas mais uma vez você preferiu agir com sarcasmo esperando uma resposta pronta, agora sim é que dificilmente alguém vai lhe ajudar, visto a forma que está tratando quem tenta lhe ajudar.

  • Curtir 1

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Este tópico foi criado há 4155 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...