| | |
| | | using Kingdee.BOS.ServiceHelper; |
| | | using Kingdee.BOS.ServiceHelper.FileServer; |
| | | using Kingdee.BOS.Util; |
| | | using Kingdee.K3.Core.SCM.STK; |
| | | using Kingdee.K3.SCM.ServiceHelper; |
| | | using Newtonsoft.Json.Linq; |
| | | using NPOI.HSSF.UserModel; |
| | | using NPOI.SS.Formula.Functions; |
| | |
| | | if (e.BarItemKey.ToUpper() == "BTEXPORT") |
| | | { |
| | | ExportExcel(); |
| | | //this.View.ShowMessage("测试啦"); |
| | | |
| | | |
| | | string path = PathUtils.GetServerPath(KeyConst.TEMPFILEPATH, PathName); |
| | | |
| | | DynamicFormShowParameter dynamicForm = new DynamicFormShowParameter(); |
| | | dynamicForm.FormId = "BOS_FileDownLoad"; |
| | | dynamicForm.OpenStyle.ShowType = ShowType.Modal; |
| | | dynamicForm.CustomParams.Add("IsExportData", "true"); |
| | | dynamicForm.CustomParams.Add("url", path); |
| | | |
| | | this.View.ShowForm(dynamicForm); |
| | | |
| | | |
| | | //ShowDownload(); |
| | | |
| | | } |
| | | |
| | | if (e.BarItemKey.ToUpper() == "TBSEARCH") |
| | | { |
| | | SearchList(); |
| | | } |
| | | |
| | | if (e.BarItemKey.ToUpper() == "TBLOCK") |
| | | { |
| | | Lock(); |
| | |
| | | //提料计划 |
| | | if (e.BarItemKey.ToUpper() == "TBEXTRACTION") |
| | | { |
| | | Extraction(); |
| | | } |
| | | try |
| | | { |
| | | COMPLETE(); |
| | | DayPlanPPBomBill(); |
| | | Extraction(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | this.View.ShowErrMessage(ex.Message.ToString()); |
| | | } |
| | | finally { |
| | | this.View.ShowMessage("操作成功!"); |
| | | |
| | | } |
| | | |
| | | } |
| | | //预留 |
| | | if (e.BarItemKey.ToUpper() == "TBRESERVE") |
| | | { |
| | | Reserve(); |
| | | } |
| | | //释放 |
| | | if (e.BarItemKey.ToUpper() == "TBRELEASE") |
| | | { |
| | | |
| | | Release(); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | |
| | | sql = string.Format(@" |
| | | /*dialect*/ |
| | | SELECT T1.FID,FHMATERID,FHMASTERDATE,FHQTY,FCOMPLETECOUNT,FPRDMOMAINID,T2.FENTRYID,T1.FBILLNO, FNeedQty,t5.FFIXLEADTIME,t5.FMAXPOQTY,t5.FMINPOQTY,t3.FMATERIALID,t6.FNumber,FHQTY*FNeedQty NeedQty,FHPRDORGID FStockOrgId FROM SC_WORKBILLSORTBILLMAIN T1 |
| | | SELECT T1.FID,FHMATERID,FHMASTERDATE,FHQTY,FCOMPLETECOUNT,FPRDMOMAINID,T2.FENTRYID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t3.FMATERIALID,t6.FNumber,FHQTY*FNeedQty NeedQty,FHPRDORGID FStockOrgId FROM SC_WORKBILLSORTBILLMAIN T1 |
| | | JOIN SC_WORKBILLSORTBILLSUB T2 ON T1.FID=T2.FID |
| | | LEFT JOIN(SELECT T1.FID,max(t2.FMATERIALID)FMATERIALIDMAIN, max(t2.FMoId)FMoId,MAX(FENTRYID) FENTRYID, SUM(convert(decimal(18, 2), FBASENUMERATOR / FBASEDENOMINATOR))FNeedQty, T1.FMATERIALID from T_PRD_PPBOMENTRY T1 |
| | | JOIN T_PRD_PPBOM T2 on t1.FID = t2.FID |
| | |
| | | WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE) >=0 |
| | | AND FDayPlanQuantity>FCOMPLETECOUNT |
| | | AND FERPCLSID=1 |
| | | AND T2.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0})) |
| | | AND T2.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0})) |
| | | AND T1.FID in ({0}) |
| | | order by FHMASTERDATE |
| | | ", FDayPlanWorkID); |
| | |
| | | /// </summary> |
| | | public void DayPlanPPBomBill() |
| | | { |
| | | //锁定的日计划不生成 |
| | | try |
| | | { |
| | | string sql = string.Format(@" |
| | |
| | | |
| | | //提料计划预处理 清理提料计划单数据 更新采购订单提料计划数量 |
| | | sql = string.Format(@" |
| | | |
| | | /*dialect*/ |
| | | exec [提料计划预处理] '{0}' |
| | | ", FDayPlanWorkID.Replace(",", "-")); |
| | | |
| | |
| | | |
| | | sql = string.Format(@" |
| | | /*dialect*/ |
| | | select T1.*,t5.FFIXLEADTIME,t5.FMAXPOQTY,t5.FMINPOQTY,t6.FNumber from ( |
| | | select FHICMOINTERID FID,FHICMOENTRYID FEntryID,FPlanDate FHMASTERDATE,FLackCount NeedQty,FHMATERID FMATERIALID,FHStockOrgID FStockOrgId,FPRDBILLNO FBillNo from JIT_MOMaterReadysBill |
| | | )T1 |
| | | join t_BD_MaterialBase t4 on T1.FMATERIALID = t4.FMATERIALID |
| | | join t_BD_MaterialPlan t5 on T1.FMATERIALID = t5.FMATERIALID |
| | | JOIN T_BD_MATERIAL T6 ON T1.FMATERIALID = T6.FMATERIALID |
| | | WHERE T1.NeedQty >0 AND FERPCLSID=1 |
| | | AND T1.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0})) |
| | | AND T1.FID in ({0}) |
| | | SELECT T1.FID,FHMATERID,FHMASTERDATE,FHQTY,FCOMPLETECOUNT,FPRDMOMAINID,T2.FENTRYID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t3.FMATERIALID,t6.FNumber,FHQTY*FNeedQty NeedQty,FHPRDORGID FStockOrgId FROM SC_WORKBILLSORTBILLMAIN T1 |
| | | JOIN SC_WORKBILLSORTBILLSUB T2 ON T1.FID=T2.FID |
| | | LEFT JOIN(SELECT T1.FID,max(t2.FMATERIALID)FMATERIALIDMAIN, max(t2.FMoId)FMoId,MAX(FENTRYID) FENTRYID, SUM(convert(decimal(18, 2), FBASENUMERATOR / FBASEDENOMINATOR))FNeedQty, T1.FMATERIALID from T_PRD_PPBOMENTRY T1 |
| | | JOIN T_PRD_PPBOM T2 on t1.FID = t2.FID |
| | | group by T1.FMATERIALID, T1.FID) T3 on T1.FPRDMOMAINID = t3.FMoId and T1.FHMATERID = t3.FMATERIALIDMAIN |
| | | JOIN T_BD_MATERIAL T6 ON T3.FMATERIALID = T6.FMATERIALID |
| | | join t_BD_MaterialBase t4 on t3.FMATERIALID = t4.FMATERIALID |
| | | join t_BD_MaterialPlan t5 on t3.FMATERIALID = t5.FMATERIALID |
| | | WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE) >=0 |
| | | AND FDayPlanQuantity>FCOMPLETECOUNT |
| | | AND FERPCLSID=1 |
| | | AND T2.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0})) |
| | | AND T1.FID in ({0}) |
| | | order by FHMASTERDATE |
| | | ", FDayPlanWorkID); |
| | | LogHelper.Info("提料数据" + sql); |
| | |
| | | |
| | | decimal FMINPOQTY = _DayPlanPpbom.FirstOrDefault().FMINPOQTY;//最小起订量 |
| | | double FFIXLEADTIME = _DayPlanPpbom.FirstOrDefault().FFIXLEADTIME;//提前期 |
| | | string FJITmaterialGroup = _DayPlanPpbom.FirstOrDefault().FJITmaterialGroup;//jit物料分类 |
| | | string FJITMaterielDemand = _DayPlanPpbom.FirstOrDefault().FJITMaterielDemand; //JIT物料需求供货周期 |
| | | string FJITSafeStock = _DayPlanPpbom.FirstOrDefault().FJITSafeStock; //JIT安全库存 |
| | | decimal NeedQty = 0; |
| | | DateTime DATE = _DayPlanPpbom.FirstOrDefault().FHMASTERDATE; |
| | | int i = 1; |
| | |
| | | List<int> FEntryIdList = new List<int>(); |
| | | foreach (var _item in _DayPlanPpbom) |
| | | { |
| | | |
| | | if (NeedQty == 0) |
| | | DATE = Convert.ToDateTime(_item.FHMASTERDATE).AddDays(-FFIXLEADTIME); |
| | | |
| | | FEntryIdList.Add(_item.FENTRYID); |
| | | |
| | | NeedQty += _item.NeedQty; |
| | | if ((FJITmaterialGroup == "总量控制规格类" || FJITmaterialGroup == "订单专用个性类") && FEntryIdList.Count < Convert.ToInt32(FJITMaterielDemand)) //订单专用个性类 |
| | | continue; |
| | | if (NeedQty >= FMINPOQTY) |
| | | { |
| | | List<PurchaseInventory> _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).ToList(); |
| | |
| | | NeedQty = 0; |
| | | break; |
| | | } |
| | | |
| | | foreach (var Purchase in _PurchaseInventory) |
| | | { |
| | | LogHelper.Info("Purchase"); |
| | | LogHelper.Info("物料:" + Purchase.FMATERIALID + ",数量:" + Purchase.FQTY); |
| | | |
| | | if (Purchase.FQTY >= NeedQty) |
| | | { |
| | | List<int> mmm = new List<int>(); |
| | |
| | | PurchseFqty = Purchase.FQTY, |
| | | FStockOrgId = Purchase.FStockOrgId, //采购组织 |
| | | FORGNumber = Purchase.FORGNumber |
| | | |
| | | }); |
| | | //扣除日计划明细已被分配的数量 |
| | | DayPlanPpbomls.NeedQty = 0; |
| | |
| | | List<int> mmm = new List<int>(); |
| | | foreach (int id in FEntryIdList) |
| | | { |
| | | |
| | | var DayPlanPpbomls = DayPlanPpbom.Where(c => c.FENTRYID == id && c.FMATERIALID == _item.FMATERIALID).FirstOrDefault(); |
| | | decimal Qty = DayPlanPpbomls.NeedQty; |
| | | if (Qty > _NeedQty) |
| | |
| | | OLDDATE = DayPlanPpbomls.FHMASTERDATE, |
| | | FFIXLEADTIME = FFIXLEADTIME, |
| | | |
| | | |
| | | PurchseFID = Purchase.FID, |
| | | PurchseFentryID = Purchase.FENTRYID, |
| | | FSUPPLIERID = Purchase.FSUPPLIERID, |
| | |
| | | PurchseFqty = Purchase.FQTY, |
| | | FStockOrgId = Purchase.FStockOrgId, //采购组织 |
| | | FORGNumber = Purchase.FORGNumber |
| | | |
| | | |
| | | }); |
| | | DayPlanPpbomls.NeedQty -= Qty; |
| | | |
| | | //更新采购订单 |
| | | sqlList.Add($"/*dialect*/ update t_PUR_POOrderEntry set FPODemandPlanCount = isnull(FPODemandPlanCount,0)+ '{Qty}' where FENTRYID = {Purchase.FENTRYID}"); |
| | | |
| | | //更新Model |
| | | var ls = PurchaseInventory.Where(c => c.FENTRYID == Purchase.FENTRYID).FirstOrDefault(); |
| | | ls.FQTY -= Qty; |
| | | |
| | | if (_NeedQty < 0) |
| | | { |
| | | foreach (var mm in mmm) |
| | |
| | | } |
| | | break; |
| | | } |
| | | |
| | | mmm.Add(id); |
| | | } |
| | | foreach (var mm in mmm) |
| | | { |
| | | FEntryIdList.Remove(mm); |
| | | } |
| | | |
| | | } |
| | | } |
| | | NeedQty = 0; |
| | |
| | | FentityModel.Add("FDayPlanDate", _item.OLDDATE);//日计划工单类型 |
| | | FentityModel.Add("FHRelationQty", _item.PurchseFqty);//关联数量 |
| | | FentityModel.Add("FFIXLEADTIME", _item.FFIXLEADTIME);//提前期 |
| | | |
| | | |
| | | FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = _item.FORGNumber });//采购组织 |
| | | FentityModel.Add("FHPOOrderInterID", _item.PurchseFID);// 采购订单内码:FHPOOrderInterID |
| | | FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //采购订单子内码:FHPOOrderEntryID |
| | |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = model |
| | | }; |
| | | |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | var result = cloudClient.Save("paez_PODemandPlan", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | |
| | | LogHelper.Error(saveIsSuc); |
| | | |
| | | } |
| | | |
| | | } |
| | | DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | this.View.ShowMessage("操作成功"); |
| | | // var PODemandPlanList22 = PODemandPlanTemp.GroupBy(p => new {p.FSUPPLIERID, p.FHMASTERDATE }).ToList(); |
| | | } |
| | | /// <summary> |
| | | /// 1.锁库,具体字段根据业务单据决定,‘Inv’表示即时库存,‘FInvDetailID’为即时库存ID |
| | | /// </summary> |
| | | public void Reserve() |
| | | { |
| | | try |
| | | { |
| | | decimal ReserveCount = Convert.ToDecimal((this.Model.GetValue("FReservedCount"))); |
| | | if (ReserveCount == 0) |
| | | { |
| | | this.View.ShowMessage("请输入预留数量"); |
| | | return; |
| | | } |
| | | //获取单据体信息 |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | EntryGrid grid = this.View.GetControl<EntryGrid>("FEntity"); |
| | | //总库存 物料+库存组织+库存数量 |
| | | DataSet ds = DBServiceHelper.ExecuteDataSet(Context, @" |
| | | /*dialect*/ |
| | | select sum(isnull(a.FBASEQTY,0)-ISNULL(b.FHUseQty,0))FBASEQTY,T1.FStockOrgId,T1.FMATERIALID from |
| | | ( |
| | | select a.FHPRDORGID FStockOrgId,T2.FMATERIALID from SC_WORKBILLSORTBILLMAIN a |
| | | join SC_WORKBILLSORTBILLSub b on a.FID = b.FID |
| | | join T_PRD_PPBOM T1 on a.FPRDMOMAINID = t1.FMoId and a.FPRDMOENTYID = t1.FMOENTRYID |
| | | LEFT JOIN(select FID,FMATERIALID from T_PRD_PPBOMENTRY |
| | | group by FMATERIALID,FID) T2 on T1.FID = t2.FID |
| | | group by a.FHPRDORGID,T2.FMATERIALID |
| | | ) T1 |
| | | LEFT JOIN T_STK_Inventory a on T1.FStockOrgId = a.FStockOrgId and T1.FMATERIALID =a.FMATERIALID |
| | | LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID |
| | | --where T1.FMATERIALID in (105773) |
| | | group by T1.FStockOrgId,T1.FMATERIALID |
| | | "); |
| | | ListInventoryByStockOrgId = ds.ToModelList<PRD_Inventory>(); |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | if (Convert.ToString(current["FFOCUS"]) == "False") |
| | | continue; |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | --生产用料清单列表 |
| | | SELECT T1.FID,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty,FPRDORGID FStockOrgId, |
| | | T2.FMATERIALID FMATERIALID2,T4.FNumber,T2.FNeedQty,convert(decimal(18,2),FNeedQty/FQty ) as dwyl |
| | | --,isnull(t3.FBASEQTY,0)FBASEQTY |
| | | FROM T_PRD_PPBOM T1 |
| | | LEFT JOIN (select FID,MAX(FENTRYID)FENTRYID,SUM(FNeedQty)FNeedQty,FMATERIALID from T_PRD_PPBOMENTRY where FMoId='{0}' |
| | | group by FMATERIALID,FID ) T2 on T1.FID=t2.FID |
| | | --LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID |
| | | LEFT JOIN T_BD_MATERIAL T4 on T2.FMATERIALID=T4.FMATERIALID |
| | | where t1.FMoId='{0}' and T1.FMaterialID='{1}' |
| | | ", current["FHMainSourceInterID"].ToString(), current["FMatrailId_Id"].ToString()); |
| | | ds = DBServiceHelper.ExecuteDataSet(Context, sql); |
| | | var PpbomList = ds.ToModelList<PRD_PPBOM>(); |
| | | //当前最大齐套数 下层需求数量/父级需求数量=单位用料 |
| | | //var SumGetComplete = Math.Floor(PpbomList.Min(t => t.FBASEQTY / (t.FNeedQty / t.FQty))); |
| | | //最大齐套数 |
| | | var result = (from a in PpbomList |
| | | join b in ListInventoryByStockOrgId |
| | | on new { materialId = a.FMATERIALID2, stockOrgId = a.FStockOrgId } |
| | | equals new { materialId = b.FMATERIALID, stockOrgId = b.FStockOrgId } |
| | | into g |
| | | from b in g.DefaultIfEmpty() |
| | | select new |
| | | { |
| | | value = (b?.FBASEQTY / a.dwyl) ?? 0 |
| | | }).ToList().Min(x => x.value); |
| | | if (result < ReserveCount) |
| | | { |
| | | this.View.ShowErrMessage("当前库存超出可预留最大数:" + result + ""); |
| | | return; |
| | | }; |
| | | //将预留数量分配到日计划工单 |
| | | sql = string.Format(@"/*dialect*/select FEntryID,FHQTY from Sc_WorkBillSortBillSub |
| | | where FID='{0}' and isnull(FCOMPLETE,'未齐套')='未齐套'", current["FDayPlanWorkID"].ToString()); |
| | | DataTable dayPlanDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | var count = ReserveCount; |
| | | List<string> sqlList = new List<string>(); |
| | | if (dayPlanDt.Rows.Count > 0) |
| | | { |
| | | foreach (DataRow dr in dayPlanDt.Rows) |
| | | { |
| | | if (count > 0) |
| | | { |
| | | sql = string.Format("/*dialect*/ update Sc_WorkBillSortBillSub set FReservedCount = {0} where FEntryID = {1}", count >= Convert.ToDecimal(dr["FHQTY"]) ? Convert.ToDecimal(dr["FHQTY"]) : count, dr["FEntryID"].ToString()); |
| | | sqlList.Add(sql); |
| | | count = count - Convert.ToDecimal(dr["FHQTY"]); |
| | | } |
| | | else |
| | | break; |
| | | } |
| | | DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | } |
| | | sql = string.Format(@"/*dialect*/ |
| | | --生产用料清单列表 |
| | | SELECT T1.FID,T1.FBillNo,T1.FMOBillNO,T1.FMOEntrySeq,T1.FMoId,T1.FMaterialID,T1.FQty,FPRDORGID FStockOrgId, |
| | | T2.FMATERIALID FMATERIALID2,T4.FNumber,T2.FNeedQty,convert(decimal(18,2),FNeedQty/T1.FQty ) as dwyl, |
| | | t5.FBASEUNITID,t6.FSTOREUNITID,t7.FID FSTKID,t7.FOwnerID,t7.FOwnerTypeID,t7.FSTOCKID,t7.FBASEQTY |
| | | --,isnull(t3.FBASEQTY,0)FBASEQTY |
| | | FROM T_PRD_PPBOM T1 |
| | | LEFT JOIN (select FID,MAX(FENTRYID)FENTRYID,SUM(FNeedQty)FNeedQty,FMATERIALID from T_PRD_PPBOMENTRY where FMoId='{0}' |
| | | group by FMATERIALID,FID ) T2 on T1.FID=t2.FID |
| | | --LEFT JOIN T_STK_Inventory T3 on t2.FMATERIALID = t3.FMATERIALID |
| | | LEFT JOIN T_BD_MATERIAL T4 on T2.FMATERIALID=T4.FMATERIALID |
| | | join t_BD_MaterialBase t5 on t4.FMATERIALID = t5.FMATERIALID |
| | | join t_BD_MaterialStock t6 on t4.FMATERIALID = t6.FMATERIALID |
| | | join T_STK_INVENTORY t7 on t4.FMATERIALID = t7.FMATERIALID and t1.FPRDORGID=t7.FSTOCKORGID |
| | | where t1.FMoId='{0}' and T1.FMaterialID='{1}' |
| | | ", current["FHMainSourceInterID"].ToString(), current["FMatrailId_Id"].ToString()); |
| | | DataTable skDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | //锁库 |
| | | List<LockStockArgs> list = new List<LockStockArgs>(); |
| | | foreach (DataRow dr in skDt.Rows) |
| | | { |
| | | LockStockArgs lockStockArgs = new LockStockArgs(); |
| | | lockStockArgs.ObjectId = "SAL_SaleOrder"; |
| | | lockStockArgs.BillId = Convert.ToString(current["FHMainSourceInterID"]); //生产订单ID |
| | | lockStockArgs.BillNo = Convert.ToString(current["FSCOrderNo"]);//生产订单号 |
| | | lockStockArgs.FID = Convert.ToInt32(current["FHMainSourceInterID"]); //生产订单ID |
| | | lockStockArgs.BaseQty = decimal.Parse(dr["FBASEQTY"].ToString());//基本单位数量 |
| | | lockStockArgs.BaseUnitID = int.Parse(dr["FBASEUNITID"].ToString());//基本单位 |
| | | lockStockArgs.BillDetailID = Convert.ToString(current["FHMainSourceEntryID"]); |
| | | lockStockArgs.FEntryID = Convert.ToInt32(current["FHMainSourceEntryID"]); ; |
| | | //lockStockArgs.Lot = Convert.ToString(current["FBatch"]); ;//批次 FBatch |
| | | lockStockArgs.MaterialID = long.Parse(dr["FMATERIALID2"].ToString()); |
| | | lockStockArgs.OwnerID = long.Parse(dr["FOwnerID"].ToString()); |
| | | lockStockArgs.OwnerTypeID = dr["FOwnerTypeID"].ToString(); |
| | | lockStockArgs.Qty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;//数量 |
| | | lockStockArgs.STOCKID = long.Parse(dr["FSTOCKID"].ToString());//仓库 |
| | | lockStockArgs.StockOrgID = long.Parse(dr["FStockOrgId"].ToString());//库存组织 |
| | | lockStockArgs.UnitID = long.Parse(dr["FSTOREUNITID"].ToString());//单位 |
| | | lockStockArgs.LockBaseQty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount; |
| | | lockStockArgs.LockQty = Convert.ToDecimal(dr["dwyl"].ToString()) * ReserveCount;//基本单位数量 |
| | | lockStockArgs.FInvDetailID = Convert.ToString(dr["FSTKID"].ToString()); |
| | | list.Add(lockStockArgs); |
| | | } |
| | | var sa = StockServiceHelper.SaveLockInfo(Context, list, "Inv", false); |
| | | this.View.ShowMessage("操作成功!"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message.ToString()); |
| | | this.View.ShowErrMessage(ex.Message.ToString()); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 释放 |
| | | /// </summary> |
| | | public void Release() |
| | | { |
| | | try |
| | | { |
| | | //获取单据体信息 |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | DynamicObjectCollection filterResult = entityDataObjoct.Clone(); |
| | | filterResult.Clear(); |
| | | entityDataObjoct.Where(x => Convert.ToBoolean(x["FFOCUS"])).ToList().ForEach(x=> filterResult.Add(x)); |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | if (Convert.ToString(current["FFOCUS"]) == "False") |
| | | continue; |
| | | string sql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set FReservedCount = 0 where FID='{0}'", current["FDayPlanWorkID"].ToString()); |
| | | DBServiceHelper.Execute(Context, sql); |
| | | } |
| | | this.View.ShowMessage("操作成功!"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message.ToString()); |
| | | this.View.ShowErrMessage(ex.Message.ToString()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //tbReleaseReserve |