Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | espaco | 1 | package danfe; |
| 2 | |||
| 3 | import java.io.File; |
||
| 4 | import java.io.IOException; |
||
| 5 | import java.nio.file.Path; |
||
| 6 | import java.nio.file.Paths; |
||
| 7 | import java.text.ParseException; |
||
| 8 | import java.text.SimpleDateFormat; |
||
| 9 | import java.util.ArrayList; |
||
| 10 | import java.util.Collection; |
||
| 11 | import java.util.Date; |
||
| 12 | import java.util.HashMap; |
||
| 13 | import java.util.List; |
||
| 14 | import javax.xml.parsers.DocumentBuilder; |
||
| 15 | import javax.xml.parsers.DocumentBuilderFactory; |
||
| 16 | import javax.xml.parsers.ParserConfigurationException; |
||
| 17 | import net.sf.jasperreports.engine.JRDataSource; |
||
| 18 | import net.sf.jasperreports.engine.JRException; |
||
| 19 | import net.sf.jasperreports.engine.JasperCompileManager; |
||
| 20 | import net.sf.jasperreports.engine.JasperExportManager; |
||
| 21 | import net.sf.jasperreports.engine.JasperFillManager; |
||
| 22 | import net.sf.jasperreports.engine.JasperPrint; |
||
| 23 | import net.sf.jasperreports.engine.JasperReport; |
||
| 24 | import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; |
||
| 25 | import net.sf.jasperreports.engine.data.JRXmlDataSource; |
||
| 26 | import net.sf.jasperreports.engine.util.JRLoader; |
||
| 27 | import org.w3c.dom.Document; |
||
| 28 | import org.w3c.dom.Element; |
||
| 29 | import org.w3c.dom.Node; |
||
| 30 | import org.w3c.dom.NodeList; |
||
| 31 | import org.xml.sax.SAXException; |
||
| 32 | |||
| 33 | /** |
||
| 34 | * |
||
| 35 | * @author Junior Tada |
||
| 36 | * |
||
| 37 | * Ex: java -jar danfenfe.jar nfce_autorizada.xml |
||
| 38 | */ |
||
| 39 | |||
| 40 | public class DanfeNfe { |
||
| 41 | |||
| 42 | private static HashMap map = new HashMap(); |
||
| 43 | |||
| 44 | /** |
||
| 45 | * @param args the command line arguments |
||
| 46 | */ |
||
| 47 | |||
| 48 | public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, ParseException{ |
||
| 49 | String xml_nfe = null; |
||
| 50 | String qrcode = null; |
||
| 51 | String p = null; |
||
| 52 | String logo = null; |
||
| 53 | String prestador_fantasia = ""; |
||
| 54 | String tomador_fantasia = ""; |
||
| 55 | String path = System.getProperty("user.dir"); |
||
| 56 | Path danfe_nfce_80 = Paths.get(path, "src/main/resources/relatorios/danfe","danfe_nfce_80.jasper"); |
||
| 57 | String url = danfe_nfce_80.toAbsolutePath().toString(); |
||
| 58 | |||
| 59 | // Default impressao em papel 80mm para quando for compilar |
||
| 60 | // String jrxml = "/home/junior/JaspersoftWorkspace/MyReports/danfe_nfce_80.jrxml"; |
||
| 61 | for(String arg: args){ |
||
| 62 | if(arg.contains(".xml")){ |
||
| 63 | xml_nfe = arg; |
||
| 64 | } |
||
| 65 | if(arg.contains("qrcode=")){ |
||
| 66 | qrcode = arg.replace("qrcode=", ""); |
||
| 67 | } |
||
| 68 | if(arg.contains("url=")){ |
||
| 69 | url = arg.replace("url=", ""); |
||
| 70 | } |
||
| 71 | if(arg.contains("logo=")){ |
||
| 72 | logo = arg.replace("logo=", ""); |
||
| 73 | } |
||
| 74 | if(arg.contains("prestador=")){ |
||
| 75 | prestador_fantasia = arg.replace("prestador=", ""); |
||
| 76 | } |
||
| 77 | if(arg.contains("tomador=")){ |
||
| 78 | // nome fantasia do tomador/cliente |
||
| 79 | tomador_fantasia = arg.replace("tomador=", ""); |
||
| 80 | } |
||
| 81 | if(arg.contains("p=")){ |
||
| 82 | p = arg.replace("p=", ""); |
||
| 83 | switch (p){ |
||
| 84 | case "58mm": |
||
| 85 | //jrxml = "/home/junior/JaspersoftWorkspace/MyReports/danfe_nfce_58.jrxml"; |
||
| 86 | Path danfe_nfce_58 = Paths.get(path, "danfe","danfe_nfce_58.jasper"); |
||
| 87 | url = danfe_nfce_58.toAbsolutePath().toString(); |
||
| 88 | break; |
||
| 89 | case "A4": |
||
| 90 | //jrxml = "/home/junior/JaspersoftWorkspace/MyReports/danfe_nfce_A4.jrxml"; |
||
| 91 | Path danfe_nfce_A4 = Paths.get(path, "danfe","danfe_nfce_A4.jasper"); |
||
| 92 | url = danfe_nfce_A4.toAbsolutePath().toString(); |
||
| 93 | break; |
||
| 94 | case "nfe": |
||
| 95 | //nfe A4 retrato |
||
| 96 | Path nfe = Paths.get(path, "danfe","danfeR.jasper"); |
||
| 97 | url = nfe.toAbsolutePath().toString(); |
||
| 98 | // teste |
||
| 99 | //url = "/home/junior/JaspersoftWorkspace/MyReports/danfeR.jasper"; |
||
| 100 | break; |
||
| 101 | case "nfse": |
||
| 102 | //nfse A4 retrato |
||
| 103 | Path nfse = Paths.get(path, "danfe","danfe_nfse.jasper"); |
||
| 104 | url = nfse.toAbsolutePath().toString(); |
||
| 105 | break; |
||
| 106 | default: |
||
| 107 | //jrxml = "/home/junior/JaspersoftWorkspace/MyReports/danfe_nfce_80.jrxml"; |
||
| 108 | url = danfe_nfce_80.toAbsolutePath().toString(); |
||
| 109 | break; |
||
| 110 | } |
||
| 111 | } |
||
| 112 | } |
||
| 113 | // Leitura de arquivo para xml de nfe |
||
| 114 | if(!p.equals("nfse")){ |
||
| 115 | File inputFile = new File(xml_nfe); |
||
| 116 | DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); |
||
| 117 | DocumentBuilder builder = factory.newDocumentBuilder(); |
||
| 118 | Document xml = builder.parse(inputFile); |
||
| 119 | xml.getDocumentElement().normalize(); |
||
| 120 | // Dados do emitente |
||
| 121 | NodeList emitList = xml.getElementsByTagName("emit"); |
||
| 122 | Node emitNode = emitList.item(0); |
||
| 123 | Element emitElement = (Element) emitNode; |
||
| 124 | List <String> emit = new ArrayList<>(); |
||
| 125 | emit.add(emitElement.getElementsByTagName("xNome").item(0).getTextContent()); |
||
| 126 | emit.add(emitElement.getElementsByTagName("CNPJ").item(0).getTextContent()); |
||
| 127 | emit.add(emitElement.getElementsByTagName("IE").item(0).getTextContent()); |
||
| 128 | emit.add(emitElement.getElementsByTagName("xLgr").item(0).getTextContent()); |
||
| 129 | emit.add(emitElement.getElementsByTagName("nro").item(0).getTextContent()); |
||
| 130 | emit.add(emitElement.getElementsByTagName("xBairro").item(0).getTextContent()); |
||
| 131 | emit.add(emitElement.getElementsByTagName("xMun").item(0).getTextContent()); |
||
| 132 | emit.add(emitElement.getElementsByTagName("UF").item(0).getTextContent()); |
||
| 133 | emit.add(emitElement.getElementsByTagName("CEP").item(0).getTextContent()); |
||
| 134 | //for(int i = 0; i < emit.size(); i++){ |
||
| 135 | // System.out.println(emit.get(i)+" "+i); |
||
| 136 | //} |
||
| 137 | List <String> dest = new ArrayList<>(); |
||
| 138 | |||
| 139 | // Dados do Destinatário |
||
| 140 | NodeList destList = xml.getElementsByTagName("dest"); |
||
| 141 | if(destList.getLength() > 0){ |
||
| 142 | Node destNode = destList.item(0); |
||
| 143 | Element destElement = (Element) destNode; |
||
| 144 | try { |
||
| 145 | dest.add("CPF: "+destElement.getElementsByTagName("CPF").item(0).getTextContent()); |
||
| 146 | } catch (Exception e) { |
||
| 147 | dest.add("CNPJ: "+destElement.getElementsByTagName("CNPJ").item(0).getTextContent()); |
||
| 148 | } |
||
| 149 | if(p.equalsIgnoreCase("nfe")){ |
||
| 150 | dest.add(destElement.getElementsByTagName("xNome").item(0).getTextContent()); |
||
| 151 | dest.add(destElement.getElementsByTagName("xLgr").item(0).getTextContent()); |
||
| 152 | dest.add(destElement.getElementsByTagName("nro").item(0).getTextContent()); |
||
| 153 | dest.add(destElement.getElementsByTagName("xBairro").item(0).getTextContent()); |
||
| 154 | dest.add(destElement.getElementsByTagName("xMun").item(0).getTextContent()); |
||
| 155 | dest.add(destElement.getElementsByTagName("UF").item(0).getTextContent()); |
||
| 156 | dest.add(destElement.getElementsByTagName("CEP").item(0).getTextContent()); |
||
| 157 | } |
||
| 158 | |||
| 159 | //for(int i = 0; i < dest.size(); i++){ |
||
| 160 | // System.out.println(dest.get(i)+" "+i); |
||
| 161 | //} |
||
| 162 | } |
||
| 163 | |||
| 164 | // Dados dos Itens |
||
| 165 | Collection <Item> itens = new ArrayList<Item>(); |
||
| 166 | NodeList itensList = xml.getElementsByTagName("det"); |
||
| 167 | for(int i = 0; i < itensList.getLength(); i++){ |
||
| 168 | Node itensNode = itensList.item(i); |
||
| 169 | Element itensElement = (Element) itensNode; |
||
| 170 | Item item = new Item(); |
||
| 171 | item.setCodigo(itensElement.getElementsByTagName("cProd").item(0).getTextContent()); |
||
| 172 | item.setDescricao(itensElement.getElementsByTagName("xProd").item(0).getTextContent()); |
||
| 173 | item.setNcm(itensElement.getElementsByTagName("NCM").item(0).getTextContent()); |
||
| 174 | item.setCfop(itensElement.getElementsByTagName("CFOP").item(0).getTextContent()); |
||
| 175 | item.setQuantidade(itensElement.getElementsByTagName("qCom").item(0).getTextContent()); |
||
| 176 | item.setUnidade(itensElement.getElementsByTagName("uCom").item(0).getTextContent()); |
||
| 177 | item.setTotal(itensElement.getElementsByTagName("vUnCom").item(0).getTextContent()); |
||
| 178 | item.setValor(itensElement.getElementsByTagName("vProd").item(0).getTextContent()); |
||
| 179 | // csosn |
||
| 180 | item.setCsosn(itensElement.getElementsByTagName("CSOSN").item(0).getTextContent()); |
||
| 181 | itens.add(item); |
||
| 182 | } |
||
| 183 | JRDataSource jr = new JRBeanCollectionDataSource(itens); |
||
| 184 | // Dados da nota |
||
| 185 | List <String> nota = new ArrayList<>(); |
||
| 186 | // Total |
||
| 187 | NodeList totList = xml.getElementsByTagName("ICMSTot"); |
||
| 188 | Node totNode = totList.item(0); |
||
| 189 | Element totElement = (Element) totNode; |
||
| 190 | nota.add(totElement.getElementsByTagName("vNF").item(0).getTextContent()); |
||
| 191 | // Numero, Serie, Emissao |
||
| 192 | NodeList ideList = xml.getElementsByTagName("ide"); |
||
| 193 | Node ideNode = ideList.item(0); |
||
| 194 | Element ideElement = (Element) ideNode; |
||
| 195 | nota.add(ideElement.getElementsByTagName("nNF").item(0).getTextContent()); // Numero |
||
| 196 | nota.add(ideElement.getElementsByTagName("serie").item(0).getTextContent()); // serie |
||
| 197 | String data = ideElement.getElementsByTagName("dhEmi").item(0).getTextContent(); |
||
| 198 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); |
||
| 199 | SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); |
||
| 200 | Date date = sdf.parse(data); |
||
| 201 | nota.add(f.format(date)); // Data/hora |
||
| 202 | // Chave, Protocolo, Data/Hora Autorização |
||
| 203 | NodeList protList = xml.getElementsByTagName("infProt"); |
||
| 204 | Node protNode = protList.item(0); |
||
| 205 | Element protElement = (Element) protNode; |
||
| 206 | nota.add(protElement.getElementsByTagName("chNFe").item(0).getTextContent()); // Chave |
||
| 207 | nota.add(protElement.getElementsByTagName("nProt").item(0).getTextContent()); // Protocolo |
||
| 208 | String dhRecbto = protElement.getElementsByTagName("dhRecbto").item(0).getTextContent(); |
||
| 209 | Date data_recibo = sdf.parse(dhRecbto); |
||
| 210 | nota.add(f.format(data_recibo)); // Data/Hora recibo |
||
| 211 | // Pagamento |
||
| 212 | NodeList pagList = xml.getElementsByTagName("pag"); |
||
| 213 | Node pagNode = pagList.item(0); |
||
| 214 | Element pagElement = (Element) pagNode; |
||
| 215 | // Grupo obrigatório para a NFC-e, a critério da UF. Não informar para a NF-e. |
||
| 216 | String tPag = ""; |
||
| 217 | try { |
||
| 218 | tPag = pagElement.getElementsByTagName("tPag").item(0).getTextContent(); |
||
| 219 | switch (tPag){ |
||
| 220 | case "01": |
||
| 221 | tPag = "Dinheiro"; |
||
| 222 | break; |
||
| 223 | case "02": |
||
| 224 | tPag = "Cheque"; |
||
| 225 | break; |
||
| 226 | case "03": |
||
| 227 | tPag = "Cartão de Crédito"; |
||
| 228 | break; |
||
| 229 | case "04": |
||
| 230 | tPag = "Cartão de Débito"; |
||
| 231 | break; |
||
| 232 | case "05": |
||
| 233 | tPag = "Crédito Loja"; |
||
| 234 | break; |
||
| 235 | case "10": |
||
| 236 | tPag = "Vale Alimentação"; |
||
| 237 | break; |
||
| 238 | case "11": |
||
| 239 | tPag = "Vale Refeição"; |
||
| 240 | break; |
||
| 241 | case "12": |
||
| 242 | tPag = "Vale Presente"; |
||
| 243 | break; |
||
| 244 | case "13": |
||
| 245 | tPag = "Vale Combustível"; |
||
| 246 | break; |
||
| 247 | case "99": |
||
| 248 | tPag = "Outros"; |
||
| 249 | break; |
||
| 250 | default: |
||
| 251 | tPag = "Outros"; |
||
| 252 | |||
| 253 | } |
||
| 254 | } catch (Exception e) { |
||
| 255 | System.out.println("Grupo obrigatório para a NFC-e, a critério da UF. Não informar para a NF-e: " + e); |
||
| 256 | } |
||
| 257 | nota.add(tPag); |
||
| 258 | nota.add(itens.size()+""); |
||
| 259 | |||
| 260 | // Tributos aprox |
||
| 261 | try { |
||
| 262 | nota.add(totElement.getElementsByTagName("vTotTrib").item(0).getTextContent()); |
||
| 263 | } catch (Exception e) { |
||
| 264 | System.out.println("Valor total de tributos: " + e); |
||
| 265 | } |
||
| 266 | // Informação adicional |
||
| 267 | try { |
||
| 268 | NodeList infoList = xml.getElementsByTagName("infAdic"); |
||
| 269 | Node infoNode = infoList.item(0); |
||
| 270 | Element infoElement = (Element) infoNode; |
||
| 271 | nota.add(infoElement.getElementsByTagName("infAdFisco").item(0).getTextContent()); |
||
| 272 | } catch (Exception e) { |
||
| 273 | nota.add(""); |
||
| 274 | System.out.println("Informação adicional: " + e); |
||
| 275 | } |
||
| 276 | |||
| 277 | |||
| 278 | //for(int z = 0; z < nota.size(); z++){ |
||
| 279 | // System.out.println(nota.get(z)+" "+z); |
||
| 280 | //} |
||
| 281 | // Dante NF-e |
||
| 282 | // java -jar nota_autorizada.xml p=nfe |
||
| 283 | if(p.equalsIgnoreCase("nfe")){ |
||
| 284 | gerarDanfeNFe(url, emit, dest, nota, jr); |
||
| 285 | } |
||
| 286 | // Danfe NFC-e |
||
| 287 | else{ |
||
| 288 | gerarDanfe(url, emit, dest, nota, jr, qrcode); |
||
| 289 | } |
||
| 290 | } |
||
| 291 | // Leitura de arquivo xml para nfse |
||
| 292 | else{ |
||
| 293 | File inputFile = new File(xml_nfe); |
||
| 294 | DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); |
||
| 295 | DocumentBuilder builder = factory.newDocumentBuilder(); |
||
| 296 | Document xml = builder.parse(inputFile); |
||
| 297 | xml.getDocumentElement().normalize(); |
||
| 298 | |||
| 299 | // Dados do prestador |
||
| 300 | NodeList emitList = xml.getElementsByTagName("PrestadorServico"); |
||
| 301 | Node emitNode = emitList.item(0); |
||
| 302 | Element emitElement = (Element) emitNode; |
||
| 303 | List <String> emit = new ArrayList<>(); |
||
| 304 | emit.add(emitElement.getElementsByTagName("Cnpj").item(0).getTextContent()); |
||
| 305 | emit.add(emitElement.getElementsByTagName("InscricaoMunicipal").item(0).getTextContent()); |
||
| 306 | emit.add(emitElement.getElementsByTagName("RazaoSocial").item(0).getTextContent()); |
||
| 307 | emit.add(emitElement.getElementsByTagName("Endereco").item(1).getTextContent()); |
||
| 308 | emit.add(emitElement.getElementsByTagName("Numero").item(0).getTextContent()); |
||
| 309 | emit.add(emitElement.getElementsByTagName("Bairro").item(0).getTextContent()); |
||
| 310 | if(emitElement.getElementsByTagName("CodigoMunicipio").item(0).getTextContent().equals("3525904")){ |
||
| 311 | emit.add("Jundiaí"); |
||
| 312 | } |
||
| 313 | else{ |
||
| 314 | emit.add(emitElement.getElementsByTagName("CodigoMunicipio").item(0).getTextContent()); |
||
| 315 | } |
||
| 316 | emit.add(emitElement.getElementsByTagName("Uf").item(0).getTextContent()); |
||
| 317 | emit.add(emitElement.getElementsByTagName("Cep").item(0).getTextContent()); |
||
| 318 | emit.add(emitElement.getElementsByTagName("Telefone").item(0).getTextContent()); |
||
| 319 | emit.add(emitElement.getElementsByTagName("Email").item(0).getTextContent()); |
||
| 320 | // Nome Fantasia Prestador |
||
| 321 | emit.add(prestador_fantasia); |
||
| 322 | // Debug |
||
| 323 | // System.out.println("Prestador"); |
||
| 324 | // for(int i = 0; i < emit.size(); i++){ |
||
| 325 | // System.out.println(emit.get(i)+" "+i); |
||
| 326 | // } |
||
| 327 | |||
| 328 | // Dados do tomador |
||
| 329 | NodeList destList = xml.getElementsByTagName("TomadorServico"); |
||
| 330 | Node destNode = destList.item(0); |
||
| 331 | Element destElement = (Element) destNode; |
||
| 332 | List <String> dest = new ArrayList<>(); |
||
| 333 | dest.add(destElement.getElementsByTagName("Cnpj").item(0).getTextContent()); |
||
| 334 | dest.add(destElement.getElementsByTagName("InscricaoMunicipal").item(0).getTextContent()); |
||
| 335 | dest.add(destElement.getElementsByTagName("RazaoSocial").item(0).getTextContent()); |
||
| 336 | dest.add(destElement.getElementsByTagName("Endereco").item(1).getTextContent()); |
||
| 337 | dest.add(destElement.getElementsByTagName("Numero").item(0).getTextContent()); |
||
| 338 | dest.add(destElement.getElementsByTagName("Bairro").item(0).getTextContent()); |
||
| 339 | if(destElement.getElementsByTagName("CodigoMunicipio").item(0).getTextContent().equals("3525904")){ |
||
| 340 | dest.add("Jundiaí"); |
||
| 341 | } |
||
| 342 | else{ |
||
| 343 | dest.add(destElement.getElementsByTagName("CodigoMunicipio").item(0).getTextContent()); |
||
| 344 | } |
||
| 345 | dest.add(destElement.getElementsByTagName("Uf").item(0).getTextContent()); |
||
| 346 | dest.add(destElement.getElementsByTagName("Cep").item(0).getTextContent()); |
||
| 347 | dest.add(destElement.getElementsByTagName("Telefone").item(0).getTextContent()); |
||
| 348 | dest.add(destElement.getElementsByTagName("Email").item(0).getTextContent()); |
||
| 349 | // Nome fantasia tomador |
||
| 350 | dest.add(tomador_fantasia); |
||
| 351 | // Debug |
||
| 352 | // System.out.println("Tomador"); |
||
| 353 | // for(int i = 0; i < dest.size(); i++){ |
||
| 354 | // System.out.println(dest.get(i)+" "+i); |
||
| 355 | // } |
||
| 356 | |||
| 357 | // Dados do serviço |
||
| 358 | NodeList serList = xml.getElementsByTagName("Servico"); |
||
| 359 | Node serNode = serList.item(0); |
||
| 360 | Element serElement = (Element) serNode; |
||
| 361 | List <String> ser = new ArrayList<>(); |
||
| 362 | ser.add(serElement.getElementsByTagName("ValorServicos").item(0).getTextContent()); |
||
| 363 | ser.add(serElement.getElementsByTagName("IssRetido").item(0).getTextContent()); |
||
| 364 | ser.add(serElement.getElementsByTagName("ValorIss").item(0).getTextContent()); |
||
| 365 | ser.add(serElement.getElementsByTagName("ValorIssRetido").item(0).getTextContent()); |
||
| 366 | ser.add(serElement.getElementsByTagName("BaseCalculo").item(0).getTextContent()); |
||
| 367 | ser.add(serElement.getElementsByTagName("Aliquota").item(0).getTextContent()); |
||
| 368 | ser.add(serElement.getElementsByTagName("ValorLiquidoNfse").item(0).getTextContent()); |
||
| 369 | ser.add(serElement.getElementsByTagName("ItemListaServico").item(0).getTextContent()); |
||
| 370 | ser.add(serElement.getElementsByTagName("CodigoTributacaoMunicipio").item(0).getTextContent()); |
||
| 371 | ser.add(serElement.getElementsByTagName("Discriminacao").item(0).getTextContent()); |
||
| 372 | ser.add(serElement.getElementsByTagName("CodigoMunicipio").item(0).getTextContent()); |
||
| 373 | // Debug |
||
| 374 | //System.out.println("Serviço"); |
||
| 375 | //for(int i = 0; i < ser.size(); i++){ |
||
| 376 | // System.out.println(ser.get(i)+" "+i); |
||
| 377 | //} |
||
| 378 | |||
| 379 | // Dados da nota |
||
| 380 | NodeList notaList = xml.getElementsByTagName("InfNfse"); |
||
| 381 | Node notaNode = notaList.item(0); |
||
| 382 | Element notaElement = (Element) notaNode; |
||
| 383 | List <String> nota = new ArrayList<>(); |
||
| 384 | nota.add(notaElement.getElementsByTagName("Numero").item(0).getTextContent()); |
||
| 385 | nota.add(notaElement.getElementsByTagName("CodigoVerificacao").item(0).getTextContent()); |
||
| 386 | // Ajusta data/hora emissão |
||
| 387 | String data_xml = notaElement.getElementsByTagName("DataEmissao").item(0).getTextContent(); |
||
| 388 | SimpleDateFormat data_entrada = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); |
||
| 389 | SimpleDateFormat data_saida = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); |
||
| 390 | Date date = data_entrada.parse(data_xml); |
||
| 391 | nota.add(data_saida.format(date)); |
||
| 392 | nota.add(notaElement.getElementsByTagName("NaturezaOperacao").item(0).getTextContent()); |
||
| 393 | nota.add(notaElement.getElementsByTagName("RegimeEspecialTributacao").item(0).getTextContent()); |
||
| 394 | nota.add(notaElement.getElementsByTagName("OptanteSimplesNacional").item(0).getTextContent()); |
||
| 395 | nota.add(notaElement.getElementsByTagName("IncentivadorCultural").item(0).getTextContent()); |
||
| 396 | // Ajusta data Competência |
||
| 397 | String data_c = notaElement.getElementsByTagName("Competencia").item(0).getTextContent(); |
||
| 398 | SimpleDateFormat data_c_entrada = new SimpleDateFormat("yyyy-MM-dd"); |
||
| 399 | SimpleDateFormat data_c_saida = new SimpleDateFormat("dd/MM/yyyy"); |
||
| 400 | Date data_competencia = data_c_entrada.parse(data_c); |
||
| 401 | nota.add(data_c_saida.format(data_competencia)); |
||
| 402 | // Debug |
||
| 403 | // System.out.println("Nota"); |
||
| 404 | // for(int i = 0; i < nota.size(); i++){ |
||
| 405 | // System.out.println(nota.get(i)+" "+i); |
||
| 406 | // } |
||
| 407 | |||
| 408 | // Gera o danfe com jasper |
||
| 409 | gerarDanfeNfse(url, emit, dest, ser, nota, xml_nfe, logo); |
||
| 410 | } |
||
| 411 | } |
||
| 412 | |||
| 413 | // Cria o Danfe com os dados do xml |
||
| 414 | private static void gerarDanfe(String url, List<String> emit, List<String> dest, List<String> nota, JRDataSource itens, String qrcode){ |
||
| 415 | try { |
||
| 416 | // Teste |
||
| 417 | //String compilado = System.getProperty("user.dir") + "/danfe_nfce_80.jasper";; |
||
| 418 | String output = "danfe.pdf"; |
||
| 419 | map.put("emit", emit); |
||
| 420 | map.put("dest", dest); |
||
| 421 | map.put("nota", nota); |
||
| 422 | map.put("qrcode", qrcode); |
||
| 423 | // Relatório compilado |
||
| 424 | JasperReport report = (JasperReport) JRLoader.loadObjectFromFile(url); |
||
| 425 | //InputStream jasperStream = getClass().getResourceAsStream("/Foo.jasper"); |
||
| 426 | //JasperReport report = (JasperReport) JRLoader.loadObject(jasperStream); |
||
| 427 | // Relatório nao compilado |
||
| 428 | //JasperReport report = JasperCompileManager.compileReport(jrxml); |
||
| 429 | JasperPrint print = JasperFillManager.fillReport(report, map, itens); |
||
| 430 | JasperExportManager.exportReportToPdfFile(print, output); |
||
| 431 | } catch (JRException e) { |
||
| 432 | System.out.println("erro: "+e.getMessage()); |
||
| 433 | } |
||
| 434 | } |
||
| 435 | |||
| 436 | private static void gerarDanfeNFe(String url, List<String> emit, List<String> dest, List<String> nota, JRDataSource itens) { |
||
| 437 | try { |
||
| 438 | // Teste |
||
| 439 | //String compilado = System.getProperty("user.dir") + "/danfe_nfce_80.jasper";; |
||
| 440 | String output = "danfe.pdf"; |
||
| 441 | map.put("emit", emit); |
||
| 442 | map.put("dest", dest); |
||
| 443 | map.put("nota", nota); |
||
| 444 | // Relatório compilado |
||
| 445 | JasperReport report = (JasperReport) JRLoader.loadObjectFromFile(url); |
||
| 446 | JasperPrint print = JasperFillManager.fillReport(report, map, itens); |
||
| 447 | JasperExportManager.exportReportToPdfFile(print, output); |
||
| 448 | } catch (JRException e) { |
||
| 449 | System.out.println("erro: "+e.getMessage()); |
||
| 450 | } |
||
| 451 | } |
||
| 452 | |||
| 453 | private static void gerarDanfeNfse(String url, List<String> emit, List<String> dest, List<String> ser, List<String> nota, String xml, String logo) { |
||
| 454 | try { |
||
| 455 | // Teste |
||
| 456 | //String compilado = System.getProperty("user.dir") + "/danfe_nfce_80.jasper";; |
||
| 457 | String output = "danfe.pdf"; |
||
| 458 | map.put("emit", emit); |
||
| 459 | map.put("dest", dest); |
||
| 460 | map.put("ser", ser); |
||
| 461 | map.put("nota", nota); |
||
| 462 | map.put("logo", logo); |
||
| 463 | // brasao |
||
| 464 | String brasao = Paths.get(System.getProperty("user.dir"), "danfe","brasao.png").toAbsolutePath().toString(); |
||
| 465 | map.put("brasao", brasao); |
||
| 466 | // JrDataSource |
||
| 467 | JRDataSource jr = new JRXmlDataSource(xml); |
||
| 468 | // Relatório compilado |
||
| 469 | JasperReport report = (JasperReport) JRLoader.loadObjectFromFile(url); |
||
| 470 | JasperPrint print = JasperFillManager.fillReport(report, map, jr); |
||
| 471 | JasperExportManager.exportReportToPdfFile(print, output); |
||
| 472 | } catch (JRException e) { |
||
| 473 | System.out.println("erro: "+e.getMessage()); |
||
| 474 | } |
||
| 475 | } |
||
| 476 | |||
| 477 | } |