/// <summary> /// Get Costs /// </summary> /// <param name="cost">Cost</param> /// <param name="to">where to get costs from </param> /// <returns>costs (could be 0) or null if not found</returns> private Decimal?GetCosts(MCost cost, String to) { Decimal?retValue = null; // Average Invoice if (to.Equals(TO_AverageInvoice)) { MCostElement ce = GetCostElement(TO_AverageInvoice); if (ce == null) { throw new Exception("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 Exception("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 Exception("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 Exception("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 Exception("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 as1 = MAcctSchema.Get(GetCtx(), cost.GetC_AcctSchema_ID()); retValue = MCost.GetLastInvoicePrice(product, cost.GetM_AttributeSetInstance_ID(), cost.GetAD_Org_ID(), as1.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 as1 = MAcctSchema.Get(GetCtx(), cost.GetC_AcctSchema_ID()); retValue = MCost.GetLastPOPrice(product, cost.GetM_AttributeSetInstance_ID(), cost.GetAD_Org_ID(), as1.GetC_Currency_ID()); } } // FiFo else if (to.Equals(TO_LiFo)) { MCostElement ce = GetCostElement(TO_LiFo); if (ce == null) { throw new Exception("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); }