BF [ 2847648 ] Manufacture & shipment cost errors

https://sourceforge.net/tracker/?func=detail&aid=2847648&group_id=176962&atid=934929
This commit is contained in:
teo_sarca 2009-08-31 10:23:14 +00:00
parent 4c637693b6
commit 622c20e5de
2 changed files with 26 additions and 15 deletions

View File

@ -41,10 +41,15 @@ import org.compiere.util.Trx;
* @author Jorg Janke * @author Jorg Janke
* @version $Id: MCost.java,v 1.6 2006/07/30 00:51:02 jjanke Exp $ * @version $Id: MCost.java,v 1.6 2006/07/30 00:51:02 jjanke Exp $
* *
* Carlos Ruiz - globalqss - integrate bug fix from Teo Sarca * @author Carlos Ruiz - globalqss
* [ 1619112 ] Posible problem for LastPO costing, Batch/Lot level * <li>integrate bug fix from Teo Sarca - [ 1619112 ] Posible problem for LastPO costing, Batch/Lot level
* *
* FR: [ 2214883 ] Remove SQL code and Replace for Query - red1 (only non-join query) * @author Red1
* <li>FR: [ 2214883 ] Remove SQL code and Replace for Query - red1 (only non-join query)
*
* @author Teo Sarca
* <li>BF [ 2847648 ] Manufacture & shipment cost errors
* https://sourceforge.net/tracker/?func=detail&aid=2847648&group_id=176962&atid=934929
*/ */
public class MCost extends X_M_Cost public class MCost extends X_M_Cost
{ {
@ -121,10 +126,7 @@ public class MCost extends X_M_Cost
String costingMethod, BigDecimal qty, int C_OrderLine_ID, String costingMethod, BigDecimal qty, int C_OrderLine_ID,
boolean zeroCostsOK, String trxName) boolean zeroCostsOK, String trxName)
{ {
BigDecimal currentCostPrice = null;
BigDecimal currentCostPriceLL = null;
String costElementType = null; String costElementType = null;
//int M_CostElement_ID = 0;
BigDecimal percent = null; BigDecimal percent = null;
// //
BigDecimal materialCostEach = Env.ZERO; BigDecimal materialCostEach = Env.ZERO;
@ -132,9 +134,12 @@ public class MCost extends X_M_Cost
BigDecimal percentage = Env.ZERO; BigDecimal percentage = Env.ZERO;
int count = 0; int count = 0;
// //
String sql = "SELECT SUM(c.CurrentCostPrice), ce.CostElementType, ce.CostingMethod," String sql = "SELECT"
+ " c.Percent, c.M_CostElement_ID , SUM(c.CurrentCostPriceLL) " // 4..5 + " COALESCE(SUM(c.CurrentCostPrice),0)," // 1
+ "FROM M_Cost c" + " ce.CostElementType, ce.CostingMethod," // 2,3
+ " c.Percent, c.M_CostElement_ID ," // 4,5
+ " COALESCE(SUM(c.CurrentCostPriceLL),0) " // 6
+ " FROM M_Cost c"
+ " LEFT OUTER JOIN M_CostElement ce ON (c.M_CostElement_ID=ce.M_CostElement_ID) " + " LEFT OUTER JOIN M_CostElement ce ON (c.M_CostElement_ID=ce.M_CostElement_ID) "
+ "WHERE c.AD_Client_ID=? AND c.AD_Org_ID=?" // #1/2 + "WHERE c.AD_Client_ID=? AND c.AD_Org_ID=?" // #1/2
+ " AND c.M_Product_ID=?" // #3 + " AND c.M_Product_ID=?" // #3
@ -157,25 +162,28 @@ public class MCost extends X_M_Cost
rs = pstmt.executeQuery (); rs = pstmt.executeQuery ();
while (rs.next ()) while (rs.next ())
{ {
currentCostPrice = rs.getBigDecimal(1); BigDecimal currentCostPrice = rs.getBigDecimal(1);
currentCostPriceLL = rs.getBigDecimal(6); BigDecimal currentCostPriceLL = rs.getBigDecimal(6);
costElementType = rs.getString(2); costElementType = rs.getString(2);
String cm = rs.getString(3); String cm = rs.getString(3);
percent = rs.getBigDecimal(4); percent = rs.getBigDecimal(4);
// M_CostElement_ID = rs.getInt(5); //M_CostElement_ID = rs.getInt(5);
s_log.finest("CurrentCostPrice=" + currentCostPrice s_log.finest("CurrentCostPrice=" + currentCostPrice
+ ", CurrentCostPriceLL=" + currentCostPriceLL
+ ", CostElementType=" + costElementType + ", CostElementType=" + costElementType
+ ", CostingMethod=" + cm + ", CostingMethod=" + cm
+ ", Percent=" + percent); + ", Percent=" + percent);
// //
if (currentCostPrice != null && currentCostPrice.signum() != 0) if (currentCostPrice.signum() != 0 || currentCostPriceLL.signum() != 0)
{ {
if (cm != null) if (cm != null)
{ {
materialCostEach = materialCostEach.add(currentCostPrice).add(currentCostPriceLL); materialCostEach = materialCostEach.add(currentCostPrice).add(currentCostPriceLL);
} }
else else
{
otherCostEach = otherCostEach.add(currentCostPrice).add(currentCostPriceLL); otherCostEach = otherCostEach.add(currentCostPrice).add(currentCostPriceLL);
}
} }
if (percent != null && percent.signum() != 0) if (percent != null && percent.signum() != 0)
percentage = percentage.add(percent); percentage = percentage.add(percent);

View File

@ -1069,9 +1069,12 @@ public class MCostDetail extends X_M_CostDetail
{ {
cost.add(amt, qty); cost.add(amt, qty);
// Initial // Initial
if (cost.getCurrentCostPrice().signum() == 0 if (cost.getCurrentCostPrice().signum() == 0
&& cost.get_ID() == 0) && cost.getCurrentCostPriceLL().signum() == 0
&& cost.is_new())
{
cost.setCurrentCostPrice(price); cost.setCurrentCostPrice(price);
}
} }
else else
cost.setCurrentQty(cost.getCurrentQty().add(qty)); cost.setCurrentQty(cost.getCurrentQty().add(qty));