NF-E: Gerar o DANFE a partir do conteúdo xml

8 respostas
Rafael_Nascimento

Olá, galera!

Não tenho muita experiência com NFE e gostaria de saber se alguem conhece ou poderia indicar algum utilitário, framework, ou qualquer coisa do tipo, que me auxiliasse na tarefa de gerar o DANFE a partir de um arquivo xml (NFE)? Seria algo como eu passar o conteudo xml para a rotina e ela geraria pra mim o DANFE em pdf, ou algo parecido (implementar do zero daria muito trabalho :-o )

ps: não se trata de uma aplicação para emissão de NFE, portanto não preciso estabelecer comunicação com SEFAZ, nem mexer com SSL, etc…, é apena um recurso que preciso implementar

desde já obrigado

Rafael

8 Respostas

diogoribeiro

Jasperreports e IReports ajuda você?

JoaoBluSCBR

Eu acho que tenho algo,

Você tem um xml de NFe para postar aqui, qualquer um que seja válido, daí eu faço o teste e se funcionar coloco o código aqui.

Fico no aguardo.

pedruhenrik

eu fiz um sistema de conversão nfe para danfe e estou comercializando hehehe.

utilize ireport e xpath.

att,

Rafael_Nascimento

Então, galera, eu poderia sim usar o iReport e tal, mas, como falei, nesse caso teria que começar do zero. A minhá dúvida é saber se já existe alguma ferramenta que já ofereça esse processo mais ou menos pronto, e que eu possa implementar na minha aplicação

JoaoBluSCBR, segue um exemplo de arquivo xml válido

<?xml version="1.0" encoding="utf-8" ?><nfeProc versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe Id="NFe35110693209765030539550250000363601903008693" versao="2.00"><ide><cUF>35</cUF><cNF>90300869</cNF><natOp>VENDA DE MERC ADQ DE TERC</natOp><indPag>2</indPag><mod>55</mod><serie>25</serie><nNF>36360</nNF><dEmi>2011-06-16</dEmi><dSaiEnt>2011-06-16</dSaiEnt><hSaiEnt>00:00:00</hSaiEnt><tpNF>1</tpNF><cMunFG>3505708</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>3</cDV><tpAmb>1</tpAmb><finNFe>1</finNFe><procEmi>0</procEmi><verProc>GNFe214 PointSystems</verProc></ide><emit><CNPJ>93209765030539</CNPJ><xNome>WMS SUPERMERCADOS DO BRASIL LTDA</xNome><enderEmit><xLgr>ESTRADA DE ACESSO JANDIRA</xLgr><nro>1400</nro><xCpl>RODOV CASTELO BRANCO</xCpl><xBairro>FAZ.ITAQUITI</xBairro><cMun>3505708</cMun><xMun>BARUERI</xMun><UF>SP</UF><CEP>06442130</CEP><cPais>1058</cPais><xPais>Brasil</xPais></enderEmit><IE>206259596115</IE><CRT>3</CRT></emit><dest><CPF>[telefone removido]</CPF><xNome>EDWARD SHAPPIRO</xNome><enderDest><xLgr>RUA BENEDITO APARECIDO BIANCHI</xLgr><nro>258</nro><xBairro>JARDIM FELICIDADE</xBairro><cMun>3549805</cMun><xMun>SAO JOSE DO RIO PRETO</xMun><UF>SP</UF><CEP>15052361</CEP><cPais>1058</cPais><xPais>BRASIL</xPais><fone>[telefone removido]</fone></enderDest><IE/><email>[email removido]</email></dest><det nItem="1"><prod><cProd>110255</cProd><cEAN>7897033017982</cEAN><xProd>RELOGIO DE PULSO DIGITAL MASC.ESPORTIVO 1798391M</xProd><NCM>91021190</NCM><CFOP>5102</CFOP><uCom>PC</uCom><qCom>1.0000</qCom><vUnCom>129.[telefone removido]</vUnCom><vProd>129.00</vProd><cEANTrib>7897033017982</cEANTrib><uTrib>PC</uTrib><qTrib>1.0000</qTrib><vUnTrib>129.[telefone removido]</vUnTrib><vDesc>10.00</vDesc><indTot>1</indTot></prod><imposto><ICMS><ICMS00><orig>2</orig><CST>00</CST><modBC>3</modBC><vBC>119.00</vBC><pICMS>18.00</pICMS><vICMS>21.42</vICMS></ICMS00></ICMS><PIS><PISAliq><CST>01</CST><vBC>119.00</vBC><pPIS>1.65</pPIS><vPIS>1.96</vPIS></PISAliq></PIS><COFINS><COFINSAliq><CST>01</CST><vBC>119.00</vBC><pCOFINS>7.60</pCOFINS><vCOFINS>9.04</vCOFINS></COFINSAliq></COFINS></imposto></det><total><ICMSTot><vBC>119.00</vBC><vICMS>21.42</vICMS><vBCST>0.00</vBCST><vST>0.00</vST><vProd>129.00</vProd><vFrete>0.00</vFrete><vSeg>0.00</vSeg><vDesc>10.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>1.96</vPIS><vCOFINS>9.04</vCOFINS><vOutro>0.00</vOutro><vNF>119.00</vNF></ICMSTot></total><transp><modFrete>0</modFrete><transporta><CNPJ>58818022000143</CNPJ><xNome>TRANSFOLHA TRANSPORTE E DISTRIBUICAO LTD</xNome><IE>206099687112</IE><xEnder>ALAMEDA XINGU</xEnder><xMun>BARUERI</xMun><UF>SP</UF></transporta><vol><qVol>1</qVol><esp>DIG</esp><pesoL>0.050</pesoL><pesoB>0.050</pesoB></vol></transp><infAdic><infCpl>CONFORME ART. 52 RICMS/SP DECRETO 45490/00 PEDIDO 3162556</infCpl></infAdic></infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35110693209765030539550250000363601903008693"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>NGfIwZQwnrBrQeYhnnoDwZfrscg=</DigestValue></Reference></SignedInfo><SignatureValue>lQJ97kzTHodaa9ptZz9FNSos7b39Mi7FnmCYZDnP5QiFHsb63sVpBKbTEVeYfz3Kvf4SNn1YF3Wv/MatdMm9SQcmdP6VJmXD5XIL80TfClzB46DyKksw9CN10h/utz/CUaRWkweFRU8t3xYme1jUK1c5pKz8iSH9UiEsokUjb+4=</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></NFe><protNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe"><infProt><tpAmb>1</tpAmb><verAplic>SP_NFE_PL_006e</verAplic><chNFe>35110693209765030539550250000363601903008693</chNFe><dhRecbto>2011-06-16T00:34:20</dhRecbto><nProt>135110303746256</nProt><digVal>NGfIwZQwnrBrQeYhnnoDwZfrscg=</digVal><cStat>100</cStat><xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></nfeProc>
abraços
diogoribeiro

É cara acho q não existe nenhuma ferramenta q faça isso não ;p
o melhor jeito q eu conheço é construir o relatório usando o IReport.

Lindberg

voce ja conseguiu ?

estou fazendo isso com iReport 4.1.1, xpath …
mas não estou entendendo direito o xpath …

no [color=red]detalhe[/color]; quando deixo assim, e coloco os campos -[color=blue] funciona[/color]

&lt;queryString language="xPath"&gt;
		&lt;![CDATA[/nfeProc/NFe/infNFe/det/prod]]&gt;
	&lt;/queryString&gt;

// campos
	&lt;field name="NCM" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[NCM]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CFOP2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[CFOP]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="uCom2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[uCom]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
  • mas preciso dos campos impostos tambem
    ai não recupera os dados.
    como devo codificar o XML do Ireport
    MAS NÃO ESTOU CONSEGUINDO.

no [color=red]detalhe[/color]; quando deixo assim, e coloco os campos -[color=blue] NÃO funciona[/color]

&lt;queryString language="xPath"&gt;
		&lt;![CDATA[/nfeProc/NFe/infNFe/det]]&gt;
	&lt;/queryString&gt;

// campos
	&lt;field name="NCM" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[prod/NCM]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CFOP2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[prod/CFOP]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="uCom2" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[prod/uCom]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;

//impostos ISENTO no item
	&lt;field name="orig" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS40/orig]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CST" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS40/CST]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;


OU

//impostos TRIBUTADO no item
	&lt;field name="orig" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS00/orig]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;
	&lt;field name="CST" class="java.lang.String"&gt;
		&lt;fieldDescription&gt;&lt;![CDATA[imposto/ICMS/ICMS00/CST]]&gt;&lt;/fieldDescription&gt;
	&lt;/field&gt;

vc ja chegou nesta etapa ?

eu ja consegui criar o PDF do XML.

Lindberg

FUNCIONOOOOOOOOOOOOOOU !!!

conforme configuracao acima, depois que ajustei todos os campos …

agora proxima faze, não mostrar dados de campos null

nas propriedades do campo > Print When Expression

$F{CST2} == null ? new Boolean(false) : new Boolean(true)
Lindberg

olha o codigo para criar o PDF apartir do XML …

estou postando porque pode ajudar muita gente no guj !

import java.util.HashMap;



import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.data.JRXmlDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

//import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import net.sf.jasperreports.engine.JasperPrintManager;



import net.sf.jasperreports.engine.xml.JRXmlLoader;

import net.sf.jasperreports.engine.JasperExportManager;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;





//http://www.guj.com.br/java/203921-dias-entre-datas-ireport/2



public class opencarrego {



    public static void main(String[] args) throws Exception {


        try {



			String relatorio = System.getProperty("user.dir") 
	+ "/meu_NFE.jasper";


			JRXmlDataSource xml =

				new JRXmlDataSource("nf.xml", 

				"/nfeProc/NFe/infNFe/det/prod");

 

			JasperPrint jp = JasperFillManager.fillReport(relatorio, new HashMap(),xml);



//---- visualizar na tela

//			JasperViewer.viewReport(jp, false);     

//---- cria html

// 			JasperExportManager.exportReportToHtmlFile(jp, "a.html"); 

//---- cria pdf

			JasperExportManager.exportReportToPdfFile(jp, "a.pdf");





	    } catch (Exception e) {

         		System.out.println("Ocorreu um erro: " + e.toString() );

         		e.printStackTrace();

      	}





     }    



}
Criado 27 de junho de 2011
Ultima resposta 14 de out. de 2011
Respostas 8
Participantes 5