diff --git a/base/src/org/compiere/model/MCostElement.java b/base/src/org/compiere/model/MCostElement.java
index 3a8a9349eb..4f46f85342 100644
--- a/base/src/org/compiere/model/MCostElement.java
+++ b/base/src/org/compiere/model/MCostElement.java
@@ -16,13 +16,10 @@
*****************************************************************************/
package org.compiere.model;
-import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Properties;
-import java.util.logging.Level;
import org.compiere.util.CCache;
import org.compiere.util.CLogger;
@@ -38,6 +35,8 @@ import org.compiere.util.Msg;
* @author Teo Sarca, www.arhipac.ro
*
BF [ 2664529 ] More then one Labor/Burden//Overhead is not allowed
* BF [ 2667470 ] MCostElement.getMaterialCostElement should check only material
+ * @author red1
+ * FR: [ 2214883 ] Remove SQL code and Replace for Query -- JUnit tested
*/
public class MCostElement extends X_M_CostElement
{
@@ -63,7 +62,7 @@ public class MCostElement extends X_M_CostElement
//
final String whereClause = "AD_Client_ID=? AND CostingMethod=? AND CostElementType=?";
MCostElement retValue = new Query(po.getCtx(), Table_Name, whereClause, po.get_TrxName())
- .setParameters(new Object[]{po.getAD_Client_ID(), CostingMethod, COSTELEMENTTYPE_Material})
+ .setParameters(po.getAD_Client_ID(), CostingMethod, COSTELEMENTTYPE_Material)
.setOrderBy("AD_Org_ID")
.firstOnly();
if (retValue != null)
@@ -92,37 +91,11 @@ public class MCostElement extends X_M_CostElement
*/
public static MCostElement getMaterialCostElement(Properties ctx, String CostingMethod)
{
- MCostElement retValue = null;
- String sql = "SELECT * FROM M_CostElement WHERE AD_Client_ID=? AND CostingMethod=? ORDER BY AD_Org_ID";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, null);
- pstmt.setInt (1, Env.getAD_Client_ID(ctx));
- pstmt.setString(2, CostingMethod);
- ResultSet rs = pstmt.executeQuery ();
- if (rs.next ())
- retValue = new MCostElement (ctx, rs, null);
- if (rs.next())
- s_log.info("More then one Material Cost Element for CostingMethod=" + CostingMethod);
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- s_log.log (Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
+ final String whereClause = "AD_Client_ID=? AND CostingMethod=?";
+ MCostElement retValue = new Query(ctx, I_M_CostElement.Table_Name, whereClause, null)
+ .setParameters(Env.getAD_Client_ID(ctx), CostingMethod)
+ .setOrderBy(I_M_CostElement.COLUMNNAME_AD_Org_ID)
+ .firstOnly();
return retValue;
} // getMaterialCostElement
@@ -147,36 +120,11 @@ public class MCostElement extends X_M_CostElement
*/
public static MCostElement[] getCostingMethods (PO po)
{
- ArrayList list = new ArrayList();
- String sql = "SELECT * FROM M_CostElement "
- + "WHERE AD_Client_ID=?"
- + " AND IsActive='Y' AND CostElementType='M' AND CostingMethod IS NOT NULL";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, po.get_TrxName());
- pstmt.setInt (1, po.getAD_Client_ID());
- ResultSet rs = pstmt.executeQuery ();
- while (rs.next ())
- list.add(new MCostElement (po.getCtx(), rs, po.get_TrxName()));
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- s_log.log (Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
+ final String whereClause ="AD_Client_ID=? AND CostElementType='M' AND CostingMethod IS NOT NULL";
+ List list = new Query(po.getCtx(), I_M_CostElement.Table_Name, whereClause, po.get_TrxName())
+ .setParameters(po.getAD_Client_ID())
+ .setOnlyActiveRecords(true)
+ .list();
//
MCostElement[] retValue = new MCostElement[list.size ()];
list.toArray (retValue);
@@ -191,36 +139,11 @@ public class MCostElement extends X_M_CostElement
*/
public static MCostElement[] getNonCostingMethods (PO po)
{
- ArrayList list = new ArrayList();
- String sql = "SELECT * FROM M_CostElement "
- + "WHERE AD_Client_ID=?"
- + " AND IsActive='Y' AND CostingMethod IS NULL";
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, po.get_TrxName());
- pstmt.setInt (1, po.getAD_Client_ID());
- ResultSet rs = pstmt.executeQuery ();
- while (rs.next ())
- list.add(new MCostElement (po.getCtx(), rs, po.get_TrxName()));
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- s_log.log (Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
+ final String whereClause = "AD_Client_ID=? AND CostingMethod IS NULL";
+ Listlist = new Query(po.getCtx(),MCostElement.Table_Name, whereClause, po.get_TrxName())
+ .setParameters(po.getAD_Client_ID())
+ .setOnlyActiveRecords(true)
+ .list();
//
MCostElement[] retValue = new MCostElement[list.size ()];
list.toArray (retValue);
@@ -258,9 +181,9 @@ public class MCostElement extends X_M_CostElement
int AD_Client_ID = Env.getAD_Client_ID(ctx);
int AD_Org_ID = 0; // Org is always ZERO - see beforeSave
- String whereClause = "AD_Client_ID = ? AND AD_Org_ID = ?";
+ final String whereClause = "AD_Client_ID = ? AND AD_Org_ID = ?";
List list = new Query(ctx, Table_Name, whereClause, trxName)
- .setParameters(new Object[]{AD_Client_ID, AD_Org_ID})
+ .setParameters(AD_Client_ID, AD_Org_ID)
.list();
MCostElement[] retValue = new MCostElement[list.size()];
list.toArray(retValue);
@@ -279,7 +202,7 @@ public class MCostElement extends X_M_CostElement
return new Query(ctx, Table_Name, whereClause, null)
.setClient_ID()
.setOnlyActiveRecords(true)
- .setParameters(new Object[]{CostingMethod})
+ .setParameters(CostingMethod)
.list();
}
@@ -393,37 +316,12 @@ public class MCostElement extends X_M_CostElement
}
// Costing Methods on PC level
- String sql = "SELECT M_Product_Category_ID FROM M_Product_Category_Acct WHERE AD_Client_ID=? AND CostingMethod=?";
int M_Product_Category_ID = 0;
- PreparedStatement pstmt = null;
- try
- {
- pstmt = DB.prepareStatement (sql, null);
- pstmt.setInt (1, getAD_Client_ID());
- pstmt.setString (2, getCostingMethod());
- ResultSet rs = pstmt.executeQuery ();
- if (rs.next ())
- {
- M_Product_Category_ID = rs.getInt(1);
- }
- rs.close ();
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- log.log (Level.SEVERE, sql, e);
- }
- try
- {
- if (pstmt != null)
- pstmt.close ();
- pstmt = null;
- }
- catch (Exception e)
- {
- pstmt = null;
- }
+ final String whereClause ="AD_Client_ID=? AND CostingMethod=?";
+ MProductCategory retValue = new Query(getCtx(), I_M_Product_Category_Acct.Table_Name, whereClause, null)
+ .setParameters(getAD_Client_ID(), getCostingMethod())
+ .first();
+ M_Product_Category_ID = retValue.getM_Product_Category_ID();
if (M_Product_Category_ID != 0)
{
log.saveError("CannotDeleteUsed", Msg.getElement(getCtx(), "M_Product_Category_ID")