diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index e6d95f23a0..bc41248960 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -74,12 +74,14 @@ import org.compiere.model.PrintInfo; import static org.compiere.model.SystemIDs.*; import org.compiere.print.layout.LayoutEngine; import org.compiere.process.ProcessInfo; +import org.compiere.process.ServerProcessCtl; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.compiere.util.Ini; import org.compiere.util.Language; +import org.compiere.util.Trx; import org.compiere.util.Util; import org.eevolution.model.MDDOrder; import org.eevolution.model.X_PP_Order; @@ -993,10 +995,17 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) try { - if (m_layout == null) - layout (); - Document.getPDFAsFile(fileName, m_layout.getPageable(false)); - ArchiveEngine.get().archive(new File(fileName), m_info); + if (m_printFormat != null && m_printFormat.getJasperProcess_ID() > 0) { + ProcessInfo pi = new ProcessInfo ("", m_printFormat.getJasperProcess_ID(), m_printFormat.getAD_Table_ID(), m_info.getRecord_ID()); + pi.setIsBatch(true); + pi.setPDFFileName(fileName); + ServerProcessCtl.process(pi, (m_trxName == null ? null : Trx.get(m_trxName, false))); + } else { + if (m_layout == null) + layout (); + Document.getPDFAsFile(fileName, m_layout.getPageable(false)); + ArchiveEngine.get().archive(new File(fileName), m_info); + } } catch (Exception e) { diff --git a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java index 1f0509789b..d067270439 100644 --- a/org.adempiere.base/src/org/compiere/process/ProcessInfo.java +++ b/org.adempiere.base/src/org/compiere/process/ProcessInfo.java @@ -43,7 +43,7 @@ public class ProcessInfo implements Serializable /** * */ - private static final long serialVersionUID = 1371812474929601477L; + private static final long serialVersionUID = -3654748247858779823L; /** * Constructor @@ -783,4 +783,16 @@ public class ProcessInfo implements Serializable public PO getPO() { return m_po; } + + /** FileName to be used */ + private String m_PDFfileName; + + public String getPDFFileName() { + return m_PDFfileName; + } + + public void setPDFFileName(String fileName) { + this.m_PDFfileName = fileName; + } + } // ProcessInfo diff --git a/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java b/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java index f76ce1c739..d704ea1cde 100644 --- a/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java +++ b/org.adempiere.report.jasper/src/org/adempiere/report/jasper/ReportStarter.java @@ -668,7 +668,12 @@ public class ReportStarter implements ProcessCall, ClientProcess { try { - File PDF = File.createTempFile(makePrefix(jasperPrint.getName()), ".pdf"); + File PDF; + if (processInfo.getPDFFileName() != null) { + PDF = new File(processInfo.getPDFFileName()); + } else { + PDF = File.createTempFile(makePrefix(jasperPrint.getName()), ".pdf"); + } DefaultJasperReportsContext jrContext = DefaultJasperReportsContext.getInstance(); LocalJasperReportsContext ljrContext = new LocalJasperReportsContext(jrContext); ljrContext.setClassLoader(this.getClass().getClassLoader());