Ir para conteúdo
  • Cadastre-se

dev botao

Ajuda com importação de lote no xml


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

Recommended Posts

Boa tarde pessoal, possuo uma rotina que importa o xml da NFe pra dentro do sistema, mas queria pegar também os campos de rastro que são os lotes e cadastrar junto, já bati e não consegui importar, alguém poderia me ajudar nessa rotina? Segue abaixo minha rotina, quem desejar posso colocar ela completa pra ajudar também

 

 

procedure TForm1.Button2Click(Sender: TObject);
var
vXMLDoc: TXMLDocument;
NodePai,NodeSec,NodeTmp,NodeImp,NodeImposto, NodePaiLote, NodeLote: IXMLNode;
nome, codigo, estado, nota, natop, modelo, serie, emissao: WideString;
tiponf,municipio,cnpj,nomeemit,fantasia,endereco,numero: WideString;
complemento,bairro,cep,fone,ie,base,icms,basest,valorst,ean: WideString;
VNlote:WideString;
valorprod,frete,seguro,desconto,valorii,valoripi,valorpis: WideString;
valorcofins,outros,totalnota,ncm,cfop,unidadecom,quantidadecom:WideString;
unitariocom,valorproduto,unidadetrib,quantidadetrib,unitariotrib:WideString;
origem,cst,cstpis,ppis,basepis,valorpisprod,cstcofins: WideString;
basecofins,pcofins,valorcofinsprod: WideString;
diretorio:string;

chaveacesso,protocolo,datahora,motivo: string;
i : integer;
begin
i := 1;

  if OpenDialog1.Execute then
  begin
    // Cria a variável baseada no TXMLDocument
    vXMLDoc := TXMLDocument.Create(self);
    diretorio := OpenDialog1.FileName;
    // Le conteúdo do arquivo XML informado
    vXMLDoc.LoadFromFile(diretorio);

    // Aqui eu peço para encontrar a primeira ocorrencia da Tag >
    NodePai :=  vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode('infNFe');

    //lendo os campos da nota fiscal
    NodeSec := NodePai.ChildNodes.FindNode('ide');
    NodeSec.ChildNodes.First;

    memo_retorno.clear;

    // Esse nó vai ser usado no LOOP
    NodeSec := NodePai.ChildNodes.FindNode('det');
    // Posiciona o primeiro elemento encontrado
    NodeSec.ChildNodes.First;
    memo_retorno.lines.add('{ ************************ Detalhes da NFe -(Produtos e Impostos) ************************ }');
    memo_retorno.lines.add('');
    memo_retorno.lines.add('{ ************************ Detalhes da NFe -(Produtos) ************************ }');
    repeat
      //referencia a tag dentro de
      NodeTmp := NodeSec.ChildNodes['prod'];
      NodeTmp.ChildNodes.First;

      //pega os dados que vc quiser dentro da tag
      nome := NodeTmp.ChildNodes['xProd'].text;
      codigo := NodeTmp.ChildNodes['cProd'].text;
      ean := NodeTmp.ChildNodes['cEAN'].text;

      memo_retorno.lines.add(nome);
      memo_retorno.lines.add(codigo);
      memo_retorno.lines.add(ean);
      memo_retorno.lines.add('');

      //Abrir o lote
      NodeSec := NodePai.ChildNodes.FindNode('rastro');
      NodeSec.ChildNodes.First;
      //NodePaiLote.ChildNodes.First;
      //NodeTmp.ChildNodes.First;
      //repeat
        //NodeTmp := NodeTmp.ChildNodes['rastro'];
        //VNlote := NodeTmp.ChildNodes['nLote'].Text;
        //ShowMessage(VNlote);
     // until nome = '';
      //Abrir o lote


      //vai para a proxima ocorrência (se houver)
      NodeTmp := NodeTmp.NextSibling;

      // vai para a proxima ocorrência
      NodeSec := NodeSec.NextSibling;
      inc(i);
      // AdvGridNfe.RowCount := AdvGridNfe.RowCount + 1;
    until nome = '';

    memo_retorno.lines.add( '' );
    { ************************ Fim do Detalhes da NFe - (Produtos e Impostos)
    ************************ }

    // ou para ler o arquivo do recibo da NFe
    // Aqui eu peço para encontrar a primeira ocorrencia da Tag >
  end;


  memo_retorno.setfocus;
end;

 

image.png.2c2b2cb3d65339bdd2e7ab6796189431.png

Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution

Porque tu usa o XMLDocument?

tu sabe que pode carregar o xml no ACBrNFe e ler os dados na classe NostaFiscais?

ACBrNFe.NotasFiscais.Clear;

ACBrNFe.NotasFiscais.LoadFromFile(XXX);

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

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

 

Link para o comentário
Compartilhar em outros sites

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