Пример #1
0
 private void BindRequest(StocktakeRequest request)
 {
     if (RequestID != null)
     {
         if (request == null)
         {
             request = Service.GetRequest(RequestID.Value);
         }
         List <StocktakeRequest> reqList = new List <StocktakeRequest>();
         if (request != null)
         {
             reqList.Add(request);
         }
         this.BindDataControl(this.dlRequest, reqList);
     }
     else
     {
         if (!pagerParts.IsPostBack)
         {
             List <StocktakeRequest> reqList = new List <StocktakeRequest>
             {
                 new StocktakeRequest
                 {
                     RequestBy   = CurrentUser.UserInfo,
                     DateRequest = DateTime.Now,
                     IsStatic    = false
                 }
             };
             this.BindDataControl(this.dlRequest, reqList);
         }
     }
     multiViewRequest.ActiveViewIndex = 0;
 }
Пример #2
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();
    }
Пример #3
0
        public void UpdateStocktakeRequestTest()
        {
            StockTakeReqBLL  target  = new StockTakeReqBLL(); // TODO: Initialize to an appropriate value
            StocktakeRequest request = null;                  // TODO: Initialize to an appropriate value

            target.UpdateStocktakeRequest(request);
            Assert.Inconclusive("A method that does not return a value cannot be verified.");
        }
Пример #4
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;
        }
    }
Пример #5
0
 protected void gvRequest_RowDataBound(object sender, GridViewRowEventArgs e)
 {
     if (e.Row.RowIndex >= 0)
     {
         LinkButton       linkRequestNo = e.Row.Cells[0].FindControl("linkRequestNo") as LinkButton;
         StocktakeRequest request       = e.Row.DataItem as StocktakeRequest;
         string           script        = string.Format("showDialog('StocktakeRequest.aspx?Mode=View&id={0}',1080,550);return false;", request.RequestID);
         linkRequestNo.OnClientClick = script;
     }
 }
Пример #6
0
        public void CreateStocktakeRequestTest2()
        {
            StockTakeReqBLL  target   = new StockTakeReqBLL(); // TODO: Initialize to an appropriate value
            StocktakeRequest request  = null;                  // TODO: Initialize to an appropriate value
            StocktakeRequest expected = null;                  // TODO: Initialize to an appropriate value
            StocktakeRequest actual;

            actual = target.CreateStocktakeRequest(request);
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Пример #7
0
    protected void dlRequest_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        StocktakeRequest request     = e.Item.DataItem as StocktakeRequest;
        DropDownList     ddlIsStatic = e.Item.FindControl("ddlIsStatic") as DropDownList;

        if (request.IsStatic.Value)
        {
            ddlIsStatic.SelectedIndex = 0;
        }
        else
        {
            ddlIsStatic.SelectedIndex = 1;
        }
    }
Пример #8
0
    protected void gvRequest_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex >= 0)
        {
            LinkButton       linkRequestNo = e.Row.Cells[0].FindControl("linkRequestNo") as LinkButton;
            StocktakeRequest request       = e.Row.DataItem as StocktakeRequest;
            string           script        = string.Format("showDialog('StocktakeRequest.aspx?Mode=Edit&id={0}',1080,550,null, \"refresh('{1}')\");return false;", request.RequestID, Toolbar1.Controls[3].ClientID);
            linkRequestNo.OnClientClick = script;

            CheckBox cbSelect  = e.Row.FindControl("cbSelect") as CheckBox;
            long     requestID = (long)gvRequest.DataKeys[e.Row.RowIndex].Value;
            if (SelectedRequests.Contains(requestID))
            {
                cbSelect.Checked = true;
            }
        }
    }
Пример #9
0
 private void BindRequest(StocktakeRequest request)
 {
     if (RequestID != null)
     {
         if (request == null)
         {
             request = Service.GetRequest(RequestID.Value);
         }
         List <StocktakeRequest> reqList = new List <StocktakeRequest>();
         if (request != null)
         {
             reqList.Add(request);
         }
         this.BindDataControl(this.dlRequest, reqList);
         multiViewRequest.ActiveViewIndex = 0;
     }
     else
     {
         multiViewRequest.ActiveViewIndex = 1;
     }
 }
Пример #10
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);
        }
    }
Пример #11
0
        public StocktakeRequest ConvertToRequest()
        {
            StocktakeRequest request = new StocktakeRequest()
            {
                IsStatic = this.IsStatic, RequestBy = new User {
                    UserID = this.RequestBy.Value
                }, Plant = new Plant {
                    PlantID = PlantID.Value
                }
            };

            if (RequestID != null)
            {
                request.RequestID = RequestID.Value;
            }
            request.StocktakeDetails = new System.Data.Objects.DataClasses.EntityCollection <StocktakeDetails>();
            foreach (NewStocktakeDetails item in this.Details)
            {
                StocktakeDetails details = new StocktakeDetails()
                {
                    Part = new Part {
                        PartID = int.Parse(item.PartID)
                    },
                    StocktakeType = new StocktakeType {
                        TypeID = item.StocktakeTypeID
                    },
                    StocktakePriority = new StocktakePriority {
                        PriorityID = item.StocktakePriority
                    },
                    Description          = item.Description,
                    PreDynamicNoticeCode = item.PreDynamicNoticeCode,
                    PreDynamicNotiTime   = item.PreDynamicNotiTime,
                    PreStaticNoticeCode  = item.PreStaticNoticeCode,
                    PreStaticNotiTime    = item.PreStaticNotiTime
                };
                request.StocktakeDetails.Add(details);
            }
            return(request);
        }
Пример #12
0
    private void BindDetails()
    {
        int pageCount;
        int itemCount;
        View_StocktakeDetails filter = new View_StocktakeDetails();

        filter.PartCode        = txtPartCode.Text.Trim();
        filter.PartChineseName = txtPartName.Text.Trim();
        filter.Specs           = txtBOOK.Text.Trim();
        filter.FollowUp        = txtFollowUp.Text.Trim();
        if (!string.IsNullOrEmpty(ddlPlant.SelectedValue))
        {
            filter.PlantID = int.Parse(ddlPlant.SelectedValue);
        }
        if (CurrentUser.UserInfo.Workshop != null && !string.IsNullOrEmpty(CurrentUser.UserInfo.Workshop.WorkshopCode))
        {
            filter.Workshops = CurrentUser.UserInfo.Workshop.WorkshopCode;
        }
        List <ViewPart> requestedParts = new List <ViewPart>();

        if (RequestID == null)
        {
            requestedParts = (from d in RequestedDetails select new ViewPart {
                PartID = d.PartID.Value
            }).ToList();
        }
        else
        {
            List <ViewPart> partList = new List <ViewPart>();
            foreach (var item in RequestedDetails)
            {
                requestedParts.Add(new ViewPart {
                    PartID = item.PartID.Value
                });
            }
            foreach (var item in RemovedDetails)
            {
                if (!requestedParts.Exists(p => p.PartID == item.PartID))
                {
                    requestedParts.Add(new ViewPart {
                        PartID = item.PartID.Value
                    });
                }
            }
        }
        filter.RequestID = RequestID;
        Part part = new Part {
            PartCode = filter.PartCode, PartChineseName = filter.PartChineseName, Specs = filter.Specs, FollowUp = filter.FollowUp
        };

        if (filter.PlantID != null)
        {
            part.Plant = new Plant {
                PlantID = filter.PlantID.Value
            };
        }
        if (!string.IsNullOrEmpty(filter.Workshops))
        {
            part.Workshops = filter.Workshops;
        }

        StocktakeRequest stocktakeReq = null;

        if (RequestID != null)
        {
            stocktakeReq = new StocktakeRequest {
                RequestID = RequestID.Value
            };
        }
        List <ViewPart> parts = Service.QueryUnRequestedPartByPage(stocktakeReq, part, pagerParts.PageSize, pagerParts.CurrentPage, out pageCount, out itemCount);//.QueryPartByPage(part, pagerParts.PageSize, pagerParts.CurrentPage, out pageCount, out itemCount);//.QueryFilteredPartsByPage(filter, requestedParts.ToList(), pagerParts.PageSize, pagerParts.CurrentPage, out pageCount, out itemCount);

        BindDataControl(gvParts, parts);
        pagerParts.TotalRecord = itemCount;
    }
Пример #13
0
 public List <ViewPart> QueryUnRequestedPartByPage(StocktakeRequest request, Part filter, int pageSize, int pageNumber, out int pageCount, out int itemCount)
 {
     return(Channel.QueryUnRequestedPartByPage(request, filter, pageSize, pageNumber, out pageCount, out itemCount));
 }
Пример #14
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);
        }
    }
Пример #15
0
        public List <ViewPart> QueryUnRequestedPartByPage(StocktakeRequest request, Part filter, int pageSize, int pageNumber, out int pageCount, out int itemCount)
        {
            itemCount = DefaultValue.INT;
            //var partQry = this.QueryParts(filter);
            ObjectParameter p = new ObjectParameter("itemCount", itemCount);

            pageCount = (itemCount - 1) / pageSize + 1;
            Context.CommandTimeout = 120;
            int?plantID = null;

            if (filter.Plant != null)
            {
                plantID = filter.Plant.PlantID;
            }
            long?requestID = null;

            if (request != null)
            {
                requestID = request.RequestID;
            }
            List <ViewPart> result = Context.GetUnrequestedParts(requestID, pageSize, pageNumber, p, filter.PartCode, filter.PartChineseName, plantID, filter.FollowUp, filter.Specs).ToList();

            itemCount = (int)p.Value;
            return(result);
            //partQry = this.QueryParts(filter, partQry);
            //partQry = from p in partQry join q in qry on p.PartID equals q.PartID select p;
            //var detailsQry = (from d in Context.View_StocktakeDetails join p in Context.ViewPart on d.PartID equals p.PartID where d.RequestID == request.RequestID select p.PartID).ToList().AsQueryable();
            //var pidQry = partQry.Select(p => p.PartID).ToList().AsQueryable();
            //pidQry = pidQry.Except(detailsQry);

            //partQry = partQry.Where(BuildContainsExpression<ViewPart, int>(p => p.PartID, pidQry.ToList()));

            //partQry = from p in partQry join i in pidQry on p.PartID equals i select p;
            //var qry = from d in Context.Part
            //          select new
            //          {
            //              Part = d,
            //              Details = Context.StocktakeDetails.Where(dt => dt.StocktakeRequest.RequestID == request.RequestID).FirstOrDefault(dt => dt.Part.PartID == d.PartID)
            //          };
            //var partQry1 = this.QueryParts(filter);
            //if (request != null)
            //{
            //    partQry = from v in partQry join p in qry on v.PartID equals p.Part.PartID where p.Details == null select v;//from v in partQry join p in Context.Part.Include("StocktakeDetails") on v.PartID equals p.PartID where p.StocktakeDetails.Count == 0 select v;
            //    //var detailsQry = Context.StocktakeDetails.Where(d => d.StocktakeRequest.RequestID != request.RequestID).Select(d => d.Part).Distinct();
            //    //var detailsPartQry = (from d in Context.StocktakeDetails join p in partQry1 on d.Part.PartID equals p.PartID where d.StocktakeRequest.RequestID != request.RequestID select p).Distinct();
            //    //var detailsQry = Context.View_StocktakeDetails.Where(d => d.RequestID != request.RequestID).Select(d => d.PartID.Value ).Distinct();
            //    //var detailsPartQry = from p in Context.ViewPart join d in detailsQry on p.PartID equals d select p;
            //    //partQry = partQry.Union(detailsPartQry);

            //}

            //if (request != null)
            //{
            //    var detailsQry = Context.StocktakeDetails.AsQueryable();
            //    long requestID = request.RequestID;
            //    //details of request
            //    detailsQry = from d in detailsQry where d.StocktakeRequest.RequestID == requestID select d;

            //    //get parts not in this request
            //    var qry = from p in partQry join d in detailsQry on p.PartID equals d.Part.PartID into detailParts select new { p, cnt=detailParts.Count() };
            //    partQry = qry.Where(pd => pd.cnt == 0).Select(pd => pd.p);
            //    //partQry = (from v in partQry
            //               //join p in pQry
            //               //    on v.PartID equals p.PartID
            //               //select v);
            //}
            // partQry = partQry.OrderBy(p => p.PartCode);
            //var result = (from p in partQry join d in Context.StocktakeDetails on p.PartID equals d.Part.PartID into joinedParts select new { p, Count=joinedParts.Count() }).Where(pd=>pd.Count==0);//from joinedPart in joinedParts.DefaultIfEmpty() select new { p, joinedPart });//
            //partQry = result.Select(pd => pd.p).OrderBy(p => p.PartCode);// result.Where(pd => pd.joinedPart == null).Select(pd => pd.p).OrderBy(p => p.PartCode);

            //return (ObjectQuery<ViewPart>)this.GetQueryByPage(partQry, pageSize, pageNumber, out pageCount, out itemCount);
        }