📄 reportctl.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.print;
import java.util.logging.*;
import org.compiere.apps.*;
import org.compiere.model.*;
import org.compiere.process.*;
import org.compiere.util.*;
/**
* Report Controller.
*
* @author Jorg Janke
* @version $Id: ReportCtl.java,v 1.33 2005/03/11 20:28:37 jjanke Exp $
*/
public class ReportCtl
{
/**
* Constructor - prevent instance
*/
private ReportCtl()
{
} // ReportCtrl
/** Static Logger */
private static CLogger s_log = CLogger.getCLogger (ReportCtl.class);
/**
* Create Report.
* Called from ProcessCtl.
* - Check special reports first, if not, create standard Report
*
* @param pi process info
* @param IsDirectPrint if true, prints directly - otherwise View
* @return true if created
*/
static public boolean start (ProcessInfo pi, boolean IsDirectPrint)
{
s_log.info("start - " + pi);
/**
* Order Print
*/
if (pi.getAD_Process_ID() == 110) // C_Order
return startDocumentPrint(ReportEngine.ORDER, pi.getRecord_ID(), IsDirectPrint);
else if (pi.getAD_Process_ID() == 116) // C_Invoice
return startDocumentPrint(ReportEngine.INVOICE, pi.getRecord_ID(), IsDirectPrint);
else if (pi.getAD_Process_ID() == 117) // M_InOut
return startDocumentPrint(ReportEngine.SHIPMENT, pi.getRecord_ID(), IsDirectPrint);
else if (pi.getAD_Process_ID() == 217) // C_Project
return startDocumentPrint(ReportEngine.PROJECT, pi.getRecord_ID(), IsDirectPrint);
else if (pi.getAD_Process_ID() == 276) // C_RfQResponse
return startDocumentPrint(ReportEngine.RFQ, pi.getRecord_ID(), IsDirectPrint);
else if (pi.getAD_Process_ID() == 313) // C_Payment
return startCheckPrint(pi.getRecord_ID(), IsDirectPrint);
/**
else if (pi.AD_Process_ID == 9999999) // PaySelection
return startDocumentPrint(CHECK, pi, IsDirectPrint);
else if (pi.AD_Process_ID == 9999999) // PaySelection
return startDocumentPrint(REMITTANCE, pi, IsDirectPrint);
**/
else if (pi.getAD_Process_ID() == 159) // Dunning
return startDocumentPrint(ReportEngine.DUNNING, pi.getRecord_ID(), IsDirectPrint);
else if (pi.getAD_Process_ID() == 202 // Financial Report
|| pi.getAD_Process_ID() == 204) // Financial Statement
return startFinReport (pi);
/********************
* Standard Report
*******************/
return startStandardReport (pi, IsDirectPrint);
} // create
/**************************************************************************
* Start Standard Report.
* - Get Table Info & submit
* @param pi Process Info
* @param IsDirectPrint if true, prints directly - otherwise View
* @return true if OK
*/
static public boolean startStandardReport (ProcessInfo pi, boolean IsDirectPrint)
{
ReportEngine re = ReportEngine.get(Env.getCtx(), pi);
if (re == null)
{
pi.setSummary("No ReportEngine");
return false;
}
if (IsDirectPrint)
{
re.print();
}
else
new Viewer(re);
return true;
} // startStandardReport
/**
* Start Financial Report.
* @param pi Process Info
* @return true if OK
*/
static public boolean startFinReport (ProcessInfo pi)
{
int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx());
// Create Query from Parameters
String TableName = pi.getAD_Process_ID() == 202 ? "T_Report" : "T_ReportStatement";
MQuery query = MQuery.get (Env.getCtx(), pi.getAD_PInstance_ID(), TableName);
// Get PrintFormat
MPrintFormat format = (MPrintFormat)pi.getTransientObject();
if (format == null)
format = (MPrintFormat)pi.getSerializableObject();
if (format == null)
{
s_log.log(Level.SEVERE, "startFinReport - No PrintFormat");
return false;
}
PrintInfo info = new PrintInfo(pi);
ReportEngine re = new ReportEngine(Env.getCtx(), format, query, info);
new Viewer(re);
return true;
} // startFinReport
/**
* Start Document Print for Type.
* Called also directly from ProcessDialog, VInOutGen, VInvoiceGen, VPayPrint
* @param type document type in ReportEngine
* @param Record_ID id
* @param IsDirectPrint if true, prints directly - otherwise View
* @return true if success
*/
public static boolean startDocumentPrint (int type, int Record_ID, boolean IsDirectPrint)
{
ReportEngine re = ReportEngine.get (Env.getCtx(), type, Record_ID);
if (re == null)
{
ADialog.error(0, null, "NoDocPrintFormat");
return false;
}
if (IsDirectPrint)
{
re.print ();
ReportEngine.printConfirm (type, Record_ID);
}
else
new Viewer(re);
return true;
} // StartDocumentPrint
/**
* Start Check Print.
* Find/Create
* @param C_Payment_ID Payment
* @param IsDirectPrint if true, prints directly - otherwise View
* @return true if success
*/
public static boolean startCheckPrint (int C_Payment_ID, boolean IsDirectPrint)
{
int C_PaySelectionCheck_ID = 0;
MPaySelectionCheck psc = MPaySelectionCheck.getOfPayment(Env.getCtx(), C_Payment_ID, null);
if (psc != null)
C_PaySelectionCheck_ID = psc.getC_PaySelectionCheck_ID();
else
{
psc = MPaySelectionCheck.createForPayment(Env.getCtx(), C_Payment_ID, null);
if (psc != null)
C_PaySelectionCheck_ID = psc.getC_PaySelectionCheck_ID();
}
return startDocumentPrint (ReportEngine.CHECK, C_PaySelectionCheck_ID, IsDirectPrint);
} // startCheckPrint
} // ReportCtl
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -