/////////////////////////////////////////////////////////// // Bool.cs // Implementation of Class WorkorderPMDetailedReportData // CSLA type: Read-only object // Created on: 07-Dec-2005 // Object design: John // Coded: 07-Dec-2005 /////////////////////////////////////////////////////////// using System; using System.Data; using CSLA.Data; using GZTW.Data; using CSLA; using System.Threading; using CSLA.Security; using System.IO; using System.Reflection; using System.Collections.Generic; namespace GZTW.AyaNova.BLL { /// /// Detailed preventive maintenance info used in report /// [Serializable] public class WorkorderPMDetailedReportData : ReadOnlyBase { private RelativeTimeFormatter rtfm=null; #region Attributes private ReportDataSet ds; #endregion #region Constructor /// /// Private constructor to prevent direct instantiation /// private WorkorderPMDetailedReportData() { rtfm=RelativeTimeFormatter.GetItem(User.CurrentUserLanguage); } #endregion #region Static methods /// /// Internal method used by list factory /// internal static ReportDataSet Get(string Filter, int MaxRecords, List IDList) { return ((WorkorderPMDetailedReportData)DataPortal.Fetch(new Criteria(Filter, IDList, MaxRecords))).ds; } /// /// 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 "WorkorderPMDetailed"; } } /// /// 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_O_Workorder"; } } /// /// Same as IDField but for detailed reports /// public static string IDFieldDetailed { get { return IDField; } } /// /// Get items by criteria /// /// Use AyaNova UI to easily build xmlCriteria and Ctrl-Alt-g keyboard command to display it for use in your code /// ReportDataSet public static ReportDataSet GetItems(string xmlCriteria) { return ((WorkorderPMDetailedReportData)DataPortal.Fetch(new Criteria(xmlCriteria, null, -1))).ds; } /// /// Takes a single ID and returns a "list" of one object /// /// ID of Workorder object /// ReportDataSet public static ReportDataSet GetItem(Guid WorkorderID) { //Case 556 List l = new List(); l.Add(WorkorderID); return GetListFromIDList(l); } /// /// Get's all workorders in the provided List of workorder id's /// (used for pick and choose printing etc) /// /// Generic list of Guid's of workorders /// ReportDataSet public static ReportDataSet GetListFromIDList(List WorkorderIDList) { //case 556 if (WorkorderIDList.Count == 0) { WorkorderPMDetailedReportData d = new WorkorderPMDetailedReportData(); d.InitDS(); return d.ds; } return ((WorkorderPMDetailedReportData)DataPortal.Fetch(new Criteria("", WorkorderIDList, -1))).ds; } #endregion #region Initialize data set private void InitDS() { ds=new ReportDataSet(); System.IO.Stream s=Assembly.GetExecutingAssembly().GetManifestResourceStream("GZTW.AyaNova.BLL.WorkorderPMDetailedSchema.xsd"); ds.ReadXmlSchema(s); ds.ShowOnlyStartingWith="WorkorderHeader"; } #endregion initalize data set #region DAL DATA ACCESS /// /// protected override void DataPortal_Fetch(object Criteria) { InitDS(); Criteria crit = (Criteria)Criteria; DateTime dtNow = DBUtil.CurrentWorkingDateTime; SafeDataReader dr = null; try { #region Cached objects //task completion types string TaskComplete=LocalizedTextTable.GetLocalizedTextDirect("WorkorderItemTask.Label.CompletionType.Complete"); string TaskIncomplete=LocalizedTextTable.GetLocalizedTextDirect("WorkorderItemTask.Label.CompletionType.Incomplete"); string TaskNotApplicable=LocalizedTextTable.GetLocalizedTextDirect("WorkorderItemTask.Label.CompletionType.NotApplicable"); //Tax codes cache TaxCodeList taxlist=TaxCodeList.GetList(); //Users UserPickList users=UserPickList.GetList(false); //Service rates RatePickList rates=RatePickList.GetList(false); //Units of time string minutes=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.TimeSpan.Minutes"); string hours=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.TimeSpan.Hours"); string days=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.TimeSpan.Days"); string months=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.TimeSpan.Months"); string years=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.TimeSpan.Years"); //Days of the week string any=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Any"); string monday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Monday"); string tuesday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Tuesday"); string wednesday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Wednesday"); string thursday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Thursday"); string friday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Friday"); string saturday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Saturday"); string sunday=LocalizedTextTable.GetLocalizedTextDirect("UI.Label.Day.Sunday"); #endregion cached objects DBCommandWrapper cm = null; #region Query string q= //*********************************************************************************************************** "SELECT ACLIENT.aName AS aClientName, ACLIENT.aID " + "AS aClientID, aWorkorder.aInternalReferenceNumber, " + " aWorkorder.aCustomerReferenceNumber, " + " ACLIENT.ACONTACT, ACLIENT.AEMAIL, ACLIENT.APHONE1, ACLIENT.APHONE2, ACLIENT.APHONE3, ACLIENT.APHONE4, ACLIENT.APHONE5, ACLIENT.ACONTACTNOTES, " + " 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, aPOSTAL.aDeliveryAddress " + "AS aPDeliveryAddress, aPOSTAL.aCity AS " + "aPCity, aPOSTAL.aStateProv AS aPStateProv, aPOSTAL.aCountryCode " + "AS aPCountryCode, aPOSTAL.aCountry " + "AS aPCountry, aPOSTAL.aPostal AS aPPostal, aPHYSICAL.aDeliveryAddress, " + " aPHYSICAL.aCity, aPHYSICAL.aStateProv, " + " aPHYSICAL.aCountryCode, aPHYSICAL.aCountry, " + " aPHYSICAL.aPostal, aPHYSICAL.aLongitude, aPHYSICAL.aLatitude, " + //case 636 "AHEADOFFICE.ANAME AS AHEADOFFICENAME, " + "aHOPOSTAL.aDeliveryAddress " + "AS aHOPDeliveryAddress, aHOPOSTAL.aCity " + "AS aHOPCity, aHOPOSTAL.aStateProv AS aHOPStateProv, aHOPOSTAL.aCountry " + "AS aHOPCountry, aHOPOSTAL.aPOSTAL AS aHOPPostal, ACLIENT.ABILLHEADOFFICE, " + " 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.aModelNumber, aUnitModel.aName " +//case 9 "AS aUnitModelName, aUnitModelVendor.aName " + "AS aUnitVendorName, aUnit.aSerial, AUNIT.ADESCRIPTION AS AUNITDESCRIPTION, aUnit.aUnitModelID, " + "aUnit.ATEXT1, aUnit.ATEXT2, aUnit.ATEXT3, aUnit.ATEXT4, " + //case 1173 " AWORKORDERITEM.aWorkorderItemUnitServiceTypeID, " + " aUnitServiceType.aName AS aWIUnitServiceTypeName, " + " AWORKORDERITEM.aTechNotes, " + " AWORKORDERITEM.aWarrantyService, AWORKORDERITEM.aCustom1, " + " AWORKORDERITEM.aCustom2, " + " AWORKORDERITEM.aCustom3, AWORKORDERITEM.aCustom4, " + " AWORKORDERITEM.aCustom5, AWORKORDERITEM.aCustom6, " + " AWORKORDERITEM.aCustom7, " + " AWORKORDERITEM.aCustom8, AWORKORDERITEM.aCustom9, " + " AWORKORDERITEM.aCustom0, aWorkorderItemScheduledUser.aEstimatedQuantity, " + " aWorkorderItemScheduledUser.aUserID " + "AS aScheduledUserID, " + " aWorkorderItemScheduledUser.aStartDate, aWorkorderItemScheduledUser.aStopDate, " + " aWorkorderItemScheduledUser.aServiceRateID " + "AS aScheduledUserRateID, " + " aWorkorderItemTask.aWorkorderItemTaskCmpltnType, " + " aTask.aName AS aTaskName, aTaskGroup.aName " + "AS aTaskGroupName, aPart.aName " + "AS aPartName, aPart.aPartNumber, aPart.aUPC, " + " aPartManufacturers.aName AS aPartManufacturerName, " + " aPartCategory.aName AS aPartCategoryName, " + " aPartAssembly.aName AS aPartAssemblyName, aWorkorderItemPart.aPartWarehouseID, " + " aPartWarehouse.aName " + "AS aPartWarehouseName, aWorkorderItemPart.aTaxPartSaleID, " + " aPartSerial.aSerialNumber, " + " aWorkorderItemPart.aDescription AS aWOIPartDescription, " + " aWorkorderItemPart.aQuantity, " + " aWorkorderItemPart.aCost, aWorkorderItemPart.aPrice, " + " aWorkorderItemPart.aDiscount, aWorkorderItemPart.aUsed, " + " aWorkorderItemPart.aPartID, " + " aWorkorderItemLabor.aUserID AS aWILUserID, " + " aWorkorderItemLabor.aServiceRateID AS aWILRateID, " + " aWorkorderItemLabor.aTaxRateSaleID AS " + "aWILTaxRateSaleID, aWorkorderItemLabor.aServiceStartDate, " + " aWorkorderItemLabor.aServiceStopDate, " + " aWorkorderItemLabor.aServiceRateQuantity, " + " aWorkorderItemLabor.aNoChargeQuantity, aWorkorderItemLabor.aServiceDetails, " + " aWorkorderItemLabor.aServiceBankID, " + " aWorkorderItemTravel.aUserID " + "AS aWITUserID, aWorkorderItemTravel.aTravelStartDate, " + " aWorkorderItemTravel.aTravelStopDate, " + " aWorkorderItemTravel.aTravelRateID, aWorkorderItemTravel.aTravelDetails, " + " aWorkorderItemTravel.aTravelRateQuantity, " + " aWorkorderItemTravel.aNoChargeQuantity " + "AS aWITNoChargeQuantity, " + " aWorkorderItemTravel.aDistance, aWorkorderItemTravel.aTaxRateSaleID " + "AS aWITTaxRateSaleID, " + " aWorkorder.aID AS aWorkorderID, AWORKORDERITEM.aID " + "AS aWorkorderItemID, aWorkorderItemLabor.aID " + "AS aWorkorderItemLaborID, aWorkorderItemScheduledUser.aID " + "AS aWorkorderItemScheduledUserID, " + " aWorkorderItemTask.aID AS aWorkorderItemTaskID, " + " aWorkorderItemTravel.aID AS aWorkorderItemTravelID, " + " aWorkorderItemPart.aID AS aWorkorderItemPartID, " + " 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 " + "FROM " + " ACLIENT " + " LEFT OUTER JOIN ADISPATCHZONE ON (ACLIENT.ADISPATCHZONEID=ADISPATCHZONE.AID) " + " LEFT OUTER JOIN ACLIENTGROUP ON (ACLIENT.ACLIENTGROUPID=ACLIENTGROUP.AID) " + " INNER JOIN AWORKORDER ON (ACLIENT.AID=AWORKORDER.ACLIENTID) " + " LEFT OUTER JOIN AREGION ON (ACLIENT.AREGIONID=AREGION.AID) " + " LEFT OUTER JOIN AWORKORDERCATEGORY ON (AWORKORDER.AWORKORDERCATEGORYID=AWORKORDERCATEGORY.AID) " + " INNER JOIN aWorkorderPreventiveMaintenance ON (aWorkorderPreventiveMaintenance.AWORKORDERID=AWORKORDER.AID) " + " LEFT OUTER JOIN aWorkorderStatus ON (aWorkorderStatus.aID = aWorkorderPreventiveMaintenance.aWorkorderStatusID) " + " LEFT OUTER JOIN AADDRESS aPHYSICAL ON (ACLIENT.AID=aPHYSICAL.AROOTOBJECTID) " + " LEFT OUTER JOIN AADDRESS aPOSTAL ON (ACLIENT.AID=aPOSTAL.AROOTOBJECTID) " + " LEFT OUTER JOIN APROJECT ON (APROJECT.AID=AWORKORDER.APROJECTID) " + " LEFT OUTER JOIN AWORKORDERITEM ON (AWORKORDER.AID=AWORKORDERITEM.AWORKORDERID) " + " LEFT OUTER JOIN AWORKORDERSTATUS aWorkorderItemStatus ON (AWORKORDERITEM.AWORKORDERSTATUSID=aWorkorderItemStatus.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 AWORKORDERITEMSCHEDULEDUSER ON (AWORKORDERITEM.AID=AWORKORDERITEMSCHEDULEDUSER.AWORKORDERITEMID) " + "LEFT OUTER JOIN AWORKORDERITEMTASK ON (AWORKORDERITEM.AID=AWORKORDERITEMTASK.AWORKORDERITEMID) " + "LEFT OUTER JOIN ATASK ON (AWORKORDERITEMTASK.ATASKID=ATASK.AID) " + "LEFT OUTER JOIN ATASKGROUP ON (AWORKORDERITEMTASK.ATASKGROUPID=ATASKGROUP.AID) " + "LEFT OUTER JOIN AWORKORDERITEMPART ON (AWORKORDERITEM.AID=AWORKORDERITEMPART.AWORKORDERITEMID) " + " LEFT JOIN APART ON (AWORKORDERITEMPART.APARTID=APART.AID) " + " LEFT JOIN APARTWAREHOUSE ON (AWORKORDERITEMPART.APARTWAREHOUSEID=APARTWAREHOUSE.AID) " + " LEFT OUTER JOIN APARTSERIAL ON (AWORKORDERITEMPART.APARTSERIALID=APARTSERIAL.AID) " + " LEFT OUTER JOIN AVENDOR aPartManufacturers ON (APART.AMANUFACTURERID=aPartManufacturers.AID) " + " LEFT OUTER JOIN APARTCATEGORY ON (APART.APARTCATEGORYID=APARTCATEGORY.AID) " + " LEFT OUTER JOIN APARTASSEMBLY ON (APART.APARTASSEMBLYID=APARTASSEMBLY.AID) " + " LEFT OUTER JOIN AWORKORDERITEMLABOR ON (AWORKORDERITEM.AID=AWORKORDERITEMLABOR.AWORKORDERITEMID) " + " LEFT OUTER JOIN AWORKORDERITEMTRAVEL ON (AWORKORDERITEM.AID=AWORKORDERITEMTRAVEL.AWORKORDERITEMID) " + //case 636 " LEFT OUTER JOIN AHEADOFFICE ON (ACLIENT.AHEADOFFICEID=AHEADOFFICE.AID) " + " LEFT OUTER JOIN AADDRESS aHOPOSTAL ON (AHEADOFFICE.AID=aHOPOSTAL.AROOTOBJECTID) " + "WHERE (aWorkorder.aWorkorderType " + "= 2) AND (aPOSTAL.AADDRESSTYPE IS NULL OR " + "aPOSTAL.AADDRESSTYPE = 1) AND (aPHYSICAL.AADDRESSTYPE " + "IS NULL OR aPHYSICAL.AADDRESSTYPE = 2) " + //case 636 "AND " + "(aHOPOSTAL.AADDRESSTYPE IS NULL OR aHOPOSTAL.AADDRESSTYPE = 1) " //*********************************************************************************************************** ; //Built in order for reporting string qOrderBy= " aWorkorder.aID, AWORKORDERITEM.aID "; if (crit.IDList != null) { //Case 556 System.Text.StringBuilder sbIN = new System.Text.StringBuilder(); sbIN.Append(" AND (aWorkorder.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(")) "); cm = DBUtil.DB.GetSqlStringCommandWrapper(q + sbIN.ToString() + " ORDER BY " + qOrderBy); } else { //Grid criteria cm = DBUtil.DB.GetSqlStringCommandWrapper(DBUtil.AddRegionFilter(//case 58 q + AyaBizUtils.GetGridColumnCriteria(crit.CriteriaXML,false) + " " + AyaBizUtils.GetGridSortOrderColumns(crit.CriteriaXML) /*+ ", "+ qOrderBy*/ ) ); } #endregion query dr=new SafeDataReader(DBUtil.DB.ExecuteReader(cm)); DataRow r=null; int nRecordsAddedToList = 0; while(dr.Read()) { //******************************************* #region WorkorderLevel if(!ds.Tables["WorkorderHeader"].Rows.Contains(dr.GetGuid("aWorkorderID"))) { //only add the number of records specified in max records //this is because a TOP clause in this query won't work and //we're too far behind release of this update to completely rewrite the //query to work properly with the top clause as the summary list does if (crit.MaxRecords > 0 && nRecordsAddedToList == crit.MaxRecords) break; r=ds.Tables["WorkorderHeader"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderID"); r["LT_O_Client"]=dr.GetString("aClientName"); r["LT_Workorder_Label_Summary"]=dr.GetString("aSummary"); r["LT_Client_Label_Contact"] = dr.GetString("aContact"); r["LT_Client_Label_Email"] = dr.GetString("aEmail"); r["LT_Client_Label_ContactNotes"] = dr.GetString("aContactNotes"); r["LT_Client_Label_Phone1"] = dr.GetString("aPhone1"); r["LT_Client_Label_Phone2"] = dr.GetString("aPhone2"); r["LT_Client_Label_Phone3"] = dr.GetString("aPhone3"); r["LT_Client_Label_Phone4"] = dr.GetString("aPhone4"); r["LT_Client_Label_Phone5"] = dr.GetString("aPhone5"); r["LT_O_Project"]=dr.GetString("aProjectName"); r["LT_O_Region"]=dr.GetString("aRegionName"); r["LT_O_WorkorderCategory"]=dr.GetString("aWorkorderCategoryName"); r["LT_Workorder_Label_InternalReferenceNumber"]=dr.GetString("aInternalReferenceNumber"); r["LT_Workorder_Label_CustomerReferenceNumber"]=dr.GetString("aCustomerReferenceNumber"); r["LT_Workorder_Label_CustomerContactName"]=dr.GetString("aCustomerContactName"); r["LT_Workorder_Label_Onsite"]=dr.GetBoolean("aOnsite"); r["LT_Workorder_Label_ServiceCompleted"]=dr.GetBoolean("aServiceCompleted"); //case 1406 //r["LT_Workorder_Label_Closed"]=dr.GetBoolean("aClosed"); r["LT_O_ClientGroup"]=dr.GetString("aClientGroupName"); r["LT_O_DispatchZone"]=dr.GetString("aDispatchZoneName"); r["LT_Address_Label_DeliveryAddress"]=dr.GetString("aDeliveryAddress"); r["LT_Address_Label_City"]=dr.GetString("aCity"); r["LT_Address_Label_StateProv"]=dr.GetString("aStateProv"); r["LT_Address_Label_Country"]=dr.GetString("aCountry"); r["LT_Address_Label_Postal"]=dr.GetString("aPostal"); r["LT_Address_Label_Latitude"]=Address.LatitudeToString(dr.GetDecimal("aLatitude")); r["LT_Address_Label_Longitude"]=Address.LongitudeToString(dr.GetDecimal("aLongitude")); r["LT_Address_Label_PostalDeliveryAddress"]=dr.GetString("aPDeliveryAddress"); r["LT_Address_Label_PostalCity"]=dr.GetString("aPCity"); r["LT_Address_Label_PostalStateProv"]=dr.GetString("aPStateProv"); r["LT_Address_Label_PostalCountry"]=dr.GetString("aPCountry"); r["LT_Address_Label_PostalPostal"]=dr.GetString("aPPostal"); //PM stuff r["LT_O_WorkorderPreventiveMaintenance"]=dr.GetInt32("aPreventiveMaintenanceNumber").ToString(); r["LT_O_WorkorderStatus"]=dr.GetString("aWorkorderStatusName"); r["LT_WorkorderStatus_Label_ARGB"]=dr.GetInt32("AARGB"); r["LT_WorkorderPreventiveMaintenance_Label_StopGeneratingDate"]=DBUtil.ToLocal(dr.GetSmartDate("aStopGeneratingDate")).Date; r["LT_WorkorderPreventiveMaintenance_Label_NextServiceDate"]=DBUtil.ToLocal(dr.GetSmartDate("aNextServiceDate")).Date; r["LT_Common_Label_Created"]=DBUtil.ToLocal(dr.GetSmartDate("aCreated")).Date; switch((AyaDayOfWeek)dr.GetInt16("aDayOfTheWeek")) { case AyaDayOfWeek.Monday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=monday; break; case AyaDayOfWeek.Tuesday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=tuesday; break; case AyaDayOfWeek.Wednesday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=wednesday; break; case AyaDayOfWeek.Thursday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=thursday; break; case AyaDayOfWeek.Friday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=friday; break; case AyaDayOfWeek.Saturday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=saturday; break; case AyaDayOfWeek.Sunday: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=sunday; break; default: r["LT_WorkorderPreventiveMaintenance_Label_DayOfTheWeek"]=any; break; } r["LT_Common_Label_Active"]=dr.GetBoolean("AACTIVE"); r["LT_WorkorderPreventiveMaintenance_Label_GenerateSpan"]=dr.GetInt32("aGenerateSpan"); r["LT_WorkorderPreventiveMaintenance_Label_ThresholdSpan"]=dr.GetInt32("aThresholdSpan"); switch((AyaUnitsOfTime)dr.GetInt16("aGenerateSpanUnit")) { case AyaUnitsOfTime.Minutes: r["LT_WorkorderPreventiveMaintenance_Label_GenerateSpanUnit"]=minutes; break; case AyaUnitsOfTime.Hours: r["LT_WorkorderPreventiveMaintenance_Label_GenerateSpanUnit"]=hours; break; case AyaUnitsOfTime.Days: r["LT_WorkorderPreventiveMaintenance_Label_GenerateSpanUnit"]=days; break; case AyaUnitsOfTime.Months: r["LT_WorkorderPreventiveMaintenance_Label_GenerateSpanUnit"]=months; break; case AyaUnitsOfTime.Years: r["LT_WorkorderPreventiveMaintenance_Label_GenerateSpanUnit"]=years; break; } switch((AyaUnitsOfTime)dr.GetInt16("aThresholdSpanUnit")) { case AyaUnitsOfTime.Minutes: r["LT_WorkorderPreventiveMaintenance_Label_ThresholdSpanUnit"]=minutes; break; case AyaUnitsOfTime.Hours: r["LT_WorkorderPreventiveMaintenance_Label_ThresholdSpanUnit"]=hours; break; case AyaUnitsOfTime.Days: r["LT_WorkorderPreventiveMaintenance_Label_ThresholdSpanUnit"]=days; break; case AyaUnitsOfTime.Months: r["LT_WorkorderPreventiveMaintenance_Label_ThresholdSpanUnit"]=months; break; case AyaUnitsOfTime.Years: r["LT_WorkorderPreventiveMaintenance_Label_ThresholdSpanUnit"]=years; break; } //case 636 r["LT_O_HeadOffice"] = dr.GetString("AHEADOFFICENAME"); r["HO_Address"] = dr.GetString("aHOPDeliveryAddress"); r["HO_City"] = dr.GetString("aHOPCity"); r["HO_StateProv"] = dr.GetString("aHOPStateProv"); r["HO_Country"] = dr.GetString("aHOPCountry"); r["HO_PostalCode"] = dr.GetString("aHOPPostal"); r["LT_Client_Label_BillHeadOffice"] = dr.GetBoolean("ABILLHEADOFFICE"); ds.Tables["WorkorderHeader"].Rows.Add(r); nRecordsAddedToList++; }//end of if workorder already added as same level #endregion workorderlevel #region WorkorderServiceWorkorderItemList Level if(!ds.Tables["WorkorderItem"].Rows.Contains(dr.GetGuid("aWorkorderItemID"))) { r=ds.Tables["WorkorderItem"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderItemID"); r["WorkorderID"]=dr.GetGuid("aWorkorderID"); r["LT_WorkorderItem_Label_Summary"]=dr.GetString("aWORKORDERITEMSUMMARY"); r["LT_WorkorderItem_Label_TypeID"]=dr.GetString("aTypeName"); r["LT_WorkorderItem_Label_RequestDate"]=DBUtil.ToLocal(dr.GetSmartDate("aRequestDate")).Date; r["LT_WorkorderItem_Label_PriorityID"]=dr.GetString("aPriorityName"); r["LT_WorkorderItem_Label_WorkorderStatusID"]=dr.GetString("aWorkorderItemStatusName"); r["LT_Unit_Label_Serial"] = Unit.UnitNameFormatter( dr.GetString("aModelNumber"), dr.GetString("aUnitModelName"), dr.GetString("aUnitVendorName"), dr.GetString("aSerial"), dr.GetString("AUNITDESCRIPTION"), AyaBizUtils.GlobalSettings.DefaultUnitNameDisplayFormat); r["LT_O_UnitModel"]=dr.GetString("aUnitModelName"); r["LT_O_UnitServiceType"]=dr.GetString("aWIUnitServiceTypeName"); //case 1173 r["LT_Unit_Label_Text1"] = dr.GetString("ATEXT1"); r["LT_Unit_Label_Text2"] = dr.GetString("ATEXT2"); r["LT_Unit_Label_Text3"] = dr.GetString("ATEXT3"); r["LT_Unit_Label_Text4"] = dr.GetString("ATEXT4"); r["LT_WorkorderItem_Label_TechNotes"]=dr.GetString("aTechNotes"); r["LT_WorkorderItem_Label_WarrantyService"]=dr.GetBoolean("aWarrantyService"); r["LT_WorkorderItem_Label_Custom1"]=dr.GetString("aCustom1"); r["LT_WorkorderItem_Label_Custom2"]=dr.GetString("aCustom2"); r["LT_WorkorderItem_Label_Custom3"]=dr.GetString("aCustom3"); r["LT_WorkorderItem_Label_Custom4"]=dr.GetString("aCustom4"); r["LT_WorkorderItem_Label_Custom5"]=dr.GetString("aCustom5"); r["LT_WorkorderItem_Label_Custom6"]=dr.GetString("aCustom6"); r["LT_WorkorderItem_Label_Custom7"]=dr.GetString("aCustom7"); r["LT_WorkorderItem_Label_Custom8"]=dr.GetString("aCustom8"); r["LT_WorkorderItem_Label_Custom9"]=dr.GetString("aCustom9"); r["LT_WorkorderItem_Label_Custom0"]=dr.GetString("aCustom0"); ds.Tables["WorkorderItem"].Rows.Add(r); } #endregion workorderserviceworkorderitemlist fields #region WorkorderItemScheduledUser Level if(!ds.Tables["WorkorderItemScheduledUser"].Rows.Contains(dr.GetGuid("aWorkorderItemScheduledUserID"))) { r=ds.Tables["WorkorderItemScheduledUser"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderItemScheduledUserID"); r["WorkorderItemID"]=dr.GetGuid("aWorkorderItemID"); r["LT_WorkorderItemScheduledUser_Label_EstimatedQuantity"]=dr.GetDecimal("aEstimatedQuantity"); Guid gSchedUserID=dr.GetGuid("aScheduledUserID"); r["LT_WorkorderItemScheduledUser_Label_UserID"]=users[gSchedUserID]; r["LT_WorkorderItemScheduledUser_Label_StartDateRelative"]=rtfm.Format(dtNow,DBUtil.ToLocal(dr.GetSmartDate("aStartDate"))); r["LT_WorkorderItemScheduledUser_Label_StartDate"]=DBUtil.ToLocal(dr.GetSmartDate("aStartDate")).Date; r["LT_WorkorderItemScheduledUser_Label_StopDate"]=DBUtil.ToLocal(dr.GetSmartDate("aStopDate")).Date; Guid gScheduledUserRateID=dr.GetGuid("aScheduledUserRateID"); if(gScheduledUserRateID!=Guid.Empty) { RatePickList.RatePickListInfo riSched=rates[gScheduledUserRateID]; r["LT_WorkorderItemScheduledUser_Label_ServiceRateID"]=riSched.Name; //Case 109 r["LT_Rate_Label_AccountNumber"] = riSched.AccountNumber; } else { r["LT_WorkorderItemScheduledUser_Label_ServiceRateID"]=""; } ds.Tables["WorkorderItemScheduledUser"].Rows.Add(r); } #endregion #region WorkorderItemTask Level if(!ds.Tables["WorkorderItemTask"].Rows.Contains(dr.GetGuid("aWorkorderItemTaskID"))) { r=ds.Tables["WorkorderItemTask"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderItemTaskID"); r["WorkorderItemID"]=dr.GetGuid("aWorkorderItemID"); switch((WorkorderItemTaskCompletionTypes)dr.GetInt16("aWorkorderItemTaskCmpltnType")) { case WorkorderItemTaskCompletionTypes.Complete: r["LT_WorkorderItemTask_Label_WorkorderItemTaskCompletionType"]=TaskComplete; break; case WorkorderItemTaskCompletionTypes.Incomplete: r["LT_WorkorderItemTask_Label_WorkorderItemTaskCompletionType"]=TaskIncomplete; break; default: r["LT_WorkorderItemTask_Label_WorkorderItemTaskCompletionType"]=TaskNotApplicable; break; } r["LT_Task_Label_Name"]=dr.GetString("aTaskName"); r["LT_TaskGroup_Label_Name"]=dr.GetString("aTaskGroupName"); ds.Tables["WorkorderItemTask"].Rows.Add(r); } #endregion workorderitemtasklevel #region WorkorderItemPart Level if(!ds.Tables["WorkorderItemPart"].Rows.Contains(dr.GetGuid("aWorkorderItemPartID"))) { r=ds.Tables["WorkorderItemPart"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderItemPartID"); r["WorkorderItemID"]=dr.GetGuid("aWorkorderItemID"); r["LT_WorkorderItemPart_Label_PartID"]=Part.PartDisplayFormatter( dr.GetString("aPartName"), dr.GetString("aPartNumber"), dr.GetString("aUPC"), dr.GetString("aPartManufacturerName"), dr.GetString("aPartCategoryName"), dr.GetString("aPartAssemblyName"), AyaBizUtils.GlobalSettings.DefaultPartDisplayFormat); r["LT_WorkorderItemPart_Label_PartWarehouseID"]=dr.GetString("aPartWarehouseName"); Guid gPartTaxID=dr.GetGuid("aTaxPartSaleID"); if(gPartTaxID!=Guid.Empty) { TaxCodeList.TaxCodeListInfo tiPart=taxlist[gPartTaxID]; r["LT_WorkorderItemPart_Label_TaxPartSaleID"]=tiPart.Name; r["LT_TaxCode_Label_TaxA"]=tiPart.TaxA; r["LT_TaxCode_Label_TaxB"]=tiPart.TaxB; r["LT_TaxCode_Label_TaxAExempt"]=tiPart.TaxAExempt; r["LT_TaxCode_Label_TaxBExempt"]=tiPart.TaxBExempt; r["LT_TaxCode_Label_TaxOnTax"]=tiPart.TaxOnTax; } else { r["LT_WorkorderItemPart_Label_TaxPartSaleID"]=""; r["LT_TaxCode_Label_TaxA"]=0m; r["LT_TaxCode_Label_TaxB"]=0m; r["LT_TaxCode_Label_TaxAExempt"]=true; r["LT_TaxCode_Label_TaxBExempt"]=true; r["LT_TaxCode_Label_TaxOnTax"]=false; } r["LT_WorkorderItemPart_Label_PartSerialID"]=dr.GetString("aSerialNumber"); r["LT_O_PartCategory"]=dr.GetString("aPartCategoryName"); r["LT_O_PartAssembly"]=dr.GetString("aPartAssemblyName"); r["LT_WorkorderItemPart_Label_Description"]=dr.GetString("aWOIPartDescription"); r["LT_WorkorderItemPart_Label_Quantity"]=dr.GetDecimal("aQuantity"); r["LT_WorkorderItemPart_Label_Cost"]=dr.GetDecimal("aCost"); r["LT_WorkorderItemPart_Label_Price"]=dr.GetDecimal("aPrice"); r["LT_WorkorderItemPart_Label_Discount"]=dr.GetDecimal("aDiscount"); r["LT_WorkorderItemPart_Label_Used"]=dr.GetBoolean("aUsed"); #region Calculated values decimal net=0; decimal quantity=(decimal)r["LT_WorkorderItemPart_Label_Quantity"]; decimal price=(decimal)r["LT_WorkorderItemPart_Label_Price"]; decimal discount=(decimal)r["LT_WorkorderItemPart_Label_Discount"]; //case 1343 //net=quantity*price; //net=net-(net*discount); net = decimal.Round(quantity * price, 2, MidpointRounding.AwayFromZero); net = net - (decimal.Round(net * discount, 2, MidpointRounding.AwayFromZero)); r["LT_UI_Label_NetValue"]=net; r["LT_TaxCode_Label_TaxAValue"] = decimal.Round(net * (decimal)r["LT_TaxCode_Label_TaxA"], 2, MidpointRounding.AwayFromZero); if((bool)(r["LT_TaxCode_Label_TaxOnTax"])) { r["LT_TaxCode_Label_TaxBValue"]= decimal.Round((net+(decimal)r["LT_TaxCode_Label_TaxAValue"])* (decimal)r["LT_TaxCode_Label_TaxB"], 2, MidpointRounding.AwayFromZero); } else { r["LT_TaxCode_Label_TaxBValue"] = decimal.Round(net * (decimal)r["LT_TaxCode_Label_TaxB"], 2, MidpointRounding.AwayFromZero); } r["LT_UI_Label_LineTotal"] = decimal.Round(net + (decimal)r["LT_TaxCode_Label_TaxBValue"] + (decimal)r["LT_TaxCode_Label_TaxAValue"], 2, MidpointRounding.AwayFromZero); #endregion ds.Tables["WorkorderItemPart"].Rows.Add(r); } #endregion workorderitempart level #region WorkorderItemLabor Level if(!ds.Tables["WorkorderItemLabor"].Rows.Contains(dr.GetGuid("aWorkorderItemLaborID"))) { r=ds.Tables["WorkorderItemLabor"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderItemLaborID"); r["WorkorderItemID"]=dr.GetGuid("aWorkorderItemID"); r["LT_WorkorderItemLabor_Label_UserID"]=users[dr.GetGuid("aWILUserID")]; Guid gLaborUserRateID=dr.GetGuid("aWILRateID"); if(gLaborUserRateID!=Guid.Empty) { RatePickList.RatePickListInfo riLabor=rates[gLaborUserRateID]; r["LT_WorkorderItemLabor_Label_ServiceRateID"]=riLabor.Name; r["LT_WorkorderItemLabor_Label_LaborRateCharge"]=riLabor.Charge; //Case 109 r["LT_Rate_Label_AccountNumber"] = riLabor.AccountNumber; //retrieve plural or singular unit description? if(dr.GetDecimal("aServiceRateQuantity")==1) r["LT_WorkorderItemLabor_Label_LaborRateUnit"]=riLabor.UnitNameSingle; else r["LT_WorkorderItemLabor_Label_LaborRateUnit"]=riLabor.UnitNamePlural; } else { r["LT_WorkorderItemLabor_Label_ServiceRateID"]=""; r["LT_WorkorderItemLabor_Label_LaborRateCharge"]=0m; r["LT_WorkorderItemLabor_Label_LaborRateUnit"]=""; } Guid gLaborTaxID=dr.GetGuid("aWILTaxRateSaleID"); if(gLaborTaxID!=Guid.Empty) { TaxCodeList.TaxCodeListInfo tiLabor=taxlist[gLaborTaxID]; r["LT_WorkorderItemLabor_Label_TaxCodeID"]=tiLabor.Name; r["LT_TaxCode_Label_TaxA"]=tiLabor.TaxA; r["LT_TaxCode_Label_TaxB"]=tiLabor.TaxB; r["LT_TaxCode_Label_TaxAExempt"]=tiLabor.TaxAExempt; r["LT_TaxCode_Label_TaxBExempt"]=tiLabor.TaxBExempt; r["LT_TaxCode_Label_TaxOnTax"]=tiLabor.TaxOnTax; } else { r["LT_WorkorderItemLabor_Label_TaxCodeID"]=""; r["LT_TaxCode_Label_TaxA"]=0m; r["LT_TaxCode_Label_TaxB"]=0m; r["LT_TaxCode_Label_TaxAExempt"]=true; r["LT_TaxCode_Label_TaxBExempt"]=true; r["LT_TaxCode_Label_TaxOnTax"]=false; } r["LT_WorkorderItemLabor_Label_ServiceStartDate"]=DBUtil.ToLocal(dr.GetSmartDate("aServiceStartDate")).Date; r["LT_WorkorderItemLabor_Label_ServiceStopDate"]=DBUtil.ToLocal(dr.GetSmartDate("aServiceStopDate")).Date; r["LT_WorkorderItemLabor_Label_ServiceRateQuantity"]=dr.GetDecimal("aServiceRateQuantity"); r["LT_WorkorderItemLabor_Label_NoChargeQuantity"]=dr.GetDecimal("aNoChargeQuantity"); r["LT_WorkorderItemLabor_Label_ServiceDetails"]=dr.GetString("aServiceDetails"); r["LT_WorkorderItemLabor_Label_LaborBanked"]=dr.GetGuid("aServiceBankID")==Guid.Empty?false:true; #region Calculated values decimal net=0; decimal quantity=(decimal)r["LT_WorkorderItemLabor_Label_ServiceRateQuantity"]; decimal price=(decimal)r["LT_WorkorderItemLabor_Label_LaborRateCharge"]; net = decimal.Round(quantity * price, 2, MidpointRounding.AwayFromZero); r["LT_UI_Label_NetValue"]=net; r["LT_TaxCode_Label_TaxAValue"] = decimal.Round(net * (decimal)r["LT_TaxCode_Label_TaxA"], 2, MidpointRounding.AwayFromZero); if((bool)(r["LT_TaxCode_Label_TaxOnTax"])) { r["LT_TaxCode_Label_TaxBValue"]=decimal.Round( (net+(decimal)r["LT_TaxCode_Label_TaxAValue"])* (decimal)r["LT_TaxCode_Label_TaxB"], 2, MidpointRounding.AwayFromZero); } else { r["LT_TaxCode_Label_TaxBValue"] = decimal.Round(net * (decimal)r["LT_TaxCode_Label_TaxB"], 2, MidpointRounding.AwayFromZero); } r["LT_UI_Label_LineTotal"]=net+(decimal)r["LT_TaxCode_Label_TaxBValue"]+(decimal)r["LT_TaxCode_Label_TaxAValue"]; #endregion ds.Tables["WorkorderItemLabor"].Rows.Add(r); } #endregion workorderitemlabor level #region WorkorderItemTravel Level if(!ds.Tables["WorkorderItemTravel"].Rows.Contains(dr.GetGuid("aWorkorderItemTravelID"))) { r=ds.Tables["WorkorderItemTravel"].NewRow(); r["ID"]=dr.GetGuid("aWorkorderItemTravelID"); r["WorkorderItemID"]=dr.GetGuid("aWorkorderItemID"); r["LT_WorkorderItemTravel_Label_UserID"]=users[dr.GetGuid("aWITUserID")]; Guid gTravelRateID=dr.GetGuid("aTravelRateID"); if(gTravelRateID!=Guid.Empty) { RatePickList.RatePickListInfo riTravel=rates[gTravelRateID]; r["LT_WorkorderItemTravel_Label_ServiceRateID"]=riTravel.Name; r["LT_WorkorderItemTravel_Label_TravelRateCharge"]=riTravel.Charge; //Case 109 r["LT_Rate_Label_AccountNumber"] = riTravel.AccountNumber; //retrieve plural or singular unit description? if(dr.GetDecimal("aTravelRateQuantity")==1) r["LT_WorkorderItemTravel_Label_TravelRateUnit"]=riTravel.UnitNameSingle; else r["LT_WorkorderItemTravel_Label_TravelRateUnit"]=riTravel.UnitNamePlural; } else { r["LT_WorkorderItemTravel_Label_ServiceRateID"]=""; r["LT_WorkorderItemTravel_Label_TravelRateCharge"]=0m; r["LT_WorkorderItemTravel_Label_TravelRateUnit"]=""; } Guid gTravelTaxID=dr.GetGuid("aWITTaxRateSaleID"); if(gTravelTaxID!=Guid.Empty) { TaxCodeList.TaxCodeListInfo tiTravel=taxlist[gTravelTaxID]; r["LT_WorkorderItemTravel_Label_TaxCodeID"]=tiTravel.Name; r["LT_TaxCode_Label_TaxA"]=tiTravel.TaxA; r["LT_TaxCode_Label_TaxB"]=tiTravel.TaxB; r["LT_TaxCode_Label_TaxAExempt"]=tiTravel.TaxAExempt; r["LT_TaxCode_Label_TaxBExempt"]=tiTravel.TaxBExempt; r["LT_TaxCode_Label_TaxOnTax"]=tiTravel.TaxOnTax; } else { r["LT_WorkorderItemTravel_Label_TaxCodeID"]=""; r["LT_TaxCode_Label_TaxA"]=0m; r["LT_TaxCode_Label_TaxB"]=0m; r["LT_TaxCode_Label_TaxAExempt"]=true; r["LT_TaxCode_Label_TaxBExempt"]=true; r["LT_TaxCode_Label_TaxOnTax"]=false; } r["LT_WorkorderItemTravel_Label_TravelStartDate"]=DBUtil.ToLocal(dr.GetSmartDate("aTravelStartDate")).Date; r["LT_WorkorderItemTravel_Label_TravelStopDate"]=DBUtil.ToLocal(dr.GetSmartDate("aTravelStopDate")).Date; r["LT_WorkorderItemTravel_Label_TravelRateQuantity"]=dr.GetDecimal("aTravelRateQuantity"); r["LT_WorkorderItemTravel_Label_NoChargeQuantity"]=dr.GetDecimal("aWITNoChargeQuantity"); r["LT_WorkorderItemTravel_Label_TravelDetails"]=dr.GetString("aTravelDetails"); r["LT_WorkorderItemTravel_Label_Distance"]=dr.GetDecimal("aDistance"); #region Calculated values decimal net=0; decimal quantity=(decimal)r["LT_WorkorderItemTravel_Label_TravelRateQuantity"]; decimal price=(decimal)r["LT_WorkorderItemTravel_Label_TravelRateCharge"]; net = decimal.Round(quantity * price, 2, MidpointRounding.AwayFromZero); r["LT_UI_Label_NetValue"]=net; r["LT_TaxCode_Label_TaxAValue"] = decimal.Round(net * (decimal)r["LT_TaxCode_Label_TaxA"], 2, MidpointRounding.AwayFromZero); if((bool)(r["LT_TaxCode_Label_TaxOnTax"])) { r["LT_TaxCode_Label_TaxBValue"]=decimal.Round( (net+(decimal)r["LT_TaxCode_Label_TaxAValue"])* (decimal)r["LT_TaxCode_Label_TaxB"], 2, MidpointRounding.AwayFromZero); } else { r["LT_TaxCode_Label_TaxBValue"] = decimal.Round(net * (decimal)r["LT_TaxCode_Label_TaxB"], 2, MidpointRounding.AwayFromZero); } r["LT_UI_Label_LineTotal"]=net+(decimal)r["LT_TaxCode_Label_TaxBValue"]+(decimal)r["LT_TaxCode_Label_TaxAValue"]; #endregion ds.Tables["WorkorderItemTravel"].Rows.Add(r); } #endregion workorderitemTravel level //******************************************* } } 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 Bool }//end Boolspace GZTW.AyaNova.BLL