Esempio n. 1
0
        public int DeleteRepairPart(App_RepairPart part, App_WorkTicket workTicket, App_Technician technician)
        {
            int rows = 0;
            JT_TransactionImportDetail detail = new JT_TransactionImportDetail();

            lock (_locker)
            {
                detail.ID              = part.ID;
                detail.RecordType      = "P";
                detail.SalesOrderNo    = workTicket.SalesOrderNo;
                detail.WTNumber        = workTicket.WTNumber;
                detail.WTStep          = workTicket.WTStep;
                detail.EmployeeDeptNo  = technician.TechnicianDeptNo;
                detail.EmployeeNo      = technician.TechnicianNo;
                detail.TransactionDate = System.DateTime.Now.ToString("yyyy-MM-dd");
                detail.ItemCode        = part.PartItemCode;
                detail.WarehouseCode   = part.Warehouse;
                detail.QuantityUsed    = part.Quantity;
                detail.UnitCost        = part.UnitCost;
                detail.UnitPrice       = part.UnitPrice;
                detail.ChargePart      = (part.IsChargeable ? "Y" : "N");
                detail.PrintPart       = (part.IsPrintable ? "Y" : "N");
                detail.PurchasePart    = (part.IsPurchased ? "Y" : "N");
                detail.Overhead        = (part.IsOverhead ? "Y" : "N");
                detail.UnitOfMeasure   = part.UnitOfMeasure;
                detail.CommentText     = part.Comment;
                detail.LotSerialNo     = part.LotSerialNo;

                rows = _database.Delete <JT_TransactionImportDetail>(detail.ID);
            }
            return(rows);
        }
        public void SaveMiscellaneousTimeEntry(JT_DailyTimeEntry dailyTimeEntry, double hoursWorked)
        {
            JT_TransactionImportDetail transactionDetail = new JT_TransactionImportDetail()
            {
                // dch rkl 11/01/2016 per Jeanne, this should be an "M"
                //RecordType = "L",
                RecordType = "M",

                SalesOrderNo   = dailyTimeEntry.SalesOrderNo,
                WTNumber       = dailyTimeEntry.WTNumber,
                WTStep         = dailyTimeEntry.WTStep,
                EmployeeDeptNo = dailyTimeEntry.DepartmentNo,
                EmployeeNo     = dailyTimeEntry.EmployeeNo,
                EarningsCode   = dailyTimeEntry.EarningsCode,
                StartTime      = dailyTimeEntry.StartTime,
                EndTime        = dailyTimeEntry.EndTime,
                // dch rkl 11/01/2016 Transaction Date should come from the entry screen BEGIN
                //TransactionDate = DateTime.Now.ToSage100DateString(),
                //TransactionDateAsDateTime = DateTime.Now,
                TransactionDate           = dailyTimeEntry.TransactionDate.ToSage100DateString(),
                TransactionDateAsDateTime = dailyTimeEntry.TransactionDate,
                // dch rkl 11/01/2016 Transaction Date should come from the entry screen END
                HoursWorked = hoursWorked
            };

            _database.Insert(transactionDetail);
            _database.Insert(dailyTimeEntry);
        }
Esempio n. 3
0
        /// <summary>
        /// Sets the given technician as being clocked-in to a ticket represented by the
        /// specified scheduled appointment object.  The time and status codes provided
        /// will also be used to update the technician data.
        /// </summary>
        /// <param name="technician">Technician to clock in</param>
        /// <param name="scheduledAppointment">Scheduled Appointment object to clock into</param>
        /// <param name="startDateTime">Start date/time</param>
        /// <param name="technicianStatus">Technician status object for the new, clocked-in status</param>
        /// <param name="serviceTicketStatusCode">Work ticket status for the new, clocked-in status</param>
        public void ClockIn(App_Technician technician, App_ScheduledAppointment scheduledAppointment,
                            DateTime startDateTime, JT_TechnicianStatus technicianStatus,
                            JT_MiscellaneousCodes serviceTicketStatusCode)
        {
            // Is this tech already clocked into a ticket?
            if (IsClockedIn(technician))
            {
                throw new Exception("Technician is already clocked into a ticket!");
            }

            int rows = 0;

            // Update the erp record with the ticket info
            JT_Technician erpTech = GetTechnician(technician.TechnicianDeptNo, technician.TechnicianNo);

            erpTech.CurrentStartDate    = startDateTime.Date;
            erpTech.CurrentStartTime    = startDateTime.ToSage100TimeString();
            erpTech.CurrentSalesOrderNo = scheduledAppointment.SalesOrderNumber;
            erpTech.CurrentWTNumber     = scheduledAppointment.WorkTicketNumber;
            erpTech.CurrentWTStep       = scheduledAppointment.WorkTicketStep;
            erpTech.CurrentStatus       = technicianStatus.StatusCode;      // dch rkl 11/03/2016 Save Current Status code to JT_Technician table
            rows = _database.Update(erpTech);

            // create the JT_TransactionImportDetail record
            JT_TransactionImportDetail importDetail = new JT_TransactionImportDetail();

            importDetail.RecordType   = "S";
            importDetail.SalesOrderNo = scheduledAppointment.SalesOrderNumber;
            importDetail.WTNumber     = scheduledAppointment.WorkTicketNumber;
            importDetail.WTStep       = scheduledAppointment.WorkTicketStep;
            importDetail.StatusCode   = serviceTicketStatusCode.MiscellaneousCode;
            //importDetail.statusDate TODO>>> not in table spec!
            importDetail.TransactionDate           = startDateTime.ToShortDateString();
            importDetail.TransactionDateAsDateTime = startDateTime;

            // dch rkl 12/09/2016 per Chris, store start time in start time
            //importDetail.StatusTime = startDateTime.ToSage100TimeString();
            importDetail.StartTime = startDateTime.ToSage100TimeString();

            //importDetail.StatusComment = ""; // not used at this time but might be in the future
            rows = _database.Insert(importDetail);


            // TODO... do we need this anymore now that we are tracking in/out
            //  on technician record?
            JT_DailyTimeEntry newTimeEntry = new JT_DailyTimeEntry();

            newTimeEntry.DepartmentNo    = technician.TechnicianDeptNo;
            newTimeEntry.EmployeeNo      = technician.TechnicianNo;
            newTimeEntry.SalesOrderNo    = scheduledAppointment.SalesOrderNumber;
            newTimeEntry.WTNumber        = scheduledAppointment.WorkTicketNumber;
            newTimeEntry.WTStep          = scheduledAppointment.WorkTicketStep;
            newTimeEntry.StartTime       = startDateTime.ToSage100TimeString();
            newTimeEntry.TransactionDate = startDateTime;
            newTimeEntry.IsModified      = true;

            rows = _database.Insert(newTimeEntry);
        }
Esempio n. 4
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();
 }
        public JT_TransactionImportDetail SaveRepairPart(App_RepairPart part, App_WorkTicket workTicket, App_Technician technician)
        {
            int rows = 0;
            JT_TransactionImportDetail detail = new JT_TransactionImportDetail();

            lock (_locker)
            {
                detail.ID                        = part.ID;
                detail.RecordType                = "P";
                detail.SalesOrderNo              = workTicket.SalesOrderNo;
                detail.WTNumber                  = workTicket.WTNumber;
                detail.ItemCodeDesc              = part.ItemCodeDesc;
                detail.WTStep                    = workTicket.WTStep;
                detail.EmployeeDeptNo            = technician.TechnicianDeptNo;
                detail.EmployeeNo                = technician.TechnicianNo;
                detail.TransactionDate           = System.DateTime.Now.ToString("yyyy-MM-dd");
                detail.TransactionDateAsDateTime = System.DateTime.Now;
                detail.ItemCode                  = part.PartItemCode;
                detail.WarehouseCode             = part.Warehouse;
                detail.QuantityUsed              = part.Quantity;
                detail.UnitCost                  = part.UnitCost;
                detail.UnitPrice                 = part.UnitPrice;
                detail.ChargePart                = (part.IsChargeable ? "Y" : "N");
                detail.PrintPart                 = (part.IsPrintable ? "Y" : "N");
                detail.PurchasePart              = (part.IsPurchased ? "Y" : "N");
                detail.Overhead                  = (part.IsOverhead ? "Y" : "N");
                detail.UnitOfMeasure             = part.UnitOfMeasure;
                detail.CommentText               = part.Comment;
                detail.LotSerialNo               = part.LotSerialNo;
                detail.SOLineKey                 = part.SoLineKey;          // dch rkl 01/23/2017 Save SOLineKey

                detail.QuantityRequired = (double)part.QuantityReqd;        // dch rkl 11/30/2016 save quantity required

                // dch rkl 02/03/2017 Do not set this, per Jeanne
                //detail.QuantityCompleted = part.QuantityShipped;            // dch rkl 12/05/2016 save quantity shipped

                // do save
                if (detail.ID != 0)
                {
                    // update existing
                    rows = _database.Update(detail);
                }
                else
                {
                    // insert new
                    rows = _database.Insert(detail);
                }
            }

            return(detail);
        }
        // dch rkl 10/14/2016 Delete Expense Item
        public void DeleteExpense(App_Expense expense)
        {
            JT_TransactionImportDetail detail = new JT_TransactionImportDetail();

            lock (_locker)
            {
                detail =
                    _database.Table <JT_TransactionImportDetail>().Where(
                        tid => (tid.ID == expense.ID)
                        ).FirstOrDefault();

                _database.Delete(detail);
            }
        }
Esempio n. 7
0
        public async Task <bool> InsertTransactionImportDetailRecord(JT_TransactionImportDetail importDetail)
        {
            bool returnData = false;

            // set up the proper URL
            string url = GetRestServiceUrl();

            if (!url.EndsWith(@"/"))
            {
                url += @"/";
            }
            url += @"i/JT_TransactionImportDetail";

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings();

            microsoftDateFormatSettings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;

            // Make the call and get a valid response
            HttpResponseMessage response
                = await client.PostAsync(client.BaseAddress, new StringContent(JsonConvert.SerializeObject(importDetail, microsoftDateFormatSettings), null, "application/json")); // puke.... await

            response.EnsureSuccessStatusCode();

            // Read out the result... it better be JSON!
            string JsonResult = response.Content.ReadAsStringAsync().Result;

            try
            {
                returnData = JsonConvert.DeserializeObject <bool>(JsonResult);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);

                // dch rkl 12/07/2016 Log Error
                ErrorReporting errorReporting = new ErrorReporting();
                errorReporting.sendException(ex, "TechDashboard.TdWs_RestClient.InsertTransactionImportDetailRecord");
            }

            client.Dispose();
            response.Dispose();

            return(returnData);
        }
Esempio n. 8
0
        public void SaveWorkTicketText(App_WorkTicketText workTicketText)
        {
            int rows = 0;

            lock (_locker)
            {
                JT_WorkTicketText workTicketToSave = new JT_WorkTicketText()
                {
                    WTNumber     = workTicketText.WTNumber,
                    WTStep       = workTicketText.WTStep,
                    Text         = workTicketText.Text,
                    SequenceNo   = workTicketText.SequenceNo,
                    SalesOrderNo = workTicketText.SalesOrderNo,
                    IsModified   = true,
                    ID           = workTicketText.ID
                };

                JT_TransactionImportDetail transactionDetail = new JT_TransactionImportDetail()
                {
                    RecordType      = "W",
                    SalesOrderNo    = workTicketText.SalesOrderNo,
                    WTNumber        = workTicketText.WTNumber,
                    WTStep          = workTicketText.WTStep,
                    TransactionDate = DateTime.Now.ToString("yyyyMMdd"),        // dch rkl 11/03/2016 include transaction date for notes
                    StepText        = workTicketText.Text
                };

                _database.Insert(transactionDetail);

                SaveWorkTicketText(workTicketToSave);

                /*workTicketText.IsModified = true;
                 * // puke
                 * //JT_WorkTicketText itemToSave;
                 *
                 *
                 *              if (workTicketText.WTNumber != null && workTicketText.WTStep != null)
                 * {
                 *  rows = _database.Update(workTicketText);
                 * }
                 * else
                 * {
                 *  rows = _database.Insert(workTicketText);
                 * }
                 *
                 * // puke... need call back?*/
            }
        }
        /// <summary>
        /// Saves the provided App_Expense item to the local database
        /// and flags it as modified.
        /// </summary>
        /// <param name="expense">The App_Expense item to save</param>
        public void SaveExpense(JT_TransactionImportDetail expense)
        {
            int rows = 0;

            lock (_locker)
            {
                if (expense.ID != 0)
                {
                    rows = _database.Update(expense);
                    System.Diagnostics.Debug.WriteLine("Number of rows updated = " + rows.ToString());
                }
                else
                {
                    expense.RecordType = "E";
                    rows = _database.Insert(expense);
                    System.Diagnostics.Debug.WriteLine("Number of rows inserted = " + rows.ToString());
                }
            }
        }
        /// <summary>
        /// Saves the provided App_Expense item to the local database
        /// </summary>
        /// <param name="expense">The App_Expense item to save</param>
        public void SaveExpense(App_Expense expense)
        {
            int rows = 0;

            JT_TransactionImportDetail txnImportDetail = new JT_TransactionImportDetail();

            txnImportDetail.RecordType        = "E";
            txnImportDetail.ID                = expense.ID;
            txnImportDetail.EmployeeNo        = App.Database.GetCurrentTechnicianFromDb().TechnicianNo;
            txnImportDetail.EmployeeDeptNo    = App.Database.GetCurrentTechnicianFromDb().TechnicianDeptNo;
            txnImportDetail.TransactionDate   = expense.Date.ToSage100DateString();
            txnImportDetail.SalesOrderNo      = expense.WorkTicket.SalesOrderNo;
            txnImportDetail.WTNumber          = expense.WorkTicket.WTNumber;
            txnImportDetail.WTStep            = expense.WorkTicket.WTStep;
            txnImportDetail.ItemCode          = expense.ChargeCode;
            txnImportDetail.UnitOfMeasure     = expense.UnitOfMeasure;
            txnImportDetail.QuantityUsed      = expense.Quantity;
            txnImportDetail.UnitCost          = expense.UnitCost;
            txnImportDetail.ReimburseEmployee = (expense.IsReimbursable ? "Y" : "N");
            txnImportDetail.UnitPrice         = expense.UnitPrice;

            // dch rkl 12/09/2016 per Chris, use ItemCodeDesc
            //txnImportDetail.BillingDescription = expense.BillingDescription;
            //txnImportDetail.ItemCodeDesc = expense.BillingDescription;
            //per Jeanne, use comment
            txnImportDetail.CommentText = expense.BillingDescription;

            txnImportDetail.ChargePart = (expense.IsChargeableToCustomer ? "Y" : "N");

            lock (_locker)
            {
                if (txnImportDetail.ID != 0)
                {
                    rows = _database.Update(txnImportDetail);
                    System.Diagnostics.Debug.WriteLine("Number of rows updated = " + rows.ToString());
                }
                else
                {
                    rows = _database.Insert(txnImportDetail);
                    System.Diagnostics.Debug.WriteLine("Number of rows inserted = " + rows.ToString());
                }
            }
        }
        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");
            }
        }
Esempio n. 12
0
        public int DeleteRepairPart(App_RepairPart part)
        {
            int rows = 0;
            JT_TransactionImportDetail detail = new JT_TransactionImportDetail();

            lock (_locker)
            {
                detail =
                    _database.Table <JT_TransactionImportDetail>().Where(
                        tid => (tid.ID == part.ID)
                        ).FirstOrDefault();

                detail.RemovePart                = "Y";
                detail.TransactionDate           = System.DateTime.Now.ToString("yyyy-MM-dd");
                detail.TransactionDateAsDateTime = System.DateTime.Now;

                rows = _database.Update(detail);
            }

            return(rows);
        }
Esempio n. 13
0
        // dch rkl 01/13/2017 Return the ID of the Inserted Part
        //public void AddPartToPartsList()
        public int AddPartToPartsList()
        {
            // dch rkl 01/13/2017 Return the ID of the Inserted Part
            int iId = 0;

            // dch rkl 12/07/2016 catch exception
            try
            {
                // dch rkl 01/13/2017 Return the ID of the Inserted Part
                //App.Database.SaveRepairPart(_partToEdit, _workTicket, App.CurrentTechnician);
                JT_TransactionImportDetail jtDtl = App.Database.SaveRepairPart(_partToEdit, _workTicket, App.CurrentTechnician);
                iId = jtDtl.ID;
            }
            catch (Exception ex)
            {
                // dch rkl 12/07/2016 Log Error
                ErrorReporting errorReporting = new ErrorReporting();
                errorReporting.sendException(ex, "TechDashboard.PartsEditPageViewModel.AddPartToPartsList");
            }

            // dch rkl 01/13/2017 Return the ID of the Inserted Part
            return(iId);
        }
Esempio n. 14
0
        public List <App_RepairPart> RetrievePartsListFromWorkTicket(App_WorkTicket workTicket)
        {
            List <JT_TransactionImportDetail> importDetailList     = null;
            List <SO_SalesOrderDetail>        salesOrderDetaillist = null;
            List <App_RepairPart>             partsList            = new List <App_RepairPart>();

            lock (_locker)
            {
                importDetailList =
                    _database.Table <JT_TransactionImportDetail>().Where(
                        tid => (tid.SalesOrderNo == workTicket.SalesOrderNo) &&
                        (tid.RecordType == "P") &&
                        (tid.WTNumber == workTicket.WTNumber) &&
                        (tid.WTStep == workTicket.WTStep)        //&&
                        //((tid.RemovePart == null) || (tid.RemovePart.ToUpper() != "Y"))  we're going to remove those downstream
                        ).ToList();

                if ((importDetailList != null) && (importDetailList.Count > 0))
                {
                    partsList = new List <App_RepairPart>();
                    foreach (JT_TransactionImportDetail detail in importDetailList)
                    {
                        partsList.Add(new App_RepairPart(detail, workTicket));
                    }
                }
            }

            // now let's check for default parts
            lock (_locker)
            {
                salesOrderDetaillist =
                    _database.Table <SO_SalesOrderDetail>().Where(
                        tid => (tid.SalesOrderNo == workTicket.SalesOrderNo) &&
                        (tid.JT158_WTPart == "Y") &&
                        (tid.JT158_WTNumber == workTicket.WTNumber) &&
                        (tid.JT158_WTStep == workTicket.WTStep))
                    .ToList();


                if ((salesOrderDetaillist != null) && (salesOrderDetaillist.Count > 0))
                {
                    foreach (SO_SalesOrderDetail detail in salesOrderDetaillist)
                    {
                        if (importDetailList.Count(x => x.ItemCode == detail.ItemCode) <= 0 && detail.ItemCode != "/EXPENSE")
                        {
                            var            servicePart    = _database.Table <JT_ServiceEquipmentParts>().Where(x => x.ItemCode == detail.ItemCode).FirstOrDefault();
                            var            equipmentAsset = _database.Table <JT_EquipmentAsset>().Where(x => x.ItemCode == detail.ItemCode).FirstOrDefault();
                            var            ciItem         = _database.Table <CI_Item>().Where(x => x.ItemCode == detail.ItemCode).FirstOrDefault();
                            App_RepairPart newRepairPart  = new App_RepairPart(ciItem, workTicket);
                            newRepairPart.PartItemCode = (servicePart != null) ? servicePart.PartItemCode : detail.ItemCode;
                            newRepairPart.ProblemCode  = (servicePart != null) ? servicePart.ProblemCode : "";

                            // dch rkl 11/30/2016 carry the SO Detail CommentText, Unit Price, Unit Cost, Quantity Required to the JT Transaction Import Detail part
                            if (detail.CommentText != null)
                            {
                                newRepairPart.Comment = detail.CommentText;
                            }
                            newRepairPart.UnitPrice    = (double)detail.UnitPrice;
                            newRepairPart.UnitCost     = (double)detail.UnitCost;
                            newRepairPart.QuantityReqd = detail.QuantityOrdered;
                            newRepairPart.Quantity     = servicePart.Quantity;

                            // dch rkl 01/20/2017 If Warehouse on Sales Order, use that
                            if (detail.WarehouseCode != null)
                            {
                                newRepairPart.Warehouse = detail.WarehouseCode;
                            }
                            else
                            {
                                if (ciItem != null)
                                {
                                    newRepairPart.Warehouse = ciItem.DefaultWarehouseCode;
                                }
                                else
                                {
                                    //bk assuming that this is an expense or the like
                                    newRepairPart.Warehouse = "";
                                }
                            }

                            // dch rkl 01/13/2017 Part Description should come from sales order
                            if (detail.ItemCodeDesc != null)
                            {
                                newRepairPart.PartItemCodeDescription = detail.ItemCodeDesc;
                            }

                            // dch rkl 12/05/2016
                            newRepairPart.QuantityShipped = (double)detail.QuantityShipped;

                            // dch rkl 11/23/2016 Use Unit of Measure from SO_SalesOrderDetail
                            newRepairPart.UnitOfMeasure = (detail.UnitOfMeasure != null) ? detail.UnitOfMeasure : "";

                            // dch rkl 01/23/2017 Capture SO Line Key
                            newRepairPart.SoLineKey = detail.LineKey;

                            JT_TransactionImportDetail newdetail = SaveRepairPart(newRepairPart, workTicket, new App_Technician(GetCurrentTechnicianFromDb()));
                            newRepairPart.ID = newdetail.ID;

                            partsList.Add(newRepairPart);
                        }
                    }
                }
            }

            // now let's cull removed parts from our list
            // dch rkl 12/05/2016 allow for cases where the same part number exists on multiple lines
            foreach (var part in partsList.ToList())
            {
                var importDetail =
                    _database.Table <JT_TransactionImportDetail>().Where(
                        tid => (tid.SalesOrderNo == workTicket.SalesOrderNo) &&
                        (tid.RecordType == "P") &&
                        (tid.WTNumber == workTicket.WTNumber) &&
                        (tid.WTStep == workTicket.WTStep) &&
                        (tid.ItemCode == part.PartItemCode) &&
                        (tid.QuantityUsed == part.Quantity) &&                  // dch rkl 12/05/2016 match on qty
                        (tid.WarehouseCode == part.Warehouse) &&                // dch rkl 12/05/2016 match on whse
                        (tid.LotSerialNo == part.LotSerialNo) &&                // dch rkl 12/05/2016 match on lot/serial
                        (tid.UnitPrice == part.UnitPrice) &&                    // dch rkl 12/05/2016 match on price
                        (tid.UnitOfMeasure == part.UnitOfMeasure) &&            // dch rkl 12/05/2016 match on UM
                        (tid.RemovePart == "Y")).FirstOrDefault();
                if (importDetail != null)
                {
                    partsList.Remove(part);
                }
            }

            return(partsList);
        }
Esempio n. 15
0
        protected Rkl.Erp.Sage.Sage100.TableObjects.API_Results InsertTransactionImportDetailToSData(JT_TransactionImportDetail importDetail)
        {
            // dch rkl 12/09/2016 Insert now returns object result
            //bool result = _sDataClient.InsertRecord(importDetail);
            return(_sDataClient.InsertRecord(importDetail));

            //return result;
        }
Esempio n. 16
0
 //public bool InsertJT_TransactionImportDetail([FromBody]JT_TransactionImportDetail importDetail)
 public API_Results InsertJT_TransactionImportDetail([FromBody] JT_TransactionImportDetail importDetail)
 {
     return(tdws.InsertJT_TransactionImportDetail(importDetail));
 }
Esempio n. 17
0
        protected async Task <Rkl.Erp.Sage.Sage100.TableObjects.API_Results> InsertErpTransactionImportDetail(JT_TransactionImportDetail importDetail)
        {
            // dch rkl 12/09/2016 Insert now returns object result
            //bool result = false;
            Rkl.Erp.Sage.Sage100.TableObjects.API_Results result = new Rkl.Erp.Sage.Sage100.TableObjects.API_Results();

            switch (_dataConnectionType)
            {
            case ConnectionType.Rest:
                // dch rkl 12/09/2016 Insert now returns object result
                //result = await InsertTransactionImportDetailToRestService(importDetail);
                result.Success = await InsertTransactionImportDetailToRestService(importDetail);

                break;

            case ConnectionType.SData:
                // dch rkl 12/09/2016 Insert now returns object result
                result = InsertTransactionImportDetailToSData(importDetail);
                break;

            default:
                break;
            }

            return(result);
        }
Esempio n. 18
0
        // dch rkl 12/09/2016 This now returns an object
        //public bool InsertTransactionImportDetailRecordSync(JT_TransactionImportDetail importDetail)
        public Rkl.Erp.Sage.Sage100.TableObjects.API_Results InsertTransactionImportDetailRecordSync(JT_TransactionImportDetail importDetail)
        {
            // dch rkl 12/09/2016 This now returns an object
            //bool returnData = false;
            Rkl.Erp.Sage.Sage100.TableObjects.API_Results returnData = new Rkl.Erp.Sage.Sage100.TableObjects.API_Results();

            App_Settings appSettings = App.Database.GetApplicationSettings();

            // set up the proper URL
            string url = GetRestServiceUrl();

            if (!url.EndsWith(@"/"))
            {
                url += @"/";
            }
            url += @"i/JT_TransactionImportDetail";

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            JsonSerializerSettings microsoftDateFormatSettings = new JsonSerializerSettings();

            microsoftDateFormatSettings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
            if (appSettings.DeviceID != null)
            {
                SimpleAES encryptText = new SimpleAES("V&WWJ3d39brdR5yUh5(JQGHbi:FB@$^@", "W4aRWS!D$kgD8Xz@");
                string    authid      = encryptText.EncryptToString(appSettings.DeviceID);
                string    datetimever = encryptText.EncryptToString(DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"));
                client.DefaultRequestHeaders.Add("x-tdws-authid", authid);
                client.DefaultRequestHeaders.Add("x-tdws-auth", datetimever);
            }

            // Make the call and get a valid response
            HttpResponseMessage response
                = client.PostAsync(client.BaseAddress, new StringContent(JsonConvert.SerializeObject(importDetail, microsoftDateFormatSettings), null, "application/json")).Result; // TODO.... await

            response.EnsureSuccessStatusCode();

            // Read out the result... it better be JSON!
            string JsonResult = response.Content.ReadAsStringAsync().Result;

            try
            {
                // dch rkl 12/09/2016 This now returns an object
                //returnData = JsonConvert.DeserializeObject<bool>(JsonResult);
                returnData = JsonConvert.DeserializeObject <Rkl.Erp.Sage.Sage100.TableObjects.API_Results>(JsonResult);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);

                // dch rkl 12/07/2016 Log Error
                ErrorReporting errorReporting = new ErrorReporting();
                errorReporting.sendException(ex, "TechDashboard.Data.RestClient");
            }

            client.Dispose();
            response.Dispose();

            return(returnData);
        }
Esempio n. 19
0
        /// <summary>
        /// Sets the given technician as being clocked-out of a ticket represented by the
        /// specified work ticket object.  The time and status codes provided
        /// will also be used to update the technician data.
        /// dch rkl 01/23/2017 This version of ClockOut includes parameters for when the hours are entered, not the start/stop date and time.
        /// </summary>
        /// <param name="technician">Technician to clock out</param>
        /// <param name="workTicket">Work ticket clocking out of</param>
        /// <param name="stopDateTime">Stop date/time</param>
        /// <param name="technicianStatus">Technician status object for the new, clocked-out status</param>
        /// <param name="serviceTicketStatusCode">Work ticket status for the new, clocked-out status</param>
        /// <param name="activityCode">Activity code to report</param>
        /// <param name="deptWorked">Department in which work was performed</param>
        /// <param name="earningsCode">Earnings code to report</param>
        /// <param name="meterReading">Meter reading (if any) to report</param>
        /// <param name="workPerformedText">Text/notes</param>
        public void ClockOut(App_Technician technician, App_WorkTicket workTicket,
                             JT_TechnicianStatus technicianStatus, JT_MiscellaneousCodes serviceTicketStatusCode,
                             string activityCode, string deptWorked, JT_EarningsCode earningsCode, double hoursBilled, double meterReading,
                             string workPerformedText, double hoursWorked, string svcAgmtContractCode, string billingType)
        {
            int rows = 0;

            lock (_locker)
            {
                // Clear out fields for JT_Technician record
                JT_Technician erpTech = GetTechnician(technician.TechnicianDeptNo, technician.TechnicianNo);

                // update time entry first
                DateTime          dtStartTime      = DateTime.Now;
                JT_DailyTimeEntry currentTimeEntry = GetClockedInTimeEntry(technician);
                if (currentTimeEntry != null)
                {
                    if (DateTime.TryParse(currentTimeEntry.StartTime, out dtStartTime))
                    {
                        DateTime dtStopTime = dtStartTime.AddHours(hoursWorked);
                        currentTimeEntry.EndTime = dtStopTime.ToSage100TimeString();
                        _database.Update(currentTimeEntry);
                    }
                }

                erpTech.CurrentStartDate    = new DateTime();
                erpTech.CurrentStartTime    = null;
                erpTech.CurrentSalesOrderNo = null;
                erpTech.CurrentWTNumber     = null;
                erpTech.CurrentWTStep       = null;
                erpTech.CurrentStatus       = technicianStatus.StatusCode;      // dch rkl 11/03/2016 Save Current Status code to JT_Technician table
                rows = _database.Update(erpTech);

                // insert the JT_TransactionImportDetail record
                JT_TransactionImportDetail importDetail = new JT_TransactionImportDetail();
                importDetail.RecordType   = "S";
                importDetail.SalesOrderNo = workTicket.SalesOrderNo;
                importDetail.WTNumber     = workTicket.WTNumber;
                importDetail.WTStep       = workTicket.WTStep;
                importDetail.StatusCode   = serviceTicketStatusCode.MiscellaneousCode;

                importDetail.TransactionDate           = dtStartTime.ToSage100DateString();
                importDetail.TransactionDateAsDateTime = dtStartTime;
                importDetail.HoursWorked = hoursWorked;
                rows = _database.Insert(importDetail);

                // insert another JT_TransactionImportDetail record to record the labor
                importDetail                           = new JT_TransactionImportDetail();
                importDetail.RecordType                = "L";
                importDetail.SalesOrderNo              = workTicket.SalesOrderNo;
                importDetail.WTNumber                  = workTicket.WTNumber;
                importDetail.WTStep                    = workTicket.WTStep;
                importDetail.EmployeeDeptNo            = technician.TechnicianDeptNo;
                importDetail.EmployeeNo                = technician.TechnicianNo;
                importDetail.ActivityCode              = activityCode;
                importDetail.DeptWorkedIn              = deptWorked;
                importDetail.EarningsCode              = earningsCode.EarningsCode;
                importDetail.TransactionDate           = dtStartTime.ToSage100DateString();
                importDetail.TransactionDateAsDateTime = dtStartTime;
                importDetail.HoursWorked               = hoursWorked;
                //bk add hours billed
                importDetail.BillableHours       = hoursBilled;
                importDetail.BillingType         = billingType;
                importDetail.MeterReading        = meterReading;
                importDetail.WorkPerformed       = workPerformedText;
                importDetail.SvcAgmtContractCode = svcAgmtContractCode;             // dch rkl 01/23/2017 Include Service Agreement Code
                rows = _database.Insert(importDetail);
            }
        }
Esempio n. 20
0
        /// <summary>
        /// Sets the given technician as being clocked-out of a ticket represented by the
        /// specified work ticket object.  The time and status codes provided
        /// will also be used to update the technician data.
        /// </summary>
        /// <param name="technician">Technician to clock out</param>
        /// <param name="workTicket">Work ticket clocking out of</param>
        /// <param name="stopDateTime">Stop date/time</param>
        /// <param name="technicianStatus">Technician status object for the new, clocked-out status</param>
        /// <param name="serviceTicketStatusCode">Work ticket status for the new, clocked-out status</param>
        /// <param name="activityCode">Activity code to report</param>
        /// <param name="deptWorked">Department in which work was performed</param>
        /// <param name="earningsCode">Earnings code to report</param>
        /// <param name="meterReading">Meter reading (if any) to report</param>
        /// <param name="workPerformedText">Text/notes</param>
        public void ClockOut(App_Technician technician, App_WorkTicket workTicket,
                             DateTime stopDateTime, JT_TechnicianStatus technicianStatus, JT_MiscellaneousCodes serviceTicketStatusCode,
                             string activityCode, string deptWorked, JT_EarningsCode earningsCode, double hoursBilled, double hoursWorked, double meterReading,
                             string workPerformedText, string svcAgmtContractCode, string clockoutDate, string billingType)
        {
            int      rows = 0;
            DateTime startDateTime;

            lock (_locker)
            {
                // Clear out fields for JT_Technician record
                JT_Technician erpTech = GetTechnician(technician.TechnicianDeptNo, technician.TechnicianNo);

                // Record starting date/time in local variable
                startDateTime = erpTech.CurrentStartDate; // Add time
                startDateTime = startDateTime.Add(erpTech.CurrentStartTime.ToSage100TimeSpan());

                if (hoursBilled <= 0)
                {
                    hoursBilled = (stopDateTime - startDateTime).TotalHours;
                }

                // update time entry first
                JT_DailyTimeEntry currentTimeEntry = GetClockedInTimeEntry(technician);
                if (currentTimeEntry != null)
                {
                    currentTimeEntry.EndTime = stopDateTime.ToSage100TimeString();
                    _database.Update(currentTimeEntry);
                }

                erpTech.CurrentStartDate    = new DateTime();
                erpTech.CurrentStartTime    = null;
                erpTech.CurrentSalesOrderNo = null;
                erpTech.CurrentWTNumber     = null;
                erpTech.CurrentWTStep       = null;
                erpTech.CurrentStatus       = technicianStatus.StatusCode;      // dch rkl 11/03/2016 Save Current Status code to JT_Technician table
                rows = _database.Update(erpTech);

                rows = _database.Update(erpTech);


                // insert the JT_TransactionImportDetail record
                JT_TransactionImportDetail importDetail = new JT_TransactionImportDetail();
                importDetail.RecordType   = "S";
                importDetail.SalesOrderNo = workTicket.SalesOrderNo;
                importDetail.WTNumber     = workTicket.WTNumber;
                importDetail.WTStep       = workTicket.WTStep;
                importDetail.StatusCode   = serviceTicketStatusCode.MiscellaneousCode;
                //importDetail.statusDate TODO>>> not in table spec!

                // dch rkl 12/09/2016 per Chris, store start time in start time
                //importDetail.StatusTime = stopDateTime.ToSage100TimeString();
                importDetail.StartTime = stopDateTime.ToSage100TimeString();

                importDetail.TransactionDate           = stopDateTime.ToSage100DateString();
                importDetail.TransactionDateAsDateTime = stopDateTime;
                //importDetail.StatusComment = "TODO"; // not used at this time but might be in the future
                rows = _database.Insert(importDetail);

                // insert another JT_TransactionImportDetail record to record the labor
                importDetail                     = new JT_TransactionImportDetail();
                importDetail.RecordType          = "L";
                importDetail.SalesOrderNo        = workTicket.SalesOrderNo;
                importDetail.WTNumber            = workTicket.WTNumber;
                importDetail.WTStep              = workTicket.WTStep;
                importDetail.EmployeeDeptNo      = technician.TechnicianDeptNo;
                importDetail.EmployeeNo          = technician.TechnicianNo;
                importDetail.ActivityCode        = activityCode;
                importDetail.DeptWorkedIn        = deptWorked;
                importDetail.EarningsCode        = earningsCode.EarningsCode;
                importDetail.SvcAgmtContractCode = svcAgmtContractCode;
                //importDetail.TransactionDate = stopDateTime.ToSage100DateString();

                // dch rkl 02/03/2017 Use Start Date as Tran Date
                DateTime dtTranDt;
                if (DateTime.TryParse(clockoutDate, out dtTranDt))
                {
                    importDetail.TransactionDate           = dtTranDt.ToSage100DateString();
                    importDetail.TransactionDateAsDateTime = dtTranDt;
                }
                else
                {
                    importDetail.TransactionDate           = startDateTime.ToSage100DateString();
                    importDetail.TransactionDateAsDateTime = startDateTime;
                }
                //importDetail.TransactionDate = startDateTime.ToSage100DateString();
                //importDetail.TransactionDateAsDateTime = startDateTime;
                importDetail.StartTime   = startDateTime.ToSage100TimeString();
                importDetail.EndTime     = stopDateTime.ToSage100TimeString();
                importDetail.HoursWorked = hoursWorked; // (stopDateTime - startDateTime).TotalHours;
                //bk adding hours billed and billing type
                importDetail.BillableHours       = hoursBilled;
                importDetail.BillingType         = billingType;
                importDetail.MeterReading        = meterReading;
                importDetail.WorkPerformed       = workPerformedText;
                importDetail.SvcAgmtContractCode = svcAgmtContractCode;             // dch rkl 01/23/2017 Include Service Agreement Code
                rows = _database.Insert(importDetail);
            }
        }
Esempio n. 21
0
 // dch rkl 12/09/2016 return API_Results, which includes success flag & error message(s)
 //public bool InsertJT_TransactionImportDetail(JT_TransactionImportDetail importDetail)
 public API_Results InsertJT_TransactionImportDetail(JT_TransactionImportDetail importDetail)
 {
     return(InsertRecord <JT_TransactionImportDetail>(importDetail));
 }
Esempio n. 22
0
        protected async Task <bool> InsertTransactionImportDetailToRestService(JT_TransactionImportDetail importDetail)
        {
            bool result = await _restClient.InsertTransactionImportDetailRecord(importDetail);

            return(result);
        }
Esempio n. 23
0
 public void DeleteExportRow(JT_TransactionImportDetail transaction)
 {
     _database.Delete <JT_TransactionImportDetail>(transaction.ID);
 }
 public bool InsertJT_TransactionImportDetail([FromBody] JT_TransactionImportDetail importDetail)
 {
     return(tdws.InsertJT_TransactionImportDetail(importDetail));
 }