示例#1
0
        //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);
        }
示例#6
0
        /// <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);
        }
示例#7
0
        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);
        }
示例#8
0
        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;
        }
示例#9
0
 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();
 }
示例#10
0
        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)");
            }
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        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");
            }
        }
示例#16
0
        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);
        }
示例#18
0
        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)");
            }
        }