/// <summary> /// Updates the AllRep flag on an order /// (This flag indicates that all reparators /// can log in. The normal process is that /// there is a list (in the shReparator table) with /// the reparators that can log in on a certain order). /// </summary> /// <param name="VartOrdernr"></param> /// <param name="allRep"></param> /// <param name="ident"></param> /// <returns></returns> /// 2018-02-08 KJBO public ServHuvCL updateAllRep(string VartOrdernr, bool allRep, string ident) { ServHuvCL shc = new ServHuvCL(); CReparator cr = new CReparator(); ReparatorCL repIdent = cr.getReparator(ident); string sSql = " update servicehuvud " + " set AllRep = :AllRep " + " where vart_ordernr = :vart_ordernr "; NxParameterCollection np = new NxParameterCollection(); np.Add("AllRep", allRep); np.Add("vart_ordernr", VartOrdernr); string errText = ""; int iRc = cdb.updateData(sSql, ref errText, np); if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } shc.ErrCode = -100; shc.ErrMessage = errText; return(shc); } shc.Vart_ordernr = VartOrdernr; return(getServiceHuvud(shc, ident)); }
/// <summary> /// Get a reparator class from anvID /// </summary> /// <param name="AnvID">ID=PK</param> /// <returns>One reparator</returns> /// public ReparatorCL getReparatorFromID(string anvID) { NxParameterCollection pc = new NxParameterCollection(); pc.Add("pAnvID", anvID); string sSql = "SELECT r.reparator, r.rep_kat_id, r.AnvID " + " FROM reparator r" + " where r.AnvID = :pAnvID " + " and r.visas = true "; string errTxt = ""; DataTable dt = cdb.getData(sSql, ref errTxt, pc); if (errTxt != "") { ReparatorCL r = new ReparatorCL(); r.Reparator = ""; r.AnvID = ""; r.RepKatID = ""; r.ErrCode = -1; r.ErrMessage = "Databasfel : " + errTxt; return(r); } if (dt.Rows.Count == 1) { ReparatorCL r = new ReparatorCL(); r.Reparator = dt.Rows[0]["reparator"].ToString(); r.AnvID = dt.Rows[0]["AnvID"].ToString(); r.RepKatID = dt.Rows[0]["rep_kat_id"].ToString(); return(r); } return(null); }
private NxParameterCollection setParameters(gReuseMatCL mat, ReparatorCL rep) { NxParameterCollection pc = new NxParameterCollection(); pc.Add("reuseMatId", mat.reuseMatId); pc.Add("minDiam", mat.minDiam); pc.Add("reusePercentage", mat.reusePercentage); pc.Add("reg", rep.AnvID); pc.Add("regdate", DateTime.Now); return(pc); }
private void setMatrParameters(NxParameterCollection pc, gMaterialCL mat, ReparatorCL rep) { DateTime now = DateTime.Now; pc.Add("materialId", mat.materialId); pc.Add("material", mat.material); pc.Add("materialShort", mat.materialShort); pc.Add("reg", rep.AnvID); pc.Add("updat", rep.AnvID); pc.Add("regdate", now); pc.Add("updatDat", now); return; }
/// <summary> /// Get a reparator class from ID /// </summary> /// <param name="AnvID">ID=PK</param> /// <returns>One reparator</returns> /// public ReparatorCL getReparator(string ident) { int identOK = checkIdent(ident); if (identOK == -1) { ReparatorCL r = new ReparatorCL(); r.Reparator = ""; r.AnvID = ""; r.RepKatID = ""; r.ErrCode = -10; r.ErrMessage = "Ogiltigt login"; return(r); } NxParameterCollection pc = new NxParameterCollection(); pc.Add("pIdent", ident); string sSql = "SELECT r.reparator, r.rep_kat_id, r.AnvID " + " FROM reparator r" + " join authenticate a on r.AnvID = a.anvID" + " where a.Ident = :pIdent " + " and r.visas = true "; string errTxt = ""; DataTable dt = cdb.getData(sSql, ref errTxt, pc); if (errTxt != "") { ReparatorCL r = new ReparatorCL(); r.Reparator = ""; r.AnvID = ""; r.RepKatID = ""; r.ErrCode = -1; r.ErrMessage = "Databasfel : " + errTxt; return(r); } if (dt.Rows.Count == 1) { ReparatorCL r = new ReparatorCL(); r.Reparator = dt.Rows[0]["reparator"].ToString(); r.AnvID = dt.Rows[0]["AnvID"].ToString(); r.RepKatID = dt.Rows[0]["rep_kat_id"].ToString(); return(r); } return(null); }
private void setParameters(NxParameterCollection np, gWorkingCostCL wc, ReparatorCL rep) { DateTime now = DateTime.Now; np.Add("workingCostId", wc.workingCostId); np.Add("cuttingHourNet", wc.cuttingHourNet); np.Add("cuttingHourSales", wc.cuttingHourSales); np.Add("handlingHourNet", wc.handlingHourNet); np.Add("handlingHourSales", wc.handlingHourSales); np.Add("cuttingMargin", wc.cuttingMargin); np.Add("reg", rep.AnvID); np.Add("regdate", now); np.Add("updat", rep.AnvID); np.Add("updatDat", now); }
private void setParameters(NxParameterCollection np, gMaterialThicknCL mt, ReparatorCL rep) { DateTime now = DateTime.Now; np.Add("materialThicknId", mt.materialThicknId); np.Add("materialSizeId", mt.materialSizeId); np.Add("description", mt.description); np.Add("thicknShort", mt.thicknShort); np.Add("thickness", mt.thickness); np.Add("buyPrice", mt.buyPrice); np.Add("sellPrice", mt.sellPrice); np.Add("cuttingTime", mt.cuttingTime); np.Add("reg", rep.AnvID); np.Add("regdate", now); np.Add("updat", rep.AnvID); np.Add("updatDat", now); }
private void setParameters(NxParameterCollection pc, gMaterialSizeCL mat, ReparatorCL rep) { DateTime now = DateTime.Now; pc.Add("materialSizeId", mat.materialSizeId); pc.Add("materialId", mat.materialId); pc.Add("description", mat.description); pc.Add("sizeShort", mat.sizeShort); pc.Add("materialLength", mat.materialLength); pc.Add("materialWidth", mat.materialWidth); pc.Add("defaultVal", mat.defaultVal); pc.Add("reg", rep.AnvID); pc.Add("regdate", now); pc.Add("updat", rep.AnvID); pc.Add("updatDat", now); return; }
/// <summary> /// Save access level for gasket handling /// </summary> /// <param name="ident"></param> /// <param name="reparator"></param> /// <returns></returns> /// 2018-08-21 KJBO public ReparatorCL saveGasketLevel(string ident, ReparatorCL reparator) { ReparatorCL rep = new ReparatorCL(); int identOK = checkIdent(ident); if (identOK == -1) { rep.ErrCode = -10; rep.ErrMessage = "Ogiltigt login"; return(rep); } if (reparator.AnvID == "") { rep.ErrCode = -1; rep.ErrMessage = "Reparatör måste väljas"; return(rep); } string sSql = " update reparator " + " set gasketLevel = :gasketLevel " + " where AnvID = :AnvID "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("AnvID", reparator.AnvID); pc.Add("gasketLevel", reparator.gasketLevel); string errSt = ""; int rc = cdb.updateData(sSql, ref errSt, pc); if (errSt != "") { if (errSt.Length > 2000) { errSt = errSt.Substring(1, 2000); } rep.ErrCode = -10; rep.ErrMessage = errSt; return(rep); } return(getReparators(ident, reparator.AnvID)[0]); }
private void setParameters(NxParameterCollection np, gGasketCL g, ReparatorCL rep) { DateTime now = DateTime.Now; np.Add("gasketId", g.gasketId); np.Add("gasketTypeId", g.gasketTypeId); np.Add("materialThicknId", g.materialThicknId); np.Add("outerDiam", g.outerDiam); np.Add("innerDiam", g.innerDiam); np.Add("reusableMaterial", g.reusableMaterial); np.Add("cuttingMargin", g.cuttingMargin); np.Add("standardPriceProduct", g.standardPriceProduct); np.Add("handlingTime", g.handlingTime); np.Add("Type2SecHoleCount", g.Type2SecHoleCount); np.Add("Type2SecHoleDiam", g.Type2SecHoleDiam); np.Add("price", g.price); np.Add("note", g.note); np.Add("description", g.description); np.Add("reg", rep.AnvID); np.Add("regdate", now); }
/// <summary> /// Saves a reservdel to database. /// If ReservNr = 0 then the method /// assumes that this is a new row to be added /// Otherwise an update is issued /// </summary> /// <param name="ident">Identity</param> /// <param name="reservdel">ReservdelCL</param> /// <returns>The new created or updated reservdel</returns> // 2016-02-10 KJBO public ReservdelCL saveReservdel(string ident, ReservdelCL reservdel) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); ReservdelCL retRes = new ReservdelCL(); if (identOK == -1) { retRes.ErrCode = -10; retRes.ErrMessage = "Ogiltigt login"; return(retRes); } // Validate that order is open for editing CServiceHuvud ch = new CServiceHuvud(); string sOpen = ch.isOpen(ident, reservdel.VartOrdernr); if (sOpen != "1") { { retRes.ErrCode = -10; if (sOpen == "-1") { retRes.ErrMessage = "Order är stängd för inmatning"; } else { retRes.ErrMessage = sOpen; } return(retRes); } } int valid = validateReservdel(reservdel); if (valid == -1) { retRes.ErrCode = -1; retRes.ErrMessage = "Felaktig serviceorder"; return(retRes); } if (valid == -10) { retRes.ErrCode = -1; retRes.ErrMessage = "Fel vid kontroll av reservdel"; return(retRes); } if (valid == -2) { retRes.ErrCode = -1; retRes.ErrMessage = "Reservdel finns inte"; return(retRes); } if (valid == -3) { retRes.ErrCode = -1; retRes.ErrMessage = "Egen reservdel måste ha en benämning"; return(retRes); } if (valid == -4) { retRes.ErrCode = -1; retRes.ErrMessage = "Det finns ingen reservdel på ordernr : " + reservdel.VartOrdernr + "rad : " + reservdel.Radnr.ToString() + " reservdelsrad : " + reservdel.ReservNr.ToString(); return(retRes); } string sSql = ""; string errText = ""; int errCode = 0; // This is a new reservdel if (reservdel.ReservNr == 0) { reservdel.ReservNr = getNextReservNr(reservdel); sSql = getInsertSQL(); } else { sSql = getUpdateSQL(); } AddOrDeleteReservdelPyr(reservdel, true, ref errText); ReparatorCL rep = cr.getReparator(ident); NxParameterCollection np = new NxParameterCollection(); setParameters(np, reservdel, rep.AnvID); int iRc = cdb.updateData(sSql, ref errText, np); if (errText == "") { AddOrDeleteReservdelPyr(reservdel, false, ref errText); if (errText != "") { errText = "Fel vid anrop till addToReservdelPyr. Felmeddelande : " + errText; errCode = -1303; } } if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } if (errCode == 0) { retRes.ErrCode = -100; } else { retRes.ErrCode = errCode; } retRes.ErrMessage = errText; return(retRes); } // 2018-05-17 KJBO Check if this is a pyramidOrder CMServHuv shuv = new CMServHuv(); if (shuv.isPyramidOrder(reservdel.VartOrdernr)) { ErrorCL errCl = checkOutIfNeeded(ident, reservdel); if (errCl.ErrMessage != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } retRes.ErrCode = errCl.ErrCode; retRes.ErrMessage = errCl.ErrMessage; return(retRes); } CompactStore.CCompactStore store = new CompactStore.CCompactStore(); errCl = store.genCompStoreData(ident, reservdel.VartOrdernr); if (errCl.ErrMessage != "" && errCl.ErrCode != 1) { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } retRes.ErrCode = errCl.ErrCode; retRes.ErrMessage = errCl.ErrMessage; return(retRes); } } return(getReservdel(ident, reservdel.VartOrdernr, reservdel.Radnr, reservdel.ReservNr)); }
/// <summary> /// Saves reusable material /// Returns the new created or changed material object /// If an error occurs than that error will be returned /// </summary> /// <param name="ident"></param> /// <param name="reuseMat"></param> /// <returns></returns> /// 2018-08-31 KJBO public gReuseMatCL saveReuseMaterial(string ident, gReuseMatCL reuseMat) { gReuseMatCL reuseMatRet = new gReuseMatCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { reuseMatRet.ErrCode = -10; reuseMatRet.ErrMessage = "Ogiltigt login"; return(reuseMatRet); } if (reuseMat.minDiam <= 0 || reuseMat.minDiam > 1500) { reuseMatRet.ErrCode = -1; reuseMatRet.ErrMessage = "Minsta diameter måste vara större än 0 och mindre än 1500 mm."; return(reuseMatRet); } if (reuseMat.reusePercentage < 0 || reuseMat.reusePercentage >= 100) { reuseMatRet.ErrCode = -1; reuseMatRet.ErrMessage = "Återanvändbar procent måste vara större än 0 och mindre än 100"; return(reuseMatRet); } string sSql = ""; if (reuseMat.reuseMatId == 0) { sSql = getInsertSQL(); } else { sSql = getUpdateSQL(); } ReparatorCL rep = cr.getReparator(ident); NxParameterCollection pc = setParameters(reuseMat, rep); string errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, pc); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } reuseMatRet.ErrCode = -100; reuseMatRet.ErrMessage = errTxt; return(reuseMatRet); } if (reuseMat.reuseMatId == 0) { reuseMat.reuseMatId = getLastID(); } List <gReuseMatCL> list = getReuseMaterial(ident, reuseMat.reuseMatId); if (list.Count == 0) { reuseMatRet.ErrCode = -101; reuseMatRet.ErrMessage = "Can not retrieve the current reuseMaterial"; return(reuseMatRet); } return(list[0]); }
/// <summary> /// Saves a working cost. /// Will return the saved item with the /// new value in workingCostId field (if this is a new item) /// </summary> /// <param name="ident"></param> /// <param name="wc"></param> /// <returns></returns> /// 2018-08-17 KJBO public gWorkingCostCL saveWorkingCost(string ident, gWorkingCostCL wc) { gWorkingCostCL wcReturn = new gWorkingCostCL(); wcReturn.ErrCode = 0; wcReturn.ErrMessage = ""; CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { wcReturn.ErrCode = -10; wcReturn.ErrMessage = "Ogiltigt login"; return(wcReturn); } if (wc.cuttingHourNet <= 0 || wc.cuttingHourNet > 100000) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Timdebitering skärtid netto utanför marginalen"; return(wcReturn);; } if (wc.cuttingHourSales <= 0 || wc.cuttingHourSales > 100000) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Timdebitering skärtid brutto utanför marginalen"; return(wcReturn);; } if (wc.cuttingHourNet > wc.cuttingHourSales) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Timdebitering skärtid nettopris är lägre än bruttopris"; return(wcReturn);; } if (wc.handlingHourNet < 0 || wc.handlingHourNet > 100000) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Timpris hantering netto utanför marginalen"; return(wcReturn);; } if (wc.handlingHourSales < 0 || wc.handlingHourSales > 100000) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Timpris hantering brutto utanför marginalen"; return(wcReturn);; } if (wc.handlingHourNet > wc.handlingHourSales) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Timpris plocktid netto är högre än brutto"; return(wcReturn);; } if (wc.cuttingMargin < 0 || wc.cuttingMargin > 1000) { wcReturn.ErrCode = -1; wcReturn.ErrMessage = "Skärmarginal utanför gränsvärdet"; return(wcReturn);; } string sSql = ""; if (wc.workingCostId == 0) { sSql = getInsertSql(); } else { sSql = getUpdateSql(); } NxParameterCollection np = new NxParameterCollection(); ReparatorCL rep = cr.getReparator(ident); setParameters(np, wc, rep); string errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, np); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } wcReturn.ErrCode = -100; wcReturn.ErrMessage = errTxt; return(wcReturn);; } return(getWorkingCosts(ident)); }
/// <summary> /// Saves a material thickness to the database. /// If an error occurs then the return object (of type gMaterialThicknCL) /// will have error information /// </summary> /// <param name="ident"></param> /// <param name="thickn"></param> /// <returns></returns> /// 2018-08-16 KJBO public gMaterialThicknCL saveMaterialThickness(string ident, gMaterialThicknCL thickn) { gMaterialThicknCL thicknRet = new gMaterialThicknCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { thicknRet.ErrCode = -10; thicknRet.ErrMessage = "Ogiltigt login"; return(thicknRet); } if (thickn.materialSizeId <= 0) { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Materialstorlek måste väljas"; return(thicknRet); } if (thickn.description == "") { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Beskrivning måste anges"; return(thicknRet); } if (thickn.thicknShort == "") { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Kortbeskrivning måste anges"; return(thicknRet); } if (thickn.thickness <= 0 || thickn.thickness > 100) { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Tjocklek måste vara större än 0 och mindre än 100 mm "; return(thicknRet); } if (thickn.buyPrice <= 0 || thickn.buyPrice > 100000) { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Inköpspris felaktigt angivet"; return(thicknRet); } if (thickn.sellPrice <= 0 || thickn.sellPrice > 1000000) { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Försäljningspris felaktigt angivet"; return(thicknRet); } if (thickn.sellPrice < thickn.buyPrice) { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Försäljningspris bör vara större än inköpspris"; return(thicknRet); } if (thickn.cuttingTime <= 0 || thickn.cuttingTime > 100) { thicknRet.ErrCode = -1; thicknRet.ErrMessage = "Skärtid bör vara större än 0 men mindre än 100 m/minut"; return(thicknRet); } string errTxt = ""; int rc = validateData(thickn, ref errTxt); // Check if database error occurs when checkin unique value if (errTxt != "") { thicknRet.ErrCode = -100; if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } thicknRet.ErrMessage = "Fel vid kontroll av data. Felbeskrivning : " + errTxt; return(thicknRet); } string sSql = ""; if (thickn.materialThicknId == 0) { sSql = getInsertSql(); } else { sSql = getUpdateSql(); } NxParameterCollection np = new NxParameterCollection(); ReparatorCL rep = cr.getReparator(ident); setParameters(np, thickn, rep); errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, np); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } thicknRet.ErrCode = -100; thicknRet.ErrMessage = errTxt; return(thicknRet); } if (thickn.materialThicknId == 0) { thickn.materialThicknId = getLastId(); } List <gMaterialThicknCL> thicknList = getMaterialThickn(ident, thickn.materialThicknId); return(thicknList[0]); }
/// <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> /// Save access level for gasket handling /// </summary> /// <param name="ident"></param> /// <param name="reparator"></param> /// <returns></returns> /// 2018-08-21 KJBO public ReparatorCL saveGasketLevel(string ident, ReparatorCL reparator) { CReparator rep = new CReparator(); return(rep.saveGasketLevel(ident, reparator)); }
/// <summary> /// Updates the table shReparator. /// If the parameter addTo order then a new row will be added /// with the current ordernr and AnvId /// if false then the row is deleted /// </summary> /// <param name="ident"></param> /// <param name="VartOrdernr"></param> /// <param name="AnvID"></param> /// <param name="addToOrder"></param> /// <returns></returns> /// 2018-02-05 KJBO public ErrorCL updateShrep(string ident, string VartOrdernr, string AnvID, Boolean addToOrder) { ErrorCL err = new ErrorCL(); err.ErrCode = 0; err.ErrMessage = ""; string sSql = ""; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", VartOrdernr); pc.Add("AnvID", AnvID); if (addToOrder) { sSql = "select count(*) antal " + " from shReparator " + " where vart_ordernr = :vart_ordernr " + " and AnvID = :AnvID "; DataTable dtCount = cdb.getData(sSql, ident, ref err, pc); if (err.ErrMessage != "") { return(err); } int antal = 0; if (dtCount.Rows.Count == 1) { antal = Convert.ToInt32(dtCount.Rows[0]["antal"]); } if (antal == 0) { sSql = "insert into shReparator (vart_ordernr, AnvID, reg, regdat) " + " values(:vart_ordernr, :AnvID, :reg, :regdat); "; CReparator cr = new CReparator(); ReparatorCL rep = cr.getReparator(ident); pc.Add("reg", rep.AnvID); pc.Add("regdat", DateTime.Now); string errTxt = ""; cdb.updateData(sSql, ref errTxt, pc); if (errTxt != "") { errTxt = "Error while inserting row in shReparator table. Error message : " + errTxt; if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } err.ErrCode = -100; err.ErrMessage = errTxt; return(err); } } } else { sSql = " delete from shReparator " + " where vart_ordernr = :vart_ordernr " + " and AnvID = :AnvID "; string errTxt = ""; cdb.updateData(sSql, ref errTxt, pc); if (errTxt != "") { errTxt = "Error while inserting row in shReparator table. Error message : " + errTxt; if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } err.ErrCode = -100; err.ErrMessage = errTxt; return(err); } } return(err); }
/// <summary> /// Validates and saves material size to the database /// </summary> /// <param name="ident"></param> /// <param name="matSize"></param> /// <returns></returns> /// 2018-08-16 KJBO public gMaterialSizeCL saveMaterialSize(string ident, gMaterialSizeCL matSize) { gMaterialSizeCL matSizeRet = new gMaterialSizeCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { matSizeRet.ErrCode = -10; matSizeRet.ErrMessage = "Ogiltigt login"; return(matSizeRet); } if (matSize.description == "") { matSizeRet.ErrCode = -1; matSizeRet.ErrMessage = "Beskrivning måste anges"; return(matSizeRet); } if (matSize.materialId <= 0) { matSizeRet.ErrCode = -1; matSizeRet.ErrMessage = "Välj material"; return(matSizeRet); } if (matSize.sizeShort == "") { matSizeRet.ErrCode = -1; matSizeRet.ErrMessage = "Kortbeskrivning måste anges"; return(matSizeRet); } if (matSize.materialLength <= 0) { matSizeRet.ErrCode = -1; matSizeRet.ErrMessage = "Materiallängd måste vara större an 0"; return(matSizeRet); } if (matSize.materialWidth <= 0) { matSizeRet.ErrCode = -1; matSizeRet.ErrMessage = "Materialbredd måste vara större an 0"; return(matSizeRet); } string errTxt = ""; int rc = validateData(matSize, ref errTxt); // Check if database error occurs when checkin unique value if (errTxt != "") { matSizeRet.ErrCode = -100; if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } matSizeRet.ErrMessage = "Fel vid kontroll av data. Felbeskrivning : " + errTxt; return(matSizeRet); } // If the current short description already exists if (rc == -1) { matSizeRet.ErrCode = -1; matSizeRet.ErrMessage = "Kortbeskrivning måste vara unik"; return(matSizeRet); } string sSql = ""; if (matSize.materialSizeId == 0) { sSql = getInsertSql(); } else { sSql = getUpdateSql(); } NxParameterCollection np = new NxParameterCollection(); ReparatorCL rep = cr.getReparator(ident); setParameters(np, matSize, rep); errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, np); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } matSizeRet.ErrCode = -100; matSizeRet.ErrMessage = errTxt; return(matSizeRet); } if (matSize.materialSizeId == 0) { matSize.materialSizeId = getLastId(); } List <gMaterialSizeCL> matList = getMaterialSize(ident, matSize.materialSizeId); return(matList[0]); }
/// <summary> /// Reset export all Pyramid export /// settings for an order /// </summary> /// <param name="aVart_ordernr"></param> /// <param name="ident"></param> /// <returns>ErrorCL</returns> /// 2018-11-02 KJBO public ErrorCL resetExport(string aVart_ordernr, string ident) { ErrorCL err = new ErrorCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { err.ErrCode = -10; err.ErrMessage = "Ogiltigt login"; return(err); } ReparatorCL reparator = cr.getReparator(ident); vart_ordernr = aVart_ordernr; err = resendServHuv(ident); if (err.ErrCode != 0) { return(err); } err.ErrMessage = resetOrderArt(); if (err.ErrMessage != "") { err.ErrCode = -36102; return(err); } err.ErrMessage = resetReservdel(); if (err.ErrMessage != "") { err.ErrCode = -36103; return(err); } err.ErrMessage = resetServHuvRepTid(); if (err.ErrMessage != "") { err.ErrCode = -36104; return(err); } err.ErrMessage = resetServRadRepTid(); if (err.ErrMessage != "") { err.ErrCode = -36105; return(err); } // 2018-12-03 KJBO err.ErrMessage = pyrExp.resetPyramidExport(vart_ordernr); if (err.ErrMessage != "") { err.ErrCode = -36106; return(err); } pyrExp.addToPyramidChange(vart_ordernr, reparator.AnvID, 3); return(err); }
public VentilCL saveVentil(string ident, VentilCL v) { VentilCL vc = new VentilCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { vc.ErrCode = -10; vc.ErrMessage = "Ogiltigt login"; return(vc); } // 2018-11-09 Samtal med Simon if (v.Position == "") { vc.ErrCode = -1; vc.ErrMessage = "Positionsnr måste anges"; return(vc); } int iRes = validateVentil(v); if (iRes == -1) { vc.ErrCode = -1; vc.ErrMessage = "Felaktig ventilkategori"; return(vc); } if (iRes == -2) { vc.ErrCode = -1; vc.ErrMessage = "Felaktigt kundID"; return(vc); } if (iRes == -3) { vc.ErrCode = 101; vc.ErrMessage = "Det finns redan en ventil med detta positionsnr"; return(vc); } if (iRes == -4) { vc.ErrCode = -1; vc.ErrMessage = "Ytterdiameter måste vara större än innerdiameter"; return(vc); } ReparatorCL r = cr.getReparator(ident); string sSql = ""; bool bNew = false; // This is a new ventil if (v.VentilID == null) { string ventilID = Guid.NewGuid().ToString(); v.VentilID = ventilID; sSql = getVentilInsertSQL(); bNew = true; } else { sSql = getVentilUpdateSQL(); } NxParameterCollection np = new NxParameterCollection(); setParameters(np, v, bNew, r.AnvID); string errText = ""; int iRc = cdb.updateData(sSql, ref errText, np); if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } v.ErrCode = -100; v.ErrMessage = errText; return(v); } // 2016-10-17 KJBO CServRad csr = new CServRad(); csr.updateFromVentil2(v.VentilID); return(getVentil(ident, v.VentilID)); }
public OrderArtCL checkoutOrderArt(OrderArtCL oa, string id, bool acceptGodkand) { ExportToPyramid.CExportToPyramid pyExport = new ExportToPyramid.CExportToPyramid(); string exportErr = pyExport.checkPyramidAPIAvailable(); if (exportErr != "") { OrderArtCL oacl = new OrderArtCL(); oacl.ErrCode = -18250; oacl.ErrMessage = exportErr; return(oacl); } ReparatorCL rep = null; if (id == "") { rep = new ReparatorCL(); rep.AnvID = "Pyramid"; } else { CReparator cr = new CReparator(); rep = cr.getReparator(id); } // 2018-04-23 KJBO // Special handling due to gui limitations //if (oa.OrderArtId != 0 && oa.Artnr == null) //{ // oa.Artnr = getArtnrForOrderArt(oa.OrderArtId); //} if (oa.VartOrdernr == "") { OrderArtCL oaRet = new OrderArtCL(); oaRet.ErrCode = -103; oaRet.ErrMessage = "Ordernummer måste anges"; return(oaRet); } if (oa.Artnr == "") { OrderArtCL oaRet = new OrderArtCL(); oaRet.ErrCode = -104; oaRet.ErrMessage = "Artikelnummer måste anges"; return(oaRet); } string errTxt = ""; int rc = validateOa(oa, ref errTxt); if (rc == -1) { OrderArtCL oaRet = new OrderArtCL(); oaRet.ErrCode = -106; oaRet.ErrMessage = "Felaktigt ordernr"; return(oaRet); } if (rc == -2) { OrderArtCL oaRet = new OrderArtCL(); oaRet.ErrCode = -107; if (errTxt == "") { oaRet.ErrMessage = "Felaktigt ordernr"; } else { oaRet.ErrMessage = errTxt; } return(oaRet); } if (!acceptGodkand) { if (rc == -3) { OrderArtCL oaRet = new OrderArtCL(); oaRet.ErrCode = -108; if (errTxt == "") { oaRet.ErrMessage = "Ordern är godkänd. Ändringar ej tillåtna"; } else { oaRet.ErrMessage = errTxt; } return(oaRet); } } string sSql = ""; // 2018-04-30 KJBO if (oa.OrderArtId == 0) { decimal toBeAdded = 0; oa.OrderArtId = reuseOrderArtId(oa, ref toBeAdded); if (oa.OrderArtId != 0) { oa.CoAntal += toBeAdded; } } if (oa.OrderArtId == 0) { sSql = getOaInsertSql(); } else { sSql = getOaUpdateSql(); } NxParameterCollection pc = new NxParameterCollection(); setOaParameters(pc, oa, oa.OrderArtId == 0, rep.AnvID); int li_rc = cdb.updateData(sSql, ref errTxt, pc); if (errTxt != "") { OrderArtCL oaRet = new OrderArtCL(); if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } oaRet.ErrCode = -100; oaRet.ErrMessage = errTxt; return(oaRet); } if (oa.OrderArtId == 0) { sSql = "SELECT MAX(orderArtId) orderArtId FROM orderArt "; DataTable dt = cdb.getData(sSql, ref errTxt); if (errTxt != "") { OrderArtCL oaRet = new OrderArtCL(); if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } oaRet.ErrCode = -100; oaRet.ErrMessage = errTxt; return(oaRet); } oa.OrderArtId = Convert.ToInt32(dt.Rows[0][0]); } List <OrderArtCL> oaList = getOrderArt(oa.OrderArtId, ""); if (oaList.Count != 1) { OrderArtCL oaRet = new OrderArtCL(); if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } oaRet.ErrCode = -110; oaRet.ErrMessage = "Error when retrieving orderArt"; return(oaRet); } ErrorCL errCl = pyExport.reserveArticle(oaList[0].OrderArtId); //pyExport.retryAllOrders(); return(oaList[0]); }
/// <summary> /// Saves material to database /// </summary> /// <param name="ident"></param> /// <param name="mat"></param> /// <returns>The saved material</returns> public gMaterialCL saveMaterial(string ident, gMaterialCL mat) { gMaterialCL matRet = new gMaterialCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { matRet.ErrCode = -10; matRet.ErrMessage = "Ogiltigt login"; return(matRet); } if (mat.material == "") { matRet.ErrCode = -1; matRet.ErrMessage = "Materialnamn måste anges"; return(matRet); } if (mat.materialShort == "") { matRet.ErrCode = -1; matRet.ErrMessage = "Kortnamn måste anges"; return(matRet); } string errTxt = ""; int iRes = validateMaterial(mat, ref errTxt); if (errTxt != "") { matRet.ErrCode = -1; matRet.ErrMessage = "Fel vid kontroll av unikt kortnamn. Felmeddelande : " + errTxt; return(matRet); } if (iRes == -2) { matRet.ErrCode = -1; matRet.ErrMessage = "Fel vid kontroll av unikt kortnamn. Felmeddelande saknas."; return(matRet); } if (iRes == -1) { matRet.ErrCode = -1; matRet.ErrMessage = "Kortnamn måste vara unikt"; return(matRet); } string sSql = ""; if (mat.materialId == 0) { sSql = getInsertMatrSQL(); } else { sSql = getUpdateMatrSQL(); } NxParameterCollection np = new NxParameterCollection(); ReparatorCL rep = cr.getReparator(ident); setMatrParameters(np, mat, rep); errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, np); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } matRet.ErrCode = -100; matRet.ErrMessage = errTxt; return(matRet); } if (mat.materialId == 0) { mat.materialId = getLastMatrID(); } List <gMaterialCL> matList = getMaterial(ident, mat.materialId); return(matList[0]); }
/// <summary> /// Get all reparators /// or just the reparator with AnvID /// </summary> /// <returns>List of reparators</returns> /// 2018-08-21 KJBO public List <ReparatorCL> getReparators(string ident, string AnvID) { int identOK = checkIdent(ident); List <ReparatorCL> repList = new List <ReparatorCL>(); if (identOK == -1) { ReparatorCL r = new ReparatorCL(); r.Reparator = ""; r.AnvID = ""; r.RepKatID = ""; r.ErrCode = -10; r.ErrMessage = "Ogiltigt login"; repList.Add(r); return(repList); } string sSql = "SELECT reparator, rep_kat_id, AnvID, coalesce(gasketLevel,0) gasketLevel " + " FROM reparator " + " where visas = true "; if (AnvID != "") { sSql += " and AnvID = :AnvID "; } NxParameterCollection pc = new NxParameterCollection(); if (AnvID != "") { pc.Add("AnvID", AnvID); } string errSt = ""; DataTable dt = cdb.getData(sSql, ref errSt, pc); if (errSt != "") { if (errSt.Length > 2000) { errSt = errSt.Substring(1, 2000); } ReparatorCL r = new ReparatorCL(); r.Reparator = ""; r.AnvID = ""; r.RepKatID = ""; r.ErrCode = -100; r.ErrMessage = "Databasfel : " + errSt; repList.Add(r); return(repList); } foreach (DataRow dr in dt.Rows) { ReparatorCL r = new ReparatorCL(); r.Reparator = dr["reparator"].ToString(); r.AnvID = dr["AnvID"].ToString(); r.RepKatID = dr["rep_kat_id"].ToString(); r.gasketLevel = Convert.ToInt32(dr["gasketLevel"]); r.ErrCode = 0; r.ErrMessage = ""; repList.Add(r); } return(repList); }
/// <summary> /// Validates and saves a gasket to the database /// Always check ErrCode and ErrMessage for errors /// Returns the new created gasket /// </summary> /// <param name="ident"></param> /// <param name="gasket"></param> /// <returns></returns> /// 2018-08-17 KJBO public gGasketCL saveGasket(string ident, gGasketCL gasket) { gGasketCL gasketRet = new gGasketCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { gasketRet.ErrCode = -10; gasketRet.ErrMessage = "Ogiltigt login"; return(gasketRet); } // If there is only one type of gasket // then this value will be set to the // gasket type field. int gasketTypeId = getGasketTypeId(); if (gasketTypeId > 0) { gasket.gasketTypeId = 1; } if (gasket.gasketTypeId <= 0) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Packningstyp måste väljas"; return(gasketRet); } if (gasket.materialThicknId <= 0) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Packningsmaterial måste väljas"; return(gasketRet); } if (!validateGasketAgainstMaterialSize(gasket)) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Packningens ytterdiameter är större än valt material"; return(gasketRet); } if (gasket.outerDiam <= 0 || gasket.outerDiam > 100000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Ytterdiameter måste vara större än 0 (och mindre än 100000)"; return(gasketRet); } if (gasket.innerDiam <= 0 || gasket.innerDiam > 100000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Innerdiameter måste vara större än 0 (och mindre än 100000)"; return(gasketRet); } if (gasket.innerDiam > gasket.outerDiam) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Ytterdiameter måste vara större än innerdiameter"; return(gasketRet); } if (gasket.reusableMaterial < 0 || gasket.reusableMaterial >= 100) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Återanvändbart material har felaktig procentsats"; return(gasketRet); } if (gasket.cuttingMargin < 0 || gasket.cuttingMargin > 100) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Felaktig skärmarginal"; return(gasketRet); } if (gasket.handlingTime < 0 || gasket.handlingTime > 10000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Felaktig hanteringstid"; return(gasketRet); } if (gasket.price < 0 || gasket.price > 1000000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Felaktigt pris"; return(gasketRet); } if (gasket.gasketTypeId == 2) { if (gasket.Type2SecHoleCount < 1) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Antal yttre hål felaktigt angivet"; return(gasketRet); } Decimal materialLeft = gasket.outerDiam - gasket.innerDiam; materialLeft = materialLeft / 2; //materialLeft -= gasket.cuttingMargin * 2; if (gasket.Type2SecHoleDiam > materialLeft) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Diameter på yttre hål måste vara mindre än " + materialLeft.ToString() + " mm."; return(gasketRet); } if (gasket.Type2SecHoleDiam <= 0 || gasket.Type2SecHoleDiam > 100000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Diameter på yttre hål måste vara större än 0 (och mindre än 100000)"; return(gasketRet); } } string errTxt = ""; string sSql = ""; if (gasket.gasketId == 0) { sSql = getInsertSql(); } else { sSql = getUpdateSql(); } NxParameterCollection np = new NxParameterCollection(); ReparatorCL rep = cr.getReparator(ident); setParameters(np, gasket, rep); errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, np); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } gasketRet.ErrCode = -100; gasketRet.ErrMessage = errTxt; return(gasketRet); } if (gasket.gasketId == 0) { gasket.gasketId = getLastId(); } List <gGasketCL> gasketList = getGasket(ident, gasket.gasketId); return(gasketList[0]); }
/// <summary> /// Get a list of all reparators assigned to one /// servicehuvud identified by vartOrdernr /// </summary> /// <param name="ident"></param> /// <param name="vartOrdernr"></param> /// <returns>A list of reparators or error</returns> /// 2017-03-14 Added functionality /// RepKatID is now current for this ordernr public List <ReparatorCL> getReparatorsForServiceHuvud(string ident, string vartOrdernr) { int identOK = checkIdent(ident); List <ReparatorCL> repList = new List <ReparatorCL>(); ReparatorCL rep = new ReparatorCL(); if (identOK == -1) { rep.Reparator = ""; rep.AnvID = ""; rep.RepKatID = ""; rep.ErrCode = -10; rep.ErrMessage = "Ogiltigt login"; repList.Add(rep); return(repList); } string sSql = " select Coalesce(allRep,false) allRep, Coalesce(OpenForApp,false) OpenforApp, orderAdmin " + " from servicehuvud " + " where vart_ordernr = :vart_ordernr "; NxParameterCollection np = new NxParameterCollection(); np.Add("vart_ordernr", vartOrdernr); string errSt = ""; DataTable dt = cdb.getData(sSql, ref errSt, np); int errCode = -100; if (errSt == "" && dt.Rows.Count == 0) { errSt = "Vårt ordernr är felaktigt"; errCode = 0; } if (errSt != "") { if (errSt.Length > 2000) { errSt = errSt.Substring(1, 2000); } rep.ErrCode = errCode; rep.ErrMessage = errSt; repList.Add(rep); return(repList); } if (Convert.ToBoolean(dt.Rows[0]["OpenforApp"]) == false) { rep.ErrCode = errCode; rep.ErrMessage = "Ordern är stängd för AppAnvändning"; repList.Add(rep); return(repList); } string orderAdmin = dt.Rows[0]["orderAdmin"] == DBNull.Value ? "" : dt.Rows[0]["orderAdmin"].ToString(); if (Convert.ToBoolean(dt.Rows[0]["allRep"]) == true) { sSql = " select r.anvID, r.Reparator, r.Rep_kat_id " + " from reparator r " + " where r.visas = true "; } else { sSql = " select r.anvID, r.Reparator, r.Rep_kat_id " + " from reparator r " + " join servicehuvud s on r.anvID = s.OrderAdmin " + " where s.vart_ordernr = :vart_ordernr " + " and r.visas = true " + " union " + " select r.anvID, r.Reparator, r.Rep_kat_id " + " from reparator r " + " join shReparator shr on r.anvID = shr.anvID " + " join servicehuvud sh on shr.vart_ordernr = sh.vart_ordernr " + " where sh.vart_ordernr = :vart_ordernr " + " and r.visas = true "; } errSt = ""; dt = cdb.getData(sSql, ref errSt, np); errCode = -100; if (errSt == "" && dt.Rows.Count == 0) { errSt = "Det finns inga reparatörer med behörighet till aktuell order"; errCode = 0; } if (errSt != "") { if (errSt.Length > 2000) { errSt = errSt.Substring(1, 2000); } rep.ErrCode = errCode; rep.ErrMessage = errSt; repList.Add(rep); return(repList); } foreach (DataRow dr in dt.Rows) { ReparatorCL r = new ReparatorCL(); r.AnvID = dr["anvID"].ToString(); r.Reparator = dr["Reparator"].ToString(); if (dr["anvID"].ToString() == orderAdmin) { r.RepKatID = "AL_ST"; } else { r.RepKatID = "REPARATOR"; } r.ErrCode = 0; r.ErrMessage = ""; repList.Add(r); } return(repList); }