Esse artigo tem por objetivo auxiliar no entendimento para interpretação da documentação da NF-e referente ao “layout” no Manual de Integração do Contribuinte. A idéia dessa matéria surgiu a partir de alguns colegas que visitaram o blog e, estavam com dificuldades em entender o conceito ali atribuído para a montagem do XML.

Vamos começar de “trás para frente”, na minha opinião, costuma ser sempre mais fácil ver o exemplo pronto e depois procurar entendê-lo. No exemplo abaixo destacamos apenas a parte do XML da NF-e correspondente aos dados dos produtos e totais da NF-e.

Vamos analisar o mesmo trecho na documentação do Manual de Integração e entender o posicionamento/agrupamento das “tags” dentro do XML.

Veja abaixo um Exemplo de Parte do XML de uma NF-e (detalhes produto/totais NF-e).

<det nItem="1"> 
 <prod>
  <cProd>0333103310057FISCHER</cProd>
  <cEAN>7891133005801</cEAN>
  <xProd>ABRACADEIRA C/PREGO FMX 6 BR - 580</xProd>
  <CFOP>5102</CFOP>
  <uCom>PC</uCom>
  <qCom>1.0000</qCom>
  <vUnCom>3.5760</vUnCom>
  <vProd>3.58</vProd>
  <cEANTrib>7891133005801</cEANTrib>
  <uTrib>PC</uTrib>
  <qTrib>0.0000</qTrib>
  <vUnTrib>0.0000</vUnTrib>
  </prod> 
  <imposto>
  <ICMS>
   <ICMS60>
    <orig>0</orig>
    <CST>60</CST>
    <vBCST>0.00</vBCST>
    <vICMSST>0.00</vICMSST>
   </ICMS60>
  </ICMS>
  <PIS> 
   <PISAliq>
    <CST>01</CST>
    <vBC>3.58</vBC>
    <pPIS>3.00</pPIS>
    <vPIS>0.11</vPIS>
   </PISAliq>
  </PIS>
  <COFINS>
   <COFINSAliq>
    <CST>01</CST>
    <vBC>3.58</vBC>
    <pCOFINS>0.65</pCOFINS>
    <vCOFINS>0.02</vCOFINS>
   </COFINSAliq>
  </COFINS>
  </imposto>
</det>
<total>
 <ICMSTot>
  <vBC>0.00</vBC>
  <vICMS>0.00</vICMS>
  <vBCST>0.00</vBCST>
  <vST>0.00</vST>
  <vProd>3.58</vProd>
  <vFrete>0.00</vFrete>
  <vSeg>0.00</vSeg>
  <vDesc>0.00</vDesc>
  <vII>0.00</vII>
  <vIPI>0.00</vIPI>
  <vPIS>0.11</vPIS>
  <vCOFINS>0.02</vCOFINS>
  <vOutro>0.00</vOutro>
  <vNF>3.58</vNF>
 </ICMSTot>
</total>

Caso ainda não tenha em mãos (ou tela) o manual de integração (V3.00 atual), hora de fazê-lo, abra a página 102, inciamos no item “H” (detalhamento de Produtos e Serviços da NF-e): Repare as colunas de dados onde, para a montagem do XML (denominação e agrupamento correto das tags que é o nosso foco aqui) vamos nos concentrar nas colunas: ID, Campo, Ele, Pai e Ocorrência.

Repare no gupo “H” temos duas linhas que indicam a primeira: “det” indica uma TAG de grupo “G” (Elemento de Grupo) e a segunda “nitem” indica um attributo “A” (Elemento attributo do elemento anterior).

Vamos montando a partir daqui o XML do nosso exemplo acima:

<det nitem="1"> 
...
</det>

Repare que todo tag de grupo deve ter uma tag com o mesmo nome fechando o grupo acrescentando antes do nome a “/” (barra normal).

Continuando no manual ainda na página 102: Repare agora nas linhas do grupo “I” (Produtos e Serviços da NF-e): começa com “prod” uma tag de grupo “G” seguida de várias tags de dados do produto tipo “E” (elemento), preste atenção também na coluna “Pai” que indica qual o grupo “pai” de cada elemento, ou seja dentro de qual grupo os elementos devem ser posicionados.

O grupo “Pai” é o “prod”, que é “filho” de “det” então ele fica encaixado dentro de “det” como abaixo:

<det nItem="1">
  <prod>
        ....
 </prod>
</det>

Agora que já encaixamos o grupo “prod” dentro do seu grupo pai “det” vamos encaixar o restante dos campos de dados do produto; seguindo sempre a mesma linha de raciocínio, vamos voltar no Manual de Integração e “ler” os outros dados (cProd, cEAN, xProd, NCM, EXTIPI, genero, …).

Aqui vamos aproveitar para explicar a coluna “ocorrência”. repare que nesse coluna, está contida a informação de quantas vezes o registro (grupo, elemento, etc) deve ou pode existir dentro do arquivo XML da NF-e. Repare na linha da tag “prod” a coluna ocorrência indica (1-1); ou seja, essa tag somente ocorre uma vez dentro do grupo pai “det”.

Voltando um pouco mais lendo a linha da tag “det” percebemos que a ocorrência indica 1-990; ou seja, a “det” pode ocorrer até 990 vezes dentro do XML (isso é fácil de observar numa nota com mais de um item, pois, temos que ter uma ocorrência “det” para cada item da nota).

Repare na linha da tag “cProd, CEAN, xProd” a ocorrência indica “1-1” ou seja, essa tag é obrigatória e deve aparecer apenas uma vez dentro do grupo pai (“prod”).

Repare na linha da tag “NCM”, “EXTIPI”, “genero” a ocorrência indica “0-1” ou seja, essa tag pode ser suprimida (caso seu documento não contenha essas informações), mas, se houver, ela deve aparecer apenas uma vez dentro do grupo pai (“prod”).

Ainda no grupo I, Repare no item 117 “DI” (Tag da declaração de importação), a ocorrência indica “0-N” ou seja, esse grupo de tags pode ser suprimido se for o caso, mas, se existir então ela pode ocorrer quantas vezes necessário dentro da tag “prod”.

Vamos ver como fica o nosso “XML” incluindo essas tags agora:

<det nItem="1"> 
 <prod>
  <cProd>0333103310057FISCHER</cProd>
  <cEAN>7891133005801</cEAN>
  <xProd>ABRACADEIRA C/PREGO FMX 6 BR - 580</xProd>
  <CFOP>5102</CFOP>
  <uCom>PC</uCom>
  <qCom>1.0000</qCom>
  <vUnCom>3.5760</vUnCom>
  <vProd>3.58</vProd>
  <cEANTrib>7891133005801</cEANTrib>
  <uTrib>PC</uTrib>
  <qTrib>0.0000</qTrib>
  <vUnTrib>0.0000</vUnTrib>
  </prod>
  .....
</det>

Repare que inserimos no nosso XML apenas as tags com ocorrência “1-1” que é o suficiente para a identicação completa dos dados do tipo de produto que estamos comercializando.

Continuando no manual de integração nos deparamos com o grupo “J” (Detalhamento Específico de Veículos Novos); como não é o nosso caso e a ocorrência é “0-1”, simplesmente ignoramos todo o conteúdo desse grupo de tags. Fizemos mesmo para o grupo “K”,”L” e “L1”. Mas, se for o seu caso, basta seguir a mesma linha de raciocínio: J, K e L têm como pai “I01” ou seja a tag “prod” (então tem que ser posicionados dentro dela na sequência).

Prosseguindo no manual de integração temos agora o grupo “M” (Tributos incidentes no Produto ou Serviço). Esse grupo é aberto com a tag de grupo “imposto” com ocorrência obrigatório (1-1).

Agora já estamos ficando “craques” no processo, vou resumir um pouco. No nosso exemplo, de todos os grupos de tags dentro da tag “imposto” usamos apenas 03 grupos: “ICMS”, “PIS” e “COFINS”, repare que as outras tags foram suprimidas do nosso arquivo porque não eram aplicáveis de acordo com os dados do produto e puderam ser suprimidas porque são do tipo de ocorrência “0-1”.

Uma vista “por cima” do grupo imposto, do nosso exemplo:

<imposto>
 <ICMS>
 </ICMS>
 <PIS>
 </PIS>
 <COFINS>
 </COFINS>
</imposto>

A tag de grupo “ICMS” contêm uma outra tag de grupo “ICMS60” porque a situação tributária desse produto é “60” (veja tabela de situação tributária conv.ICMS para mais informações). Completando agora o XML com os dados do imposto fica assim:

<det nItem="1"> 
 <prod>
  <cProd>0333103310057FISCHER</cProd>
  <cEAN>7891133005801</cEAN>
  <xProd>ABRACADEIRA C/PREGO FMX 6 BR - 580</xProd>
  <CFOP>5102</CFOP>
  <uCom>PC</uCom>
  <qCom>1.0000</qCom>
  <vUnCom>3.5760</vUnCom>
  <vProd>3.58</vProd>
  <cEANTrib>7891133005801</cEANTrib>
  <uTrib>PC</uTrib>
  <qTrib>0.0000</qTrib>
  <vUnTrib>0.0000</vUnTrib>
  </prod> 
  <imposto>
  <ICMS>
   <ICMS60>
    <orig>0</orig>
    <CST>60</CST>
    <vBCST>0.00</vBCST>
    <vICMSST>0.00</vICMSST>
   </ICMS60>
  </ICMS>
  <PIS> 
   <PISAliq>
    <CST>01</CST>
    <vBC>3.58</vBC>
    <pPIS>3.00</pPIS>
    <vPIS>0.11</vPIS>
   </PISAliq>
  </PIS>
  <COFINS>
   <COFINSAliq>
    <CST>01</CST>
    <vBC>3.58</vBC>
    <pCOFINS>0.65</pCOFINS>
    <vCOFINS>0.02</vCOFINS>
   </COFINSAliq>
  </COFINS>
  </imposto>
</det>

Com isso completamos a tag do grupo “H”.

Repare que pulamos a rag “infAdProd” porque não tinhamos nenhuma informação adiciona a ser inclusa para esse produto e pudemos fazer isso porque ela é uma tag de ocorrência “0-1”.

Para concluir nosso exemplo continuamos a leitura do manual de integração agora no grupo “W” (Valores Totais da NF-e); esse grupo tem como pai “A01” que representa a tag de grupo “infNFe” e portanto deve ser posicionado no nivel exatamente abaixo de “infNFe”.

Nesse grupo temos apenas um registro “pai” o “total” (W01) e três tags de grupo “filhas” (“ICMSTot” = W02,”ISSQNtot” = W17 e “retTrib” = W23) restante são elementos posicionados dentro das respectivas tag “pai”.

Um exemplo do esqueleto “visto por cima” do grupo total do nosso exemplo seria:

<total>
  <ICMSTot>
  </ICMSTot>
</total>

No nosso exemplo as tags de grupo “ISSQNtot” e “retTrib” foram suprimidas por não conterem informações e, podemos fazer isso porque elas são do tipo de ocorrência “0-1”.

Com isso concluímos esse artigo o qual desejo que possa ser util à todos que tiveram ou têm dificuldades nesse modelo da documentação do Manual de Integração.

Sds,

Tags: , ,