Пример #1
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]);
        }
Пример #2
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]);
        }
Пример #3
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]);
        }
Пример #4
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]);
        }
Пример #5
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);
        }
Пример #6
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]);
        }
Пример #7
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));
        }
Пример #8
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]);
        }