/////////////////////////////////////////////////////////// // WorkorderPMTravelList.cs // Implementation of Class WorkorderPMTravelList // CSLA type: Read only collection // Created on: 19-Dec-2005 // Object design: Joyce // Coded: 19-Dec-2005 /////////////////////////////////////////////////////////// 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 used in grids and summary reports /// [Serializable] public class WorkorderPMTravelList : ReadOnlyCollectionBase { #region Data structure /// /// Properties /// [Serializable] public struct WorkorderPMTravelListInfo { #region Workorder Service Level #region Attributes internal Guid mWorkorderID; internal GridNameValueCellItem mWorkorder; internal GridNameValueCellItem mClient; internal GridNameValueCellItem mProject; internal GridNameValueCellItem mRegion; internal GridNameValueCellItem mCategory; internal string mInternalReferenceNumber; internal string mCustomerReferenceNumber; internal string mCustomerContactName; internal string mSummary; internal bool mOnsite; internal bool mServiceCompleted; //internal bool mClosed; internal GridNameValueCellItem mClientGroup; internal GridNameValueCellItem mDispatchZone; //PM ------------- internal SmartDate mStopGeneratingDate; internal SmartDate mNextServiceDate; internal SmartDate mCreatedDate; internal AyaDayOfWeek mDayOfTheWeek; internal bool mActive; internal int mGenerateSpan; internal int mThresholdSpan; internal AyaUnitsOfTime mGenerateSpanUnit; internal AyaUnitsOfTime mThresholdSpanUnit; //---------------- #endregion attributes #region Properties [Display(DisplayType.Hidden)] public Guid LT_Workorder_Label_ID { get { return mWorkorderID; } } //PM ------------------- [SqlColumnNameAttribute("aWorkorderPreventiveMaintenance.aPreventiveMaintenanceNumber","aWorkorder.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.WorkorderPreventiveMaintenance, CompareAs=CompareType.StringToInt32)] public GridNameValueCellItem LT_O_WorkorderPreventiveMaintenance { get { return mWorkorder; } } [Display(DisplayType.DateTime)] public object LT_WorkorderPreventiveMaintenance_Label_StopGeneratingDate { get { return mStopGeneratingDate.DBValue; } } [Display(DisplayType.DateTime)] public object LT_WorkorderPreventiveMaintenance_Label_NextServiceDate { get { return mNextServiceDate.DBValue; } } [SqlColumnNameAttribute("aWorkorderPreventiveMaintenance.aCreated"), Display(DisplayType.DateTime)] public object LT_Common_Label_Created { get { return mCreatedDate.DBValue; } } [Display(DisplayType.ListAyaDayOfWeek)] public AyaDayOfWeek LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek { get { return mDayOfTheWeek; } } [SqlColumnNameAttribute("aWorkorderPreventiveMaintenance.AACTIVE"), Display(DisplayType.TrueFalse)] public bool LT_Common_Label_Active { get { return mActive; } } [Display(DisplayType.WholeNumber)] public int LT_WorkorderPreventiveMaintenance_Label_GenerateSpan { get { return mGenerateSpan; } } [Display(DisplayType.WholeNumber)] public int LT_WorkorderPreventiveMaintenance_Label_ThresholdSpan { get { return mThresholdSpan; } } [Display(DisplayType.ListAyaUnitsOfTime)] public AyaUnitsOfTime LT_WorkorderPreventiveMaintenance_Label_GenerateSpanUnit { get { return mGenerateSpanUnit; } } [Display(DisplayType.ListAyaUnitsOfTime)] public AyaUnitsOfTime LT_WorkorderPreventiveMaintenance_Label_ThresholdSpanUnit { get { return mThresholdSpanUnit; } } //--------------------------- [SqlColumnNameAttribute("aClient.aName", "aClient.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Client)] public GridNameValueCellItem LT_O_Client { get { return mClient; } } [SqlColumnNameAttribute("aProject.aName", "aProject.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Project)] public GridNameValueCellItem LT_O_Project { get { return mProject; } } [SqlColumnNameAttribute("aRegion.aName", "aRegion.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Region)] public GridNameValueCellItem LT_O_Region { get { return mRegion; } } [SqlColumnNameAttribute("aWorkorderCategory.aName", "aWorkorderCategory.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.WorkorderCategory)] public GridNameValueCellItem LT_O_WorkorderCategory { get { return mCategory; } } [Display(DisplayType.Text)] public string LT_Workorder_Label_InternalReferenceNumber { get { return mInternalReferenceNumber; } } [Display(DisplayType.Text)] public string LT_Workorder_Label_CustomerReferenceNumber { get { return mCustomerReferenceNumber; } } [Display(DisplayType.Text)] public string LT_Workorder_Label_CustomerContactName { get { return mCustomerContactName; } } [Display(DisplayType.Text)] public string LT_Workorder_Label_Summary { get { return mSummary; } } [Display(DisplayType.TrueFalse)] public bool LT_Workorder_Label_Onsite { get { return mOnsite; } } [Display(DisplayType.TrueFalse)] public bool LT_Workorder_Label_ServiceCompleted { get { return mServiceCompleted; } } //[Display(DisplayType.TrueFalse)] //public bool LT_Workorder_Label_Closed { get { return mClosed; } } [SqlColumnNameAttribute("aClientGroup.aName", "aClientGroup.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.ClientGroup)] public GridNameValueCellItem LT_O_ClientGroup { get { return mClientGroup; } } [SqlColumnNameAttribute("aDispatchZone.aName", "aDispatchZone.aID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.DispatchZone)] public GridNameValueCellItem LT_O_DispatchZone { get { return mDispatchZone; } } #endregion properties #endregion workorderservice level #region WorkorderServiceWorkorderItemsList Level internal Guid mWorkorderItemID; internal string mWorkorderItemSummary; internal GridNameValueCellItem mWorkorderItemType; internal SmartDate mRequestDate; internal GridNameValueCellItem mPriority; internal GridNameValueCellItem mWorkorderItemStatus; internal GridNameValueCellItem mSerial; internal GridNameValueCellItem mUnitModel; internal GridNameValueCellItem mWorkorderItemUnitServiceType; internal bool mWarrantyService; [Display(DisplayType.Hidden)] public Guid LT_WorkorderItem_Label_ID { get { return mWorkorderItemID; } } [Display(DisplayType.Text)] public string LT_WorkorderItem_Label_Summary { get { return mWorkorderItemSummary; } } [SqlColumnNameAttribute("aWorkorderItemType.aName", "aWorkorderItem.aTypeID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.WorkorderItemType)] public GridNameValueCellItem LT_WorkorderItem_Label_TypeID { get { return mWorkorderItemType; } } [Display(DisplayType.DateTime)] public object LT_WorkorderItem_Label_RequestDate { get { return mRequestDate.DBValue; } } [SqlColumnNameAttribute("aPriority.aName", "aWorkorderItem.aPriorityID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Priority)] public GridNameValueCellItem LT_WorkorderItem_Label_PriorityID { get { return mPriority; } } //Changed: 26-April-2006 added sqlcolumnname attribute that was missing causing errors filtering on that column in grid [SqlColumnNameAttribute("aWorkorderItemStatus.aName", "aWorkorderItem.aWorkorderStatusID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.WorkorderStatus)] public GridNameValueCellItem LT_WorkorderItem_Label_WorkorderStatusID { get { return mWorkorderItemStatus; } } [SqlColumnNameAttribute("aUnit.aSerial", "aWorkorderItem.aUnitID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.Unit)] public GridNameValueCellItem LT_Unit_Label_Serial { get { return mSerial; } } [SqlColumnNameAttribute("aUnitModel.aName", "aUnit.aUnitModelID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.UnitModel)] public GridNameValueCellItem LT_O_UnitModel { get { return mUnitModel; } } [SqlColumnNameAttribute("aUnitServiceType.aName", "aWorkorderItem.aWorkorderItemUnitServiceTypeID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.UnitServiceType)] public GridNameValueCellItem LT_O_UnitServiceType { get { return mWorkorderItemUnitServiceType; } } [Display(DisplayType.TrueFalse)] public bool LT_WorkorderItem_Label_WarrantyService { get { return mWarrantyService; } } #endregion #region WorkorderItemTravel Level internal Guid mWorkorderItemTravelID; internal GridNameValueCellItem mTravelUser;//case 1932 internal string mTravelServiceRate; internal decimal mTravelRateCharge; internal string mTravelRateUnit; internal string mTravelTaxRateSale; internal decimal mTravelTaxA; internal decimal mTravelTaxB; internal bool mTravelTaxAExempt; internal bool mTravelTaxBExempt; internal bool mTravelTaxOnTax; internal SmartDate mTravelStartDate; internal SmartDate mTravelStopDate; internal decimal mTravelRateQuantity; internal decimal mTravelNoChargeQuantity; internal string mTravelDetails; internal decimal mDistance; [Display(DisplayType.Hidden)] public Guid LT_WorkorderItemTravel_Label_ID { get { return mWorkorderItemTravelID; } } //case 1932 [SqlColumnNameAttribute("AUSER.ALASTNAME", "AWORKORDERITEMTRAVEL.AUSERID"), Display(DisplayType.Button, RootObjectType = RootObjectTypes.User)] public GridNameValueCellItem LT_WorkorderItemTravel_Label_UserID { get { return mTravelUser; } } [SqlColumnNameAttribute("aRate.aName"), Display(DisplayType.Text)] public string LT_WorkorderItemTravel_Label_ServiceRateID { get { return mTravelServiceRate; } } //Case 109 internal string mLaborServiceRateAccountNumber; [SqlColumnNameAttribute("aRate.AACCOUNTNUMBER"), Display(DisplayType.Text, RootObjectType = RootObjectTypes.Rate)] public string LT_Rate_Label_AccountNumber { get { return mLaborServiceRateAccountNumber; } } [SqlColumnNameAttribute("aRate.aCharge"), Display(DisplayType.Currency)] public decimal LT_WorkorderItemTravel_Label_TravelRateCharge { get { return mTravelRateCharge; } } [SqlColumnNameAttribute("aRateUnitChargeDescription.aName"), Display(DisplayType.Text)] public string LT_O_RateUnitChargeDescription { get { return mTravelRateUnit; } } [SqlColumnNameAttribute("aTaxCode.aName"), Display(DisplayType.Text)] public string LT_WorkorderItemTravel_Label_TaxCodeID { get { return mTravelTaxRateSale; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Percentage)] public decimal LT_TaxCode_Label_TaxA { get { return mTravelTaxA; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Percentage)] public decimal LT_TaxCode_Label_TaxB { get { return mTravelTaxB; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.TrueFalse)] public bool LT_TaxCode_Label_TaxAExempt { get { return mTravelTaxAExempt; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.TrueFalse)] public bool LT_TaxCode_Label_TaxBExempt { get { return mTravelTaxBExempt; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.TrueFalse)] public bool LT_TaxCode_Label_TaxOnTax { get { return mTravelTaxOnTax; } } [Display(DisplayType.DateTime)] public object LT_WorkorderItemTravel_Label_TravelStartDate { get { return mTravelStartDate.DBValue; } } [Display(DisplayType.DateTime)] public object LT_WorkorderItemTravel_Label_TravelStopDate { get { return mTravelStopDate.DBValue; } } [Display(DisplayType.DecimalNumber)] public decimal LT_WorkorderItemTravel_Label_TravelRateQuantity { get { return mTravelRateQuantity; } } [Display(DisplayType.DecimalNumber)] public decimal LT_WorkorderItemTravel_Label_NoChargeQuantity { get { return mTravelNoChargeQuantity; } } [Display(DisplayType.Text)] public string LT_WorkorderItemTravel_Label_TravelDetails { get { return mTravelDetails; } } [Display(DisplayType.DecimalNumber)] public decimal LT_WorkorderItemTravel_Label_Distance { get { return mDistance; } } #region Calculated values internal decimal mNet; internal decimal mTaxAValue; internal decimal mTaxBValue; internal decimal mLineTotal; [SqlColumnNameAttribute("grid"), Display(DisplayType.Currency)] public decimal LT_UI_Label_NetValue { get { return mNet; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Currency)] public decimal LT_TaxCode_Label_TaxAValue { get { return mTaxAValue; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Currency)] public decimal LT_TaxCode_Label_TaxBValue { get { return mTaxBValue; } } [SqlColumnNameAttribute("grid"), Display(DisplayType.Currency)] public decimal LT_UI_Label_LineTotal { get { return mLineTotal; } } #endregion #endregion workorderitemTravel level /// /// /// /// public bool Equals(WorkorderPMTravelListInfo obj) { return this.mWorkorder.Value.Equals(obj.mWorkorder.Value); } }//end WorkorderPMTravelListInfo #endregion #region Constructor private RelativeTimeFormatter rtfm=null; protected WorkorderPMTravelList() { rtfm=RelativeTimeFormatter.GetItem(User.CurrentUserLanguage); // AllowSort=false; // AllowFind=true; // AllowEdit=false; // AllowNew=false; // AllowRemove=false; } #endregion #region Business properties and methods /// /// Get item by index /// /// public WorkorderPMTravelListInfo this[int Item] { get { return (WorkorderPMTravelListInfo) List[Item]; } } /// /// Returns display text that matches passed in itemid value /// /// public string this[Guid ItemID] { get { foreach (WorkorderPMTravelListInfo child in List) { if(child.mWorkorder.Value==ItemID) return child.ToString(); } return "Missing: "+ItemID.ToString(); } } #endregion #region contains /// /// Check if item in collection /// /// public bool Contains(WorkorderPMTravelListInfo obj) { foreach (WorkorderPMTravelListInfo 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 "WorkorderPMTravelList"; } } /// /// 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.WorkorderPreventiveMaintenance; } } /// /// 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(WorkorderPMTravelListInfo); } } /// /// Locale key so that generic list editor /// UI code knows what title to give the list in a /// grid /// public string LocaleKey { get { return "WorkorderItem.Label.Travels"; } } /// /// 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_WorkorderItemTravel_Label_ID"; } } /// /// Same as IDField but for detailed reports /// public static string IDFieldDetailed { get { return WorkorderPMList.IDFieldDetailed; } } #endregion #region Static methods /// /// Internal method used by list factory /// internal static WorkorderPMTravelList Get(string Filter, int MaxRecords, List IDList) { return (WorkorderPMTravelList)DataPortal.Fetch(new Criteria(Filter, IDList, MaxRecords)); } /// /// Get all Items (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 WorkorderPMTravelList GetList(string xmlCriteria) { return (WorkorderPMTravelList) DataPortal.Fetch(new Criteria(xmlCriteria,null,-1)); } /// /// Takes a single ID and returns a "list" of one object /// /// ID of WorkorderItemTravel object /// list of objects public static WorkorderPMTravelList GetListForSingleItem(Guid WorkorderItemTravelID) { //Case 556 List l = new List(); l.Add(WorkorderItemTravelID); return GetListFromIDList(l); } /// /// Get list by items indicated in IDList /// /// Generic list of Guid's /// list of objects public static WorkorderPMTravelList GetListFromIDList(List IDList) { //case 556 //Handle empty list if (IDList.Count == 0) return new WorkorderPMTravelList(); return (WorkorderPMTravelList)DataPortal.Fetch(new Criteria("", IDList, -1)); } /// /// Return an empty list /// used for initializing grid /// /// public static WorkorderPMTravelList GetEmptyList() { return new WorkorderPMTravelList(); } #endregion #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { #region Cached objects //Tax codes cache TaxCodeList taxlist=TaxCodeList.GetList(); //Users UserPickList users=UserPickList.GetList(false); //Service rates RatePickList rates=RatePickList.GetList(false); #endregion cached objects Criteria crit = (Criteria)Criteria; SafeDataReader dr = null; try { DBCommandWrapper cm = null; //Base query string q= //*********************************************************************************************************** "SELECT ~MAXRECS~ ACLIENT.aName AS aClientName, ACLIENT.aID " + "AS aClientID, aWorkorder.aInternalReferenceNumber, " + " aWorkorder.aCustomerReferenceNumber, " + " aProject.aName AS aProjectName, aProject.aID " + "AS aProjectID, aRegion.aName AS aRegionName, " + " aRegion.aID AS aRegionID, aWorkorder.aOnsite, " + " aWorkorder.aClosed, aWorkorder.aServiceCompleted, " + " aWorkorder.aCustomerContactName, " + " aWorkorder.aSummary, aWorkorderCategory.aName " + "AS aWorkorderCategoryName, aWorkorderCategory.aID " + "AS aWorkorderCategoryID, aWorkorder.aFromPMID, " + " aWorkorder.aFromQuoteID, ACLIENT.aDispatchZoneID, " + " aDispatchZone.aName AS aDispatchZoneName, " + " ACLIENT.aClientGroupID, aClientGroup.aName " + "AS aClientGroupName, AWORKORDERITEM.aSummary " + "AS aWORKORDERITEMSUMMARY, AWORKORDERITEM.aTypeID, " + " aWorkorderItemType.aName " + "AS aTypeName, AWORKORDERITEM.aRequestDate, aPriority.aName " + "AS aPriorityName, AWORKORDERITEM.aPriorityID, " + " AWORKORDERITEM.aWorkorderStatusID " + "AS aWorkorderItemStatusID, aWorkorderItemStatus.aName " + "AS aWorkorderItemStatusName, AWORKORDERITEM.aUnitID, " + " aUnitModel.aName AS aUnitModelName, aUnitModel.aModelNumber, " + " aUnitModelVendor.aName AS aUnitVendorName, " + " aUnit.aSerial, AUNIT.ADESCRIPTION AS AUNITDESCRIPTION, aUnit.aUnitModelID, AWORKORDERITEM.aWorkorderItemUnitServiceTypeID, " + " " + "aUnitServiceType.aName AS aWIUnitServiceTypeName, " + " AWORKORDERITEM.aTechNotes, AWORKORDERITEM.aWarrantyService, " + " aWorkorderItemTravel.aUserID " + "AS aWITUserID, aWorkorderItemTravel.aTravelStartDate, " + " aWorkorderItemTravel.aTravelStopDate, " + " aWorkorderItemTravel.aTravelRateID, aWorkorderItemTravel.aTravelDetails, " + " aWorkorderItemTravel.aTravelRateQuantity, " + " aWorkorderItemTravel.aNoChargeQuantity " + "AS aWITNoChargeQuantity, " + " aWorkorderItemTravel.aDistance, aWorkorderItemTravel.aTaxRateSaleID " + "AS aWITTaxRateSaleID, aRate.AACCOUNTNUMBER AS aRateAccount, " +//Case 109 "AWORKORDERITEM.aID AS aWorkorderItemID, aWorkorderItemTravel.aID " + "AS aWorkorderItemTravelID, " + " aWorkorderPreventiveMaintenance.aCreated, aWorkorderPreventiveMaintenance.aStopGeneratingDate, " + " aWorkorderPreventiveMaintenance.aDayOfTheWeek, " + " aWorkorderPreventiveMaintenance.AACTIVE, " + "aWorkorderPreventiveMaintenance.aPreventiveMaintenanceNumber, " + " aWorkorderPreventiveMaintenance.aNextServiceDate, " + " aWorkorderPreventiveMaintenance.aGenerateSpan, " + " aWorkorderPreventiveMaintenance.aGenerateSpanUnit, " + " aWorkorderPreventiveMaintenance.aThresholdSpan, " + " aWorkorderPreventiveMaintenance.aThresholdSpanUnit, " + " aWorkorderStatus.aName " + "AS aWorkorderStatusName, aWorkorderStatus.AARGB, " + " aWorkorderPreventiveMaintenance.aWorkorderID " + "FROM " + " AWORKORDER " + " LEFT OUTER JOIN AWORKORDERITEM ON (AWORKORDER.AID=AWORKORDERITEM.AWORKORDERID) " + " LEFT OUTER JOIN AWORKORDERITEMOUTSIDESERVICE ON (AWORKORDERITEM.AID=AWORKORDERITEMOUTSIDESERVICE.AWORKORDERITEMID) " + " LEFT OUTER JOIN AWORKORDERSTATUS aWorkorderItemStatus ON (AWORKORDERITEM.AWORKORDERSTATUSID=aWorkorderItemStatus.AID) " + " LEFT OUTER JOIN AVENDOR aVendorSentToTable ON (AWORKORDERITEMOUTSIDESERVICE.AVENDORSENTTOID=aVendorSentToTable.AID) " + " LEFT OUTER JOIN AVENDOR aVendorSentViaTable ON (AWORKORDERITEMOUTSIDESERVICE.AVENDORSENTVIAID=aVendorSentViaTable.AID) " + " LEFT OUTER JOIN APRIORITY ON (AWORKORDERITEM.APRIORITYID=APRIORITY.AID) " + " LEFT OUTER JOIN AUNITSERVICETYPE ON (AWORKORDERITEM.AWORKORDERITEMUNITSERVICETYPEID=AUNITSERVICETYPE.AID) " + " LEFT OUTER JOIN AWORKORDERITEMTYPE ON (AWORKORDERITEM.ATYPEID=AWORKORDERITEMTYPE.AID) " + " LEFT OUTER JOIN AUNIT ON (AUNIT.AID=AWORKORDERITEM.AUNITID) " + " LEFT OUTER JOIN AUNITMODEL ON (AUNIT.AUNITMODELID=AUNITMODEL.AID) " + " LEFT OUTER JOIN AVENDOR aUnitModelVendor ON (AUNITMODEL.AVENDORID=aUnitModelVendor.AID) " + //" LEFT OUTER JOIN AREGION ON (ACLIENT.AREGIONID=AREGION.AID) " + " LEFT OUTER JOIN AWORKORDERCATEGORY ON (AWORKORDER.AWORKORDERCATEGORYID=AWORKORDERCATEGORY.AID) " + " LEFT OUTER JOIN APROJECT ON (AWORKORDER.APROJECTID=APROJECT.AID) " + " INNER JOIN aWorkorderPreventiveMaintenance ON (aWorkorderPreventiveMaintenance.AWORKORDERID=AWORKORDER.AID) " + " LEFT OUTER JOIN aWorkorderStatus ON (aWorkorderStatus.aID = aWorkorderPreventiveMaintenance.aWorkorderStatusID) " + " LEFT OUTER JOIN ACLIENT ON (AWORKORDER.ACLIENTID=ACLIENT.AID) " + " LEFT OUTER JOIN AREGION ON (ACLIENT.AREGIONID=AREGION.AID) " +//Changed:16-June-2006 Moved here " LEFT OUTER JOIN ADISPATCHZONE ON (ACLIENT.ADISPATCHZONEID=ADISPATCHZONE.AID) " + " LEFT OUTER JOIN ACLIENTGROUP ON (ACLIENT.ACLIENTGROUPID=ACLIENTGROUP.AID) " + " LEFT OUTER JOIN AWORKORDERITEMTRAVEL ON (AWORKORDERITEM.AID=AWORKORDERITEMTRAVEL.AWORKORDERITEMID) " + " LEFT OUTER JOIN ARATE ON (ARATE.AID=AWORKORDERITEMTRAVEL.ATRAVELRATEID) " + " LEFT OUTER JOIN ATAXCODE ON (AWORKORDERITEMTRAVEL.ATAXRATESALEID=ATAXCODE.AID) " + " LEFT OUTER JOIN AUSER ON (AWORKORDERITEMTRAVEL.AUSERID=AUSER.AID) " + " LEFT OUTER JOIN ARATEUNITCHARGEDESCRIPTION ON (ARATE.ARATEUNITCHARGEDESCRIPTIONID=ARATEUNITCHARGEDESCRIPTION.AID) " + "WHERE (aWorkorder.aWorkorderType " + "= 2) AND (aWorkorderItemTravel.aID " + "IS NOT NULL) " //*********************************************************************************************************** ; if (crit.MaxRecords > 0) q = q.Replace("~MAXRECS~", "TOP " + crit.MaxRecords.ToString()); else q = q.Replace("~MAXRECS~", ""); //Built in order for reporting string qOrderBy= " aWorkorder.aID "; if (crit.IDList != null) { //Case 556 System.Text.StringBuilder sbIN = new System.Text.StringBuilder(); sbIN.Append(" AND (aWorkorderItemTravel.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(")) "); //One item: cm = DBUtil.DB.GetSqlStringCommandWrapper(q + sbIN.ToString() + " ORDER BY " + qOrderBy); } else { //Grid criteria cm = DBUtil.DB.GetSqlStringCommandWrapper(DBUtil.AddRegionFilter( q + AyaBizUtils.GetGridColumnCriteria(crit.CriteriaXML,false) + " " + AyaBizUtils.GetGridSortOrderColumns(crit.CriteriaXML) /*+ ", "+ qOrderBy*/ ) ); } dr=new SafeDataReader(DBUtil.DB.ExecuteReader(cm)); while(dr.Read()) { //******************************************* WorkorderPMTravelListInfo info=new WorkorderPMTravelListInfo(); #region Workorder Service Level info.mWorkorderID=dr.GetGuid("aWorkorderID"); //PM -------------------------- info.mWorkorder=new GridNameValueCellItem( dr.GetGuid("aWorkorderID"), dr.GetInt32("aPreventiveMaintenanceNumber").ToString(), RootObjectTypes.Workorder); info.mStopGeneratingDate=DBUtil.ToLocal(dr.GetSmartDate("aStopGeneratingDate")); info.mNextServiceDate=DBUtil.ToLocal(dr.GetSmartDate("aNextServiceDate")); info.mCreatedDate=DBUtil.ToLocal(dr.GetSmartDate("aCreated")); info.mDayOfTheWeek=(AyaDayOfWeek)dr.GetInt16("aDayOfTheWeek"); info.mActive=dr.GetBoolean("AACTIVE"); info.mGenerateSpan=dr.GetInt32("aGenerateSpan"); info.mThresholdSpan=dr.GetInt32("aThresholdSpan"); info.mGenerateSpanUnit=(AyaUnitsOfTime)dr.GetInt16("aGenerateSpanUnit"); info.mThresholdSpanUnit=(AyaUnitsOfTime)dr.GetInt16("aThresholdSpanUnit"); //---------------------------------------- info.mClient=new GridNameValueCellItem( dr.GetGuid("aClientID"), dr.GetString("aClientName"), RootObjectTypes.Client); info.mProject=new GridNameValueCellItem( dr.GetGuid("aProjectID"), dr.GetString("aProjectName"), RootObjectTypes.Project); info.mRegion=new GridNameValueCellItem( dr.GetGuid("aRegionID"), dr.GetString("aRegionName"), RootObjectTypes.Region); info.mCategory=new GridNameValueCellItem( dr.GetGuid("aWorkorderCategoryID"), dr.GetString("aWorkorderCategoryName"), RootObjectTypes.WorkorderCategory); info.mInternalReferenceNumber=dr.GetString("aInternalReferenceNumber"); info.mCustomerReferenceNumber=dr.GetString("aCustomerReferenceNumber"); info.mCustomerContactName=dr.GetString("aCustomerContactName"); info.mSummary=dr.GetString("aSummary"); info.mOnsite=dr.GetBoolean("aOnsite"); //info.mClosed=dr.GetBoolean("aClosed"); info.mServiceCompleted=dr.GetBoolean("aServiceCompleted"); info.mDispatchZone = new GridNameValueCellItem( dr.GetGuid("aDispatchZoneID"), dr.GetString("aDispatchZoneName"), RootObjectTypes.DispatchZone); info.mClientGroup = new GridNameValueCellItem( dr.GetGuid("aClientGroupID"), dr.GetString("aClientGroupName"), RootObjectTypes.ClientGroup); #endregion workorderservicelevel #region WorkorderServiceWorkorderItemList Level info.mWorkorderItemID=dr.GetGuid("aWorkorderItemID"); info.mWorkorderItemSummary=dr.GetString("aWORKORDERITEMSUMMARY"); info.mWorkorderItemType=new GridNameValueCellItem( dr.GetGuid("aTypeID"), dr.GetString("aTypeName"), RootObjectTypes.WorkorderItemType); info.mRequestDate=DBUtil.ToLocal(dr.GetSmartDate("aRequestDate")); info.mPriority=new GridNameValueCellItem( dr.GetGuid("aPriorityID"), dr.GetString("aPriorityName"), RootObjectTypes.Priority); info.mWorkorderItemStatus=new GridNameValueCellItem( dr.GetGuid("aWorkorderItemStatusID"), dr.GetString("aWorkorderItemStatusName"), RootObjectTypes.WorkorderStatus); info.mSerial=new GridNameValueCellItem( dr.GetGuid("aUnitID"), Unit.UnitNameFormatter(dr.GetString("aModelNumber"), dr.GetString("aUnitModelName"), dr.GetString("aUnitVendorName"), dr.GetString("aSerial"), dr.GetString("AUNITDESCRIPTION"), AyaBizUtils.GlobalSettings.DefaultUnitNameDisplayFormat), RootObjectTypes.Unit); info.mUnitModel=new GridNameValueCellItem( dr.GetGuid("aUnitModelID"), AyaBizUtils.SS("", dr.GetString("aUnitModelName"), " ") + dr.GetString("aModelNumber"),//done in case 9 should have been done earlier in case 139 RootObjectTypes.UnitModel); info.mWorkorderItemUnitServiceType=new GridNameValueCellItem( dr.GetGuid("aWorkorderItemUnitServiceTypeID"), dr.GetString("aWIUnitServiceTypeName"), RootObjectTypes.UnitServiceType); info.mWarrantyService=dr.GetBoolean("aWarrantyService"); #endregion workorderserviceworkorderitemlist fields #region WorkorderItemTravel Level info.mWorkorderItemTravelID=dr.GetGuid("aWorkorderItemTravelID"); //case 1932 Guid gTravelUserID = dr.GetGuid("aWITUserID"); info.mTravelUser = new GridNameValueCellItem( gTravelUserID, users[gTravelUserID], RootObjectTypes.User); info.mTravelRateQuantity=dr.GetDecimal("aTravelRateQuantity"); //Rate from cache Guid gTravelRateID=dr.GetGuid("aTravelRateID"); if(gTravelRateID!=Guid.Empty) { RatePickList.RatePickListInfo riTravel=rates[gTravelRateID]; info.mTravelServiceRate=riTravel.Name; info.mTravelRateCharge=riTravel.Charge; //retrieve plural or singular unit description? if(info.mTravelRateQuantity==1) info.mTravelRateUnit=riTravel.UnitNameSingle; else info.mTravelRateUnit=riTravel.UnitNamePlural; } else { info.mTravelServiceRate=""; info.mTravelRateCharge=0m; info.mTravelRateUnit=""; } //Case 109 info.mLaborServiceRateAccountNumber = dr.GetString("aRateAccount"); //Taxes from cache Guid gTravelTaxID=dr.GetGuid("aWITTaxRateSaleID"); if(gTravelTaxID!=Guid.Empty) { TaxCodeList.TaxCodeListInfo tiTravel=taxlist[gTravelTaxID]; info.mTravelTaxRateSale=tiTravel.Name; info.mTravelTaxA=tiTravel.TaxA; info.mTravelTaxB=tiTravel.TaxB; info.mTravelTaxAExempt=tiTravel.TaxAExempt; info.mTravelTaxBExempt=tiTravel.TaxBExempt; info.mTravelTaxOnTax=tiTravel.TaxOnTax; } else { info.mTravelTaxRateSale=""; info.mTravelTaxA=0m; info.mTravelTaxB=0m; info.mTravelTaxAExempt=true; info.mTravelTaxBExempt=true; info.mTravelTaxOnTax=false; } info.mTravelStartDate=DBUtil.ToLocal(dr.GetSmartDate("aTravelStartDate")); info.mTravelStopDate=DBUtil.ToLocal(dr.GetSmartDate("aTravelStopDate")); info.mTravelNoChargeQuantity=dr.GetDecimal("aWITNoChargeQuantity"); info.mTravelDetails=dr.GetString("aTravelDetails"); info.mDistance=dr.GetDecimal("aDistance"); #region Calculated values info.mNet = decimal.Round(info.mTravelRateQuantity * info.mTravelRateCharge, 2, MidpointRounding.AwayFromZero); info.mTaxAValue = decimal.Round(info.mNet * info.mTravelTaxA, 2, MidpointRounding.AwayFromZero); if(info.mTravelTaxOnTax) { info.mTaxBValue= decimal.Round((info.mNet+info.mTaxAValue)* info.mTravelTaxB, 2, MidpointRounding.AwayFromZero); } else { info.mTaxBValue = decimal.Round(info.mNet * info.mTravelTaxB, 2, MidpointRounding.AwayFromZero); } info.mLineTotal = decimal.Round(info.mNet + info.mTaxBValue + info.mTaxAValue, 2, MidpointRounding.AwayFromZero); #endregion #endregion workorderitemTravel level 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 WorkorderPMTravelList #pragma warning restore 1591 }//end namespace GZTW.AyaNova.BLL