diff --git a/base/src/org/compiere/model/MAllocationHdr.java b/base/src/org/compiere/model/MAllocationHdr.java index f9583ecbb3..2312e862f7 100644 --- a/base/src/org/compiere/model/MAllocationHdr.java +++ b/base/src/org/compiere/model/MAllocationHdr.java @@ -24,6 +24,7 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Properties; import java.util.logging.Level; @@ -130,43 +131,18 @@ public final class MAllocationHdr extends X_C_AllocationHdr implements DocAction */ public static MAllocationHdr[] getOfCash (Properties ctx, int C_Cash_ID, String trxName) { - String sql = "SELECT a.C_AllocationHdr_ID FROM C_Cash c " - + " INNER JOIN C_Cashline cl ON (c.C_Cash_ID= cl.C_Cash_ID) " - + " INNER JOIN C_AllocationLine al ON (al.C_Cashline_ID=cl.C_Cashline_ID) " - + " INNER JOIN C_AllocationHdr a ON(al.C_AllocationHdr_ID=a.C_AllocationHdr_ID) " - + " WHERE c.C_Cash_ID=? GROUP BY a.C_AllocationHdr_ID"; - - ArrayList<MAllocationHdr> list = new ArrayList<MAllocationHdr>(); - PreparedStatement pstmt = null; - try - { - pstmt = DB.prepareStatement(sql, trxName); - pstmt.setInt(1, C_Cash_ID); - ResultSet rs = pstmt.executeQuery(); - while (rs.next()) - list.add (new MAllocationHdr(ctx, rs.getInt(1), 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; - } + String whereClause = "IsActive='Y'" + + " AND EXISTS (SELECT 1 FROM C_CashLine cl, C_AllocationLine al " + + "where cl.C_Cash_ID=? and al.C_CashLine_ID=cl.C_CashLine_ID " + + "and C_AllocationHdr.C_AllocationHdr_ID=al.C_AllocationHdr_ID)"; + Query query = MTable.get(ctx, MAllocationHdr.Table_ID) + .createQuery(whereClause, trxName); + query.setParameters(new Object[]{C_Cash_ID}); + List<MAllocationHdr> list = query.list(); MAllocationHdr[] retValue = new MAllocationHdr[list.size()]; list.toArray(retValue); return retValue; - } // getOfInvoice + } // getOfCash /** Logger */ private static CLogger s_log = CLogger.getCLogger(MAllocationHdr.class);