Applying Teo Sarca's [FR 1981760 ] Improve query Class
Set in MOrder.java and resolve dependencies. Tested by creating a new POS Sales Order, complete it, reactivate it, set to Std Order, complete it; Generate Shipments (manual) - OK Generate Invoices (manaul) - OK detected same dependency in eevolution.process.MovementGenerate.java
This commit is contained in:
parent
ae89db1d1e
commit
ca1549c465
|
|
@ -22,6 +22,7 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
@ -32,6 +33,8 @@ import org.compiere.process.DocumentEngine;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
import org.eevolution.model.MDDOrderLine;
|
||||||
import org.eevolution.model.MPPProductBOMLine;
|
import org.eevolution.model.MPPProductBOMLine;
|
||||||
import org.eevolution.model.MPPProductBOM;
|
import org.eevolution.model.MPPProductBOM;
|
||||||
|
|
||||||
|
|
@ -605,39 +608,18 @@ public class MOrder extends X_C_Order implements DocAction
|
||||||
*/
|
*/
|
||||||
public MOrderLine[] getLines (String whereClause, String orderClause)
|
public MOrderLine[] getLines (String whereClause, String orderClause)
|
||||||
{
|
{
|
||||||
ArrayList<MOrderLine> list = new ArrayList<MOrderLine> ();
|
//red1 - using new Query class from Teo / Victor's MDDOrder.java implementation
|
||||||
StringBuffer sql = new StringBuffer("SELECT * FROM C_OrderLine WHERE C_Order_ID=? ");
|
StringBuffer whereClauseFinal = new StringBuffer("C_Order_ID =?");
|
||||||
if (whereClause != null)
|
if (!Util.isEmpty(whereClause, true))
|
||||||
sql.append(whereClause);
|
whereClauseFinal.append(whereClause);
|
||||||
if (orderClause != null)
|
if (orderClause.length() == 0)
|
||||||
sql.append(" ").append(orderClause);
|
orderClause = "Line";
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
ResultSet rs = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
pstmt = DB.prepareStatement(sql.toString(), get_TrxName());
|
|
||||||
pstmt.setInt(1, getC_Order_ID());
|
|
||||||
rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
MOrderLine ol = new MOrderLine(getCtx(), rs, get_TrxName());
|
|
||||||
ol.setHeaderInfo (this);
|
|
||||||
list.add(ol);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, sql.toString(), e);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
DB.close(rs, pstmt);
|
|
||||||
rs = null; pstmt = null;
|
|
||||||
}
|
|
||||||
//
|
//
|
||||||
MOrderLine[] lines = new MOrderLine[list.size ()];
|
List<MOrderLine> list = new Query(getCtx(), MOrderLine.Table_Name, whereClauseFinal.toString(), get_TrxName())
|
||||||
list.toArray (lines);
|
.setParameters(new Object[]{getC_Order_ID()})
|
||||||
return lines;
|
.setOrderBy(orderClause)
|
||||||
|
.list();
|
||||||
|
return list.toArray(new MOrderLine[list.size()]);
|
||||||
} // getLines
|
} // getLines
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -653,7 +635,7 @@ public class MOrder extends X_C_Order implements DocAction
|
||||||
return m_lines;
|
return m_lines;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
String orderClause = "ORDER BY ";
|
String orderClause = "";
|
||||||
if (orderBy != null && orderBy.length() > 0)
|
if (orderBy != null && orderBy.length() > 0)
|
||||||
orderClause += orderBy;
|
orderClause += orderBy;
|
||||||
else
|
else
|
||||||
|
|
@ -1338,7 +1320,7 @@ public class MOrder extends X_C_Order implements DocAction
|
||||||
renumberLines (1000); // max 999 bom items
|
renumberLines (1000); // max 999 bom items
|
||||||
|
|
||||||
// Order Lines with non-stocked BOMs
|
// Order Lines with non-stocked BOMs
|
||||||
MOrderLine[] lines = getLines (where, "ORDER BY Line");
|
MOrderLine[] lines = getLines (where, " Line");
|
||||||
for (int i = 0; i < lines.length; i++)
|
for (int i = 0; i < lines.length; i++)
|
||||||
{
|
{
|
||||||
MOrderLine line = lines[i];
|
MOrderLine line = lines[i];
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ public class InOutGenerate extends SvrProcess
|
||||||
+ " INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID) "
|
+ " INNER JOIN M_InOut io ON (iol.M_InOut_ID=io.M_InOut_ID) "
|
||||||
+ "WHERE iol.C_OrderLine_ID=C_OrderLine.C_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
|
+ "WHERE iol.C_OrderLine_ID=C_OrderLine.C_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
|
||||||
// Deadlock Prevention - Order by M_Product_ID
|
// Deadlock Prevention - Order by M_Product_ID
|
||||||
MOrderLine[] lines = order.getLines (where, "ORDER BY C_BPartner_Location_ID, M_Product_ID");
|
MOrderLine[] lines = order.getLines (where, "C_BPartner_Location_ID, M_Product_ID");
|
||||||
for (int i = 0; i < lines.length; i++)
|
for (int i = 0; i < lines.length; i++)
|
||||||
{
|
{
|
||||||
MOrderLine line = lines[i];
|
MOrderLine line = lines[i];
|
||||||
|
|
|
||||||
|
|
@ -233,7 +233,7 @@ public class MovementGenerate extends SvrProcess
|
||||||
+ " INNER JOIN M_Movement io ON (iol.M_Movement_ID=io.M_Movement_ID) "
|
+ " INNER JOIN M_Movement io ON (iol.M_Movement_ID=io.M_Movement_ID) "
|
||||||
+ "WHERE iol.DD_OrderLine_ID=DD_OrderLine.DD_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
|
+ "WHERE iol.DD_OrderLine_ID=DD_OrderLine.DD_OrderLine_ID AND io.DocStatus IN ('IP','WC'))";
|
||||||
// Deadlock Prevention - Order by M_Product_ID
|
// Deadlock Prevention - Order by M_Product_ID
|
||||||
MDDOrderLine[] lines = order.getLines (where, "ORDER BY M_Product_ID");
|
MDDOrderLine[] lines = order.getLines (where, "M_Product_ID");
|
||||||
for (int i = 0; i < lines.length; i++)
|
for (int i = 0; i < lines.length; i++)
|
||||||
{
|
{
|
||||||
MDDOrderLine line = lines[i];
|
MDDOrderLine line = lines[i];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue