public int saveWeeks(ServHuvCL sh, string RegBy, ref string ErrText) { string sSql = ""; int countRows = countTr2Weeks(sh.Vart_ordernr, ref ErrText); if (ErrText == "") { if (countRows == 0) { sSql = getWeekInsertSQL(); } else { sSql = getWeekUpdateSQL(); } NxParameterCollection np = new NxParameterCollection(); setWeekParameters(np, sh, RegBy, countRows == 0); ErrText = ""; int iRc = cdb.updateData(sSql, ref ErrText, np); } if (ErrText != "") { ErrText = "Error while creating date period " + ErrText; if (ErrText.Length > 2000) { ErrText = ErrText.Substring(1, 2000); } return(-100); } CTidRed ct = new CTidRed(); ct.createTr2Weeks(sh.Vart_ordernr, sh.FromDate, sh.ToDate, ref ErrText); if (ErrText != "") { ErrText = "Error while creating weeks for period " + ErrText; if (ErrText.Length > 2000) { ErrText = ErrText.Substring(1, 2000); } return(-100); } return(1); }
/// <summary> /// This function shall be called when a contact list for sending timereports is requierd /// It gives a list of earlier contacts and also if the current contact /// (email address) was selected for having a timeReport in history /// </summary> /// <param name="ident"></param> /// <param name="VartOrdernr"></param> /// <returns>List of KundEmailCL or error</returns> /// 2017-10-24 KJBO public List <KundEmailCL> getTimeRecordContactList(string ident, string VartOrdernr) { CTidRed ct = new CTidRed(); return(ct.getTimeRecordContactList(ident, VartOrdernr)); }
/// <summary> /// This method shall be called in order to display /// a list of weeks to be included int the report /// Note that there can be weeks that are approved /// and those weeks shall not be selectable (only displayed) /// /// </summary> /// <param name="ident">Needs no explanation</param> /// <param name="VartOrdernr">The current order</param> /// <returns>List of TimeRep2WeekCL</returns> // 2017-10-23 KJBO public List <TimeRep2WeekCL> getTimeRep2Weeks(string ident, string VartOrdernr) { CTidRed ct = new CTidRed(); return(ct.getTimeRep2Weeks(ident, VartOrdernr)); }
/// <summary> /// After calling generateTimeReg2Report() there is a possibility /// to check the status of the report generation process. /// Call this function and you get a status report back /// </summary> /// <param name="ident"></param> /// <param name="VartOrdernr"></param> /// <returns>Instance of TimeRep2ProcessCL</returns> /// 2017-03-21 KJBO public TimeRep2ProcessCL getTimeRep2ReportStatus(string ident, string VartOrdernr) { CTidRed ct = new CTidRed(); return(ct.getTimeRep2ReportStatus(ident, VartOrdernr)); }
/// <summary> /// Initiate creation of timeRep2Report /// parameter p must have at least a VartOrdernr and an email (for the returning mail) /// The return value is a filled instance of TimeRep2ProcessCL with init values. /// To check the status of the report generation, call getTimeRep2ReportStatus(string VartOrdernr) /// </summary> /// <param name="ident"></param> /// <param name="p"></param> /// <param name="bOverrideExisting"></param> /// <returns>A filled TimeRep2ProcessCL</returns> /// 2017-03-21 KJBO /// 2017-05-19 KJBO Added approve parameter /// 2017-09-10 KJBO Added detailed parameter /// 2017-09-20 KJBO Removed detailed parameter. Using p.ReportType to indicate detail level /// where 4 = standard report and 5 = detailed report /// 2017-10-24 KJBO Added timeRep2WeekIds which is a list of integer /// representing primary key of timeRep2Week. This is the weeks that shall be reported this time public TimeRep2ProcessCL generateTimeReg2Report(string ident, TimeRep2ProcessCL p, bool bOverrideExisting, bool approve, List <int> timeRep2WeekIds, List <KundEmailCL> kundEmails) { CTidRed ct = new CTidRed(); return(ct.generateTimeReg2Report(ident, p, bOverrideExisting, approve, timeRep2WeekIds, kundEmails)); }
/// <summary> /// Get all ServHuvRepTid for one order and /// one user ( = anv) /// </summary> /// <param name="ident"></param> /// <param name="vartOrdernr"></param> /// <param name="anvID"></param> /// <returns></returns> /// 2017-03-15 KJBO public List <ServHuvRepTidCL> getServHuvRepTidForShAnv(string ident, string vartOrdernr, string anvID) { CTidRed ct = new CTidRed(); return(ct.getServHuvRepTidForShAnv(ident, vartOrdernr, anvID)); }
/// <summary> /// Get all ServHuvRepTid for one order /// </summary> /// <param name="ident"></param> /// <param name="vartOrdernr"></param> /// <returns></returns> /// 2017-03-15 KJBO public List <ServHuvRepTidCL> getServHuvRepTidForSH(string ident, string vartOrdernr) { CTidRed ct = new CTidRed(); return(ct.getServHuvRepTidForSH(ident, vartOrdernr)); }
/// <summary> /// Returns a list of valid dates for /// registry of time for one ServiceRow /// </summary> /// <param name="ident"></param> /// <param name="SrAltKey">Alternate key</param> /// <returns>List of dates or an error message</returns> public List <OpenDateCL> getOpenDates(string ident, string SrAltKey) { CTidRed ct = new CTidRed(); return(ct.getOpenDates(ident, SrAltKey)); }
/// <summary> /// Validates one ServHuvRepTid /// If the ID is 0 the this method /// assumes that this is a new row /// Returns the validated and stored /// row with the new ID (if its a new row) /// If an error occurs then an error is returned /// in the ServHuvTidRep return row /// </summary> /// <param name="ident">Identity</param> /// <param name="sht">ServHuvRepTid</param> /// <returns></returns> /// 2017-03-15 KJBO public ServHuvRepTidCL saveServHuvRepTid(string ident, ServHuvRepTidCL sht) { CTidRed ct = new CTidRed(); return(ct.saveServHuvRepTid(ident, sht)); }
/// <summary> /// Get valid time types for one order /// </summary> /// <param name="ident"></param> /// <param name="vartOrdernr"></param> /// <returns>Valid time types</returns> // 2017-03-14 KJBO public List <TimeTypeCL> getTimeTypesForOrder(string ident, string vartOrdernr) { CTidRed cr = new CTidRed(); return(cr.getTimeTypesForOrder(ident, vartOrdernr)); }
/// <summary> /// Return a list of valid timeTypes /// The list varies depending on the hosKund and paVerkstad parameters /// Normaly you check the corresponding Servicerad and the hosKund and paVerkstad /// and send those variables to this function thus getting the right list. /// To override (and get alla timeTypes) you just set both parameters to true /// </summary> /// <param name="ident"></param> /// <param name="hosKund"></param> /// <param name="paVerkstad"></param> /// <param name="all"></param> /// <returns></returns> public List <TimeTypeCL> getTimeTypes(string ident, bool hosKund, bool paVerkstad) { CTidRed ct = new CTidRed(); return(ct.getTimeTypes(ident, hosKund, paVerkstad)); }
/// <summary> /// Returns all time registry for a given order /// </summary> /// <param name="ident">Identity</param> /// <param name="vartOrdernr">Order number</param> /// <returns>List of RepTidListCL</returns> public List <RepTidListCL> getAllTimeForOrder(string ident, string vartOrdernr) { CTidRed ct = new CTidRed(); return(ct.getAllTimeForOrder(ident, vartOrdernr)); }
/// <summary> /// Sum all registered hours for one servicerad /// </summary> /// <param name="ident">ident</param> /// <param name="srAltKey">alternate key for servicerad</param> /// <param name="AnvID">UserID or empty string for all users</param> /// <returns>Number of hours or -1 if error occurs</returns> /// 2016-06-17 KJBO public Decimal SumHoursForServRad(string ident, string srAltKey, string AnvID) { CTidRed ct = new CTidRed(); return(ct.SumHoursForServRad(ident, srAltKey, AnvID)); }
/// <summary> /// Returns all registered time(all rows) /// for a specific service row (identified by srAltKey) /// </summary> /// <param name="ident"></param> /// <param name="srAltKey"></param> /// <returns></returns> // 2016-11-18 Pergas AB KJBO public List <ServRadRepTidCL> getServRadRepTidForSR(string ident, string srAltKey) { CTidRed ct = new CTidRed(); return(ct.getServRadRepTidForSR(ident, srAltKey)); }
/// <summary> /// Returns a list of valid dates for /// registry of time for one ServiceOrder /// </summary> /// <param name="ident"></param> /// <param name="vartOrdernr"></param> /// <returns></returns> /// 2017-03-15 KJBO public List <OpenDateCL> getOpenDatesSH(string ident, string vartOrdernr) { CTidRed ct = new CTidRed(); return(ct.getOpenDatesSH(ident, vartOrdernr)); }
/// <summary> /// Get one row of ServHuvRepTid identified by PK /// </summary> /// <param name="ident"></param> /// <param name="ID"></param> /// <returns></returns> /// 2017-03-15 KJBO public ServHuvRepTidCL getServHuvRepTid(string ident, int ID) { CTidRed ct = new CTidRed(); return(ct.getServHuvRepTid(ident, ID)); }
/// <summary> /// Validate, insert or update one servicehuvud /// </summary> /// <param name="sh"></param> /// <param name="ident"></param> /// <returns>Newly created servicehuvud</returns> // 2018-01-29 KJBO public ServHuvCL saveServHuv(ServHuvCL sh, string ident) { log.log("saveServHuv startas", "0"); ServHuvCL shc = new ServHuvCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { shc.ErrCode = -10; shc.ErrMessage = "Ogiltigt login"; return(shc); } log.log("Efter koll av identitet", "0"); ReparatorCL repIdent = cr.getReparator(ident); if (sh.OrderAdmin.Length == 0) { shc.ErrCode = -6; shc.ErrMessage = "Orderadministratör måste väljas"; log.log("Orderadministratör måste väljas", "0"); return(shc); } ReparatorCL rep = cr.getReparatorFromID(sh.OrderAdmin); if (rep == null) { shc.ErrCode = -2; shc.ErrMessage = "Felaktig orderadmin"; log.log("Felaktig admin", "0"); return(shc); } if (sh.Vart_ordernr.Length == 0) { shc.ErrCode = -3; shc.ErrMessage = "Vårt ordernummer måste anges"; return(shc); } if (sh.Ert_ordernr.Length == 0) { shc.ErrCode = -4; shc.ErrMessage = "Ert ordernummer måste anges"; return(shc); } if (sh.Kund == "") { shc.ErrCode = -5; shc.ErrMessage = "Kund måste väljas"; return(shc); } string ErrTxt = ""; int rc = validateServHuv(sh, ref ErrTxt); log.log("ValidateServHuv returnerar : " + rc.ToString(), ""); if (ErrTxt != "") { shc.ErrCode = -101; shc.ErrMessage = ErrTxt; log.log("Feltext från validateServHuv " + ErrTxt, "0"); return(shc); } if (rc == -1) { shc.ErrCode = -7; shc.ErrMessage = "Vårt ordernummer används redan i systemet"; return(shc); } if (sh.FromDate > sh.ToDate) { shc.ErrCode = -8; shc.ErrMessage = "Felaktigt datumintervall"; return(shc); } CExportToPyramid expPyr = new CExportToPyramid(); if (CConfig.sendToPyramid == 1) { shc.ErrMessage = expPyr.checkPyramidAPIAvailable(); if (shc.ErrMessage != "") { shc.ErrCode = -1305; if (shc.ErrMessage.Length > 2000) { shc.ErrMessage = shc.ErrMessage.Substring(1, 2000); } return(shc); } } string sSql = ""; if (sh.IsNew) { sSql = getInsertSQL(); } else { sSql = getUpdateSQL(); } NxParameterCollection np = new NxParameterCollection(); setParameters(np, sh, repIdent.AnvID); log.log("Efter set parameters ", "0"); string errText = ""; int iRc = cdb.updateData(sSql, ref errText, np); log.log("Feltext från updateData " + errText, "0"); if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } shc.ErrCode = -100; shc.ErrMessage = errText; return(shc); } iRc = saveWeeks(sh, repIdent.AnvID, ref errText); log.log("SaveWeeks returnerar " + iRc.ToString(), "0"); if (iRc != 1) { shc.ErrCode = -100; shc.ErrMessage = errText; return(shc); } string godkand = "N"; if (sh.Godkand) { godkand = "J"; } log.log("Godkänd är " + godkand, "0"); if (sh.Godkand) { CTidRed ctr = new CTidRed(); ctr.closeAllWeeksForOrder(sh.Vart_ordernr); } log.log("Före sendToPyramid", "0"); log.log("sentToPyramid returnerar " + CConfig.sendToPyramid.ToString(), "0"); if (CConfig.sendToPyramid == 1 && shallSendToPyramid(sh.Vart_ordernr)) { ErrorCL errCl = null; log.log("Före exportToPyramid", "0"); errCl = expPyr.exportOrder(sh); log.log("Efter exportToPyramid", "0"); if (errCl.ErrCode != 0) { shc.ErrCode = errCl.ErrCode; shc.ErrMessage = errCl.ErrMessage; return(shc); } // 2018-05-17 if (sh.Godkand && isPyramidOrder(sh.Vart_ordernr)) { // 2018-11-09 // To be sure that all possible errors when creating reservation to Pyramid // is handled and resent if possible errCl = expPyr.ensureOrderArtIsReserved(sh.Vart_ordernr); if (errCl.ErrCode != 0) { shc.ErrCode = errCl.ErrCode; shc.ErrMessage = errCl.ErrMessage; return(shc); } errCl = expPyr.exportTime(sh.Vart_ordernr); if (errCl.ErrCode != 0) { shc.ErrCode = errCl.ErrCode; shc.ErrMessage = errCl.ErrMessage; return(shc); } errCl = expPyr.exportReservdel(sh.Vart_ordernr); if (errCl.ErrCode != 0) { shc.ErrCode = errCl.ErrCode; shc.ErrMessage = errCl.ErrMessage; return(shc); } errCl = expPyr.exportReservdelKat1(sh.Vart_ordernr); if (errCl.ErrCode != 0) { shc.ErrCode = errCl.ErrCode; shc.ErrMessage = errCl.ErrMessage; return(shc); } } expPyr.setOrderStatus(sh.Vart_ordernr); int newStatus = sh.Godkand ? 1 : 0; expPyr.addToPyramidChange(sh.Vart_ordernr, repIdent.AnvID, newStatus); resendToPyramid(); } if (sh.IsNew) { CServRad csr = new CServRad(); string err = csr.createFirstRow(sh.Vart_ordernr, sh.Kund); if (err != "") { shc.ErrCode = -1201; shc.ErrMessage = err; return(shc); } } ServHuvCL shRet = getServiceHuvud(sh, ident); log.log("getServiceHuvud har meddelande " + shRet.ErrMessage, "0"); return(shRet); }
/// <summary> /// Toggle the approve flag for one report week /// </summary> /// <param name="id"></param> /// <param name="approve"></param> /// <param name="ident"></param> /// <returns></returns> public ErrorCL toggleApprove(int id, Boolean approve, string ident) { CTidRed crt = new CTidRed(); return(crt.toggleApprove(id, approve, ident)); }