Essa segunda parte do tópico “Dados x XML como começar” foi criada para atender à uma demanda de usuários que têm postado dúvida para gerar o LOOP para criar os itens no XML da NF-e e, acredito que com com esses dados em mãos vai ficar mais fácil para quem está iniciando agora; segue então, o código da versão anterior com o exemplo da implementação para gerar os itens:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
procedure TfrmPrincipal.PnLerNfeClick(Sender: TObject);
var vXMLDoc: TXMLDocument;
    NodeNivelA, NodeNivelB, NodeNivelC, NodeNivelD: IXMLNode;
    nItens : integer;
begin
 
  vXMLDoc := TXMLDocument.Create(self);
  Try
  With vXMLDoc do begin
       Active := True;
       Version := '1.0';
       Encoding := 'UTF-8';
       AddChild('NFe','http://www.portalfiscal.inf.br/nfe');
       DocumentElement.Attributes['xmlns:ds'] :=
       'http://www.w3.org/2000/09/xmldsig#';
       DocumentElement.Attributes['xmlns:xsi'] :=
       'http://www.w3.org/2001/XMLSchema-instance';
       DocumentElement.Attributes['xsi:schemaLocation'] :=
       'http://www.portalfiscal.inf.br/nfe/enviNFe_v1.12.xsd';
 
       // A - Dados da Nota Fiscal eletrônica
       NodeNivelA := DocumentElement;
       // Adiciona a Tag
       NodeNivelA.AddChild('infNFe');
       // Adiciona atributo "Id" da Tag anterior
       NodeNivelA.ChildNodes['infNFe'].Attributes['Id'] := 'NFe31232131232132131231221312312312';
       // Adiciona atributo "versao" da Tag anterior
       NodeNivelA.ChildNodes['infNFe'].Attributes['versao'] :=
            '1.10';
 
       // B - Identificação da Nota Fiscal eletrônica
       NodeNivelB := NodeNivelA.ChildNodes['infNFe'];
       NodeNivelB.ChildNodes['ide'].AddChild('cUF').NodeValue := '51' ;
       NodeNivelB.ChildNodes['ide'].AddChild('cNF').NodeValue := '000001';
 
       // Exemplo Adiciona Itens
       For nItens := 1 to 2 do
       begin
         // adiciona tag <det> com attributo
         NodeNivelC := NodeNivelB.AddChild('det');
         NodeNivelB.ChildNodes.Last.Attributes['nitem'] := IntToStr(nItens);
 
         // adiciona tag <prod> à partir da tag <det>
         NodeNivelD := NodeNivelC.ChildNodes['prod'];
         NodeNivelD.AddChild('cProd').Nodevalue := IntToStr(nItens)+'121231111';
         NodeNivelD.AddChild('cEan').Nodevalue := '7891133005801';
         NodeNivelD.AddChild('xProd').Nodevalue := 'ABRACADEIRA C/PREGO FMX  6 BR - 580';
         NodeNivelD.AddChild('CFOP').Nodevalue := '5102';
         // .....
       end;
 
       //Memo4.Text := vXMLDoc.Encoding;
       vXMLDoc.SaveToFile('EnviNFe.xml');
       Memo4.Lines.LoadFromFile('EnviNFe.xml');
  end;
  finally
     vXMLDoc.Free;
  end;
end;

Tags: ,