//public void SaveWorkTicketAsCurrent(JT_WorkTicket workTicket) //{ // //int rows = 0; // JT_TechnicianScheduleDetail scheduleDetail = // _database.Table<JT_TechnicianScheduleDetail>().Where( // sd => (sd.WTNumber == workTicket.WTNumber) && // (sd.WTStep == workTicket.WTStep) && // (sd.SalesOrderNo == workTicket.SalesOrderNo) // ).FirstOrDefault(); // //App_CurrentSelectionData currentData = _database.Table<App_CurrentSelectionData>().FirstOrDefault(); // //currentData.SalesOrderNo = workTicket.SalesOrderNo; // //currentData.WTNumber = workTicket.WTNumber; // //currentData.WTStep = workTicket.WTStep; // SaveScheduleDetailAsCurrent(scheduleDetail); //} public JT_WorkTicket RetrieveCurrentWorkTicket() { JT_WorkTicket currentTicket = null; lock (_locker) { //App_CurrentSelectionData currentData = _database.Table<App_CurrentSelectionData>().FirstOrDefault(); //return _database.Table<JT_WorkTicket>().Where( // wt => (wt.SalesOrderNo == currentData.SalesOrderNo) && // (wt.WTNumber == currentData.WTNumber) && // (wt.WTStep == currentData.WTStep) // ).FirstOrDefault(); JT_TechnicianScheduleDetail scheduleDetail = RetrieveCurrentScheduleDetail(); if (scheduleDetail != null) { currentTicket = _database.Table <JT_WorkTicket>().Where( wt => (wt.SalesOrderNo == scheduleDetail.SalesOrderNo) && (wt.WTNumber == scheduleDetail.WTNumber) && (wt.WTStep == scheduleDetail.WTStep) ).FirstOrDefault(); } } return(currentTicket); }
public App_ScheduledAppointment GetScheduledAppointment() { JT_TechnicianScheduleDetail scheduledDetail = GetTechnicianScheduleDetailFromDB().Where(x => x.IsCurrent).FirstOrDefault(); SO_SalesOrderHeader soHeader = GetSalesOrderHeader(scheduledDetail); return(new App_ScheduledAppointment(scheduledDetail, soHeader)); }
protected void SaveScheduleDetailAsCurrent(JT_TechnicianScheduleDetail scheduleDetail) { int rows = 0; lock (_locker) { // Unset any techs that are marked as "current" List <JT_TechnicianScheduleDetail> currentScheduleDetails = _database.Table <JT_TechnicianScheduleDetail>().Where(t => t.IsCurrent == true).ToList(); if (currentScheduleDetails.Count > 0) { foreach (JT_TechnicianScheduleDetail scheduleDetailInList in currentScheduleDetails) { scheduleDetailInList.IsCurrent = false; } _database.UpdateAll(currentScheduleDetails); } // Set this tech as current. scheduleDetail.IsCurrent = true; rows = _database.Update(scheduleDetail); } if (rows > 0) { OnCurrentScheduleDetailChanged(EventArgs.Empty); } }
protected App_ScheduledAppointment RetrieveCurrentScheduledAppointment(JT_Technician technician) { JT_TechnicianScheduleDetail currentDetail = null; SO_SalesOrderHeader salesOrderHeader = null; lock (_locker) { if ((technician != null) && (IsClockedIn())) { currentDetail = _database.Table <JT_TechnicianScheduleDetail>().Where( sd => (sd.SalesOrderNo == technician.CurrentSalesOrderNo) && (sd.WTNumber == technician.CurrentWTNumber) && (sd.WTStep == technician.CurrentWTStep) ).FirstOrDefault(); salesOrderHeader = GetSalesOrderHeader(currentDetail); } if (currentDetail == null) { return(null); } else { // if we found it, it must really be current currentDetail.IsCurrent = true; return(new App_ScheduledAppointment(currentDetail, salesOrderHeader)); } } }
public JT_TechnicianScheduleDetail RetrieveCurrentScheduleDetail() { JT_TechnicianScheduleDetail currentDetail = null; JT_Technician currentTechnician = null; lock (_locker) { currentTechnician = GetCurrentTechnicianFromDb(); if (currentTechnician != null) { currentDetail = _database.Table <JT_TechnicianScheduleDetail>().Where( sd => (sd.SalesOrderNo == currentTechnician.CurrentSalesOrderNo) && (sd.WTNumber == currentTechnician.CurrentWTNumber) && (sd.WTStep == currentTechnician.CurrentWTStep) ).FirstOrDefault(); } } if (currentDetail != null) { // if we found it, it must really be current currentDetail.IsCurrent = true; } return(currentDetail); }
/// <summary> /// Checks to see if the specified technician is clocked into a ticket. /// </summary> /// <returns>True if technician is logged into a valid ticket, False otherwise.</returns> public bool IsClockedIn(App_Technician technician) { lock (_locker) { JT_Technician erpTech = _database.Table <JT_Technician>().Where( t => (t.TechnicianDeptNo == technician.TechnicianDeptNo) && (t.TechnicianNo == technician.TechnicianNo) ).FirstOrDefault(); if (((erpTech.CurrentSalesOrderNo != null) && (erpTech.CurrentSalesOrderNo.Length > 0)) && ((erpTech.CurrentWTNumber != null) && (erpTech.CurrentWTNumber.Length > 0)) && ((erpTech.CurrentWTStep != null) && (erpTech.CurrentWTStep.Length > 0))) { // it's possible this tech is clocked in to a ticket. But, do we have an actual // ticket or is this left-over data? JT_TechnicianScheduleDetail scheduleDetail = _database.Table <JT_TechnicianScheduleDetail>().Where( sd => (sd.SalesOrderNo == erpTech.CurrentSalesOrderNo) && (sd.WTNumber == erpTech.CurrentWTNumber) && (sd.WTStep == erpTech.CurrentWTStep) ).FirstOrDefault(); if (scheduleDetail != null) { // we do have a clocked-in work ticket for this tech return(true); } } } return(false); }
public App_WorkTicket GetCurrentWorkTicket() { App_WorkTicket currentWorkTicket = null; lock (_locker) { //App_CurrentSelectionData currentData = _database.Table<App_CurrentSelectionData>().FirstOrDefault(); //return _database.Table<JT_WorkTicket>().Where( // wt => (wt.SalesOrderNo == currentData.SalesOrderNo) && // (wt.WTNumber == currentData.WTNumber) && // (wt.WTStep == currentData.WTStep) // ).FirstOrDefault(); JT_TechnicianScheduleDetail scheduleDetail = RetrieveCurrentScheduleDetail(); if (scheduleDetail != null) { SO_SalesOrderHeader salesOrderHeader = GetSalesOrderHeader(scheduleDetail); if (salesOrderHeader != null) { App_ScheduledAppointment scheduledAppointment = new App_ScheduledAppointment(scheduleDetail, salesOrderHeader); currentWorkTicket = GetWorkTicket(scheduledAppointment); } } } return(currentWorkTicket); }
public JT_WorkTicket GetWorkTicket(string formattedWorkTicketNumber) { //JT_WorkTicket workTicket = null; JT_TechnicianScheduleDetail scheduleDetail = new JT_TechnicianScheduleDetail(); string[] workTicketNumberParts = JT_WorkTicket.BreakFormattedTicketNumber(formattedWorkTicketNumber); scheduleDetail.SalesOrderNo = workTicketNumberParts[0]; scheduleDetail.WTNumber = workTicketNumberParts[1]; scheduleDetail.WTStep = workTicketNumberParts[2]; return(GetWorkTicket(scheduleDetail)); //lock (_locker) //{ // workTicket = // _database.Table<JT_WorkTicket>().Where( // wt => // (wt.SalesOrderNo == workTicketNumberParts[0]) && // (wt.WTNumber == workTicketNumberParts[1]) //&& // //(wt.WTStep == workTicketNumberParts[2]) // ).FirstOrDefault(); //} //return workTicket; }
public ScheduleDetailPageViewModel(App_ScheduledAppointment scheduleDetail) { _scheduleDetail = scheduleDetail; _technicianScheduleDetail = App.Database.GetTechnicianScheduleDetailFromDB().Where(x => x.WTNumber == _scheduleDetail.WorkTicketNumber && x.WTStep == _scheduleDetail.WorkTicketStep).FirstOrDefault(); _timeEntryDetail = App.Database.GetTimeEntryData(scheduleDetail); _timportDetail = App.Database.GetCurrentExport().Where(x => x.RecordType == "L" && x.WTNumber == _scheduleDetail.WorkTicketNumber && x.WTStep == _scheduleDetail.WorkTicketStep && x.SalesOrderNo == _scheduleDetail.SalesOrderNumber).FirstOrDefault(); }
public ClockOutPageViewModel(App_WorkTicket workTicket) { // dch rkl 12/07/2016 catch exception try { _currentTechnician = App.Database.GetCurrentTechnicianFromDb(); //_timeEntry = App.Database.GetClockedInTimeEntry(); _workTicket = workTicket; _scheduleDetail = App.Database.RetrieveCurrentScheduleDetail(); _technicianStatusList = App.Database.GetTechnicianStatusesFromDB(); _serviceTicketStatusList = App.Database.GetWorkTicketStatusesFromDB(); _earningsCodeList = App.Database.GetEarningsCodesFromDB(); _activityCodeList = App.Database.GetActivityCodesFromDB(); _erpOptions = App.Database.GetErpOptions(); // dch rkl 12/02/2016 Billable Flags _billableList = new List <App_Billable>(); _billableList.Add(new App_Billable("B", "Billable")); _billableList.Add(new App_Billable("N", "Do Not Bill")); _billableList.Add(new App_Billable("X", "No Charge")); // dch rkl 11/01/2016 Department Codes BEGIN _departmentCodesList = App.Database.GetMiscellaneousCodesFromDB("M", "DP"); for (int i = 0; i < _departmentCodesList.Count; i++) { _departmentCodesList[i].Description = string.Format("{0} - {1}", _departmentCodesList[i].MiscellaneousCode, _departmentCodesList[i].Description); } // dch rkl 11/01/2016 Department Codes END // dch rkl 11/30/2016 allow blank department BEGIN JT_MiscellaneousCodes blankCode = new JT_MiscellaneousCodes(); blankCode.AddtlDescNum = ""; blankCode.CodeType = ""; blankCode.Description = ""; blankCode.MiscellaneousCode = ""; blankCode.RecordType = ""; _departmentCodesList.Add(blankCode); _departmentCodesList = _departmentCodesList.OrderBy(item => item.Description).ToList(); // dch rkl 11/30/2016 allow blank department END } catch (Exception ex) { // dch rkl 12/07/2016 Log Error ErrorReporting errorReporting = new ErrorReporting(); errorReporting.sendException(ex, "TechDashboard.ClockOut(App_WorkTicket workTicket)"); } }
protected SO_SalesOrderHeader GetSalesOrderHeader(JT_TechnicianScheduleDetail scheduleDetail) { SO_SalesOrderHeader salesOrderHeader = null; lock (_locker) { if (scheduleDetail != null) { salesOrderHeader = _database.Table <SO_SalesOrderHeader>().Where( so => (so.SalesOrderNo == scheduleDetail.SalesOrderNo) ).FirstOrDefault(); } } return(salesOrderHeader); }
public JT_WorkTicket GetWorkTicket(JT_TechnicianScheduleDetail scheduleDetail) { JT_WorkTicket workTicket = null; lock (_locker) { if (scheduleDetail != null) { workTicket = _database.Table <JT_WorkTicket>().Where( wt => (wt.SalesOrderNo == scheduleDetail.SalesOrderNo) && (wt.WTNumber == scheduleDetail.WTNumber) && (wt.WTStep == scheduleDetail.WTStep) ).FirstOrDefault(); } } return(workTicket); }
public SO_SalesOrderHeader RetrieveSalesOrderHeaderFromCurrentWorkTicket() { SO_SalesOrderHeader salesOrderHeader = null; lock (_locker) { JT_TechnicianScheduleDetail currentDetail = RetrieveCurrentScheduleDetail(); if (currentDetail != null) { salesOrderHeader = _database.Table <SO_SalesOrderHeader>().Where( so => so.SalesOrderNo == currentDetail.SalesOrderNo ).FirstOrDefault(); } } return(salesOrderHeader); }
/// <summary> /// Retreives all technician schedule detail records from the ERP connection /// for a given technician and fills the local JT_TechnicianScheduleDetail table. /// </summary> /// <param name="technicianNumber">The technician's employee number</param> public void FillTechnicianScheduleDetailTable(string technicianNumber) { FillLocalTable <JT_TechnicianScheduleDetail>("where", "TechnicianNo eq '" + technicianNumber + "'"); if (technicianNumber == "0000203") { JT_TechnicianScheduleDetail skedDetail = new JT_TechnicianScheduleDetail() { TechnicianDeptNo = "13", TechnicianNo = "0000202", SalesOrderNo = "0001671", WTNumber = "001", WTStep = "001", ScheduleDate = DateTime.Now, StartTime = "1100", HoursScheduled = 5 }; _database.Insert(skedDetail); } // now that we have the schedule details, remove any that don't match our date range // First, get the number of days before and after today that will be allowed. App_Settings appSettings = GetApplicationSettings(); // Find the "bad" schedule details -- date less than allowed lower limint and // greater than allowed upper limit DateTime lowerLimit = (DateTime.Now.AddDays(Convert.ToDouble(appSettings.ScheduleDaysBefore) * (-1))).Date; DateTime upperLimit = (DateTime.Now.AddDays(Convert.ToDouble(appSettings.ScheduleDaysAfter))).Date; List <JT_TechnicianScheduleDetail> scheduleDetails = _database.Table <JT_TechnicianScheduleDetail>().Where( sd => (sd.ScheduleDate < lowerLimit) || (sd.ScheduleDate > upperLimit) ).ToList(); // Get rid of these records from our DB foreach (JT_TechnicianScheduleDetail detail in scheduleDetails) { System.Diagnostics.Debug.WriteLine("Removing JT_TechnicianScheduleDetail object with date " + detail.ScheduleDate.ToString("yyyy-MM-dd")); _database.Delete(detail); } }
public ScheduleDetailPageViewModel(App_ScheduledAppointment scheduleDetail) { // dch rkl 12/07/2016 catch exception try { _scheduleDetail = scheduleDetail; _technicianScheduleDetail = App.Database.GetTechnicianScheduleDetailFromDB().Where(x => x.WTNumber == _scheduleDetail.WorkTicketNumber && x.WTStep == _scheduleDetail.WorkTicketStep).FirstOrDefault(); _timeEntryDetail = App.Database.GetTimeEntryData(scheduleDetail); _timportDetail = App.Database.GetCurrentExport().Where(x => x.RecordType == "L" && x.WTNumber == _scheduleDetail.WorkTicketNumber && x.WTStep == _scheduleDetail.WorkTicketStep && x.SalesOrderNo == _scheduleDetail.SalesOrderNumber).FirstOrDefault(); } catch (Exception ex) { // dch rkl 12/07/2016 Log Error ErrorReporting errorReporting = new ErrorReporting(); errorReporting.sendException(ex, "TechDashboard.ScheduleDetailPageViewModel"); } }
public JT_WorkTicketText RetrieveTextFromCurrentWorkTicket() { JT_WorkTicketText note = null; lock (_locker) { JT_TechnicianScheduleDetail scheduleDetail = RetrieveCurrentScheduleDetail(); if (scheduleDetail != null) { note = _database.Table <JT_WorkTicketText>().Where( wtt => (wtt.SalesOrderNo == scheduleDetail.SalesOrderNo) && (wtt.WTNumber == scheduleDetail.WTNumber) && (wtt.WTStep == scheduleDetail.WTStep) ).FirstOrDefault(); } } return(note); }
public App_WorkTicket GetWorkTicket2(string formattedWorkTicketNumber) { string[] brokenTicketNumber = App_WorkTicket.BreakFormattedTicketNumber(formattedWorkTicketNumber); string salesOrderNumber = brokenTicketNumber[0]; string workTicketNumber = brokenTicketNumber[1]; string workTicketStep = brokenTicketNumber[2]; JT_TechnicianScheduleDetail scheduleDetail = _database.Table <JT_TechnicianScheduleDetail>().Where( sd => (sd.SalesOrderNo == salesOrderNumber) && (sd.WTNumber == workTicketNumber) && (sd.WTStep == workTicketStep) ).OrderByDescending(sd => sd.ScheduleDate).FirstOrDefault(); App_ScheduledAppointment scheduledAppointment = new App_ScheduledAppointment(scheduleDetail, GetSalesOrderHeader(scheduleDetail)); App_WorkTicket workTicket = GetWorkTicket(scheduledAppointment); return(workTicket); }
public ClockOutPageViewModel(App_WorkTicket workTicket) { try { _currentTechnician = App.Database.GetCurrentTechnicianFromDb(); _workTicket = workTicket; _scheduleDetail = App.Database.RetrieveCurrentScheduleDetail(); _technicianStatusList = App.Database.GetTechnicianStatusesFromDB(); _serviceTicketStatusList = App.Database.GetAllWorkTicketStatusesFromDB().Where(x => x.CodeType == "ST").ToList(); //App.Database.GetAllWorkTicketStatusesFromDB().Where(wt => wt.MiscellaneousCode == "ST").ToList(); _earningsCodeList = App.Database.GetEarningsCodesFromDB(); _activityCodeList = App.Database.GetActivityCodesFromDB(); _erpOptions = App.Database.GetErpOptions(); // billable flags _billableList = new List <App_Billable>(); _billableList.Add(new App_Billable("B", "Billable")); _billableList.Add(new App_Billable("N", "Do Not Bill")); _billableList.Add(new App_Billable("X", "No Charge")); _departmentCodesList = App.Database.GetMiscellaneousCodesFromDB("M", "DP"); for (int i = 0; i < _departmentCodesList.Count; i++) { _departmentCodesList[i].Description = string.Format("{0} - {1}", _departmentCodesList[i].MiscellaneousCode, _departmentCodesList[i].Description); } // dch rkl 11/30/2016 allow blank department BEGIN JT_MiscellaneousCodes blankCode = new JT_MiscellaneousCodes(); blankCode.AddtlDescNum = ""; blankCode.CodeType = ""; blankCode.Description = ""; blankCode.MiscellaneousCode = ""; blankCode.RecordType = ""; _departmentCodesList.Add(blankCode); _departmentCodesList = _departmentCodesList.OrderBy(item => item.Description).ToList(); // dch rkl 11/30/2016 allow blank department END //}; } catch (Exception exception) { App.sendException(exception, "TechDashboard.ClockOutPageViewModel(App_Workticket)"); } }