/////////////////////////////////////////////////////////// // PartRestockRequiredByVendorList.cs // Implementation of Class PartRestockRequiredByVendorList // CSLA type: Read only collection // Created on: 25-Oct-2005 // Object design: John // Coded: 25-Oct-2005 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; using System.Threading; using CSLA.Security; namespace GZTW.AyaNova.BLL { #pragma warning disable 1591 /// /// Read only list of objects representing /// Parts that are below their restock level by vendor. /// Used in purchase order entry screen. /// /// [Serializable] public class PartRestockRequiredByVendorList : ReadOnlyCollectionBase { #region Data structure /// /// Log fields /// [Serializable] public struct PartRestockRequiredByVendorListInfo { // Partid, warehouseid, show MinStockLevel , onhand, onorder , Required internal Guid mPartID; internal string mPartName; internal Guid mPartWarehouseID; internal string mPartWarehouseName; internal decimal mMinStockLevel; internal decimal mQuantityOnHand; internal decimal mQuantityOnOrder; internal decimal mQuantityRequired; internal decimal mPartCost; public Guid PartID {get{return mPartID;}} [SqlColumnNameAttribute("aPart.aName")] public string LT_O_Part {get{return mPartName;}} public Guid PartWarehouseID {get{return mPartWarehouseID;}} public string LT_O_PartWarehouse {get{return mPartWarehouseName;}} public decimal LT_PartByWarehouseInventory_Label_MinStockLevel {get{return mMinStockLevel;}} public decimal LT_PartByWarehouseInventory_Label_QuantityOnHand {get{return mQuantityOnHand;}} public decimal LT_PartByWarehouseInventory_Label_QuantityOnOrder {get{return mQuantityOnOrder;}} public decimal REQUIRED {get{return mQuantityRequired;}} public decimal PartCost {get{return mPartCost;}} //LT_PartByWarehouseInventory_Label_ReorderQuantity }//end PartRestockRequiredByVendorListInfo #endregion #region Constructor protected PartRestockRequiredByVendorList() { } #endregion #region Business properties and methods /// /// Get item by index /// /// public PartRestockRequiredByVendorListInfo this[int Item] { get { return (PartRestockRequiredByVendorListInfo) List[Item]; } } #endregion #region Static methods /// /// Get list by wholesaler /// /// /// list of objects public static PartRestockRequiredByVendorList GetList(Guid WholesalerID) { return (PartRestockRequiredByVendorList) DataPortal.Fetch(new Criteria(WholesalerID)); } /// /// Return an empty list /// used for initializing grid /// /// public static PartRestockRequiredByVendorList GetEmptyList() { return new PartRestockRequiredByVendorList(); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { // //Get a part list to use for displaying in grid // PartPickList ppl=PartPickList.GetList(); Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { dr=DBUtil.GetReaderFromSQLString( //************************************************************ "SELECT aPartByWarehouseInventory.aMinStockLevel, " + " aPart.aName AS aPARTNAME, aPart.aPartNumber,aPart.aID AS aPARTID, " + "aPart.aUPC, aPart.aCost, " + " aPartManufacturers.aName AS aPartManufacturerName, " + " aPartCategory.aName AS aPartCategoryName, " + " aPartAssembly.aName AS aPartAssemblyName, " + "aVendor.aName AS aWHOLESALERNAME, aPartWarehouse.aID AS aWAREHOUSEID, aPartWarehouse.aName " + "AS aWAREHOUSENAME, aPartByWarehouseInventory.aQuantityOnHand, " + " aPartByWarehouseInventory.aQuantityOnOrder, " + " aPartByWarehouseInventory.aMinStockLevel " + "- (aPartByWarehouseInventory.aQuantityOnHand " + "+ aPartByWarehouseInventory.aQuantityOnOrder) " + "AS aREQUIRED, aPart.aWholesalerID " + "FROM " + " APARTBYWAREHOUSEINVENTORY " + " LEFT OUTER JOIN APART ON (APARTBYWAREHOUSEINVENTORY.APARTID=APART.AID) " + " LEFT OUTER JOIN AVENDOR ON (APART.AWHOLESALERID=AVENDOR.AID) " + " LEFT OUTER JOIN APARTCATEGORY ON (APART.APARTCATEGORYID=APARTCATEGORY.AID) " + " LEFT OUTER JOIN APARTASSEMBLY ON (APART.APARTASSEMBLYID=APARTASSEMBLY.AID) " + " LEFT OUTER JOIN AVENDOR aPartManufacturers ON (APART.AMANUFACTURERID=aPartManufacturers.AID) " + " LEFT OUTER JOIN APARTWAREHOUSE ON (APARTBYWAREHOUSEINVENTORY.APARTWAREHOUSEID=APARTWAREHOUSE.AID) " + "WHERE (aPart.aWholesalerID = @ID) " + "AND (aPartByWarehouseInventory.aMinStockLevel > 0) " + "AND (aPartByWarehouseInventory.aMinStockLevel " + "- (aPartByWarehouseInventory.aQuantityOnHand " + "+ aPartByWarehouseInventory.aQuantityOnOrder) > 0) ", crit.WholesalerID //************************************************************ ); while(dr.Read()) { //******************************************* PartRestockRequiredByVendorListInfo info=new PartRestockRequiredByVendorListInfo(); info.mMinStockLevel=dr.GetDecimal("aMinStockLevel"); info.mPartID=dr.GetGuid("aPARTID"); info.mPartName= Part.PartDisplayFormatter( dr.GetString("aPARTNAME"), dr.GetString("aPartNumber"), dr.GetString("aUPC"), dr.GetString("aPartManufacturerName"), dr.GetString("aPartCategoryName"), dr.GetString("aPartAssemblyName"), AyaBizUtils.GlobalSettings.DefaultPartDisplayFormat ); info.mPartWarehouseID=dr.GetGuid("aWAREHOUSEID"); info.mPartWarehouseName=dr.GetString("aWAREHOUSENAME"); info.mQuantityOnHand=dr.GetDecimal("aQuantityOnHand"); info.mQuantityOnOrder=dr.GetDecimal("aQuantityOnOrder"); info.mQuantityRequired=dr.GetDecimal("aREQUIRED"); info.mPartCost=dr.GetDecimal("aCost"); InnerList.Add(info); //******************************************* } } finally { if(dr!=null) dr.Close(); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public Guid WholesalerID; public Criteria( Guid _WholesalerID) { WholesalerID=_WholesalerID; } } #endregion }//end PartRestockRequiredByVendorList #pragma warning restore 1591 }//end namespace GZTW.AyaNova.BLL