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,

Posts Relacionados

Tags: , ,



26 Comentários to “Interpretando o “layout” da NF-e a partir do Manual de Integração”

  1. Emanuel Gadelha | agosto 5th, 2009 at 17:51

    Perfeito Caio! Novamente você tá de Parabéns.. eu fui uma das pessoas que pediu esse artigo! Tá muito bem explicado, creio que vá ajudar muita gente que está iniciando! Gostei do detalhe da ocorrencia, muito importante!

  2. Ronaldo | agosto 8th, 2009 at 9:46

    bom dia Caio, primeiro obrigado por postar todas estas matérias estão sendo de grande ajuda.
    Tenho uma dúvida, no novo manual de março/2009, não sei se entendi, vai ter que constar no Danfe o campo com o número do protocolo de autorização de uso? e este deve ir no lugar do campo onde é a chave de acesso? será que vc poderia explicar como ficaria?
    Att: Ronaldo..

  3. Kátia de Oliveira | agosto 10th, 2009 at 13:26

    Parabéns por esta explicação. Obrigada por me ajudar, é a primeira vez q tenho que trabalhar com xml. consegui entender bem a estrutura apos esta esplanação.

  4. admin | agosto 11th, 2009 at 14:55

    Olá Ronaldo,

    Desculpa pela demora em lhe responder. O número do protocolo de autorização de uso não é impresso no DANFE, apenas a chave de acesso da NF-e (juntamente com o código de barras).

    No arquivo de Distribuição da NF-e autorizada para o destinatário, esse sim, deve constar os dados do protocolo de autorização de uso.

    Sds, Caio

  5. Ronaldo | agosto 11th, 2009 at 16:44

    Obrigado Caio, o que eu não estou entendendo está na página 76 do manual, item 6.3, “No quadro que se segue, substituindo a descrição Protocolo de Autorização de Uso…” ?
    Desde de já agradeço.
    Att: Ronaldo

  6. Ronaldo | agosto 12th, 2009 at 6:53

    Caio,
    veja também esta informação que vi neste blog:
    http://provapraticavb.blogspot.com/2009/05/manual-30-codigo-de-barras-para.html

  7. Caio | agosto 12th, 2009 at 9:36

    Olá Ronaldo,

    A informação procede, repare que esse código de barras (Dados da NF-e) somente é impresso quando o DANFE for um impresso em contingência (tpEmis 1).

    Só não tenho certeza ainda se a impressão do numero do protocolo de autorização de uso será obrigatório no DANFE normal.

    Sds,

  8. Marcio Souza Duarte | agosto 19th, 2009 at 10:38

    Parabéns Caio pelas dicas, principalmente na ocorrência, que passa despercebido no layout e muita gente tem dúvida aos campos obrigatórios, e também por todo o empenho em relação a NFe.

  9. admin | agosto 22nd, 2009 at 10:31

    Olá Ronaldo,

    Leia a nota técnica publica no portal nacional sobre os ajustes no DANFE. O número do protocolo/data e hora da aprovação deverão ser impressos sim no DANFE a partir de Setembro/2009.

    Sds,

  10. Danny | agosto 28th, 2009 at 13:38

    Olá Caio, o conteúdo de seu site é excelente.

    Estou utilizando o projeto ACBrNFe e estou com dificuldade pra declarar o CST do imposto COFINS antes de gerar o XML.

    Pra declarar o ICMS utilizo a variável cst01, no caso do IPI utilizo ipi01 e pro PIS o pis01. Mas não consigo achar a variável pra declaração do COFINS.

    Será que pode me ajudar ?
    Agradeço antecipadamente.

    Danny

  11. Danny | agosto 28th, 2009 at 14:03

    Desculpa, acabei de achar a solução pro meu problema.

    Declara-se cof01, cof02, cof03, cof04, cof06, cof07, cof08, cof09 e cof99, dependendo do código de cada estabelecimento.

    Obrigado.

    Danny

  12. admin | agosto 28th, 2009 at 14:17

    Olá Danny,

    Segue a mesma linha de raciocínio: cof01, cof02,…, são constantes pré declaradas através de funções disponíveis em (/ACBrComum/pcnConversao.pas).

    Sds, Caio

  13. Sanches | outubro 6th, 2009 at 13:23

    Amigos…. nao encontrei a tag IPITrib em oque faço… ja tentei de tudo

    deveria aparecer em Acbrnfe1.Norasfiscais.nfe.items[0].dest.items[0].impostos.ipi.ipitrib…. mas nao aparece…. oque faço???

  14. Dário | novembro 18th, 2009 at 14:22

    Olá,

    O seu site é muito útil, mas confesso que não entendo quase nada porque sou leigo. Acho esse negócio de sistema de NFe muito complexo. Li no site http://www.nfe.net.br que a Sefaz oferece o software gratuitamente para quem emite poucas notas fiscais (que é o meu caso). Você sabe se esse software é bom?

    Obrigado,

    Dário

  15. admin | novembro 18th, 2009 at 14:49

    Olá Dário,

    O software da SEFAZ é um verdadeiro “quebra galho”, diria que se forem muito poucas notas dá pra usar. Vc. vai ter fazer um programinha para a importação de produtos para esse programa e outro para importar os dados das NF-e emitidas para o seu. Eu diria que é inviável hoje; visto que a implementação das rotinas da NF-e ficaram muito facilitadas com componentes como o: NFE_UTIL.dll e ACBR NF-e (os links e muita informação vc encontra aqui mesmo), vai dar menos trabalho e o resultado, no final, é incomparável!.

    Sds

  16. DEILSON | novembro 20th, 2009 at 14:20

    boa tarde! estou com o seguinte problema quando o numero do item esta assim nao consigo importar a nota como faço?
    det nItem=01

  17. admin | novembro 25th, 2009 at 13:08

    Olá Deilson,

    Repare que o atributo “nItem” da tag “det” é do tipo numérico, então, se o valor está igual à “01″ no XML; então está errado e a NF-e não será validada!. Para os campos numéricos vc. deve desconsiderar o preenchimento de zeros à esquerda.

    Sds

  18. Lucas | dezembro 11th, 2009 at 15:29

    Boa tarde caro Caio.

    Percebi que na coluna ELE, existem outros valores além dos citados aqui. Como por exemplo: ID, RC, CG, CE.

    O que seriam estes? E melhor, onde eu poderia encontrar uma documentação que explicasse esses termos utilizados no Schema?

    Obrigado.

    Atenciosamente,

    Lucas

  19. Henrique | janeiro 27th, 2010 at 13:07

    Olá caio, tenho uma empresa e preciso inpalntar urtentimente o NF-e, mas entendo bem pouco de programação e gostaria de fazer meu proprio NF-e, Então gostaria de saber o que é preciso para que meu programa seja válido!? ou se tem alguma “chave de acesso” emitido pelo MInisterio da Fazenda, ou até mesmo um link especial?!

    desde já agradeço

    espero resposta obrigado

  20. admin | janeiro 27th, 2010 at 14:36

    Olá Henrique,

    A implementação da NF-e hoje nos sistemas proprietários está mais fácil em função de uma grande variedade de componentes disponíveis, como a NFe_UTIL.dll o ACBrNFe, etc. Porém, existe um prazo mínimo necessário para realizar os ajustes, veja o tópico “Primeiros passos para o projeto NF-e” e, nesse caso, vc vai precisar de um programador com uma certa experiência para tentar realizar o projeto em tempo hábil!.

    Sds

  21. Thiago | fevereiro 19th, 2010 at 21:23

    Ola Caio,
    eu estou começando a estudar a nfe para implantar na minha empresa e surgiu a duvida referente ao codigo do produto. Eu trabalho com produtos “sobre medida”, cada linha de produto tem muita variação logo eu teria que criar um codigo a cada produto diferente? No caso se eu utilizar um mesmo codigo para um mesmo produto porem contendo descrição e preço diferentes estaria violando alguma regra?

    Abraço.

  22. admin | fevereiro 20th, 2010 at 8:16

    Olá Thiago,

    É comum o uso da alteração da descrição do produto, na hora da emissão da NF, temos alguns casos semelhantes, Ex.: licitações, onde a descrição do produto deve ser exatamente igual à impressa no documento licitado. Acredito que vc. não terá problemas, desde que a marca não seja diferente. Se vc já usou por exemplo, o validador Sintegra para o registro fiscal, repare que ele acusa erro no arquivo quando vc. tem dois produtos de marcas diferentes com o mesmo código; no validador do SPED eu não observei ainda, mas deve dar problemas também.

    Sds

  23. Thiago | fevereiro 20th, 2010 at 18:58

    Ok, obrigado pela atenção.

  24. berdam | fevereiro 22nd, 2010 at 15:30

    Olá caio, tudo bem, venho agradecer por aqui suas ajudas, que obtive por meio do site, várias delas ajudaram a implementar o projeto de NFe no sistema que trabalho.

    Tenho outra dúvida, estou tentando utilizar o comando de ‘inutilização da numeração’ porém o xml de retorno do webservice é o seguinte “Rejeicao: Falha no schema XML”

    Eu acho estrnho pois a nota não foi enviada, portanto não possui um xml, apenas quero inutilizar o nr da mesma e acontece esse problema.

    Obrigado desde já.

  25. Eduardo | fevereiro 23rd, 2010 at 11:50

    Olá Caio,

    Poderia me ajudar, estou com um problema em um cliente que está usando o certificado e-CNPJ da Serasa, o mesmo retorna o famoso “Rejeicao: Falha no schema XML”, pois bem, acessei o site da sefaz.rs e o mesmo me retornou o seguinte erro abaixo:

    O elemento ‘KeyInfo’ no espaço para nome ‘http://www.w3.org/2000/09/xmldsig#’ apresenta elemento filho ‘X509Data’ no espaço para nome ‘http://www.w3.org/2000/09/xmldsig#’ inválido

    Utilizando o certificado A1 da Serasa funciona perfeitamente, pois tenho 2 clientes utilizando o A1 da Serasa é funciona belezinha…

    Já teve este problema ?

  26. Adalberto | abril 9th, 2010 at 12:50

    Olá Caio!

    Estou desenvolvendo uma ferramenta para geração de NF-e e estou com baita duvida. Aliás, entre tantas. Mas vamos por parte. Preciso gerar a chave de acesso da NF e eu não sei de onde vem o valor que é colocado na tag cNF. Nos manuais dizem q é um código aleatorio. Mas como eu gero este código? É um numero sequencial q eu mesmo controlo? Enfim. preciso desta tag pois ela faz parte da chave. Desde já lhe agradeço e parabenizo pelo seu portal.

Faça um comentário