/// <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)); }
public DataTable getData(string sSql, string ident, ref ErrorCL err, NxParameterCollection pc) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { err.ErrCode = -10; err.ErrMessage = "Ogiltigt login"; return(null); } string errText = ""; DataTable dt = getData(sSql, ref errText, pc); if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } err.ErrMessage = errText; err.ErrCode = -100; return(null); } return(dt); }
/// <summary> /// Check if an order is open for editing /// The return value is a string, 1 = open, -1 = closed or an error message /// </summary> /// <param name="ident"></param> /// <param name="VartOrdernr"></param> /// <returns>1 - Open -1 - Closed or an error message</returns> public string isOpen(string ident, string VartOrdernr) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { return("Ogiltigt login"); } string sSql = " select Coalesce(OpenForApp, false) as OpenForApp, " + " Coalesce(Godkand, true) as Godkand " + " from servicehuvud " + " where vart_ordernr = :vart_ordernr "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", VartOrdernr); string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, pc); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { errText = "Det finns ingen order med aktuellt ordernr"; errCode = -10; return(errText); } if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } ServiceHuvudCL sh = new ServiceHuvudCL(); sh.ErrCode = errCode; sh.ErrMessage = errText; } DataRow dr = dt.Rows[0]; Boolean bOpenForApp = Convert.ToBoolean(dr["OpenForApp"]); Boolean bGodkand = Convert.ToBoolean(dr["Godkand"]); if (bOpenForApp && !bGodkand) { return("1"); } return("-1"); }
/// <summary> /// Count reparators for a certain order /// Returns number of reparators or -1 for error /// </summary> /// <param name="vart_ordernr"></param> /// <param name="ident"></param> /// <returns></returns> public int countReparator(string vart_ordernr, string ident) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { return(-1); } return(countReparator(vart_ordernr)); }
/* * Version 0.96: * 2016-06-14 Logging enabled. Bug fixes. * */ /// <summary> /// Returns database and API versions /// </summary> /// <param name="ident"></param> /// <returns></returns> public VersionCL getVersion(string ident) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); VersionCL v = new VersionCL(); if (identOK == -1) { v.ErrCode = -10; v.ErrMessage = "Ogiltigt login"; v.dbVersion = 0; v.APIVersion = ""; return(v); } string sSql = " SELECT db_version " + " FROM \"Version\" "; string errSt = ""; CDB cdb = new CDB(); DataTable dt = cdb.getData(sSql, ref errSt); if (errSt != "") { if (errSt.Length > 2000) { errSt = errSt.Substring(1, 2000); } v.dbVersion = 0; v.APIVersion = ""; v.ErrCode = -100; v.ErrMessage = "Databasfel : " + errSt; return(v); } if (dt.Rows.Count > 0) { DataRow dr = dt.Rows[0]; v.dbVersion = Convert.ToInt32(dr["db_version"]); v.APIVersion = apiVersion; v.ErrCode = 0; v.ErrMessage = ""; return(v); } v.dbVersion = 0; v.APIVersion = ""; v.ErrCode = 0; v.ErrMessage = "Ingen information tillgänglig"; return(v); }
/// <summary> /// Identifies a servicehuvud by sh.vart_ordernr /// Retrieves the matching order and return /// </summary> /// <param name="sh"></param> /// <param name="ident"></param> /// <returns>ServHuvCL</returns> public ServHuvCL getServiceHuvud(ServHuvCL sh, string ident) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { ServHuvCL sh2 = new ServHuvCL(); sh2.ErrCode = -10; sh2.ErrMessage = "Ogiltigt login"; return(sh2); } return(getServiceHuvud(sh)); }
/// <summary> /// Returns a list of momskoder /// This is used by Pyramid /// </summary> /// <param name="ident"></param> /// <returns></returns> /// 2018-04-27 KJBO Indentive AB public List <MomskodCL> getMomskoder(string ident) { List <MomskodCL> momsList = new List <MomskodCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { MomskodCL m = new MomskodCL(); m.ErrCode = -10; m.ErrMessage = "Ogiltigt login"; momsList.Add(m); return(momsList); } momsList.Add(new MomskodCL { Momskod = "Normal moms", MomskodId = 1, ErrCode = 0, ErrMessage = "" }); momsList.Add(new MomskodCL { Momskod = "Omvänd skattskyldighet", MomskodId = 2, ErrCode = 0, ErrMessage = "" }); return(momsList); }
/// <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> /// Function to get a list of picture categories /// The step parameter indicates the step in the /// documentation where the different categories are available /// as follows /// 1 : Check before service /// 2 : Service job done /// 3 : Other remarks /// 4 : Spare parts /// 0 : Anywhere (no matter where the picture is taken i the process) /// /// If Step is set to 0 you get all possible categories in return /// Otherwise you get the categories for the current step as well as /// category all categories with step 0. /// Note that it is required with 2 pictures (of differend categories) /// for step no 1 in the process /// </summary> /// <param name="ident"></param> /// <param name="Step"></param> /// <returns></returns> public List <PictCatCL> getPictCategories(string ident, int Step) { List <PictCatCL> pcl = new List <PictCatCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { PictCatCL p = new PictCatCL(); p.ErrCode = -10; p.ErrMessage = "Ogiltigt login"; pcl.Add(p); return(pcl); } NxParameterCollection pc = new NxParameterCollection(); // if argument Step = 0 then return all rows // otherwise return all rows matching the current step // and all steps with value of 0 string sSql = " SELECT PictCatID, PictCatName, Step " + " FROM PictCategory "; if (Step > 0) { sSql += " where step = :step " + " or step = 0 "; pc.Add("step", Step); } string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, pc); if (errText != "") { PictCatCL p = new PictCatCL(); if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } p.ErrCode = -100; p.ErrMessage = errText; pcl.Add(p); return(pcl); } foreach (DataRow dr in dt.Rows) { PictCatCL p = new PictCatCL(); p.PictCatID = Convert.ToInt32(dr["PictCatID"]); p.PictCatName = dr["PictCatName"].ToString(); p.Step = Convert.ToInt16(dr["Step"]); p.ErrCode = 0; p.ErrMessage = ""; pcl.Add(p); } return(pcl); }
/// <summary> /// Returns the selectable gasket levels /// </summary> /// <param name="ident"></param> /// <returns></returns> /// 2018-08-21 KJBO public List <KeyValuePair <int, string> > gGetGasketLevels(string ident) { CReparator rep = new CReparator(); return(rep.gGetGasketLevels(ident)); }
/// <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> /// Determines if the AnvID is administrator for the current order /// If so the function will return the administrator RepCat. /// Otherwise it will return the default RepKat. /// repKat /// </summary> /// <param name="ident"></param> /// <param name="AnvID"></param> /// <param name="VartOrdernr"></param> /// <returns></returns> public RepKatCL getDefaultRepKat(string ident, string AnvID, string VartOrdernr) { CReparator cr = new CReparator(); return(cr.getDefaultRepKat(ident, AnvID, VartOrdernr)); }
/// <summary> /// Get all reparators /// or just the reparator with AnvID /// </summary> /// <returns>List of reparators</returns> /// 2018-08-21 KJBO public List <ReparatorCL> gGetReparators(string ident, string AnvID) { CReparator rep = new CReparator(); return(rep.getReparators(ident, AnvID)); }
/// <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> /// Get all ventils for one customer /// </summary> /// <param name="ident"></param> /// <param name="KundID"></param> /// <returns></returns> public List <VentilCL> getVentilsForCust(string ident, string KundID, string position, string IDnr, string ventiltyp, string fabrikat, string anlaggningsnr) { List <VentilCL> vl = new List <VentilCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { VentilCL v = new VentilCL(); v.ErrCode = -10; v.ErrMessage = "Ogiltigt login"; vl.Add(v); return(vl); } string sSql = " SELECT v.ventil_id, v.ventilkategori, v.kund_id, v.\"position\", v.fabrikat, v.ventiltyp, v.id_nr, v.pn, v.pn2, v.dn, v.dn2, " + " v.oppningstryck, v.stalldonstyp, v.stalldon_id_nr, v.stalldon_fabrikat, v.stalldon_artnr, v.lagesstallartyp, " + " v.lagesstall_id_nr, v.lagesstall_fabrikat, v.avdelning, v.anlaggningsnr, " + " v.forra_comment, vk.ventilkategori as ventilkategori_namn " + ", v.plan, v.rum, v.insideDiameter, v.outsideDiameter " + " FROM ventil v " + " join ventilkategori vk on v.ventilkategori = vk.ventilkat_id " + " where v.kund_id = :pKundID " + " and upper(coalesce(v.\"position\",'')) like upper(:position) " + " and upper(coalesce(v.id_nr,'')) like upper(:id_nr) " + " and upper(coalesce(v.ventiltyp,'')) like upper(:ventiltyp) " + " and upper(coalesce(v.fabrikat,'')) like upper(:fabrikat) " + " and upper(coalesce(v.anlaggningsnr,'')) like upper(:anlaggningsnr) "; NxParameterCollection np = new NxParameterCollection(); np.Add("pKundID", KundID); np.Add("position", CCommonFunc.addWildCard(position)); np.Add("ID_nr", CCommonFunc.addWildCard(IDnr)); np.Add("ventiltyp", CCommonFunc.addWildCard(ventiltyp)); np.Add("fabrikat", CCommonFunc.addWildCard(fabrikat)); np.Add("anlaggningsnr", CCommonFunc.addWildCard(anlaggningsnr)); string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, np); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { errText = "Det finns inga ventiler för aktuell kund"; errCode = 0; } if (errText != "") { VentilCL v = new VentilCL(); if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } v.ErrCode = errCode; v.ErrMessage = errText; vl.Add(v); return(vl); } foreach (DataRow dr in dt.Rows) { VentilCL vr = new VentilCL(); vr.VentilID = dr["ventil_id"].ToString(); vr.VentilkatID = Convert.ToInt16(dr["ventilkategori"]); vr.Ventilkategori = dr["ventilkategori_namn"].ToString(); vr.KundID = dr["kund_id"].ToString(); vr.Position = dr["position"].ToString(); vr.Fabrikat = dr["fabrikat"].ToString(); vr.Ventiltyp = dr["ventiltyp"].ToString(); vr.IdNr = dr["id_nr"].ToString(); vr.Pn = dr["pn"].ToString(); vr.Pn2 = dr["pn2"].ToString(); vr.Dn = dr["dn"].ToString(); vr.Dn2 = dr["dn2"].ToString(); if (dr["oppningstryck"] == DBNull.Value) { vr.Oppningstryck = 0; } else { vr.Oppningstryck = Convert.ToDecimal(dr["oppningstryck"]); } vr.Stalldonstyp = dr["stalldonstyp"].ToString(); vr.StalldonIDNr = dr["stalldon_id_nr"].ToString(); vr.StalldonFabrikat = dr["stalldon_fabrikat"].ToString(); vr.StalldonArtnr = dr["stalldon_artnr"].ToString(); vr.Lagesstallartyp = dr["lagesstallartyp"].ToString(); vr.LagesstallIDNr = dr["lagesstall_id_nr"].ToString(); vr.LagesstallFabrikat = dr["lagesstall_fabrikat"].ToString(); vr.Avdelning = dr["avdelning"].ToString(); vr.Anlaggningsnr = dr["anlaggningsnr"].ToString(); vr.Plan = dr["plan"].ToString(); vr.Rum = dr["rum"].ToString(); // 2017-09-25 KJBO if (dr["insideDiameter"] == DBNull.Value) { vr.insideDiameter = 0; } else { vr.insideDiameter = Convert.ToDecimal(dr["insideDiameter"]); } if (dr["outsideDiameter"] == DBNull.Value) { vr.outsideDiameter = 0; } else { vr.outsideDiameter = Convert.ToDecimal(dr["outsideDiameter"]); } vr.ErrCode = 0; vr.ErrMessage = ""; vl.Add(vr); } return(vl); }
/// <summary> /// Return one artikel /// </summary> /// <param name="ident">Ident</param> /// <param name="Artnr">Artnr</param> /// <returns></returns> // 2016-02-10 KJBO public ArtikelCL getArtikel(string ident, string Artnr) { ArtikelCL art = new ArtikelCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { art.ErrCode = -10; art.ErrMessage = "Ogiltigt login"; return(art); } string sSql = " SELECT a.artnr, a.artnamn, a.lev_id, l.levnamn, a.anm1, a.anm2, kategori " + " FROM artikel a " + " left outer join leverantor l on a.lev_id = l.lev_id " + " where a.artnr = :artnr " + " and a.visas = true "; NxParameterCollection np = new NxParameterCollection(); np.Add("artnr", Artnr); string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, np); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { errText = "Artikeln finns ej "; errCode = 0; } if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } art.ErrCode = errCode; art.ErrMessage = errText; } if (dt.Rows.Count == 1) { DataRow dr = dt.Rows[0]; art.Artnr = dr["artnr"].ToString(); art.Artnamn = dr["artnamn"].ToString(); art.LevID = dr["lev_id"].ToString(); art.LevNamn = dr["levnamn"].ToString(); art.Anm1 = dr["anm1"].ToString(); art.Anm2 = dr["anm2"].ToString(); art.kategori = Convert.ToInt32(dr["kategori"]); } return(art); }
/// <summary> /// Get a list of artikel for display purposes /// </summary> /// <param name="ident">Identity</param> /// <param name="ArtnrFilter">Artnr or part of..</param> /// <param name="ArtnamnFilter">ArtNamn or part of..</param> /// <returns></returns> // 2016-02-09 KJBO public List <ArtikelCL> getArtList(string ident, string ArtnrFilter, string ArtnamnFilter) { // Create article list List <ArtikelCL> artlist = new List <ArtikelCL>(); // Get reparator CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { ArtikelCL art = new ArtikelCL(); art.ErrCode = -10; art.ErrMessage = "Ogiltigt login"; artlist.Add(art); return(artlist); } // SQL string string sSql = " SELECT a.artnr, a.artnamn, a.lev_id, l.levnamn, a.anm1, a.anm2 " + " FROM artikel a " + " left outer join leverantor l on a.lev_id = l.lev_id " + " where upper(a.artnr) like upper(:artnr) " + " and upper(a.artnamn) like upper(:artnamn) " + " and a.visas = true "; // Add parameter list NxParameterCollection np = new NxParameterCollection(); np.Add("artnr", CCommonFunc.addWildCard(ArtnrFilter)); np.Add("artnamn", CCommonFunc.addWildCard(ArtnamnFilter)); // Init variable string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, np); // Init varible int errCode = -100; // No rows found..... if (errText == "" && dt.Rows.Count == 0) { errText = "Det finns inga artiklar i aktuellt urval "; errCode = 0; } // No rows found or error when retrieving if (errText != "") { ArtikelCL a = new ArtikelCL(); if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } a.ErrCode = errCode; a.ErrMessage = errText; artlist.Add(a); return(artlist); } // Loop rows..... foreach (DataRow dr in dt.Rows) { ArtikelCL a = new ArtikelCL(); a.Artnr = dr["artnr"].ToString(); a.Artnamn = dr["artnamn"].ToString(); a.LevID = dr["lev_id"].ToString(); a.LevNamn = dr["levnamn"].ToString(); a.Anm1 = dr["anm1"].ToString(); a.Anm2 = dr["anm2"].ToString(); artlist.Add(a); } // .. and return list return(artlist); }
/// <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); }
public VentilCL getVentil(string ident, string ventilID, bool validateUser) { VentilCL vr = new VentilCL(); if (validateUser) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { vr.ErrCode = -10; vr.ErrMessage = "Ogiltigt login"; return(vr); } } string sSql = " SELECT v.ventil_id, v.ventilkategori, v.kund_id, v.\"position\", v.fabrikat, v.ventiltyp, v.id_nr, v.pn, v.pn2, v.dn, v.dn2, " + " v.oppningstryck, v.stalldonstyp, v.stalldon_id_nr, v.stalldon_fabrikat, v.stalldon_artnr, v.lagesstallartyp, " + " v.lagesstall_id_nr, v.lagesstall_fabrikat, v.avdelning, v.anlaggningsnr, " + " v.forra_comment, vk.ventilkategori as ventilkategori_namn " + " , plan, rum, v.insideDiameter, v.outsideDiameter " + " FROM ventil v " + " join ventilkategori vk on v.ventilkategori = vk.ventilkat_id " + " where ventil_id = :pVentilID "; NxParameterCollection np = new NxParameterCollection(); np.Add("pVentilID", ventilID); string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, np); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { errText = "Felaktigt ventilID"; errCode = 0; } if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } vr.ErrCode = errCode; vr.ErrMessage = errText; return(vr); } DataRow dr = dt.Rows[0]; vr.VentilID = dr["ventil_id"].ToString(); vr.VentilkatID = Convert.ToInt16(dr["ventilkategori"]); vr.Ventilkategori = dr["ventilkategori_namn"].ToString(); vr.KundID = dr["kund_id"].ToString(); vr.Position = dr["position"].ToString(); vr.Fabrikat = dr["fabrikat"].ToString(); vr.Ventiltyp = dr["ventiltyp"].ToString(); vr.IdNr = dr["id_nr"].ToString(); vr.Pn = dr["pn"].ToString(); vr.Pn2 = dr["pn2"].ToString(); vr.Dn = dr["dn"].ToString(); vr.Dn2 = dr["dn2"].ToString(); if (dr["oppningstryck"] == DBNull.Value) { vr.Oppningstryck = 0; } else { vr.Oppningstryck = Convert.ToDecimal(dr["oppningstryck"]); } vr.Stalldonstyp = dr["stalldonstyp"].ToString(); vr.StalldonIDNr = dr["stalldon_id_nr"].ToString(); vr.StalldonFabrikat = dr["stalldon_fabrikat"].ToString(); vr.StalldonArtnr = dr["stalldon_artnr"].ToString(); vr.Lagesstallartyp = dr["lagesstallartyp"].ToString(); vr.LagesstallIDNr = dr["lagesstall_id_nr"].ToString(); vr.LagesstallFabrikat = dr["lagesstall_fabrikat"].ToString(); vr.Avdelning = dr["avdelning"].ToString(); vr.Plan = dr["plan"].ToString(); vr.Rum = dr["rum"].ToString(); vr.Anlaggningsnr = dr["anlaggningsnr"].ToString(); // 2017-09-25 KJBO if (dr["insideDiameter"] == DBNull.Value) { vr.insideDiameter = 0; } else { vr.insideDiameter = Convert.ToDecimal(dr["insideDiameter"]); } if (dr["outsideDiameter"] == DBNull.Value) { vr.outsideDiameter = 0; } else { vr.outsideDiameter = Convert.ToDecimal(dr["outsideDiameter"]); } vr.ErrCode = 0; vr.ErrMessage = ""; return(vr); }
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)); }
/// <summary> /// This method returns all pictures for one servicerad /// Note that you dont get the actual picture nor the /// pictIdent. Instead you use this method for getting a /// list of available pictures (and also gets the picture /// description). /// After that you have to call GetPicture and download picture /// in turn in order to get each individual picture. /// The reason for this is performance. This method gives /// a fast list of available pictures only. /// </summary> /// <param name="ident"></param> /// <param name="vartOrdernr"></param> /// <param name="radnr"></param> /// <returns></returns> /// 2016-03-11 Pergas AB kjbo public List <PictureCL> getPicturesForServiceRad(string ident, string vartOrdernr, int radnr) { List <PictureCL> pList = new List <PictureCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { PictureCL p = new PictureCL(); p.ErrCode = -10; p.ErrMessage = "Ogiltigt login"; pList.Add(p); return(pList); } string sSql = " SELECT vart_ordernr, radnr, bild_nr, bild, pictDescript, pictSize, pictType, pictCatID " + " FROM servrad_bild " + " where vart_ordernr = :vart_ordernr " + " and radnr = :radnr "; NxParameterCollection np = new NxParameterCollection(); np.Add("vart_ordernr", vartOrdernr); np.Add("radnr", radnr); string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, np); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { errText = "Det finns inga bilder för aktuell servicerad"; errCode = 0; } if (errText != "") { PictureCL p = new PictureCL(); if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } p.ErrCode = errCode; p.ErrMessage = errText; pList.Add(p); return(pList); } foreach (DataRow dr in dt.Rows) { PictureCL p = new PictureCL(); p.ErrCode = 0; p.ErrMessage = ""; p.VartOrdernr = dr["vart_ordernr"].ToString(); p.Radnr = Convert.ToInt32(dr["radnr"]); p.BildNr = Convert.ToInt32(dr["bild_nr"]); p.Description = dr["pictDescript"].ToString(); p.pictSize = Convert.ToInt64(dr["pictSize"]); p.pictType = dr["pictType"].ToString(); p.PictCatID = 0; if (dr["pictCatID"] != DBNull.Value) { p.PictCatID = Convert.ToInt32(dr["pictCatID"]); } pList.Add(p); } return(pList); }
/// <summary> /// Login for the GaskMan application /// Will check tha gasketLevel (will be 5 for a user or 10 for an administrator) /// If the user is MaSa (Mattias Samuelsson) then the gasketLevel will be 10 without /// checking. /// </summary> /// <param name="login"></param> /// <returns>LoginAdm class. Check for errors</returns> /// 2018-08-14 kjbo public LoginAdm GLogin(LoginAdm login) { CReparator cr = new CReparator(); return(cr.GLogin(login)); }
public string login(string AnvID, string pwd) { CReparator cr = new CReparator(); return(cr.login(AnvID, pwd)); }
public List <VentilKategoriCL> getVentilKategoriers(string ident) { List <VentilKategoriCL> vc = new List <VentilKategoriCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { VentilKategoriCL v = new VentilKategoriCL(); v.ErrCode = -10; v.ErrMessage = "Ogiltigt login"; vc.Add(v); return(vc); } string sSql = " SELECT ventilkat_id, ventilkategori " + " FROM ventilkategori " + " order by ventilkategori "; string errText = ""; DataTable dt = cdb.getData(sSql, ref errText); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { errText = "Inga ventilkategorier finns tillgängliga"; errCode = 0; } if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } VentilKategoriCL v = new VentilKategoriCL(); v.ErrCode = errCode; v.ErrMessage = errText; vc.Add(v); return(vc); } foreach (DataRow dr in dt.Rows) { VentilKategoriCL v = new VentilKategoriCL(); v.VentilkatID = Convert.ToInt16(dr["ventilkat_id"]); v.Ventilkategori = dr["ventilkategori"].ToString(); v.ErrCode = 0; v.ErrMessage = ""; vc.Add(v); } return(vc); }
/// <summary> /// General hub for retrieving reservdel /// </summary> /// <param name="ident"></param> /// <param name="VartOrdernr"></param> /// <param name="RadNr"></param> /// <param name="ReservNr"></param> /// <returns>A list of reservdel or error</returns> private List <ReservdelCL> getReservdelGeneral(string ident, string VartOrdernr, int RadNr, int ReservNr) { List <ReservdelCL> reslist = new List <ReservdelCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { ReservdelCL res = new ReservdelCL(); res.ErrCode = -10; res.ErrMessage = "Ogiltigt login"; reslist.Add(res); return(reslist); } // Build sql string depending on parameters. -1 as ReservNr means return all reservdel for one // ServiceRad. string sSql = " select vart_ordernr, radnr, reserv_nr, antal, artnr, artnamn, faktureras, lev_id, enhet " + " , reg, regdat, uppdaterat, uppdat_dat, skriv_nu, getFromCS " + " from reservdel " + " where vart_ordernr = :vart_ordernr " + " and radnr = :radnr "; if (ReservNr > -1) { sSql += " and reserv_nr = :reserv_nr "; } // Create parameters NxParameterCollection np = new NxParameterCollection(); np.Add("vart_ordernr", VartOrdernr); np.Add("radnr", RadNr); if (ReservNr > -1) { np.Add("reserv_nr", ReservNr); } string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, np); int errCode = -100; if (errText == "" && dt.Rows.Count == 0) { if (ReservNr == -1) { errText = "Det finns inga reservdelar i aktuellt urval "; } else { errText = "Reservdel med ID VartOrdernr : " + VartOrdernr + ", RadNr : " + RadNr.ToString() + ", ReservNr : " + ReservNr.ToString() + " finns ej."; } errCode = 0; } if (errText != "") { ReservdelCL res = new ReservdelCL(); if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } res.ErrCode = errCode; res.ErrMessage = errText; reslist.Add(res); return(reslist); } foreach (DataRow dr in dt.Rows) { ReservdelCL res = new ReservdelCL(); res.Antal = 1; res.Faktureras = true; res.getFromCS = false; res.VartOrdernr = dr["vart_ordernr"].ToString(); res.Radnr = Convert.ToInt32(dr["radnr"]); res.ReservNr = Convert.ToInt32(dr["reserv_nr"]); if (dr["antal"] != DBNull.Value) { res.Antal = Convert.ToDecimal(dr["antal"]); } res.Artnr = dr["artnr"].ToString(); res.ArtNamn = dr["artnamn"].ToString(); if (dr["faktureras"] != DBNull.Value) { res.Faktureras = Convert.ToBoolean(dr["faktureras"]); } if (dr["getFromCS"] != DBNull.Value) { res.getFromCS = Convert.ToBoolean(dr["getFromCS"]); } res.LevID = dr["lev_id"].ToString(); res.Enhet = dr["enhet"].ToString(); reslist.Add(res); } return(reslist); }
public ReparatorCL getReparator(string ident) { CReparator cr = new CReparator(); return(cr.getReparator(ident)); }
/// <summary> /// Deletes a reservdel identified by primary key /// </summary> /// <param name="ident">identity string</param> /// <param name="reservdel">One valid reservdel</param> /// <returns>Empty string if OK otherwise error message</returns> public string deleteReservdel(string ident, ReservdelCL reservdel) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); ReservdelCL retRes = new ReservdelCL(); if (identOK == -1) { return("Ogiltigt login"); } // 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") { return("Order är stängd för inmatning"); } else { return(sOpen); } } } int exists = validateReservdelExists(reservdel); if (exists == 0) { return("Reservdel finns ej"); } string sSql = ""; sSql = getDeleteSQL(); NxParameterCollection np = new NxParameterCollection(); setParameters(np, reservdel, ""); string errText = ""; AddOrDeleteReservdelPyr(reservdel, true, ref errText); if (errText == "") { cdb.updateData(sSql, ref errText, np); } if (errText != "") { if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } return(errText); } return(""); }
/// <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) { CReparator cr = new CReparator(); return(cr.getReparatorsForServiceHuvud(ident, vartOrdernr)); }
/// <summary> /// Returns all standardtext /// </summary> /// <param name="ident"></param> /// <returns></returns> public List <StandardTextCL> getAllSttText(string ident) { CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); List <StandardTextCL> stList = new List <StandardTextCL>(); if (identOK == -1) { StandardTextCL st = new StandardTextCL(); st.ErrCode = -10; st.ErrMessage = "Ogiltigt login"; st.StdTextID = ""; st.Text = ""; st.Kategori = 0; st.KategoriBeskr = ""; st.ventilkatID = 0; stList.Add(st); return(stList); } string sSql = " SELECT stdtext_id, \"text\", kategori, ventilkategori " + " FROM standardtext "; string errSt = ""; DataTable dt = cdb.getData(sSql, ref errSt); if (errSt != "") { if (errSt.Length > 2000) { errSt = errSt.Substring(1, 2000); } StandardTextCL st = new StandardTextCL(); st.StdTextID = ""; st.Text = ""; st.Kategori = 0; st.KategoriBeskr = ""; st.ventilkatID = 0; st.ErrCode = -100; st.ErrMessage = "Databasfel : " + errSt; stList.Add(st); return(stList); } foreach (DataRow dr in dt.Rows) { int kategori = Convert.ToInt32(dr["kategori"]); StandardTextCL st = new StandardTextCL(); st.StdTextID = dr["stdtext_id"].ToString(); st.Text = dr["text"].ToString(); st.Kategori = kategori; st.KategoriBeskr = getKatName(kategori); st.ventilkatID = 0; if (dr["ventilkategori"] == DBNull.Value) { st.ventilkatID = 0; } else { st.ventilkatID = Convert.ToInt32(dr["ventilkategori"]); } st.ErrCode = 0; st.ErrMessage = ""; stList.Add(st); } return(stList); }
/// <summary> /// Get all available repKat for /// timeregistration version 2 /// </summary> /// <param name="ident"></param> /// <returns></returns> /// 2017-03-14 KJBO public List <RepKatCL> getRepKat(string ident) { CReparator cr = new CReparator(); return(cr.getRepKat(ident)); }