public string AddReservdelPyr(ReservdelCL r) { string result = ""; AddOrDeleteReservdelPyr(r, false, ref result); return(result); }
private void addToReservdelPyr(ReservdelCL r, ref string error) { string sSql = " update reservdelPyr " + " set antal = antal + :antal " + " where vart_ordernr = :vart_ordernr " + " and artnr = :artnr " + " and artnamn = :artnamn " + " and PyramidExport is null "; error = ""; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", r.VartOrdernr); pc.Add("artnr", r.Artnr); pc.Add("antal", r.Antal); pc.Add("artnamn", r.ArtNamn); int updated = cdb.updateData(sSql, ref error, pc); if (error != "") { return; } if (updated < 1) { sSql = " insert into reservdelPyr(vart_ordernr, artnr, artnamn, antal) " + " values (:vart_ordernr, :artnr, :artnamn, :antal) "; cdb.updateData(sSql, ref error, pc); } return; }
private void setParameters(NxParameterCollection np, ReservdelCL r, string AnvID) { DateTime dtAncient = Convert.ToDateTime("2000-01-01"); string sVar = ""; np.Add("antal", r.Antal); sVar = r.ArtNamn; np.Add("artnamn", sVar); sVar = r.Artnr; np.Add("artnr", sVar); sVar = standardizeUnit(r.Enhet); np.Add("enhet", sVar); np.Add("faktureras", r.Faktureras); np.Add("getFromCS", r.getFromCS); sVar = r.LevID; np.Add("lev_id", sVar); sVar = AnvID; np.Add("reg", sVar); np.Add("regdat", System.DateTime.Now); np.Add("skriv_nu", true); np.Add("uppdat_dat", System.DateTime.Now); np.Add("uppdaterat", AnvID); sVar = r.VartOrdernr; np.Add("vart_ordernr", sVar); np.Add("radnr", r.Radnr); np.Add("reserv_nr", r.ReservNr); np.Add("pyramidExport", dtAncient); }
private OrderArtCL checkoutOrderArt(string ident, ReservdelCL res, Decimal coNumber) { ServHuvSrc.COrderArt coa = new ServHuvSrc.COrderArt(); OrderArtCL oa = new OrderArtCL(); oa.Artnr = res.Artnr; oa.VartOrdernr = res.VartOrdernr; oa.CoAntal = coNumber; oa = coa.checkoutOrderArt(ident, oa); return(oa); }
private string resetReservdel() { string result = ""; string sSqlDelete = " delete from reservdelPyr where vart_ordernr = :vart_ordernr "; NxParameterCollection pDelete = new NxParameterCollection(); pDelete.Add("vart_ordernr", vart_ordernr); cdb.updateData(sSqlDelete, ref result, pDelete); if (result != "") { return(result); } string sSqlSelect = " select r.vart_ordernr, r.radnr, r.reserv_nr, coalesce(r.antal,0) antal " + " from reservdel r " + " where r.vart_ordernr = :vart_ordernr "; NxParameterCollection pcSelect = new NxParameterCollection(); pcSelect.Add("vart_ordernr", vart_ordernr); DataTable dt = cdb.getData(sSqlSelect, ref result, pcSelect); if (result != "") { return(result); } CReservdel cres = new CReservdel(); foreach (DataRow dr in dt.Rows) { if (Convert.ToInt32(dr["antal"]) == 0) { continue; } string vart_ordernr = dr["vart_ordernr"].ToString(); int radnr = Convert.ToInt32(dr["radnr"]); int reserv_nr = Convert.ToInt32(dr["reserv_nr"]); ReservdelCL res = new ReservdelCL(); res.VartOrdernr = vart_ordernr; res.Radnr = radnr; res.ReservNr = reserv_nr; result = cres.AddReservdelPyr(res); if (result != "") { return(result); } } return(result); }
private int validateServiceRow(ReservdelCL r) { string sSql = " select count(*) as antal " + " from servicerad " + " where vart_ordernr = :vart_ordernr " + " and radnr = :radnr "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", r.VartOrdernr); pc.Add("radnr", r.Radnr); string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, pc); return(Convert.ToInt16(dt.Rows[0][0])); }
/// <summary> /// Count the number of this article on this order /// </summary> /// <param name="r"></param> /// <param name="err"></param> /// <returns></returns> // 2018-04-30 Indentive AB Kjbo private Decimal countArtOnOrder(ReservdelCL r, ref String err) { String sSql = "select coalesce(sum(antal),0) sum_antal " + " from reservdel " + " where vart_ordernr = :vart_ordernr " + " and artnr = :artnr "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", r.VartOrdernr); pc.Add("artnr", r.Artnr); err = ""; DataTable dt = cdb.getData(sSql, ref err, pc); if (err != "") { return(-1); } return(Convert.ToDecimal(dt.Rows[0]["sum_antal"])); }
private int getNextReservNr(ReservdelCL r) { string sSql = " SELECT coalesce(max(reserv_nr),0) as maxRow " + " from reservdel " + " where vart_ordernr = :vart_ordernr " + " and radnr = :radnr "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", r.VartOrdernr); pc.Add("radnr", r.Radnr); string err = ""; DataTable dt = cdb.getData(sSql, ref err, pc); int maxrow = Convert.ToInt32(dt.Rows[0][0]); maxrow++; return(maxrow); }
private Decimal getNotExportedNotUsedAnymore(ReservdelCL r, ref string error) { string sSql = " SELECT coalesce(sum(antal),0) sumAntal " + " FROM reservdelPyr " + " where vart_ordernr = :vart_ordernr " + " and radnr = :radnr " + " and reserv_nr = :reserv_nr "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", r.VartOrdernr); pc.Add("radnr", r.Radnr); pc.Add("reserv_nr", r.ReservNr); error = ""; DataTable dt = cdb.getData(sSql, ref error, pc); if (error != "") { return(0); } return(Convert.ToDecimal(dt.Rows[0]["sumAntal"])); }
private void AddOrDeleteReservdelPyr(ReservdelCL r, bool delete, ref string error) { string sSql = " select artnr, coalesce(artnamn,'') artnamn, antal " + " from reservdel " + " where vart_ordernr = :vart_ordernr " + " and radnr = :radnr " + " and reserv_nr = :reserv_nr "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("vart_ordernr", r.VartOrdernr); pc.Add("radnr", r.Radnr); pc.Add("reserv_nr", r.ReservNr); error = ""; DataTable dt = cdb.getData(sSql, ref error, pc); if (error != "") { return; } if (dt.Rows.Count == 1) { DataRow dr = dt.Rows[0]; ReservdelCL res = new ReservdelCL(); res.VartOrdernr = r.VartOrdernr; res.Radnr = r.Radnr; res.ReservNr = r.ReservNr; res.Artnr = dr["artnr"].ToString(); res.ArtNamn = dr["artnamn"].ToString(); res.Antal = Convert.ToDecimal(dr["antal"]); if (delete) { res.Antal = -res.Antal; } if (res.Antal > 0.001M || res.Antal < -0.001M) { addToReservdelPyr(res, ref error); } } }
private int validateArtikelExists(ReservdelCL r) { String sSql = " SELECT count(artnr) count_artikel " + " FROM artikel " + " where artnr = :artnr " + " and visas = true "; NxParameterCollection pc = new NxParameterCollection(); pc.Add("artnr", r.Artnr); string err = ""; DataTable dt = cdb.getData(sSql, ref err, pc); if (err != "") { return(-1); } if (dt.Rows.Count == 0) { return(0); } return(Convert.ToInt16(dt.Rows[0]["count_artikel"])); }
private int validateReservdel(ReservdelCL r) { if (validateServiceRow(r) == 0) { return(-1); } // If this is supposed to point to an existing // reservdel then check that this reservdel exists // 2018-08-27 KJBO if (r.ReservNr != 0) { if (validateReservdelExists(r) == 0) { return(-4); } } if (isDotArticle(r.Artnr)) { if (r.ArtNamn == null || r.ArtNamn == "") { return(-3); } return(1); } int rc = validateArtikelExists(r); if (rc == -1) { return(-10); } if (rc == 0) { return(-2); } return(1); }
/// <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(""); }
private ErrorCL checkOutIfNeeded(string ident, ReservdelCL res) { ErrorCL err = new ErrorCL(); err.ErrCode = 0; err.ErrMessage = ""; Decimal onOrder = 0; Decimal outChecked = 0; if (isDotArticle(res.Artnr)) { return(err); } string errStr = ""; int kategori = getArtKat(res.Artnr, ref errStr); if (kategori != 1) { return(err); } if (errStr == "") { onOrder = countArtOnOrder(res, ref errStr); } if (errStr == "") { outChecked = countOutchecked(res, ref errStr); } if (errStr != "") { err.ErrMessage = errStr; if (err.ErrMessage != "") { err.ErrCode = 13101; } return(err); } if (onOrder > outChecked) { OrderArtCL oaCL = checkoutOrderArt(ident, res, onOrder - outChecked); if (oaCL.ErrCode != 0) { err.ErrMessage = oaCL.ErrMessage; err.ErrCode = oaCL.ErrCode; return(err); } // Added 2018-08-27. Reservdel shall now be confirmed in Pyramid if (!res.getFromCS) { List <ArticleCommit.CArticleCommitData> acList = new List <ArticleCommit.CArticleCommitData>(); ArticleCommit.CArticleCommitData ac = new ArticleCommit.CArticleCommitData(); ac.articleNumber = res.Artnr; ac.orderNumber = res.VartOrdernr; ac.quantity = onOrder - outChecked; ac.orderArtID = oaCL.OrderArtId; acList.Add(ac); ArticleCommit.CArticleCommit acCommit = new ArticleCommit.CArticleCommit(); err = acCommit.generateFile(acList, "1"); //ac.sav } // Removed 2018-08-27 and replaced by the code above. //if (!res.getFromCS) //{ // CompactStore.updateOAStorageData data = new CompactStore.updateOAStorageData(); // data.orderArtId = oaCL.OrderArtId; // //data.stockToSend = Convert.ToInt32(oaCL.OrdAntal); // data.stockToSend = res.Antal; // data.error = ""; // CompactStore.CCompactStore cs = new CompactStore.CCompactStore(); // string result = cs.updateDbWithoutSend(data, "x"); //} } return(err); }
/// <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> /// 2016-09-30 KJBO public string deleteReservdel(string ident, ReservdelCL reservdel) { CReservdel cr = new CReservdel(); return(cr.deleteReservdel(ident, reservdel)); }
/// <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); }
/// <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 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) { CReservdel cr = new CReservdel(); return(cr.saveReservdel(ident, reservdel)); }