示例#1
0
        /// <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));
        }
示例#2
0
        /// <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);
        }
示例#3
0
        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);
        }
示例#4
0
        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;
        }
示例#5
0
        /// <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);
        }
示例#7
0
        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;
        }
示例#9
0
        /// <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]);
        }
示例#10
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);
        }
示例#11
0
        /// <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));
        }
示例#12
0
        /// <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]);
        }
示例#13
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));
        }
示例#14
0
        /// <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]);
        }
示例#15
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);
        }
示例#16
0
        /// <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));
        }
示例#17
0
        /// <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);
        }
示例#18
0
        /// <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]);
        }
示例#19
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);
        }
示例#20
0
        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));
        }
示例#21
0
        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]);
        }
示例#22
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]);
        }
示例#23
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);
        }
示例#24
0
        /// <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]);
        }
示例#25
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);
        }