📄 costupdate.java
字号:
}
log.info("#" + counter);
addLog(0, null, new BigDecimal(counter), "@Updated@");
return counter;
} // update
/**
* Update Cost Records
* @param cost cost
* @return true if updated
*/
private boolean update (MCost cost) throws Exception
{
boolean updated = false;
if (p_SetFutureCostTo.equals(p_SetStandardCostTo))
{
BigDecimal costs = getCosts(cost, p_SetFutureCostTo);
if (costs != null && costs.signum() != 0)
{
cost.setFutureCostPrice(costs);
cost.setCurrentCostPrice(costs);
updated = true;
}
}
else
{
if (p_SetStandardCostTo.length() > 0)
{
BigDecimal costs = getCosts(cost, p_SetStandardCostTo);
if (costs != null && costs.signum() != 0)
{
cost.setCurrentCostPrice(costs);
updated = true;
}
}
if (p_SetFutureCostTo.length() > 0)
{
BigDecimal costs = getCosts(cost, p_SetFutureCostTo);
if (costs != null && costs.signum() != 0)
{
cost.setFutureCostPrice(costs);
updated = true;
}
}
}
if (updated)
updated = cost.save();
return updated;
} // update
/**
* Get Costs
* @param cost cost
* @param to where to get costs from
* @return costs (could be 0) or null if not found
*/
private BigDecimal getCosts (MCost cost, String to) throws Exception
{
BigDecimal retValue = null;
// Average Invoice
if (to.equals(TO_AverageInvoice))
{
MCostElement ce = getCostElement(TO_AverageInvoice);
if (ce == null)
throw new CompiereSystemError("CostElement not found: " + TO_AverageInvoice);
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getCurrentCostPrice();
}
// Average Invoice History
else if (to.equals(TO_AverageInvoiceHistory))
{
MCostElement ce = getCostElement(TO_AverageInvoice);
if (ce == null)
throw new CompiereSystemError("CostElement not found: " + TO_AverageInvoice);
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getHistoryAverage();
}
// Average PO
else if (to.equals(TO_AveragePO))
{
MCostElement ce = getCostElement(TO_AveragePO);
if (ce == null)
throw new CompiereSystemError("CostElement not found: " + TO_AveragePO);
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getCurrentCostPrice();
}
// Average PO History
else if (to.equals(TO_AveragePOHistory))
{
MCostElement ce = getCostElement(TO_AveragePO);
if (ce == null)
throw new CompiereSystemError("CostElement not found: " + TO_AveragePO);
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getHistoryAverage();
}
// FiFo
else if (to.equals(TO_FiFo))
{
MCostElement ce = getCostElement(TO_FiFo);
if (ce == null)
throw new CompiereSystemError("CostElement not found: " + TO_FiFo);
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getCurrentCostPrice();
}
// Future Std Costs
else if (to.equals(TO_FutureStandardCost))
retValue = cost.getFutureCostPrice();
// Last Inv Price
else if (to.equals(TO_LastInvoicePrice))
{
MCostElement ce = getCostElement(TO_LastInvoicePrice);
if (ce != null)
{
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getCurrentCostPrice();
}
if (retValue == null)
{
MProduct product = MProduct.get(getCtx(), cost.getM_Product_ID());
MAcctSchema as = MAcctSchema.get(getCtx(), cost.getC_AcctSchema_ID());
retValue = MCost.getLastInvoicePrice(product,
cost.getM_AttributeSetInstance_ID(), cost.getAD_Org_ID(), as.getC_Currency_ID());
}
}
// Last PO Price
else if (to.equals(TO_LastPOPrice))
{
MCostElement ce = getCostElement(TO_LastPOPrice);
if (ce != null)
{
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getCurrentCostPrice();
}
if (retValue == null)
{
MProduct product = MProduct.get(getCtx(), cost.getM_Product_ID());
MAcctSchema as = MAcctSchema.get(getCtx(), cost.getC_AcctSchema_ID());
retValue = MCost.getLastPOPrice(product,
cost.getM_AttributeSetInstance_ID(), cost.getAD_Org_ID(), as.getC_Currency_ID());
}
}
// FiFo
else if (to.equals(TO_LiFo))
{
MCostElement ce = getCostElement(TO_LiFo);
if (ce == null)
throw new CompiereSystemError("CostElement not found: " + TO_LiFo);
MCost xCost = MCost.get(getCtx(), cost.getAD_Client_ID(), cost.getAD_Org_ID(), cost.getM_Product_ID(), cost.getM_CostType_ID(), cost.getC_AcctSchema_ID(), ce.getM_CostElement_ID(), cost.getM_AttributeSetInstance_ID());
if (xCost != null)
retValue = xCost.getCurrentCostPrice();
}
// Old Std Costs
else if (to.equals(TO_OldStandardCost))
retValue = getOldCurrentCostPrice(cost);
// Price List
else if (to.equals(TO_PriceListLimit))
retValue = getPrice(cost);
// Standard Costs
else if (to.equals(TO_StandardCost))
retValue = cost.getCurrentCostPrice();
return retValue;
} // getCosts
/**
* Get Cost Element
* @param CostingMethod method
* @return costing element or null
*/
private MCostElement getCostElement (String CostingMethod)
{
MCostElement ce = m_ces.get(CostingMethod);
if (ce == null)
{
ce = MCostElement.getMaterialCostElement(getCtx(), CostingMethod);
m_ces.put(CostingMethod, ce);
}
return ce;
} // getCostElement
/**
* Get Old Current Cost Price
* @param cost costs
* @return price if found
*/
private BigDecimal getOldCurrentCostPrice(MCost cost)
{
BigDecimal retValue = null;
String sql = "SELECT CostStandard, CurrentCostPrice "
+ "FROM M_Product_Costing "
+ "WHERE M_Product_ID=? AND C_AcctSchema_ID=?";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setInt (1, cost.getM_Product_ID());
pstmt.setInt (2, cost.getC_AcctSchema_ID());
ResultSet rs = pstmt.executeQuery ();
if (rs.next ())
{
retValue = rs.getBigDecimal(1);
if (retValue == null || retValue.signum() == 0)
retValue = rs.getBigDecimal(2);
}
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;
}
return retValue;
} // getOldCurrentCostPrice
/**
* Get Price from Price List
* @return price or null
*/
private BigDecimal getPrice (MCost cost)
{
BigDecimal retValue = null;
String sql = "SELECT PriceLimit "
+ "FROM M_ProductPrice "
+ "WHERE M_Product_ID=? AND M_PriceList_Version_ID=?";
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setInt (1, cost.getM_Product_ID());
pstmt.setInt (2, p_M_PriceList_Version_ID);
ResultSet rs = pstmt.executeQuery ();
if (rs.next ())
{
retValue = rs.getBigDecimal(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;
}
return retValue;
} // getPrice
} // CostUpdate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -