Beispiel #1
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        //CurrentUser.UserGroup.MaxStaticStocktake
        NewStocktakeRequest request = new NewStocktakeRequest();

        request.IsStatic = (ddlIsStatic.SelectedIndex == 0);
        request.Details  = new List <NewStocktakeDetails>();
        List <View_StocktakeDetails> detailsList = this.Details;

        for (int i = 0; i < detailsList.Count; i++)
        {
            View_StocktakeDetails item = detailsList[i];
            item.Description = ((TextBox)gvRequestParts.Rows[i].Cells[0].FindControl("txtComments")).Text;
            //item.StocktakeType = Convert.ToInt32(((DropDownList)gvRequestParts.Rows[i].Cells[5].FindControl("ddlType")).SelectedValue);
            //item.Priority = Convert.ToInt32(((DropDownList)gvRequestParts.Rows[i].Cells[6].FindControl("ddlDetailPriority")).SelectedValue);

            NewStocktakeDetails details = new NewStocktakeDetails();
            details.PartID            = item.PartID.ToString();
            details.StocktakeTypeID   = item.StocktakeType.Value;
            details.StocktakePriority = item.Priority.Value;
            request.Details.Add(details);
        }
        this.Details = detailsList;
        StocktakeRequest newRequest = Service.RequestStocktake(request);

        RequestID = newRequest.RequestID;
        this.BindRequest(newRequest);
        this.BindRequestDetails();
    }
Beispiel #2
0
        public StocktakeRequest CreateStocktakeRequest(NewStocktakeRequest request, DbTransaction transaction)
        {
            Type[]        types  = new Type[] { typeof(NewStocktakeDetails) };
            XmlSerializer xs     = new XmlSerializer(typeof(NewStocktakeRequest), types);
            string        reqStr = string.Empty;

            using (StringWriter sw = new StringWriter())
            {
                xs.Serialize(sw, request);
                reqStr = sw.ToString();
            }

            DbParameter paramXml   = Context.CreateDbParameter("Request", System.Data.DbType.Xml, reqStr, ParameterDirection.Input);
            DbParameter paramReqId = Context.CreateDbParameter("RequestID", System.Data.DbType.Int64, DBNull.Value, ParameterDirection.Output);

            if (transaction != null)
            {
                Context.ExecuteNonQuery("sp_CreateRequest", CommandType.StoredProcedure, transaction, true, paramXml, paramReqId);
            }
            else
            {
                Context.ExecuteNonQuery("sp_CreateRequest", CommandType.StoredProcedure, paramXml, paramReqId);
            }

            StocktakeRequest newRequest = new StocktakeRequest {
                RequestID = Convert.ToInt64(paramReqId.Value)
            };

            return(newRequest);
        }
Beispiel #3
0
    protected void Toolbar1_ButtonClicked(object sender, ButtonEventArgs e)
    {
        switch (e.CommandName)
        {
        case "save":
            valiDetails.Validate();
            if (!valiDetails.IsValid)
            {
                return;
            }
            RefreshRequestedDetails();
            if (RequestID != null)    //update
            {
                DropDownList        ddlIsStatic = dlRequest.Items[0].FindControl("ddlIsStatic") as DropDownList;
                NewStocktakeRequest request     = new NewStocktakeRequest {
                    RequestID = RequestID, RequestBy = CurrentUser.UserInfo.UserID, IsStatic = (ddlIsStatic.SelectedIndex == 0)
                };
                Service.UpdateRequest(request, RemovedDetails.Select(d => d.PartID.Value).ToList(), RequestedDetails);
            }
            else
            {
                if (dlRequest.Items.Count != 0)
                {
                    NewStocktakeRequest request = BuildRequest();
                    StocktakeRequest    req     = Service.RequestStocktake(BuildRequest());
                    RequestID = req.RequestID;
                }
                else
                {
                    Response.Write("<script>alert('请选择零件');</script>");
                    return;
                }
            }
            ClearCache();
            BindData();
            CurrentUser.RefreshUserProfile();
            CacheHelper.RemoveCache(Consts.CACHE_KEY_USER_GROUPS);

            ScriptManager.RegisterStartupScript(this, this.GetType(), "closeScript", "closeDialogOnSave();", true);
            break;

        case "SaveAsTemplate":
            break;

        case "query":
            SelectedDetails = null;
            BindData();
            break;

        case "return":
            Response.Redirect("StocktakeReqList.aspx");
            break;

        default:
            break;
        }
    }
Beispiel #4
0
        public void UpdateRequest(NewStocktakeRequest request, List <int> removedDetailsList, List <View_StocktakeDetails> changedDetails)
        {
            StocktakeDetailBLL bll = new StocktakeDetailBLL(Context);

            List <View_StocktakeDetails> detailsList = bll.QueryDetails(new View_StocktakeDetails {
                RequestID = request.RequestID
            }, null, null).ToList();

            //removed items
            for (int i = detailsList.Count - 1; i >= 0; i--)
            {
                if (removedDetailsList.Contains(detailsList[i].PartID.Value))
                {
                    detailsList.RemoveAt(i);
                }
            }
            //changed items
            foreach (var item in changedDetails)
            {
                View_StocktakeDetails detail = detailsList.Find(d => d.PartID == item.PartID);
                if (detail != null)
                {
                    detail.StocktakeType  = item.StocktakeType;
                    detail.Priority       = item.Priority;
                    detail.NotifyComments = item.NotifyComments;
                    detail.DetailsDesc    = item.DetailsDesc;
                }
                else
                {
                    detailsList.Add(item);
                }
            }

            if (detailsList != null)
            {
                request.Details = detailsList.Select(d => new NewStocktakeDetails {
                    PartID = d.PartID.ToString(), StocktakePriority = d.Priority.Value, Description = d.DetailsDesc, StocktakeTypeID = d.StocktakeType.Value
                }).ToList();
            }
            Type[]        types  = new Type[] { typeof(NewStocktakeDetails) };
            XmlSerializer xs     = new XmlSerializer(typeof(NewStocktakeRequest), types);
            string        reqStr = string.Empty;

            using (StringWriter sw = new StringWriter())
            {
                xs.Serialize(sw, request);
                reqStr = sw.ToString();
            }
            DbParameter paramXml = Context.CreateDbParameter("Request", System.Data.DbType.Xml, reqStr, ParameterDirection.Input);

            Context.ExecuteNonQuery("sp_UpdateRequest", CommandType.StoredProcedure, paramXml);
        }
Beispiel #5
0
        public StocktakeRequest CreateCycleCount(User user, List <View_StocktakeDetails> deletedDetails, List <View_StocktakeDetails> updatedDetails)
        {
            PartBLL partBll = new PartBLL();
            IQueryable <ViewPart> partQry = partBll.GetPartsByPlantToCycleCount();//partBll.GetPartsToCycleCount();
            NewStocktakeRequest   request = new NewStocktakeRequest {
                IsStatic = true, IsCycleCount = true
            };

            request.RequestBy = user.UserID;

            request.Details = new List <NewStocktakeDetails>();
            foreach (var item in partQry)
            {
                NewStocktakeDetails details = new NewStocktakeDetails
                {
                    PartID            = item.PartID.ToString(),
                    StocktakeTypeID   = 90,
                    StocktakePriority = 1
                };
                View_StocktakeDetails deletedItem = deletedDetails.Find(d => d.PartID == int.Parse(details.PartID));
                if (deletedItem == null)
                {
                    View_StocktakeDetails updatedItem = updatedDetails.Find(d => d.PartID == int.Parse(details.PartID));
                    if (updatedItem != null)
                    {
                        details.Description = updatedItem.DetailsDesc;
                    }
                    request.Details.Add(details);
                }
            }
            StocktakeRequest result       = CreateStocktakeRequest(request);
            BizParamsBLL     bizParamsBLL = new BizParamsBLL();
            BizParams        param        = bizParamsBLL.GetBizParamByKey(new BizParams {
                ParamKey = Consts.BIZ_PARAMS_CYCLECOUNTED
            });

            param.ParamValue = "True";
            bizParamsBLL.UpdateBizParams(param);

            BizParams paramCycledTimes = bizParamsBLL.GetBizParamByKey(new BizParams {
                ParamKey = Consts.BIZ_PARAMS_CYCLEDTIMES
            });
            int cycledTimes = int.Parse(paramCycledTimes.ParamValue);

            paramCycledTimes.ParamValue = (cycledTimes + 1).ToString();
            bizParamsBLL.UpdateBizParams(paramCycledTimes);
            return(result);
        }
Beispiel #6
0
        public StocktakeRequest CreateStocktakeRequest(NewStocktakeRequest request, bool retrieveNew)
        {
            ///TO DO:validate stocktake upper bound of request user
            UserBLL userBLL   = new UserBLL();
            User    requestBy = userBLL.GetUserInfo(new User {
                UserID = request.RequestBy.Value
            });

            if (request.IsStatic && request.Details.Count + requestBy.UserGroup.CurrentStaticStocktake > requestBy.UserGroup.MaxStaticStocktake)
            {
            }
            else
            {
                if (!request.IsStatic && request.Details.Count + requestBy.UserGroup.CurrentDynamicStocktake > requestBy.UserGroup.MaxDynamicStocktake)
                {
                }
            }

            Type[]        types  = new Type[] { typeof(NewStocktakeDetails) };
            XmlSerializer xs     = new XmlSerializer(typeof(NewStocktakeRequest), types);
            string        reqStr = string.Empty;

            using (StringWriter sw = new StringWriter())
            {
                xs.Serialize(sw, request);
                reqStr = sw.ToString();
            }

            DbParameter paramXml   = Context.CreateDbParameter("Request", System.Data.DbType.Xml, reqStr, ParameterDirection.Input);
            DbParameter paramReqId = Context.CreateDbParameter("RequestID", System.Data.DbType.Int64, DBNull.Value, ParameterDirection.Output);

            Context.ExecuteNonQuery("sp_CreateRequest", CommandType.StoredProcedure, paramXml, paramReqId);

            if (retrieveNew)
            {
                StocktakeRequest newRequest = new StocktakeRequest {
                    RequestID = Convert.ToInt64(paramReqId.Value)
                };
                return(this.GetRequest(newRequest));
            }
            request.RequestID = Convert.ToInt64(paramReqId.Value);
            return(request.ConvertToRequest());
        }
Beispiel #7
0
    private void Save()
    {
        //CurrentUser.UserGroup.MaxStaticStocktake
        NewStocktakeRequest request = new NewStocktakeRequest();

        request.RequestBy    = CurrentUser.UserInfo.UserID;
        request.IsStatic     = (ddlIsStatic.SelectedIndex == 0);
        request.IsCycleCount = false;
        request.Details      = new List <NewStocktakeDetails>();
        List <View_StocktakeDetails> detailsList = this.Details;

        for (int i = 0; i < detailsList.Count; i++)
        {
            View_StocktakeDetails item = detailsList[i];
            item.Description = ((TextBox)gvRequestParts.Rows[i].Cells[0].FindControl("txtComments")).Text;
            //item.StocktakeType = Convert.ToInt32(((DropDownList)gvRequestParts.Rows[i].Cells[5].FindControl("ddlType")).SelectedValue);
            //item.Priority = Convert.ToInt32(((DropDownList)gvRequestParts.Rows[i].Cells[6].FindControl("ddlDetailPriority")).SelectedValue);

            NewStocktakeDetails details = new NewStocktakeDetails();
            details.PartID            = item.PartID.ToString();
            details.StocktakeTypeID   = item.StocktakeType.Value;
            details.StocktakePriority = item.Priority.Value;
            details.Description       = item.Description;
            request.Details.Add(details);
        }
        this.Details = detailsList;
        if (RequestID == null)//create
        {
            StocktakeRequest newRequest = Service.RequestStocktake(request);
            RequestID = newRequest.RequestID;
            this.BindRequest(newRequest);
            this.BindRequestDetails();
        }
        else//update
        {
            request.RequestID = this.RequestID;
            Service.UpdateStocktakeRequest(request);
        }
    }
Beispiel #8
0
    private NewStocktakeRequest BuildRequest()
    {
        NewStocktakeRequest request = new NewStocktakeRequest();

        request.RequestBy = CurrentUser.UserInfo.UserID;
        DropDownList ddlIsStatic = dlRequest.Items[0].FindControl("ddlIsStatic") as DropDownList;

        request.IsStatic     = (ddlIsStatic.SelectedIndex == 0);
        request.IsCycleCount = false;
        request.Details      = (from d in RequestedDetails
                                select new NewStocktakeDetails
        {
            PartID = d.PartID.ToString(),
            StocktakeTypeID = d.StocktakeType.Value,
            StocktakePriority = d.Priority.Value,
            Description = d.DetailsDesc,
            PreDynamicNoticeCode = d.PreDynamicNoticeCode,
            PreDynamicNotiTime = d.PreDynamicNotiTime,
            PreStaticNoticeCode = d.PreStaticNoticeCode,
            PreStaticNotiTime = d.PreStaticNotiTime
        }).ToList();
        return(request);
    }
Beispiel #9
0
 public void UpdateStocktakeRequest(NewStocktakeRequest request)
 {
     Channel.UpdateStocktakeRequest(request);
 }
Beispiel #10
0
    protected void ucFileUpload_Upload(object sender, EventArgs e)
    {
        UploadEventArgs ue        = e as UploadEventArgs;
        DataTable       dtDetails = ue.ContentTable;

        dtDetails.DefaultView.Sort = "零件号";
        dtDetails = dtDetails.DefaultView.ToTable();
        bool            isValid  = true;
        List <ViewPart> partList = new List <ViewPart>();

        //get part by code, plant, duns
        //for (int i = 0; i < dtDetails.Rows.Count; i++)
        //{
        //    ViewPart tmpPart = new ViewPart
        //    {
        //        PlantCode = dtDetails.Rows[i]["工厂代码"].ToString(),
        //        DUNS = dtDetails.Rows[i]["供应商DUNS"].ToString(),
        //        PartCode = dtDetails.Rows[i]["零件号"].ToString()
        //    };
        //    if (!partList.Exists(p => string.Equals(p.PartCode , tmpPart.PartCode, StringComparison.OrdinalIgnoreCase) && string.Equals(p.PlantCode ,tmpPart.PlantCode , StringComparison.OrdinalIgnoreCase)&& string.Equals(p.DUNS ,tmpPart.DUNS, StringComparison.OrdinalIgnoreCase)))
        //    {
        //        partList.Add(tmpPart);
        //    }
        //}

        List <View_StocktakeDetails> detailsList = new List <View_StocktakeDetails>();

        for (int i = 0; i < dtDetails.Rows.Count; i++)
        {
            bool hasError = false;
            View_StocktakeDetails details = new View_StocktakeDetails
            {
                RowNumber     = int.Parse(dtDetails.Rows[i]["序号"].ToString()),
                PartCode      = dtDetails.Rows[i]["零件号"].ToString(),
                DUNS          = dtDetails.Rows[i]["供应商DUNS"].ToString(),
                PartPlantCode = dtDetails.Rows[i]["工厂代码"].ToString(),
                TypeName      = dtDetails.Rows[i]["申请类别"].ToString(),
                PriorityName  = dtDetails.Rows[i]["紧急程度"].ToString(),
                Description   = dtDetails.Rows[i]["备注"].ToString()
            };
            string msg;
            if (i % 5000 == 0)
            {
                string startCode = details.PartCode;
                int    end       = i + 4999;
                if (end >= dtDetails.Rows.Count)
                {
                    end = dtDetails.Rows.Count - 1;
                }
                string endCode = dtDetails.Rows[end]["零件号"].ToString();
                partList = Service.QueryPartCodeScope(null, startCode, endCode);
            }
            ViewPart part = partList.FirstOrDefault(p => string.Equals(p.PartCode, details.PartCode, StringComparison.OrdinalIgnoreCase) && string.Equals(p.PlantCode, details.PartPlantCode, StringComparison.OrdinalIgnoreCase) && string.Equals(p.DUNS, details.DUNS, StringComparison.OrdinalIgnoreCase));
            if (part == null)//part is invalid
            {
                msg = string.Format("第{0}行,该零件不存在", i + 2);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.PartID = part.PartID;
            }
            StocktakePriority priority = Priorities.FirstOrDefault(p => string.Equals(p.PriorityName, details.PriorityName, StringComparison.OrdinalIgnoreCase));
            if (priority == null)
            {
                msg = string.Format("第{0}行,紧急程度信息非法", i + 2);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.Priority = priority.PriorityID;
            }
            StocktakeType type = StocktakeTypes.FirstOrDefault(t => string.Equals(t.TypeName, details.TypeName, StringComparison.OrdinalIgnoreCase));
            if (type == null)
            {
                msg = string.Format("第{0}行,申请类别信息非法", i + 2);
                UCFileUpload1.AddErrorInfo(msg);
                hasError = true;
            }
            else
            {
                details.StocktakeType = type.TypeID;
            }
            if (!hasError)
            {
                if (detailsList.Exists(d => string.Equals(d.TypeName, details.TypeName, StringComparison.OrdinalIgnoreCase) && string.Equals(d.PriorityName, details.PriorityName, StringComparison.OrdinalIgnoreCase) && string.Equals(d.PartPlantCode, details.PartPlantCode, StringComparison.OrdinalIgnoreCase) && string.Equals(d.DUNS, details.DUNS, StringComparison.OrdinalIgnoreCase) && string.Equals(d.PartCode, details.PartCode, StringComparison.OrdinalIgnoreCase)))
                {
                    msg = string.Format("第{0}行,数据重复", i + 2);
                    UCFileUpload1.AddErrorInfo(msg);
                    hasError = true;
                }
                else
                {
                    detailsList.Add(details);
                }
            }
            isValid = isValid && !hasError;
        }

        if (isValid)
        {
            NewStocktakeRequest newRequest = new NewStocktakeRequest
            {
                IsStatic     = (rblIsStatic.SelectedIndex == 1),
                RequestBy    = CurrentUser.UserInfo.UserID,
                IsCycleCount = false,
                Details      = (from d in detailsList
                                select new NewStocktakeDetails
                {
                    PartID = d.PartID.ToString(),
                    StocktakePriority = d.Priority.Value,
                    StocktakeTypeID = d.StocktakeType.Value,
                    Description = d.Description
                }).ToList()
            };
            int currentDynAmount = 0;
            int currentStAmount  = 0;
            foreach (var item in UserGroups)
            {
                currentDynAmount += item.CurrentDynamicStocktake ?? 0;
                currentStAmount  += item.CurrentStaticStocktake ?? 0;
            }
            int maxUserCount;
            int currentCount;
            int maxCount;
            if (!newRequest.IsStatic)
            {
                BizParams param = BizParamsList.Find(p => p.ParamKey == "MaxDynamic");
                maxCount     = int.Parse(param.ParamValue);
                maxUserCount = CurrentUser.UserInfo.UserGroup.MaxDynamicStocktake ?? 0;
                currentCount = CurrentUser.UserInfo.UserGroup.CurrentDynamicStocktake.Value;
                int dynOverflowAmount = currentCount + newRequest.Details.Count - maxUserCount;
                if (dynOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过当前用户组动态盘点上限" + dynOverflowAmount + "个')", true);
                    return;
                }
                dynOverflowAmount = currentDynAmount + newRequest.Details.Count - maxCount;
                if (dynOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过动态盘点总数上限" + dynOverflowAmount + "个')", true);
                    return;
                }
            }

            if (newRequest.IsStatic)
            {
                BizParams param = BizParamsList.Find(p => p.ParamKey == "MaxStatic");
                maxCount     = int.Parse(param.ParamValue);
                maxUserCount = CurrentUser.UserInfo.UserGroup.MaxStaticStocktake.Value;

                currentCount = CurrentUser.UserInfo.UserGroup.CurrentStaticStocktake.Value;
                int stOverflowAmount = currentCount + newRequest.Details.Count - maxUserCount;
                if (stOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过当前用户组静态盘点上限" + stOverflowAmount + "个')", true);
                    return;
                }

                stOverflowAmount = currentStAmount + newRequest.Details.Count - maxCount;
                if (stOverflowAmount > 0)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "maxOverflow", "alert('超过静态盘点总数上限" + stOverflowAmount + "个')", true);
                    return;
                }
            }
            //fill in items
            StocktakeRequest request = Service.RequestStocktake(newRequest);
            BindDataControl(gvResult, detailsList);
            CurrentUser.RefreshUserProfile();
            CacheHelper.RemoveCache(Consts.CACHE_KEY_USER_GROUPS);
            //show information
            this.UCFileUpload1.AddSuccessInfo("盘点申请成功,申请单号" + request.RequestNumber, string.Empty, string.Empty);
        }
    }
Beispiel #11
0
 public void UpdateRequest(NewStocktakeRequest request, List <int> removedDetailsList, List <View_StocktakeDetails> changedDetails)
 {
     Channel.UpdateRequest(request, removedDetailsList, changedDetails);
 }
Beispiel #12
0
        public List <StocktakeRequest> CreateCycleCountByPlant(User user)
        {
            PlantBLL     plantBLL = new PlantBLL();
            List <Plant> plants   = plantBLL.GetPlants();
            PartBLL      partBll  = new PartBLL();

            List <ViewPart> partList = partBll.GetPartsByPlantToCycleCount().ToList();//GetPartsToCycleCount().ToList();
            Dictionary <int, List <ViewPart> > dictDetails = new Dictionary <int, List <ViewPart> >();

            foreach (var item in plants)
            {
                int             plantID      = item.PlantID;
                List <ViewPart> partsByPlant = partList.Where(p => p.PlantID == plantID).ToList();
                if (partsByPlant != null && partsByPlant.Count > 0)
                {
                    dictDetails.Add(plantID, partsByPlant);
                }
            }
            //List<StocktakeRequest> requestList = new List<StocktakeRequest>();
            List <NewStocktakeRequest> requestList = new List <NewStocktakeRequest>();

            //group request by plant
            foreach (var plantID in dictDetails.Keys)
            {
                //StocktakeRequest request = new StocktakeRequest() { IsStatic = true, Plant = new Plant() { PlantID = plantID } };
                NewStocktakeRequest request = new NewStocktakeRequest()
                {
                    IsStatic = true, PlantID = plantID, IsCycleCount = true
                };
                request.RequestBy = user.UserID;
                //request.StocktakeDetails = new EntityCollection<StocktakeDetails>();
                request.Details = new List <NewStocktakeDetails>();
                foreach (var item in dictDetails[plantID])
                {
                    //StocktakeDetails details = new StocktakeDetails
                    //{
                    //    Part = new Part { PartID = item.PartID },
                    //    StocktakeType = new StocktakeType { TypeID = 90 },
                    //    StocktakePriority = new StocktakePriority { PriorityID = 1 }
                    //};

                    NewStocktakeDetails details = new NewStocktakeDetails
                    {
                        PartID            = item.PartID.ToString(),
                        StocktakeTypeID   = 90,
                        StocktakePriority = 1
                    };
                    //request.StocktakeDetails.Add(details);
                    request.Details.Add(details);
                }
                requestList.Add(request);
            }
            List <StocktakeRequest> newRequestList = new List <StocktakeRequest>();

            //create request by plant
            if (requestList.Count > 0)
            {
                using (Context.Connection.CreateConnectionScope())
                {
                    DbTransaction transaction = Context.BeginTransaction();
                    try
                    {
                        foreach (var item in requestList)
                        {
                            StocktakeRequest newRequest = CreateStocktakeRequest(item, transaction);
                            newRequestList.Add(newRequest);
                        }
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                    }
                }
            }

            for (int i = 0; i < newRequestList.Count; i++)
            {
                newRequestList[i] = GetRequest(newRequestList[i]);
            }
            return(newRequestList);
        }
Beispiel #13
0
 public void UpdateCachedRequest(NewStocktakeRequest request, string cacheKey, bool submit, bool isRemove)
 {
     Channel.UpdateCachedRequest(request, cacheKey, submit, isRemove);
 }
Beispiel #14
0
        public void UpdateRequest(NewStocktakeRequest request, string cacheKey, bool submit, bool isRemove)
        {
            List <View_StocktakeDetails> details = new List <View_StocktakeDetails>();

            if (!string.IsNullOrEmpty(cacheKey))
            {
                details = CacheHelper.GetCache(cacheKey) as List <View_StocktakeDetails>;
                if (details != null)
                {
                    if (!isRemove)
                    {
                        foreach (var item in request.Details)
                        {
                            View_StocktakeDetails matchedItem = details.FirstOrDefault(d => d.PartID + "" == item.PartID);
                            if (matchedItem != null)//update
                            {
                                matchedItem.Priority      = item.StocktakePriority;
                                matchedItem.StocktakeType = item.StocktakeTypeID;
                                matchedItem.Description   = item.Description;
                            }
                            else//add
                            {
                                details.Add(
                                    new View_StocktakeDetails
                                {
                                    PartID        = int.Parse(item.PartID),
                                    StocktakeType = item.StocktakeTypeID,
                                    Description   = item.Description,
                                    Priority      = item.StocktakePriority
                                });
                            }
                        }
                    }
                    else
                    {
                        if (request.Details.Count > 0)//remove
                        {
                            foreach (var item in request.Details)
                            {
                                View_StocktakeDetails matchedItem = details.FirstOrDefault(d => d.PartID + "" == item.PartID);
                                if (matchedItem != null)
                                {
                                    details.Remove(matchedItem);
                                }
                            }
                        }
                        else//request.Details is empty means clear all
                        {
                            details.Clear();
                        }
                    }
                    CacheHelper.SetCache(cacheKey, details);
                }
            }
            if (submit)
            {
                if (!string.IsNullOrEmpty(cacheKey) && details != null)
                {
                    request.Details = details.Select(d => new NewStocktakeDetails {
                        PartID = d.PartID.ToString(), StocktakePriority = d.Priority.Value, Description = d.Description, StocktakeTypeID = d.StocktakeType.Value
                    }).ToList();
                }
                Type[]        types  = new Type[] { typeof(NewStocktakeDetails) };
                XmlSerializer xs     = new XmlSerializer(typeof(NewStocktakeRequest), types);
                string        reqStr = string.Empty;
                using (StringWriter sw = new StringWriter())
                {
                    xs.Serialize(sw, request);
                    reqStr = sw.ToString();
                }
                DbParameter paramXml = Context.CreateDbParameter("Request", System.Data.DbType.Xml, reqStr, ParameterDirection.Input);
                Context.ExecuteNonQuery("sp_UpdateRequest", CommandType.StoredProcedure, paramXml);
            }
            else
            {
            }
        }
Beispiel #15
0
 public void UpdateRequest(NewStocktakeRequest request)
 {
     UpdateRequest(request, null, false, false);
 }
Beispiel #16
0
 public StocktakeRequest CreateStocktakeRequest(NewStocktakeRequest request)
 {
     return(CreateStocktakeRequest(request, true));
 }
Beispiel #17
0
    //public List<DifferenceAnalyzeItem> QueryDifferenceAnalyzeItems(DifferenceAnalyzeItem info)
    //{
    //    return Channel.QueryDifferenceAnalyzeItems(info);
    //}

    //public DifferenceAnalyzeItem GetDifferenceAnalyzeItemByKey(DifferenceAnalyzeItem info)
    //{
    //    return Channel.GetDifferenceAnalyzeItemByKey(info);
    //}

    //public void UpdateDifferenceAnalyzeItem(DifferenceAnalyzeItem model)
    //{
    //    Channel.UpdateDifferenceAnalyzeItem(model);
    //}

    //public DifferenceAnalyzeItem AddDifferenceAnalyzeItem(DifferenceAnalyzeItem model)
    //{
    //    return Channel.AddDifferenceAnalyzeItem(model);
    //}

    //public void DeleteDifferenceAnalyzeItem(DifferenceAnalyzeItem model)
    //{
    //    Channel.DeleteDifferenceAnalyzeItem(model);
    //}

    //public void DeleteDifferenceAnalyzeItems(List<string> ids)
    //{
    //    Channel.DeleteDifferenceAnalyzeItems(ids);
    //}

    //public bool ExistDifferenceAnalyzeItem(DifferenceAnalyzeItem model)
    //{
    //    return Channel.ExistDifferenceAnalyzeItem(model);
    //}
    #endregion DifferenceAnalyzeItem ......

    #region StocktakeRequest

    public SGM.ECount.DataModel.StocktakeRequest RequestStocktake(NewStocktakeRequest newRequest)
    {
        return(Channel.RequestStocktake(newRequest));
    }