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á 1639 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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

  • Este tópico foi criado há 1639 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...
The popup will be closed in 10 segundos...