/////////////////////////////////////////////////////////// // Bool.cs // Implementation of Class PartInventoryValuesFetcher // CSLA type: Read-only object // Created on: 29-Dec-2007 // Object design: John // Coded: John 29-Dec-2007 /////////////////////////////////////////////////////////// using System; using System.Data; using CSLA.Data; using GZTW.Data; using CSLA; using System.Threading; using CSLA.Security; namespace GZTW.AyaNova.BLL { /// /// Used to quickly fetch a various inventory related values /// for a particular part over all warehouses combined /// /// [Serializable] public class PartInventoryValuesFetcher : ReadOnlyBase//v8port: this is only used by QBI, it's probably redundant or should be combined { private decimal mQuantityOnHand = 0; private decimal mQuantityOnOrder = 0; private decimal mQtyOnOrderCommitted = 0; private decimal mMinStockLevel = 0; #region Constructor /// /// Private constructor to prevent direct instantiation /// private PartInventoryValuesFetcher() { } #endregion #region Business properties /// /// Quantity in stock in all warehouses /// public decimal QuantityOnHand { get { return mQuantityOnHand; } } /// /// Quantity on open objects /// public decimal QuantityOnOrder { get { return mQuantityOnOrder; } } /// /// Quantity on open objects spoken for on current objects /// public decimal QtyOnOrderCommitted { get { return mQtyOnOrderCommitted; } } /// /// Desired minimum quantity to keep in stock /// public decimal MinStockLevel { get { return mMinStockLevel; } } #endregion #region Static methods /// /// Retrieve a snapshot of current /// inventory values /// /// ID of part /// PartInventoryValuesFetcher object public static PartInventoryValuesFetcher GetItem(Guid PartID) { return (PartInventoryValuesFetcher)DataPortal.Fetch(new Criteria(PartID)); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; DBCommandWrapper cm = DBUtil.DB.GetSqlStringCommandWrapper( "SELECT aQuantityOnHand, aQuantityOnOrder,aMinStockLevel, " + "aQtyOnOrderCommitted FROM aPartByWarehouseInventory " + "WHERE (aPartID = @PartID)" ); cm.AddInParameter("@PartID", DbType.Guid, crit.PartID); SafeDataReader dr = null; dr = new SafeDataReader(DBUtil.DB.ExecuteReader(cm)); while (dr.Read()) { mQuantityOnHand += dr.GetDecimal("aQuantityOnHand"); mQuantityOnOrder += dr.GetDecimal("aQuantityOnOrder"); mQtyOnOrderCommitted += dr.GetDecimal("aQtyOnOrderCommitted"); mMinStockLevel += dr.GetDecimal("aMinStockLevel"); } dr.Close(); } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public Guid PartID; public Criteria(Guid _PartID) { PartID = _PartID; } } #endregion }//end Bool }//end Boolspace GZTW.AyaNova.BLL