990 lines
43 KiB
C#
990 lines
43 KiB
C#
///////////////////////////////////////////////////////////
|
|
// 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
|
|
{
|
|
/// <summary>
|
|
/// Detailed preventive maintenance info used in report
|
|
/// </summary>
|
|
[Serializable]
|
|
public class WorkorderPMDetailedReportData : ReadOnlyBase
|
|
{
|
|
private RelativeTimeFormatter rtfm=null;
|
|
#region Attributes
|
|
private ReportDataSet ds;
|
|
|
|
#endregion
|
|
|
|
#region Constructor
|
|
|
|
/// <summary>
|
|
/// Private constructor to prevent direct instantiation
|
|
/// </summary>
|
|
private WorkorderPMDetailedReportData()
|
|
{
|
|
rtfm=RelativeTimeFormatter.GetItem(User.CurrentUserLanguage);
|
|
}
|
|
#endregion
|
|
|
|
#region Static methods
|
|
|
|
/// <summary>
|
|
/// Internal method used by list factory
|
|
/// </summary>
|
|
internal static ReportDataSet Get(string Filter, int MaxRecords, List<Guid> IDList)
|
|
{
|
|
return ((WorkorderPMDetailedReportData)DataPortal.Fetch(new Criteria(Filter, IDList, MaxRecords))).ds;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the report key which is a property of
|
|
/// reports used to link all reports that can be used
|
|
/// with a particular data source.
|
|
/// </summary>
|
|
public static string ReportKey
|
|
{
|
|
get
|
|
{
|
|
return "WorkorderPMDetailed";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 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.
|
|
/// </summary>
|
|
public static string IDField
|
|
{
|
|
get
|
|
{
|
|
return "LT_O_Workorder";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Same as IDField but for detailed reports
|
|
/// </summary>
|
|
public static string IDFieldDetailed
|
|
{
|
|
get
|
|
{
|
|
return IDField;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Get items by criteria
|
|
/// </summary>
|
|
/// <param name="xmlCriteria">Use AyaNova UI to easily build xmlCriteria and Ctrl-Alt-g keyboard command to display it for use in your code</param>
|
|
/// <returns>ReportDataSet</returns>
|
|
public static ReportDataSet GetItems(string xmlCriteria)
|
|
{
|
|
|
|
return ((WorkorderPMDetailedReportData)DataPortal.Fetch(new Criteria(xmlCriteria, null, -1))).ds;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Takes a single ID and returns a "list" of one object
|
|
/// </summary>
|
|
/// <param name="WorkorderID">ID of Workorder object</param>
|
|
/// <returns>ReportDataSet</returns>
|
|
public static ReportDataSet GetItem(Guid WorkorderID)
|
|
{
|
|
|
|
//Case 556
|
|
List<Guid> l = new List<Guid>();
|
|
l.Add(WorkorderID);
|
|
return GetListFromIDList(l);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get's all workorders in the provided List of workorder id's
|
|
/// (used for pick and choose printing etc)
|
|
/// </summary>
|
|
/// <param name="WorkorderIDList">Generic list of Guid's of workorders</param>
|
|
/// <returns>ReportDataSet</returns>
|
|
public static ReportDataSet GetListFromIDList(List<Guid> 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
|
|
///
|
|
/// <param name="Criteria"></param>
|
|
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
|
|
/// <summary>
|
|
/// Criteria for identifying existing object
|
|
/// </summary>
|
|
[Serializable]
|
|
private class Criteria
|
|
{
|
|
public List<Guid> IDList;
|
|
public string CriteriaXML;
|
|
public int MaxRecords;
|
|
public Criteria(string _CriteriaXML, List<Guid> _IDList, int _MaxRecords)
|
|
{
|
|
CriteriaXML = _CriteriaXML;
|
|
IDList = _IDList;
|
|
MaxRecords = _MaxRecords;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}//end Bool
|
|
|
|
}//end Boolspace GZTW.AyaNova.BLL |