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(); }
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); }
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; } }
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); }
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); }
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()); }
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); } }
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); }
public void UpdateStocktakeRequest(NewStocktakeRequest request) { Channel.UpdateStocktakeRequest(request); }
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); } }
public void UpdateRequest(NewStocktakeRequest request, List <int> removedDetailsList, List <View_StocktakeDetails> changedDetails) { Channel.UpdateRequest(request, removedDetailsList, changedDetails); }
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); }
public void UpdateCachedRequest(NewStocktakeRequest request, string cacheKey, bool submit, bool isRemove) { Channel.UpdateCachedRequest(request, cacheKey, submit, isRemove); }
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 { } }
public void UpdateRequest(NewStocktakeRequest request) { UpdateRequest(request, null, false, false); }
public StocktakeRequest CreateStocktakeRequest(NewStocktakeRequest request) { return(CreateStocktakeRequest(request, true)); }
//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)); }