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
Jasperreports e IReports ajuda você?
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.
eu fiz um sistema de conversão nfe para danfe e estou comercializando hehehe.
utilize ireport e xpath.
att,
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
[code]
<?xml version="1.0" encoding="utf-8" ?>3590300869VENDA DE MERC ADQ DE TERC25525363602011-06-162011-06-1600:00:0013505708113110GNFe214 PointSystems93209765030539WMS SUPERMERCADOS DO BRASIL LTDAESTRADA DE ACESSO JANDIRA1400RODOV CASTELO BRANCOFAZ.ITAQUITI3505708BARUERISP064421301058Brasil206259596115337380453505EDWARD SHAPPIRORUA BENEDITO APARECIDO BIANCHI258JARDIM FELICIDADE3549805SAO JOSE DO RIO PRETOSP150523611058BRASIL1733544980shaap@gmail.com1102557897033017982RELOGIO DE PULSO DIGITAL MASC.ESPORTIVO 1798391M910211905102PC1.0000129.0000000000129.007897033017982PC1.0000129.000000000010.0012003119.0018.0021.4201119.001.651.9601119.007.609.04119.0021.420.000.00129.000.000.0010.000.000.001.969.040.00119.00058818022000143TRANSFOLHA TRANSPORTE E DISTRIBUICAO LTD206099687112ALAMEDA XINGUBARUERISP1DIG0.0500.050CONFORME ART. 52 RICMS/SP DECRETO 45490/00 PEDIDO 3162556NGfIwZQwnrBrQeYhnnoDwZfrscg=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_NFE_PL_006e351106932097650305395502500003636019030086932011-06-16T00:34:20135110303746256NGfIwZQwnrBrQeYhnnoDwZfrscg=100Autorizado o uso da NF-e[/code]
abraços
É 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.
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]
<queryString language="xPath">
<![CDATA[/nfeProc/NFe/infNFe/det/prod]]>
</queryString>
// campos
<field name="NCM" class="java.lang.String">
<fieldDescription><![CDATA[NCM]]></fieldDescription>
</field>
<field name="CFOP2" class="java.lang.String">
<fieldDescription><![CDATA[CFOP]]></fieldDescription>
</field>
<field name="uCom2" class="java.lang.String">
<fieldDescription><![CDATA[uCom]]></fieldDescription>
</field>
- 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]
<queryString language="xPath">
<![CDATA[/nfeProc/NFe/infNFe/det]]>
</queryString>
// campos
<field name="NCM" class="java.lang.String">
<fieldDescription><![CDATA[prod/NCM]]></fieldDescription>
</field>
<field name="CFOP2" class="java.lang.String">
<fieldDescription><![CDATA[prod/CFOP]]></fieldDescription>
</field>
<field name="uCom2" class="java.lang.String">
<fieldDescription><![CDATA[prod/uCom]]></fieldDescription>
</field>
//impostos ISENTO no item
<field name="orig" class="java.lang.String">
<fieldDescription><![CDATA[imposto/ICMS/ICMS40/orig]]></fieldDescription>
</field>
<field name="CST" class="java.lang.String">
<fieldDescription><![CDATA[imposto/ICMS/ICMS40/CST]]></fieldDescription>
</field>
OU
//impostos TRIBUTADO no item
<field name="orig" class="java.lang.String">
<fieldDescription><![CDATA[imposto/ICMS/ICMS00/orig]]></fieldDescription>
</field>
<field name="CST" class="java.lang.String">
<fieldDescription><![CDATA[imposto/ICMS/ICMS00/CST]]></fieldDescription>
</field>
vc ja chegou nesta etapa ?
eu ja consegui criar o PDF do XML.
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)
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();
}
}
}