PrintButtonExample
Code snippetName: Print Button
|
Create a process:
HEADER Id: RptC_Tiquet Name: RptC_Tiquet Data access: Entity/Organization Report checkbox: Checked
(Image IiP.png)
PROCESS CLASS Action: Process Default value checkbox: Checked Java class name: org.openbravo.erpReports.RptC_Tiquet
(Image PC.png)
PROCESS MAPPING Mapping name: /RptC_Tiquet Default value checkbox: Checked
(Image PM.png)
Use as a model the following code in java.
package org.openbravo.erpReports;
import org.openbravo.erpCommon.utility.*;
import org.openbravo.erpCommon.businessUtility.Tree;
import org.openbravo.erpCommon.businessUtility.TreeData;
import org.openbravo.erpCommon.businessUtility.WindowTabs;
import org.openbravo.base.secureApp.HttpSecureAppServlet;
import org.openbravo.base.secureApp.VariablesSecureApp;
import org.openbravo.xmlEngine.XmlDocument;
import java.io.*;
import java.util.HashMap;
import java.util.Date;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.openbravo.utils.Replace;
import org.openbravo.erpCommon.ad_combos.OrganizationComboData;
import org.openbravo.erpCommon.utility.DateTimeData;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.JasperDesign;
import java.sql.Connection;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
public class RptC_Tiquet extends HttpSecureAppServlet {
public void init (ServletConfig config) {
super.init(config);
boolHist = false;
}
public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
VariablesSecureApp vars = new VariablesSecureApp(request);
if (vars.commandIn("DEFAULT")) {
String strcOrderId = vars.getSessionValue("RptC_Tiquet.inpcOrderId_R");
if (strcOrderId.equals("")) strcOrderId = vars.getSessionValue("RptC_Tiquet.inpcOrderId");
if (log4j.isDebugEnabled()) log4j.debug("strcOrderId: "+ strcOrderId);
printPagePartePDF(response, vars, strcOrderId);
} else pageError(response);
}
void printPagePartePDF(HttpServletResponse response, VariablesSecureApp vars, String strcOrderId) throws IOException,ServletException{
if (log4j.isDebugEnabled()) log4j.debug("Output: RptC_TiquetJR - pdf");
JasperPrint jasperPrint;
String strReportName = "@basedesign@/org/openbravo/erpReports/C_TiquetJR.jrxml";
response.setHeader("Content-disposition", "inline; filename=SalesOrderJR.pdf");
strcOrderId=strcOrderId.replace("(", "");
strcOrderId=strcOrderId.replace(")", "");
strcOrderId=strcOrderId.replace("\'", "");
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("C_ORDER_ID", strcOrderId);
renderJR(vars, response, strReportName, "pdf", parameters, null, null );
}
public String getServletInfo() {
return "Servlet that presents the RptCOrders seeker";
} // End of getServletInfo() method}
Copy it into /home/openbravo/OpenbravoERP/AppsOpenbravo/src/org/openbravo/erpReports
In your .jrxml file you get the parameter C_ORDER_ID from the .java writing your SQL so:
SELECT DOCUMENTNO FROM C_ORDER_ID WHERE C_ORDER_ID=$P{C_ORDER_ID}
Copy your jasper template (.jrxml file) into /home/openbravo/OpenbravoERP/AppsOpenbravo/src/org/openbravo/erpReports
Then compile the changes using:
ant compile.development -Dtab=xxx
Now, you should change the current process that the print button from (i.e.) Sales Order windows executes. Go to Windows, Tab and Fields. Then look for the windows Sales Order and in the Header tab, locate the Process field. Change the value for your newly created RptC_Tiquet.
Then, compile the windows
ant compile.development -Dtab="Sales Order"
If you want to see your changes, restart apache-tomcat.
Category: Code Snippets

