diff --git a/org.adempiere.base/src/org/compiere/model/HardCodedIDs.java b/org.adempiere.base/src/org/compiere/model/HardCodedIDs.java new file mode 100644 index 0000000000..db1a37c846 --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/HardCodedIDs.java @@ -0,0 +1,31 @@ +/****************************************************************************** + * Product: Adempiere ERP & CRM Smart Business Solution * + * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * + * This program is free software; you can redistribute it and/or modify it * + * under the terms version 2 of the GNU General Public License as published * + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.model; + +/** + * List all hardcoded ID used in the code + * @author Carlos Ruiz, Nicolas Micoud, ... + */ + +public class HardCodedIDs { + + public static int referencePostingType = 125; + + + public static int windowMyRequests = 237; + +} diff --git a/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewerData.java b/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewerData.java index 79a9cba390..5b4b4fd56a 100644 --- a/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewerData.java +++ b/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewerData.java @@ -3,19 +3,19 @@ * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * - * by the Free Software Foundation. This program is distributed in the hope * - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along * - * with this program; if not, write to the Free Software Foundation, Inc., * - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * - * For the text or an alternative of this public license, you may reach us * - * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * - * or via info@compiere.org or http://www.compiere.org/license.html * - *****************************************************************************/ -package org.compiere.acct; - + * by the Free Software Foundation. This program is distributed in the hope * + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * + * See the GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License along * + * with this program; if not, write to the Free Software Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * + * For the text or an alternative of this public license, you may reach us * + * ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA * + * or via info@compiere.org or http://www.compiere.org/license.html * + *****************************************************************************/ +package org.compiere.acct; + import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -29,6 +29,7 @@ import java.util.logging.Level; import javax.swing.JComboBox; +import org.compiere.model.HardCodedIDs; import org.compiere.model.MAcctSchema; import org.compiere.model.MAcctSchemaElement; import org.compiere.model.MFactAcct; @@ -44,439 +45,439 @@ import org.compiere.util.KeyNamePair; import org.compiere.util.Language; import org.compiere.util.Msg; import org.compiere.util.ValueNamePair; - - -/** - * Account Viewer State - maintains State information for the Account Viewer - * - * @author Jorg Janke + + +/** + * Account Viewer State - maintains State information for the Account Viewer + * + * @author Jorg Janke * @version $Id: AcctViewerData.java,v 1.3 2006/08/10 01:00:27 jjanke Exp $ * - * @author Teo Sarca, SC ARHIPAC SERVICE SRL + * @author Teo Sarca, SC ARHIPAC SERVICE SRL *
  • BF [ 1748449 ] Info Account - Posting Type is not translated *
  • BF [ 1778373 ] AcctViewer: data is not sorted proper - */ -class AcctViewerData -{ - /** - * Constructor - * @param ctx context - * @param windowNo window no - * @param ad_Client_ID client - * @param ad_Table_ID table - */ - public AcctViewerData (Properties ctx, int windowNo, int ad_Client_ID, int ad_Table_ID) - { - WindowNo = windowNo; - AD_Client_ID = ad_Client_ID; - if (AD_Client_ID == 0) - AD_Client_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "AD_Client_ID"); - if (AD_Client_ID == 0) - AD_Client_ID = Env.getContextAsInt(Env.getCtx(), "AD_Client_ID"); - AD_Table_ID = ad_Table_ID; - // - ASchemas = MAcctSchema.getClientAcctSchema(ctx, AD_Client_ID); - ASchema = ASchemas[0]; - } // AcctViewerData - - /** Window */ - public int WindowNo; - /** Client */ - public int AD_Client_ID; - /** All Acct Schema */ - public MAcctSchema[] ASchemas = null; - /** This Acct Schema */ - public MAcctSchema ASchema = null; - - // Selection Info - /** Document Query */ - public boolean documentQuery = false; - /** Acct Schema */ - public int C_AcctSchema_ID = 0; - /** Posting Type */ - public String PostingType = ""; - /** Organization */ - public int AD_Org_ID = 0; - /** Date From */ - public Timestamp DateFrom = null; - /** Date To */ - public Timestamp DateTo = null; - - // Document Table Selection Info - /** Table ID */ - public int AD_Table_ID; - /** Record */ - public int Record_ID; - - /** Containing Column and Query */ - public HashMap whereInfo = new HashMap(); - /** Containing TableName and AD_Table_ID */ - public HashMap tableInfo = new HashMap(); - - // Display Info - /** Display Qty */ - boolean displayQty = false; - /** Display Source Currency */ - boolean displaySourceAmt = false; - /** Display Document info */ - boolean displayDocumentInfo = false; - // - String sortBy1 = ""; - String sortBy2 = ""; - String sortBy3 = ""; - String sortBy4 = ""; - // - boolean group1 = false; - boolean group2 = false; - boolean group3 = false; - boolean group4 = false; - - /** Leasing Columns */ - private int m_leadingColumns = 0; - /** UserElement1 Reference */ - private String m_ref1 = null; - /** UserElement2 Reference */ - private String m_ref2 = null; - /** Logger */ - private static CLogger log = CLogger.getCLogger(AcctViewerData.class); - - /** - * Dispose - */ - public void dispose() - { - ASchemas = null; - ASchema = null; - // - whereInfo.clear(); - whereInfo = null; - // - Env.clearWinContext(WindowNo); - } // dispose - - - /************************************************************************** - * Fill Accounting Schema - * @param cb JComboBox to be filled - */ - protected void fillAcctSchema (JComboBox cb) - { - for (int i = 0; i < ASchemas.length; i++) - cb.addItem(new KeyNamePair(ASchemas[i].getC_AcctSchema_ID(), - ASchemas[i].getName())); - } // fillAcctSchema - - /** - * Fill Posting Type - * @param cb JComboBox to be filled - */ - protected void fillPostingType (JComboBox cb) - { - int AD_Reference_ID = 125; - ValueNamePair[] pt = MRefList.getList(Env.getCtx(), AD_Reference_ID, true); - for (int i = 0; i < pt.length; i++) - cb.addItem(pt[i]); - } // fillPostingType - - /** - * Fill Table with - * ValueNamePair (TableName, translatedKeyColumnName) - * and tableInfo with (TableName, AD_Table_ID) - * and select the entry for AD_Table_ID - * - * @param cb JComboBox to be filled - */ - protected void fillTable (JComboBox cb) - { - ValueNamePair select = null; - // - String sql = "SELECT AD_Table_ID, TableName FROM AD_Table t " - + "WHERE EXISTS (SELECT * FROM AD_Column c" - + " WHERE t.AD_Table_ID=c.AD_Table_ID AND c.ColumnName='Posted')" - + " AND IsView='N'"; - try - { - PreparedStatement pstmt = DB.prepareStatement(sql, null); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - { - int id = rs.getInt(1); - String tableName = rs.getString(2); - String name = Msg.translate(Env.getCtx(), tableName+"_ID"); - // - ValueNamePair pp = new ValueNamePair(tableName, name); - cb.addItem(pp); - tableInfo.put (tableName, new Integer(id)); - if (id == AD_Table_ID) - select = pp; - } - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - } - if (select != null) - cb.setSelectedItem(select); - } // fillTable - - /** - * Fill Org - * - * @param cb JComboBox to be filled - */ - protected void fillOrg (JComboBox cb) - { - KeyNamePair pp = new KeyNamePair(0, ""); - cb.addItem(pp); - String sql = "SELECT AD_Org_ID, Name FROM AD_Org WHERE AD_Client_ID=? ORDER BY Value"; - try - { - PreparedStatement pstmt = DB.prepareStatement(sql, null); - pstmt.setInt(1, AD_Client_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - cb.addItem(new KeyNamePair(rs.getInt(1), rs.getString(2))); - rs.close(); - pstmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - } - } // fillOrg - - /** - * Get Button Text - * - * @param tableName table - * @param columnName column - * @param selectSQL sql - * @return Text on button - */ - protected String getButtonText (String tableName, String columnName, String selectSQL) - { - // SELECT () FROM tableName avd WHERE avd. - StringBuffer sql = new StringBuffer ("SELECT ("); - Language language = Env.getLanguage(Env.getCtx()); - sql.append(MLookupFactory.getLookup_TableDirEmbed(language, columnName, "avd")) - .append(") FROM ").append(tableName).append(" avd WHERE avd.").append(selectSQL); - String retValue = "<" + selectSQL + ">"; - try - { - Statement stmt = DB.createStatement(); - ResultSet rs = stmt.executeQuery(sql.toString()); - if (rs.next()) - retValue = rs.getString(1); - rs.close(); - stmt.close(); - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql.toString(), e); - } - return retValue; - } // getButtonText - - /************************************************************************** - - /** - * Create Query and submit - * @return Report Model - */ - protected RModel query() - { - // Set Where Clause - StringBuffer whereClause = new StringBuffer(); - // Add Organization - if (C_AcctSchema_ID != 0) - whereClause.append(RModel.TABLE_ALIAS) - .append(".C_AcctSchema_ID=").append(C_AcctSchema_ID); - - // Posting Type Selected - if (PostingType != null && PostingType.length() > 0) - { - if (whereClause.length() > 0) - whereClause.append(" AND "); - whereClause.append(RModel.TABLE_ALIAS) - .append(".PostingType='").append(PostingType).append("'"); - } - - // - if (documentQuery) - { - if (whereClause.length() > 0) - whereClause.append(" AND "); - whereClause.append(RModel.TABLE_ALIAS).append(".AD_Table_ID=").append(AD_Table_ID) - .append(" AND ").append(RModel.TABLE_ALIAS).append(".Record_ID=").append(Record_ID); - } - else - { - // get values (Queries) - Iterator it = whereInfo.values().iterator(); - while (it.hasNext()) - { - String where = (String)it.next(); - if (where != null && where.length() > 0) // add only if not empty - { - if (whereClause.length() > 0) - whereClause.append(" AND "); - whereClause.append(RModel.TABLE_ALIAS).append(".").append(where); - } - } - if (DateFrom != null || DateTo != null) - { - if (whereClause.length() > 0) - whereClause.append(" AND "); - if (DateFrom != null && DateTo != null) - whereClause.append("TRUNC(").append(RModel.TABLE_ALIAS).append(".DateAcct) BETWEEN ") - .append(DB.TO_DATE(DateFrom)).append(" AND ").append(DB.TO_DATE(DateTo)); - else if (DateFrom != null) - whereClause.append("TRUNC(").append(RModel.TABLE_ALIAS).append(".DateAcct) >= ") - .append(DB.TO_DATE(DateFrom)); - else // DateTo != null - whereClause.append("TRUNC(").append(RModel.TABLE_ALIAS).append(".DateAcct) <= ") - .append(DB.TO_DATE(DateTo)); - } - // Add Organization - if (AD_Org_ID != 0) - { - if (whereClause.length() > 0) - whereClause.append(" AND "); - whereClause.append(RModel.TABLE_ALIAS).append(".AD_Org_ID=").append(AD_Org_ID); - } - } - + */ +class AcctViewerData +{ + /** + * Constructor + * @param ctx context + * @param windowNo window no + * @param ad_Client_ID client + * @param ad_Table_ID table + */ + public AcctViewerData (Properties ctx, int windowNo, int ad_Client_ID, int ad_Table_ID) + { + WindowNo = windowNo; + AD_Client_ID = ad_Client_ID; + if (AD_Client_ID == 0) + AD_Client_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "AD_Client_ID"); + if (AD_Client_ID == 0) + AD_Client_ID = Env.getContextAsInt(Env.getCtx(), "AD_Client_ID"); + AD_Table_ID = ad_Table_ID; + // + ASchemas = MAcctSchema.getClientAcctSchema(ctx, AD_Client_ID); + ASchema = ASchemas[0]; + } // AcctViewerData + + /** Window */ + public int WindowNo; + /** Client */ + public int AD_Client_ID; + /** All Acct Schema */ + public MAcctSchema[] ASchemas = null; + /** This Acct Schema */ + public MAcctSchema ASchema = null; + + // Selection Info + /** Document Query */ + public boolean documentQuery = false; + /** Acct Schema */ + public int C_AcctSchema_ID = 0; + /** Posting Type */ + public String PostingType = ""; + /** Organization */ + public int AD_Org_ID = 0; + /** Date From */ + public Timestamp DateFrom = null; + /** Date To */ + public Timestamp DateTo = null; + + // Document Table Selection Info + /** Table ID */ + public int AD_Table_ID; + /** Record */ + public int Record_ID; + + /** Containing Column and Query */ + public HashMap whereInfo = new HashMap(); + /** Containing TableName and AD_Table_ID */ + public HashMap tableInfo = new HashMap(); + + // Display Info + /** Display Qty */ + boolean displayQty = false; + /** Display Source Currency */ + boolean displaySourceAmt = false; + /** Display Document info */ + boolean displayDocumentInfo = false; + // + String sortBy1 = ""; + String sortBy2 = ""; + String sortBy3 = ""; + String sortBy4 = ""; + // + boolean group1 = false; + boolean group2 = false; + boolean group3 = false; + boolean group4 = false; + + /** Leasing Columns */ + private int m_leadingColumns = 0; + /** UserElement1 Reference */ + private String m_ref1 = null; + /** UserElement2 Reference */ + private String m_ref2 = null; + /** Logger */ + private static CLogger log = CLogger.getCLogger(AcctViewerData.class); + + /** + * Dispose + */ + public void dispose() + { + ASchemas = null; + ASchema = null; + // + whereInfo.clear(); + whereInfo = null; + // + Env.clearWinContext(WindowNo); + } // dispose + + + /************************************************************************** + * Fill Accounting Schema + * @param cb JComboBox to be filled + */ + protected void fillAcctSchema (JComboBox cb) + { + for (int i = 0; i < ASchemas.length; i++) + cb.addItem(new KeyNamePair(ASchemas[i].getC_AcctSchema_ID(), + ASchemas[i].getName())); + } // fillAcctSchema + + /** + * Fill Posting Type + * @param cb JComboBox to be filled + */ + protected void fillPostingType (JComboBox cb) + { + int AD_Reference_ID = HardCodedIDs.referencePostingType; + ValueNamePair[] pt = MRefList.getList(Env.getCtx(), AD_Reference_ID, true); + for (int i = 0; i < pt.length; i++) + cb.addItem(pt[i]); + } // fillPostingType + + /** + * Fill Table with + * ValueNamePair (TableName, translatedKeyColumnName) + * and tableInfo with (TableName, AD_Table_ID) + * and select the entry for AD_Table_ID + * + * @param cb JComboBox to be filled + */ + protected void fillTable (JComboBox cb) + { + ValueNamePair select = null; + // + String sql = "SELECT AD_Table_ID, TableName FROM AD_Table t " + + "WHERE EXISTS (SELECT * FROM AD_Column c" + + " WHERE t.AD_Table_ID=c.AD_Table_ID AND c.ColumnName='Posted')" + + " AND IsView='N'"; + try + { + PreparedStatement pstmt = DB.prepareStatement(sql, null); + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + { + int id = rs.getInt(1); + String tableName = rs.getString(2); + String name = Msg.translate(Env.getCtx(), tableName+"_ID"); + // + ValueNamePair pp = new ValueNamePair(tableName, name); + cb.addItem(pp); + tableInfo.put (tableName, new Integer(id)); + if (id == AD_Table_ID) + select = pp; + } + rs.close(); + pstmt.close(); + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + if (select != null) + cb.setSelectedItem(select); + } // fillTable + + /** + * Fill Org + * + * @param cb JComboBox to be filled + */ + protected void fillOrg (JComboBox cb) + { + KeyNamePair pp = new KeyNamePair(0, ""); + cb.addItem(pp); + String sql = "SELECT AD_Org_ID, Name FROM AD_Org WHERE AD_Client_ID=? ORDER BY Value"; + try + { + PreparedStatement pstmt = DB.prepareStatement(sql, null); + pstmt.setInt(1, AD_Client_ID); + ResultSet rs = pstmt.executeQuery(); + while (rs.next()) + cb.addItem(new KeyNamePair(rs.getInt(1), rs.getString(2))); + rs.close(); + pstmt.close(); + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + } // fillOrg + + /** + * Get Button Text + * + * @param tableName table + * @param columnName column + * @param selectSQL sql + * @return Text on button + */ + protected String getButtonText (String tableName, String columnName, String selectSQL) + { + // SELECT () FROM tableName avd WHERE avd. + StringBuffer sql = new StringBuffer ("SELECT ("); + Language language = Env.getLanguage(Env.getCtx()); + sql.append(MLookupFactory.getLookup_TableDirEmbed(language, columnName, "avd")) + .append(") FROM ").append(tableName).append(" avd WHERE avd.").append(selectSQL); + String retValue = "<" + selectSQL + ">"; + try + { + Statement stmt = DB.createStatement(); + ResultSet rs = stmt.executeQuery(sql.toString()); + if (rs.next()) + retValue = rs.getString(1); + rs.close(); + stmt.close(); + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql.toString(), e); + } + return retValue; + } // getButtonText + + /************************************************************************** + + /** + * Create Query and submit + * @return Report Model + */ + protected RModel query() + { + // Set Where Clause + StringBuffer whereClause = new StringBuffer(); + // Add Organization + if (C_AcctSchema_ID != 0) + whereClause.append(RModel.TABLE_ALIAS) + .append(".C_AcctSchema_ID=").append(C_AcctSchema_ID); + + // Posting Type Selected + if (PostingType != null && PostingType.length() > 0) + { + if (whereClause.length() > 0) + whereClause.append(" AND "); + whereClause.append(RModel.TABLE_ALIAS) + .append(".PostingType='").append(PostingType).append("'"); + } + + // + if (documentQuery) + { + if (whereClause.length() > 0) + whereClause.append(" AND "); + whereClause.append(RModel.TABLE_ALIAS).append(".AD_Table_ID=").append(AD_Table_ID) + .append(" AND ").append(RModel.TABLE_ALIAS).append(".Record_ID=").append(Record_ID); + } + else + { + // get values (Queries) + Iterator it = whereInfo.values().iterator(); + while (it.hasNext()) + { + String where = (String)it.next(); + if (where != null && where.length() > 0) // add only if not empty + { + if (whereClause.length() > 0) + whereClause.append(" AND "); + whereClause.append(RModel.TABLE_ALIAS).append(".").append(where); + } + } + if (DateFrom != null || DateTo != null) + { + if (whereClause.length() > 0) + whereClause.append(" AND "); + if (DateFrom != null && DateTo != null) + whereClause.append("TRUNC(").append(RModel.TABLE_ALIAS).append(".DateAcct) BETWEEN ") + .append(DB.TO_DATE(DateFrom)).append(" AND ").append(DB.TO_DATE(DateTo)); + else if (DateFrom != null) + whereClause.append("TRUNC(").append(RModel.TABLE_ALIAS).append(".DateAcct) >= ") + .append(DB.TO_DATE(DateFrom)); + else // DateTo != null + whereClause.append("TRUNC(").append(RModel.TABLE_ALIAS).append(".DateAcct) <= ") + .append(DB.TO_DATE(DateTo)); + } + // Add Organization + if (AD_Org_ID != 0) + { + if (whereClause.length() > 0) + whereClause.append(" AND "); + whereClause.append(RModel.TABLE_ALIAS).append(".AD_Org_ID=").append(AD_Org_ID); + } + } + RModel rm = getRModel(); - // Set Order By Clause - StringBuffer orderClause = new StringBuffer(); - if (sortBy1.length() > 0) + // Set Order By Clause + StringBuffer orderClause = new StringBuffer(); + if (sortBy1.length() > 0) { RColumn col = rm.getRColumn(sortBy1); if (col != null) orderClause.append(col.getDisplaySQL()); else - orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy1); + orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy1); } - if (sortBy2.length() > 0) - { - if (orderClause.length() > 0) - orderClause.append(","); + if (sortBy2.length() > 0) + { + if (orderClause.length() > 0) + orderClause.append(","); RColumn col = rm.getRColumn(sortBy2); if (col != null) orderClause.append(col.getDisplaySQL()); else - orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy2); - } - if (sortBy3.length() > 0) - { - if (orderClause.length() > 0) - orderClause.append(","); + orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy2); + } + if (sortBy3.length() > 0) + { + if (orderClause.length() > 0) + orderClause.append(","); RColumn col = rm.getRColumn(sortBy3); if (col != null) orderClause.append(col.getDisplaySQL()); else - orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy3); - } - if (sortBy4.length() > 0) - { - if (orderClause.length() > 0) - orderClause.append(","); + orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy3); + } + if (sortBy4.length() > 0) + { + if (orderClause.length() > 0) + orderClause.append(","); RColumn col = rm.getRColumn(sortBy4); if (col != null) orderClause.append(col.getDisplaySQL()); else - orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy4); - } - if (orderClause.length() == 0) - orderClause.append(RModel.TABLE_ALIAS).append(".Fact_Acct_ID"); - - // Groups - if (group1 && sortBy1.length() > 0) - rm.setGroup(sortBy1); - if (group2 && sortBy2.length() > 0) - rm.setGroup(sortBy2); - if (group3 && sortBy3.length() > 0) - rm.setGroup(sortBy3); - if (group4 && sortBy4.length() > 0) - rm.setGroup(sortBy4); - - // Totals - rm.setFunction("AmtAcctDr", RModel.FUNCTION_SUM); - rm.setFunction("AmtAcctCr", RModel.FUNCTION_SUM); - - rm.query (Env.getCtx(), whereClause.toString(), orderClause.toString()); - - return rm; - } // query - - /** - * Create Report Model (Columns) - * @return Report Model - */ - private RModel getRModel() - { - Properties ctx = Env.getCtx(); - RModel rm = new RModel("Fact_Acct"); - // Add Key (Lookups) - ArrayList keys = createKeyColumns(); - int max = m_leadingColumns; - if (max == 0) - max = keys.size(); - for (int i = 0; i < max; i++) - { - String column = (String)keys.get(i); - if (column != null && column.startsWith("Date")) - rm.addColumn(new RColumn(ctx, column, DisplayType.Date)); - else if (column != null && column.endsWith("_ID")) - rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir)); - } - // Main Info - rm.addColumn(new RColumn(ctx, "AmtAcctDr", DisplayType.Amount)); - rm.addColumn(new RColumn(ctx, "AmtAcctCr", DisplayType.Amount)); - if (displaySourceAmt) - { - if (!keys.contains("DateTrx")) - rm.addColumn(new RColumn(ctx, "DateTrx", DisplayType.Date)); - rm.addColumn(new RColumn(ctx, "C_Currency_ID", DisplayType.TableDir)); - rm.addColumn(new RColumn(ctx, "AmtSourceDr", DisplayType.Amount)); - rm.addColumn(new RColumn(ctx, "AmtSourceCr", DisplayType.Amount)); - rm.addColumn(new RColumn(ctx, "Rate", DisplayType.Amount, - "CASE WHEN (AmtSourceDr + AmtSourceCr) = 0 THEN 0" - + " ELSE (AmtAcctDr + AmtAcctCr) / (AmtSourceDr + AmtSourceCr) END")); - } - // Remaining Keys - for (int i = max; i < keys.size(); i++) - { - String column = (String)keys.get(i); - if (column != null && column.startsWith("Date")) - rm.addColumn(new RColumn(ctx, column, DisplayType.Date)); - else if (column.startsWith("UserElement")) - { - if (column.indexOf('1') != -1) - rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir, null, 0, m_ref1)); - else - rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir, null, 0, m_ref2)); - } - else if (column != null && column.endsWith("_ID")) - rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir)); - } - // Info - if (!keys.contains("DateAcct")) - rm.addColumn(new RColumn(ctx, "DateAcct", DisplayType.Date)); - if (!keys.contains("C_Period_ID")) - rm.addColumn(new RColumn(ctx, "C_Period_ID", DisplayType.TableDir)); - if (displayQty) - { - rm.addColumn(new RColumn(ctx, "C_UOM_ID", DisplayType.TableDir)); - rm.addColumn(new RColumn(ctx, "Qty", DisplayType.Quantity)); - } - if (displayDocumentInfo) - { - rm.addColumn(new RColumn(ctx, "AD_Table_ID", DisplayType.TableDir)); - rm.addColumn(new RColumn(ctx, "Record_ID", DisplayType.ID)); + orderClause.append(RModel.TABLE_ALIAS).append(".").append(sortBy4); + } + if (orderClause.length() == 0) + orderClause.append(RModel.TABLE_ALIAS).append(".Fact_Acct_ID"); + + // Groups + if (group1 && sortBy1.length() > 0) + rm.setGroup(sortBy1); + if (group2 && sortBy2.length() > 0) + rm.setGroup(sortBy2); + if (group3 && sortBy3.length() > 0) + rm.setGroup(sortBy3); + if (group4 && sortBy4.length() > 0) + rm.setGroup(sortBy4); + + // Totals + rm.setFunction("AmtAcctDr", RModel.FUNCTION_SUM); + rm.setFunction("AmtAcctCr", RModel.FUNCTION_SUM); + + rm.query (Env.getCtx(), whereClause.toString(), orderClause.toString()); + + return rm; + } // query + + /** + * Create Report Model (Columns) + * @return Report Model + */ + private RModel getRModel() + { + Properties ctx = Env.getCtx(); + RModel rm = new RModel("Fact_Acct"); + // Add Key (Lookups) + ArrayList keys = createKeyColumns(); + int max = m_leadingColumns; + if (max == 0) + max = keys.size(); + for (int i = 0; i < max; i++) + { + String column = (String)keys.get(i); + if (column != null && column.startsWith("Date")) + rm.addColumn(new RColumn(ctx, column, DisplayType.Date)); + else if (column != null && column.endsWith("_ID")) + rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir)); + } + // Main Info + rm.addColumn(new RColumn(ctx, "AmtAcctDr", DisplayType.Amount)); + rm.addColumn(new RColumn(ctx, "AmtAcctCr", DisplayType.Amount)); + if (displaySourceAmt) + { + if (!keys.contains("DateTrx")) + rm.addColumn(new RColumn(ctx, "DateTrx", DisplayType.Date)); + rm.addColumn(new RColumn(ctx, "C_Currency_ID", DisplayType.TableDir)); + rm.addColumn(new RColumn(ctx, "AmtSourceDr", DisplayType.Amount)); + rm.addColumn(new RColumn(ctx, "AmtSourceCr", DisplayType.Amount)); + rm.addColumn(new RColumn(ctx, "Rate", DisplayType.Amount, + "CASE WHEN (AmtSourceDr + AmtSourceCr) = 0 THEN 0" + + " ELSE (AmtAcctDr + AmtAcctCr) / (AmtSourceDr + AmtSourceCr) END")); + } + // Remaining Keys + for (int i = max; i < keys.size(); i++) + { + String column = (String)keys.get(i); + if (column != null && column.startsWith("Date")) + rm.addColumn(new RColumn(ctx, column, DisplayType.Date)); + else if (column.startsWith("UserElement")) + { + if (column.indexOf('1') != -1) + rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir, null, 0, m_ref1)); + else + rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir, null, 0, m_ref2)); + } + else if (column != null && column.endsWith("_ID")) + rm.addColumn(new RColumn(ctx, column, DisplayType.TableDir)); + } + // Info + if (!keys.contains("DateAcct")) + rm.addColumn(new RColumn(ctx, "DateAcct", DisplayType.Date)); + if (!keys.contains("C_Period_ID")) + rm.addColumn(new RColumn(ctx, "C_Period_ID", DisplayType.TableDir)); + if (displayQty) + { + rm.addColumn(new RColumn(ctx, "C_UOM_ID", DisplayType.TableDir)); + rm.addColumn(new RColumn(ctx, "Qty", DisplayType.Quantity)); + } + if (displayDocumentInfo) + { + rm.addColumn(new RColumn(ctx, "AD_Table_ID", DisplayType.TableDir)); + rm.addColumn(new RColumn(ctx, "Record_ID", DisplayType.ID)); rm.addColumn(new RColumn(ctx, "Description", DisplayType.String)); } if (PostingType == null || PostingType.length() == 0) @@ -486,46 +487,46 @@ class AcctViewerData null)); return rm; } // createRModel - - /** - * Create the key columns in sequence - * @return List of Key Columns - */ - private ArrayList createKeyColumns() - { - ArrayList columns = new ArrayList(); - m_leadingColumns = 0; - // Sorting Fields - columns.add(sortBy1); // may add "" - if (!columns.contains(sortBy2)) - columns.add(sortBy2); - if (!columns.contains(sortBy3)) - columns.add(sortBy3); - if (!columns.contains(sortBy4)) - columns.add(sortBy4); - - // Add Account Segments - MAcctSchemaElement[] elements = ASchema.getAcctSchemaElements(); - for (int i = 0; i < elements.length; i++) - { - if (m_leadingColumns == 0 && columns.contains("AD_Org_ID") && columns.contains("Account_ID")) - m_leadingColumns = columns.size(); - // - MAcctSchemaElement ase = elements[i]; - String columnName = ase.getColumnName(); - if (columnName.startsWith("UserElement")) - { - if (columnName.indexOf('1') != -1) - m_ref1 = ase.getDisplayColumnName(); - else - m_ref2 = ase.getDisplayColumnName(); - } - if (!columns.contains(columnName)) - columns.add(columnName); - } - if (m_leadingColumns == 0 && columns.contains("AD_Org_ID") && columns.contains("Account_ID")) - m_leadingColumns = columns.size(); - return columns; - } // createKeyColumns - -} // AcctViewerData + + /** + * Create the key columns in sequence + * @return List of Key Columns + */ + private ArrayList createKeyColumns() + { + ArrayList columns = new ArrayList(); + m_leadingColumns = 0; + // Sorting Fields + columns.add(sortBy1); // may add "" + if (!columns.contains(sortBy2)) + columns.add(sortBy2); + if (!columns.contains(sortBy3)) + columns.add(sortBy3); + if (!columns.contains(sortBy4)) + columns.add(sortBy4); + + // Add Account Segments + MAcctSchemaElement[] elements = ASchema.getAcctSchemaElements(); + for (int i = 0; i < elements.length; i++) + { + if (m_leadingColumns == 0 && columns.contains("AD_Org_ID") && columns.contains("Account_ID")) + m_leadingColumns = columns.size(); + // + MAcctSchemaElement ase = elements[i]; + String columnName = ase.getColumnName(); + if (columnName.startsWith("UserElement")) + { + if (columnName.indexOf('1') != -1) + m_ref1 = ase.getDisplayColumnName(); + else + m_ref2 = ase.getDisplayColumnName(); + } + if (!columns.contains(columnName)) + columns.add(columnName); + } + if (m_leadingColumns == 0 && columns.contains("AD_Org_ID") && columns.contains("Account_ID")) + m_leadingColumns = columns.size(); + return columns; + } // createKeyColumns + +} // AcctViewerData diff --git a/org.adempiere.ui.swing/src/org/compiere/apps/AMenu.java b/org.adempiere.ui.swing/src/org/compiere/apps/AMenu.java index 6e18b6e81e..545a1ff7d2 100644 --- a/org.adempiere.ui.swing/src/org/compiere/apps/AMenu.java +++ b/org.adempiere.ui.swing/src/org/compiere/apps/AMenu.java @@ -58,6 +58,7 @@ import org.compiere.apps.wf.WFActivity; import org.compiere.apps.wf.WFPanel; import org.compiere.db.CConnection; import org.compiere.grid.tree.VTreePanel; +import org.compiere.model.HardCodedIDs; import org.compiere.model.MRole; import org.compiere.model.MSession; import org.compiere.model.MSysConfig; @@ -687,7 +688,7 @@ public final class AMenu extends CFrame // + " INNER JOIN AD_TABLE t ON (t.AD_Window_ID=m.AD_Window_ID) " // + "WHERE t.AD_Table_ID=?", 417); if (m_request_Menu_ID == 0) - m_request_Menu_ID = 237; // My Requests + m_request_Menu_ID = HardCodedIDs.windowMyRequests; // My Requests (new AMenuStartItem (m_request_Menu_ID, true, Msg.translate(m_ctx, "R_Request_ID"), this)).start(); // async load } // gotoRequests