I want to create a report like this
I have the structure of the tables created, in the page 2 the source data is a JSON with a list of products and its properties. I want to shows the JSON data into the tables, actually have a subreport with the tables, but don't know how pass the JSON data to the subreport and its fill according to the productList key in JSON data. The report fills from a java class that receives the data from the user.
I don't know how to fill the tables of the page 2, can anyone helps me?
This is my code in Jaspersoft Studio 6.10
Main Report
https://app.box.com/s/qhl0158r03g9jowrhofojd6pkodwkojs
SubReport
https://app.box.com/s/gt5h19qxj1gs5ldghvajd3umx720dwgp
Java class (Fill the report)
...
JasperReport jr = null;
//DATA TO THE REPORT
String nombreCliente = "Caracol Radio LTDA.";
String contactoCliente = "3694100";
String nombreUsuario = "David";
String apellidoUsuario = "Torres";
String cargoUsuario = "Aux. Administrativo";
String nombreEmpresaCondicionesComerciales = "BIO BOLSA";
String tipoCuentaCondicionesComerciales = "Ahorros";
String bancoCondicionesComerciales = "Davivienda";
String numeroCuentaCondicionesComerciales = "481670000670";
String domicilioCondicionesEntrega = "Bogotá";
String simboloMonedaCondicionesEntrega = "$";
String embalajeSuperiorCondicionesEntrega = "800.000";
String impuestoCondicionesEntrega = "iva";
String domicilioFueraCondicionesEntrega = "iva";
String capacidadInstaladaOrdenProduccion = "1.000.000";
String tipoEmpresa = "S.A.S";
String regimenEmpresa = "Regimen Comun";
String nitEmpresa = "900.390.537-1";
String telefonosEmpresa = "Tels: (57) (1) 7137516 EXT 1142 – 7138731 - 2033205 Cel: (57) 300 275 45 51";
String correoWebEmpresa = "Web: www.biobolsa.com.co E-mail: [email protected]";
String direccionEmpresa = "Fábrica CRA 57 NO 45 A – 52 SUR LA SEVILLANA";
String ciudadEmpresa = "Bogotá D.C, Colombia";
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("NombreCliente", nombreCliente);
parametros.put("ContactoCliente", contactoCliente);
parametros.put("NombreUsuario", nombreUsuario);
parametros.put("ApellidoUsuario", apellidoUsuario);
parametros.put("CargoUsuario", cargoUsuario);
parametros.put("TipoEmpresa", tipoEmpresa);
parametros.put("Regimen", regimenEmpresa);
parametros.put("Nit", nitEmpresa);
parametros.put("Telefonos", telefonosEmpresa);
parametros.put("WebCorreo", correoWebEmpresa);
parametros.put("Direccion", direccionEmpresa);
parametros.put("Ciudad", ciudadEmpresa);
parametros.put("NombreEmpresaCondicionesComerciales", nombreEmpresaCondicionesComerciales);
parametros.put("TipoCuentaCondicionesComerciales", tipoCuentaCondicionesComerciales);
parametros.put("BancoCondicionesComerciales", bancoCondicionesComerciales);
parametros.put("NumeroCuentaCondicionesComerciales", numeroCuentaCondicionesComerciales);
parametros.put("DomicilioCondicionesEntrega", domicilioCondicionesEntrega);
parametros.put("SimboloMonedaCondicionesEntrega", simboloMonedaCondicionesEntrega);
parametros.put("EmbalajeSuperiorCondicionesEntrega", embalajeSuperiorCondicionesEntrega);
parametros.put("ImpuestoCondicionesEntrega", impuestoCondicionesEntrega);
parametros.put("DomicilioFueraCondicionesEntrega", domicilioFueraCondicionesEntrega);
parametros.put("CapacidadInstaladaOrdenProduccion", capacidadInstaladaOrdenProduccion);
try {
jr = JasperCompileManager.compileReport("PATH\\TO\\REPORT\\ReporteBiobolsa.jrxml");
JasperPrint jp = JasperFillManager.fillReport(jr, parametros, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jp, "PATH\\TO\\EXPORT\\PDFBiobolsa.pdf");
return Response
.status(Response.Status.OK)
.entity("OK.......!!")
.build();
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return Response
.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity("ERROR.......!!")
.build();
}
JSON data
{
"productList": [{
"productNumber": 1,
"modelo": "Bolsa Deportiva Plana",
"tela": "Tafeta",
"dimensiones": "40x35",
"destino": "Bog, D.C",
"accesoriosModelo": [{
"nombre": "Cordon"
},{
"nombre": "Accesorio 2"
},{
"nombre": "Accesorio 3"
}],
"accesoriosAdicionales": [{
"nombre": "Bolsillo (30x40)"
},{
"nombre": "Accesorio Adicional 2"
},{
"nombre": "Accesorio Adicional 3"
}],
"estampado": [{
"nombre": "Cara Frontal – 1 Tinta"
},{
"nombre": "Cara Posterior – 1 Tinta"
},{
"nombre": "Estampado 3"
}],
"observaciones": "Observacion de Prueba",
"cantidad": 500,
"vrUnitario": 1200,
"subTotal": 600000,
"iva": 50000,
"total": 650000
},
{
"productNumber": 2,
"modelo": "Bolsa Deportiva",
"tela": "Otra",
"dimensiones": "50x20",
"destino": "Bog, D.C",
"accesoriosModelo": [{
"nombre": "Cremallera"
},{
"nombre": "Accesorio 2"
},{
"nombre": "Accesorio 3"
}],
"accesoriosAdicionales": [{
"nombre": "Botones"
},{
"nombre": "Accesorio Adicional 2"
},{
"nombre": "Accesorio Adicional 3"
}],
"estampado": [{
"nombre": "Cara Posterior – 1 Tinta"
}],
"observaciones": "Observacion de Prueba",
"cantidad": 400,
"vrUnitario": 900,
"subTotal": 360000,
"iva": 40000,
"total": 400000
}
]
}