/////////////////////////////////////////////////////////// // UnitList.cs // Implementation of Class UnitList // CSLA type: Read only collection // Created on: 26-Oct-2004 // Object design: John // Coded: 26-Oct-2004 /////////////////////////////////////////////////////////// using System; using System.Data; using GZTW.Data; using CSLA.Data; using CSLA; using System.Collections.Generic; namespace GZTW.AyaNova.BLL { #pragma warning disable 1591 /// /// Read only list of objects representing objects. /// Used for UI grids and summary reports and internally in API by other business objects. /// [Serializable] public class UnitList : ReadOnlyCollectionBase { #region Data structure /// /// Properties /// [Serializable] public struct UnitListInfo { internal bool mActive; internal GridNameValueCellItem mSerial; //and ID internal GridNameValueCellItem mClient; internal GridNameValueCellItem mUnitModel; internal SmartDate mPurchasedDate; internal GridNameValueCellItem mParentUnit; //and ID internal GridNameValueCellItem mWorkorder; internal SmartDate mServiceDate; internal GridNameValueCellItem mUnitModelNumber;//case 1727 [SqlColumnNameAttribute("aClient.aName", "aChildUnits.aClientID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Client)] public GridNameValueCellItem LT_O_Client { get { return mClient; } } [SqlColumnNameAttribute("aUnitModel.aName", "aChildUnits.aUnitModelID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.UnitModel)] public GridNameValueCellItem LT_O_UnitModel { get { return mUnitModel; } } //case 1727 [SqlColumnNameAttribute("aUnitModel.aModelNumber", "aChildUnits.aUnitModelID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.UnitModel)] public GridNameValueCellItem LT_UnitModel_Label_ModelNumber { get { return mUnitModelNumber; } } //15-Sept-2006 Add unitmodel category internal GridNameValueCellItem mUnitModelCategory; [SqlColumnNameAttribute("aUnitModelCategory.aName", "aUnitModel.aUnitModelCategoryID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.UnitModelCategory)] public GridNameValueCellItem LT_O_UnitModelCategory { get { return mUnitModelCategory; } } [SqlColumnNameAttribute("aChildUnits.aPurchasedDate"), Display(DisplayType.DateTime)] public object LT_Unit_Label_PurchasedDate { get { return mPurchasedDate.DBValue; } } [SqlColumnNameAttribute("aChildUnits.AACTIVE"), Display(DisplayType.TrueFalse)] public bool LT_Unit_Label_Active { get { return mActive; } } [SqlColumnNameAttribute("aChildUnits.aSerial", "aChildUnits.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Unit)] public GridNameValueCellItem LT_Unit_Label_Serial { get { return mSerial; } } [SqlColumnNameAttribute("aParentUnits.aSerial", "aChildUnits.aParentUnitID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Unit)] public GridNameValueCellItem LT_Unit_Label_ParentUnitID { get { return mParentUnit; } } [SqlColumnNameAttribute("aWorkorderService.aServiceNumber", "aChildUnits.aLastWorkorderID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.WorkorderService)] public GridNameValueCellItem LT_UI_Label_LastWorkorder { get { return mWorkorder; } } [SqlColumnNameAttribute("aChildUnits.aLastServiceDate"), Display(DisplayType.DateTime)] public object LT_UI_Label_LastServiceDate { get { return mServiceDate.DBValue; } } internal decimal mHoursBalance; internal decimal mIncidentsBalance; internal decimal mCurrencyBalance; [SqlColumnNameAttribute("grid"), Display(DisplayType.DecimalNumber)] public decimal LT_ServiceBank_Label_HoursBalance { get { return mHoursBalance; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.DecimalNumber)] public decimal LT_ServiceBank_Label_IncidentsBalance { get { return mIncidentsBalance; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Currency)] public decimal LT_ServiceBank_Label_CurrencyBalance { get { return mCurrencyBalance; } } internal bool mUsesBanking; [SqlColumnNameAttribute("aChildUnits.aUsesBanking"), Display(DisplayType.TrueFalse)] public bool LT_Client_Label_UsesBanking { get { return mUsesBanking; } } internal bool mMetered; internal bool mOverrideModelWarranty; internal int mWarrantyLength; internal bool mLifeTimeWarranty; internal bool mUnitHasOwnAddress; internal decimal mLastMeter; [SqlColumnNameAttribute("aChildUnits.aMetered"), Display(DisplayType.TrueFalse)] public bool LT_Unit_Label_Metered { get { return mMetered; } } [SqlColumnNameAttribute("aChildUnits.aOverrideModelWarranty"), Display(DisplayType.TrueFalse)] public bool LT_Unit_Label_OverrideWarranty { get { return mOverrideModelWarranty; } } [SqlColumnNameAttribute("aChildUnits.aWarrantyLength"), Display(DisplayType.WholeNumber)] public int LT_Unit_Label_OverrideLength { get { return mWarrantyLength; } }//case 1741 [SqlColumnNameAttribute("aChildUnits.aLifeTimeWarranty"), Display(DisplayType.TrueFalse)] public bool LT_Unit_Label_OverrideLifeTime { get { return mLifeTimeWarranty; } }//case 1741 [SqlColumnNameAttribute("aChildUnits.aUnitHasOwnAddress"), Display(DisplayType.TrueFalse)] public bool LT_Unit_Label_UnitHasOwnAddress { get { return mUnitHasOwnAddress; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.DecimalNumber)] public decimal LT_Unit_Label_LastMeter { get { return mLastMeter; } } internal string mCustom1; internal string mCustom2; internal string mCustom3; internal string mCustom4; internal string mCustom5; internal string mCustom6; internal string mCustom7; internal string mCustom8; internal string mCustom9; internal string mCustom0; [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom1 { get { return mCustom1; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom2 { get { return mCustom2; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom3 { get { return mCustom3; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom4 { get { return mCustom4; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom5 { get { return mCustom5; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom6 { get { return mCustom6; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom7 { get { return mCustom7; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom8 { get { return mCustom8; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom9 { get { return mCustom9; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Custom0 { get { return mCustom0; } } internal string mDeliveryAddress; internal string mCity; internal string mStateProv; internal string mCountry; internal string mPostal; internal string mCountryCode; internal string mLatitude; internal string mLongitude; [Display(DisplayType.Text)] public string LT_Address_Label_DeliveryAddress { get { return mDeliveryAddress; } } [Display(DisplayType.Text)] public string LT_Address_Label_City { get { return mCity; } } [Display(DisplayType.Text)] public string LT_Address_Label_StateProv { get { return mStateProv; } } [Display(DisplayType.Text)] public string LT_Address_Label_Country { get { return mCountry; } } [Display(DisplayType.Text)] public string LT_Address_Label_Postal { get { return mPostal; } } [Display(DisplayType.Text)] public string LT_Address_Label_CountryCode { get { return mCountryCode; } } [Display(DisplayType.GeoCoordinate)] public string LT_Address_Label_Latitude { get { return mLatitude; } } [Display(DisplayType.GeoCoordinate)] public string LT_Address_Label_Longitude { get { return mLongitude; } } internal string mWarrantyTerms; internal string mNotes; [SqlColumnNameAttribute("aChildUnits.aWarrantyTerms"), Display(DisplayType.Text)] public string LT_Unit_Label_OverrideWarrantyTerms { get { return mWarrantyTerms; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Text)] public string LT_Unit_Label_Notes { get { return mNotes; } } //Case 427 internal string mReceipt; [SqlColumnNameAttribute("aChildUnits.ARECEIPT"), Display(DisplayType.Text)] //case 3731 was defined as "object" not string causing grid filter to offer date related not string related filters public string LT_Unit_Label_Receipt { get { return mReceipt; } } internal GridNameValueCellItem mPurchaseFromID; [SqlColumnNameAttribute("APurchaseFromVendors.AName", "aChildUnits.aPurchasedFromID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Vendor)] public GridNameValueCellItem LT_Unit_Label_PurchaseFromID { get { return mPurchaseFromID; } } internal GridNameValueCellItem mModelVendorID; [SqlColumnNameAttribute("AUnitModelVendors.AName", "aUnitModel.AVendorID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Vendor)] public GridNameValueCellItem LT_UnitModel_Label_VendorID { get { return mModelVendorID; } } //Case 444 internal string mDescription; [SqlColumnNameAttribute("aChildUnits.ADescription"), Display(DisplayType.Text)] public string LT_Unit_Label_Description //Case 861 was set as type object not string { get { return mDescription; } } //case 78 internal string mText1; internal string mText2; internal string mText3; internal string mText4; [SqlColumnNameAttribute("aChildUnits.ATEXT1"), Display(DisplayType.Text)] public string LT_Unit_Label_Text1 {get{return mText1;}} [SqlColumnNameAttribute("aChildUnits.ATEXT2"), Display(DisplayType.Text)] public string LT_Unit_Label_Text2 { get { return mText2; } } [SqlColumnNameAttribute("aChildUnits.ATEXT3"), Display(DisplayType.Text)] public string LT_Unit_Label_Text3 { get { return mText3; } } [SqlColumnNameAttribute("aChildUnits.ATEXT4"), Display(DisplayType.Text)] public string LT_Unit_Label_Text4 { get { return mText4; } } //case 974 (case 58) internal GridNameValueCellItem mRegion; [SqlColumnNameAttribute("aRegion.aName", "aRegion.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Region)] public GridNameValueCellItem LT_O_Region { get { return mRegion; } } internal bool mBoughtHere; [SqlColumnNameAttribute("aChildUnits.aBoughtHere"), Display(DisplayType.TrueFalse)] public bool LT_Unit_Label_BoughtHere { get { return mBoughtHere; } } /// /// /// /// public bool Equals(UnitListInfo obj) { return this.mSerial.Value.Equals(obj.mSerial.Value); } }//end UnitListInfo #endregion #region Constructor protected UnitList() { // AllowSort=false; // AllowFind=true; // AllowEdit=false; // AllowNew=false; // AllowRemove=false; } #endregion #region Business properties and methods /// /// Get item by index /// /// public UnitListInfo this[int Item] { get { return (UnitListInfo)List[Item]; } } /// /// Returns display text that matches passed in itemid value /// /// public string this[Guid ItemID] { get { foreach (UnitListInfo child in List) { if (child.mSerial.Value == ItemID) return child.ToString(); } return "Missing: " + ItemID.ToString(); } } #endregion #region contains /// /// Check if item in collection /// /// public bool Contains(UnitListInfo obj) { foreach (UnitListInfo child in List) { if (child.Equals(obj)) return true; } return false; } #endregion #region Reporting and shared UI editor helpers /// /// Returns the report key which is a property of /// reports used to link all reports that can be used /// with a particular data source. /// public static string ReportKey { get { return "UnitList"; } } /// /// Returns the Detailed report key /// which is used to determine which reports and objects /// will be used for detailed reports /// /// If empty string then indicates there is no detailed report object or reports /// public static string DetailedReportKey { get { return ""; } } /// /// Base object that this list is reporting on /// used by shared UI editor to instantiate new objects /// when user selects new in UI elements that display this list /// /// (I.E. when user clicks on new in a read only list grid, this is the object type created) /// public static RootObjectTypes BaseObjectType { get { return RootObjectTypes.Unit; } } /// /// Locale key so that generic list editor /// UI code knows what title to give the list in a /// grid /// public string LocaleKey { get { return "Unit.Label.List"; } } /// /// The Type of the struct used to store list records /// Used to fetch the custom display attributes of the fields /// contained within the record to modify the grid display accordingly /// /// public static Type ListRecordType { get { return typeof(UnitListInfo); } } /// /// Field that contains the ID of the objects /// that are the basis of this list. /// /// Used for compiling an ID list for reporting from user /// selections in a grid. /// public static string IDField { get { return "LT_Unit_Label_Serial"; } } /// /// Same as IDField but for detailed reports /// public static string IDFieldDetailed { get { return IDField; } } #endregion #region Static methods /// /// Internal method used by list factory /// internal static UnitList Get(string Filter, int MaxRecords, List IDList) { return (UnitList)DataPortal.Fetch(new Criteria(Filter, IDList, MaxRecords)); } /// /// Get all Unit (filtered by crit) /// /// Use AyaNova UI to easily build xmlCriteria and Ctrl-Alt-g keyboard command to display it for use in your code /// list of objects public static UnitList GetList(string xmlCriteria) { return (UnitList)DataPortal.Fetch(new Criteria(xmlCriteria, null, -1)); } //case 1975 /// /// Get all Unit (filtered by crit and with maximum records) /// public static UnitList GetList(string Filter, int MaxRecords) { return (UnitList)DataPortal.Fetch(new Criteria(Filter, null, MaxRecords)); } /// /// Takes a single ID and returns a "list" of one object /// /// ID of Unit object /// list of objects public static UnitList GetListForSingleItem(Guid UnitID) { //Case 556 List l = new List(); l.Add(UnitID); return GetListFromIDList(l); } /// /// Get list by items indicated in IDList /// /// Generic list of Guid's /// list of objects public static UnitList GetListFromIDList(List IDList) { //case 556 //Handle empty list if (IDList.Count == 0) return new UnitList(); return (UnitList)DataPortal.Fetch(new Criteria("", IDList, -1)); } /// /// Return an empty list /// used for initializing grid /// /// public static UnitList GetEmptyList() { return new UnitList(); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { string q = ""; if (crit.IDList != null) { //Case 556 System.Text.StringBuilder sbIN = new System.Text.StringBuilder(); sbIN.Append(" WHERE (aChildUnits.aID in ("); foreach (Guid gItem in crit.IDList) { sbIN.Append("'"); sbIN.Append("{"); sbIN.Append(gItem.ToString().ToUpperInvariant()); sbIN.Append("}"); sbIN.Append("',"); } sbIN.Length = sbIN.Length - 1; sbIN.Append(")) "); q = "SELECT aUnitModelCategory.aName as aUnitModelCategoryName, aUnitModel.aUnitModelCategoryID, " + "aChildUnits.aID, aChildUnits.aSerial, aChildUnits.AACTIVE, " + "aChildUnits.ATEXT1, aChildUnits.ATEXT2, aChildUnits.ATEXT3, aChildUnits.ATEXT4, " + //case 78 " aClient.aRegionID, aRegion.aName AS aRegionName, " + //case 974 (case 58) " aChildUnits.aLastWorkorderID, aChildUnits.aLastServiceDate, aUnitModel.aModelNumber, " + " aUnitModel.aName AS aUnitModelName, (SELECT TOP 1 aSBANK.aHoursBalance " + "FROM aServiceBank aSBANK WHERE aSBANK.AAPPLIESTOROOTOBJECTID " + "= aChildUnits.aID ORDER " + "BY aSBANK.aCreated DESC) AS HOURSBAL, (SELECT TOP 1 aSBANK.aIncidentsBalance " + "FROM aServiceBank aSBANK WHERE " + "aSBANK.AAPPLIESTOROOTOBJECTID = aChildUnits.aID ORDER " + "BY aSBANK.aCreated DESC) AS INCIDENTSBAL, (SELECT " + "TOP 1 aSBANK.aCurrencyBalance FROM aServiceBank aSBANK " + "WHERE aSBANK.AAPPLIESTOROOTOBJECTID = aChildUnits.aID " + "ORDER BY aSBANK.aCreated DESC) AS CURRENCYBAL, " + "(SELECT TOP 1 aMeter FROM aUnitMeterReading WHERE " + "(aUnitMeterReading.aUnitID = aChildUnits.aID) " + "ORDER BY aCreated DESC) AS aLASTMETERCOUNT, " + " aChildUnits.aUnitModelID, aClient.aName " + "AS aClientName, aChildUnits.aClientID, aChildUnits.aPurchasedDate, " + " aChildUnits.aParentUnitID, " + " aParentUnits.aSerial AS aParentUnitName, aWorkorderService.aServiceNumber, " + " aChildUnits.aMetered, " + " aChildUnits.aOverrideModelWarranty, aChildUnits.aWarrantyLength, " + " aChildUnits.aLifeTimeWarranty, " + "aChildUnits.aUnitHasOwnAddress, aChildUnits.aCustom1, " + " aChildUnits.aCustom2, aChildUnits.aCustom3, aChildUnits.aCustom4, " + " aChildUnits.aCustom5, aChildUnits.aCustom6, " + " aChildUnits.aCustom7, aChildUnits.aCustom8, " + " aChildUnits.aCustom9, aChildUnits.aCustom0, " + //case 771 " aChildUnits.ABoughtHere, " + //Case 427 " AChildUnits.APurchasedFromID AS ACHILDPURCHASEDFROMID, APurchaseFromVendors.AName AS APURCHASEVENDORNAME, " + " aUnitModel.AVendorID AS AMODELVENDORID, AUnitModelVendors.AName AS AMODELVENDORNAME, " + //Case 444 " AChildUnits.ADescription AS ACHILDDESCRIPTION, " + " AADDRESS.aLatitude, AADDRESS.aLongitude, " + " AADDRESS.aPostal, AADDRESS.aCountry, AADDRESS.aCountryCode, " + " AADDRESS.aStateProv, AADDRESS.aCity, " + " AADDRESS.aDeliveryAddress, aChildUnits.aWarrantyTerms, " + " aChildUnits.aNotes, aChildUnits.aReceipt, " + " aChildUnits.aUsesBanking FROM aUnit " + "aChildUnits LEFT OUTER JOIN AADDRESS " + "ON aChildUnits.aID = AADDRESS.aRootObjectID LEFT " + "OUTER JOIN aWorkorderService ON aChildUnits.aLastWorkorderID " + "= aWorkorderService.aWorkorderID " + "LEFT OUTER JOIN aUnit aParentUnits ON aChildUnits.aParentUnitID " + "= aParentUnits.aID LEFT OUTER " + "JOIN aClient ON aChildUnits.aClientID = aClient.aID " + "LEFT OUTER JOIN aUnitModel ON aChildUnits.aUnitModelID " + "= aUnitModel.aID \r\n" + //15-Sept-2006 add UnitModelCategory "LEFT OUTER JOIN aUnitModelCategory ON aUnitModel.aUnitModelCategoryID = aUnitModelCategory.aID \r\n" + //Case 427 "LEFT OUTER JOIN AVendor APurchaseFromVendors ON aChildUnits.aPurchasedFromID = APurchaseFromVendors.aID \r\n" + "LEFT OUTER JOIN AVendor AUnitModelVendors ON aUnitModel.AVendorID = AUnitModelVendors.aID \r\n" + //case 974 (case 58) "LEFT OUTER JOIN aRegion ON aClient.aRegionID = aRegion.aID " + sbIN.ToString(); dr = DBUtil.GetReaderFromSQLString(q); } else { string sCurrencySelect = " (SELECT TOP 1 aSBANK.aCurrencyBalance FROM aServiceBank aSBANK " + "WHERE aSBANK.AAPPLIESTOROOTOBJECTID = aChildUnits.aID " + "ORDER BY aSBANK.aCreated DESC) "; string sIncidentsSelect = " (SELECT TOP 1 aSBANK.aIncidentsBalance " + "FROM aServiceBank aSBANK WHERE " + "aSBANK.AAPPLIESTOROOTOBJECTID = aChildUnits.aID ORDER " + "BY aSBANK.aCreated DESC) "; string sHoursSelect = " (SELECT TOP 1 aSBANK.aHoursBalance " + "FROM aServiceBank aSBANK WHERE aSBANK.AAPPLIESTOROOTOBJECTID " + "= aChildUnits.aID ORDER " + "BY aSBANK.aCreated DESC) "; string sMeterSelect = " (SELECT TOP 1 aMeter FROM aUnitMeterReading WHERE " + "(aUnitMeterReading.aUnitID = aChildUnits.aID) " + "ORDER BY aCreated DESC) "; string where = AyaBizUtils.GetGridColumnCriteria(crit.CriteriaXML, true); where = where.Replace("CURRENCYBAL", sCurrencySelect); where = where.Replace("INCIDENTSBAL", sIncidentsSelect); where = where.Replace("HOURSBAL", sHoursSelect); where = where.Replace("aLASTMETERCOUNT", sMeterSelect); string order = AyaBizUtils.GetGridSortOrderColumns(crit.CriteriaXML); //case 1184 //order = order.Replace("CURRENCYBAL", sCurrencySelect); //order = order.Replace("INCIDENTSBAL", sIncidentsSelect); //order = order.Replace("HOURSBAL", sHoursSelect); //order = order.Replace("aLASTMETERCOUNT", sMeterSelect); //Changed: 15-Sept-2006 to add UnitModelCategoryName q = "SELECT ~MAXRECS~ aUnitModelCategory.aName as aUnitModelCategoryName, aUnitModel.aUnitModelCategoryID, " + "aChildUnits.aID, aChildUnits.aSerial, aChildUnits.AACTIVE, " + "aChildUnits.ATEXT1, aChildUnits.ATEXT2, aChildUnits.ATEXT3, aChildUnits.ATEXT4, " + //case 78 " aClient.aRegionID, aRegion.aName AS aRegionName, " + //case 974 (case 58) " aChildUnits.aLastWorkorderID, aChildUnits.aLastServiceDate, aUnitModel.aModelNumber, " + " aUnitModel.aName AS aUnitModelName, (SELECT TOP 1 aSBANK.aHoursBalance " + "FROM aServiceBank aSBANK WHERE aSBANK.AAPPLIESTOROOTOBJECTID " + "= aChildUnits.aID ORDER " + "BY aSBANK.aCreated DESC) AS HOURSBAL, (SELECT TOP 1 aSBANK.aIncidentsBalance " + "FROM aServiceBank aSBANK WHERE " + "aSBANK.AAPPLIESTOROOTOBJECTID = aChildUnits.aID ORDER " + "BY aSBANK.aCreated DESC) AS INCIDENTSBAL, (SELECT " + "TOP 1 aSBANK.aCurrencyBalance FROM aServiceBank aSBANK " + "WHERE aSBANK.AAPPLIESTOROOTOBJECTID = aChildUnits.aID " + "ORDER BY aSBANK.aCreated DESC) AS CURRENCYBAL, " + "(SELECT TOP 1 aMeter FROM aUnitMeterReading WHERE " + "(aUnitMeterReading.aUnitID = aChildUnits.aID) " + "ORDER BY aCreated DESC) AS aLASTMETERCOUNT, " + " aChildUnits.aUnitModelID, aClient.aName " + "AS aClientName, aChildUnits.aClientID, aChildUnits.aPurchasedDate, " + " aChildUnits.aParentUnitID, " + " aParentUnits.aSerial AS aParentUnitName, aWorkorderService.aServiceNumber, " + " aChildUnits.aMetered, " + " aChildUnits.aOverrideModelWarranty, aChildUnits.aWarrantyLength, " + " aChildUnits.aLifeTimeWarranty, " + "aChildUnits.aUnitHasOwnAddress, aChildUnits.aCustom1, " + " aChildUnits.aCustom2, aChildUnits.aCustom3, aChildUnits.aCustom4, " + " aChildUnits.aCustom5, aChildUnits.aCustom6, " + " aChildUnits.aCustom7, aChildUnits.aCustom8, " + " aChildUnits.aCustom9, aChildUnits.aCustom0, " + //case 771 " aChildUnits.ABoughtHere, " + //Case 427 " AChildUnits.APurchasedFromID AS ACHILDPURCHASEDFROMID, APurchaseFromVendors.AName AS APURCHASEVENDORNAME, " + " aUnitModel.AVendorID AS AMODELVENDORID, AUnitModelVendors.AName AS AMODELVENDORNAME, " + //Case 444 " AChildUnits.ADescription AS ACHILDDESCRIPTION, " + " AADDRESS.aLatitude, AADDRESS.aLongitude, " + " AADDRESS.aPostal, AADDRESS.aCountry, AADDRESS.aCountryCode, " + " AADDRESS.aStateProv, AADDRESS.aCity, " + " AADDRESS.aDeliveryAddress, aChildUnits.aWarrantyTerms, " + " aChildUnits.aNotes, aChildUnits.aReceipt, " + " aChildUnits.aUsesBanking FROM aUnit " + "aChildUnits LEFT OUTER JOIN AADDRESS " + "ON aChildUnits.aID = AADDRESS.aRootObjectID LEFT " + "OUTER JOIN aWorkorderService ON aChildUnits.aLastWorkorderID " + "= aWorkorderService.aWorkorderID " + "LEFT OUTER JOIN aUnit aParentUnits ON aChildUnits.aParentUnitID " + "= aParentUnits.aID LEFT OUTER " + "JOIN aClient ON aChildUnits.aClientID = aClient.aID " + "LEFT OUTER JOIN aUnitModel ON aChildUnits.aUnitModelID " + "= aUnitModel.aID \r\n" + //15-Sept-2006 testing to add UnitModelCategory "LEFT OUTER JOIN aUnitModelCategory ON aUnitModel.aUnitModelCategoryID = aUnitModelCategory.aID \r\n" + //Case 427 "LEFT OUTER JOIN AVendor APurchaseFromVendors ON aChildUnits.aPurchasedFromID = APurchaseFromVendors.aID \r\n" + "LEFT OUTER JOIN AVendor AUnitModelVendors ON aUnitModel.AVendorID = AUnitModelVendors.aID \r\n" + //case 974 (case 58) "inner JOIN aRegion ON aClient.aRegionID = aRegion.aID " + where + " \r\n " + order; if (crit.MaxRecords > 0) q = q.Replace("~MAXRECS~", "TOP " + crit.MaxRecords.ToString()); else q = q.Replace("~MAXRECS~", ""); q = DBUtil.AddRegionFilter(q, "", "");//case 974 (case 58) dr = DBUtil.GetReaderFromSQLString(q); } //************************************************************ while (dr.Read()) { //******************************************* UnitListInfo info = new UnitListInfo(); info.mActive = dr.GetBoolean("AACTIVE"); info.mClient = new GridNameValueCellItem(dr.GetGuid("aClientID"), dr.GetString("aClientName"), RootObjectTypes.Client); info.mPurchasedDate = DBUtil.ToLocal(dr.GetSmartDate("aPurchasedDate")); info.mSerial = new GridNameValueCellItem(dr.GetGuid("aID"), dr.GetString("aSerial"), RootObjectTypes.Unit); info.mUnitModel = new GridNameValueCellItem( dr.GetGuid("aUnitModelID"), AyaBizUtils.SS("", dr.GetString("aUnitModelName"), " ") + dr.GetString("aModelNumber"), RootObjectTypes.UnitModel); //case 1727 info.mUnitModelNumber = new GridNameValueCellItem( dr.GetGuid("aUnitModelID"), dr.GetString("aModelNumber"), RootObjectTypes.UnitModel); info.mUnitModelCategory = new GridNameValueCellItem( dr.GetGuid("aUnitModelCategoryID"), dr.GetString("aUnitModelCategoryName"), RootObjectTypes.UnitModelCategory); info.mParentUnit = new GridNameValueCellItem(dr.GetGuid("aParentUnitID"), dr.GetString("aParentUnitName"), RootObjectTypes.Unit); info.mWorkorder = new GridNameValueCellItem( dr.GetGuid("aLastWorkorderID"), dr.GetInt32("aServiceNumber") == 0 ? "" : dr.GetInt32("aServiceNumber").ToString(), RootObjectTypes.Workorder); info.mServiceDate = DBUtil.ToLocal(dr.GetSmartDate("aLastServiceDate")); info.mMetered = dr.GetBoolean("aMetered"); info.mOverrideModelWarranty = dr.GetBoolean("aOverrideModelWarranty"); info.mWarrantyLength = dr.GetInt32("aWarrantyLength"); info.mLifeTimeWarranty = dr.GetBoolean("aLifeTimeWarranty"); info.mUnitHasOwnAddress = dr.GetBoolean("aUnitHasOwnAddress"); info.mCustom0 = dr.GetString("aCustom0"); info.mCustom1 = dr.GetString("aCustom1"); info.mCustom2 = dr.GetString("aCustom2"); info.mCustom3 = dr.GetString("aCustom3"); info.mCustom4 = dr.GetString("aCustom4"); info.mCustom5 = dr.GetString("aCustom5"); info.mCustom6 = dr.GetString("aCustom6"); info.mCustom7 = dr.GetString("aCustom7"); info.mCustom8 = dr.GetString("aCustom8"); info.mCustom9 = dr.GetString("aCustom9"); info.mDeliveryAddress = dr.GetString("aDeliveryAddress"); info.mCity = dr.GetString("aCity"); info.mStateProv = dr.GetString("aStateProv"); info.mCountry = dr.GetString("aCountry"); info.mPostal = dr.GetString("aPostal"); info.mLatitude = Address.LatitudeToString(dr.GetDecimal("aLatitude")); info.mLongitude = Address.LongitudeToString(dr.GetDecimal("aLongitude")); info.mCountryCode = dr.GetString("aCountryCode"); info.mWarrantyTerms = dr.GetString("aWarrantyTerms"); info.mNotes = dr.GetString("aNotes"); info.mHoursBalance = dr.GetDecimal("HOURSBAL"); info.mIncidentsBalance = dr.GetDecimal("INCIDENTSBAL"); info.mCurrencyBalance = dr.GetDecimal("CURRENCYBAL"); info.mLastMeter = dr.GetInt64("aLASTMETERCOUNT"); //Added:3-Oct-2006 //was missing this bit so uses banking was //always false in the grid and on reports info.mUsesBanking = dr.GetBoolean("aUsesBanking"); //Case 427 info.mReceipt = dr.GetString("aReceipt"); info.mPurchaseFromID = new GridNameValueCellItem( dr.GetGuid("ACHILDPURCHASEDFROMID"), dr.GetString("APURCHASEVENDORNAME"), RootObjectTypes.Vendor); info.mModelVendorID = new GridNameValueCellItem( dr.GetGuid("AMODELVENDORID"), dr.GetString("AMODELVENDORNAME"), RootObjectTypes.Vendor); //Case 444 info.mDescription = dr.GetString("ACHILDDESCRIPTION"); //case 78 info.mText1 = dr.GetString("aText1"); info.mText2 = dr.GetString("aText2"); info.mText3 = dr.GetString("aText3"); info.mText4 = dr.GetString("aText4"); //Case 974 (Case 58) info.mRegion = new GridNameValueCellItem( dr.GetGuid("aRegionID"), dr.GetString("aRegionName"), RootObjectTypes.Region); //case 771 info.mBoughtHere = dr.GetBoolean("aBoughtHere"); InnerList.Add(info); //******************************************* } } finally { if (dr != null) dr.Close(); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public List IDList; public string CriteriaXML; public int MaxRecords; public Criteria(string _CriteriaXML, List _IDList, int _MaxRecords) { CriteriaXML = _CriteriaXML; IDList = _IDList; MaxRecords = _MaxRecords; } } #endregion }//end UnitList #pragma warning restore 1591 }//end namespace GZTW.AyaNova.BLL