using Kingdee.BOS; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo.BillView.PRD { [Description("[生产领料单] 表单插件"), HotUpdate] public class Prd_Pickmtrl : AbstractBillPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); try { if (e.BarItemKey.ToUpper() == "TBDAYPLANMENU") { string pageId = Guid.NewGuid().ToString(); ListShowParameter showParameter = new ListShowParameter(); showParameter.FormId = "Paez_Sc_WorkBillAutoSortBill"; showParameter.PageId = pageId; showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID; showParameter.IsLookUp = true; this.View.ShowForm(showParameter); this.View.ShowForm(showParameter, delegate (FormResult result) { object returnData = result.ReturnData; if (returnData is ListSelectedRowCollection) { ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection; if (listSelectedRowCollection != null) { DynamicObjectDataRow datarow = (DynamicObjectDataRow)listSelectedRowCollection[0].DataRow; this.View.Model.SetValue("FMATERIALID", datarow.DynamicObject["FHMaterID_Id"].ToString()); this.View.Model.SetValue("FPROORDERNO", datarow.DynamicObject["FSCOrderNo"].ToString()); this.View.Model.SetValue("FQty", datarow.DynamicObject["FHOrderNeedQty"].ToString()); this.View.Model.SetValue("FDayPlanFID", datarow.DynamicObject["FID"].ToString()); this.View.Model.SetValue("FDayPlanFentryID", datarow.DynamicObject["t1_FENTRYID"].ToString()); this.View.Model.SetValue("FSourceBillNo", datarow.DynamicObject["FBillNo"].ToString()); this.View.Model.SetValue("FSourceBillType", datarow.DynamicObject["FBillTypeID"].ToString()); } } }); } } catch (Exception ex) { this.View.ShowErrMessage(ex.Message.ToString()); } } public override void EntryBarItemClick(BarItemClickEventArgs e) { base.EntryBarItemClick(e); if (e.BarItemKey.ToUpper() == "TBROWCLOSE") { int[] selectedIndexsR = this.View.GetControl("FEntity").GetSelectedRows(); //单据体数据     Array.Sort(selectedIndexsR); DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;        //选中行数据      DynamicObject selectedRow; StringBuilder result = new StringBuilder(); List sqlList = new List(); foreach (var item in selectedIndexsR) { selectedRow = selectedRowsDy[item]; string sql = string.Format(@" /*dialect*/ select isnull(c.FRealQty,0)FRealQty from Sc_WorkBillSortBillSub a left join T_PRD_MORPTENTRY b on a.FEntryID = b.FDAYPLANFID left join T_PRD_INSTOCKENTRY c on b.FENTRYID = c.FSrcEntryId where a.FEntryID in ({0})", selectedRow["Id"]); decimal FRealQty = DBServiceHelper.ExecuteScalar(Context, sql, 0); if (FRealQty == 0) { result.Append($"分录行:{selectedRow["Seq"]},日计划明细未下推生成生产入库单\r\n"); continue; } sql = string.Format(@" /*dialect*/ select count(*)res from Sc_WorkBillSortBillSub a left join Sc_DayPlanPPBomBillMain b on a.FEntryID = b.FDayPlanFID left join Sc_DayPlanPPBomBillSub c on b.FID = c.FID where a.FEntryID in ({0}) and FISSUETYPE in (1, 2) and FDwyl * {1} < FPickedQty", selectedRow["Id"], FRealQty); decimal Count = DBServiceHelper.ExecuteScalar(Context, sql, 0); if (Count > 0) { result.Append($"分录行:{selectedRow["Seq"]},下游领料单的已领料数小于入库的标准用量\r\n"); continue; } sql = string.Format(@" /*dialect*/ update Sc_WorkBillSortBillSub set FInStockCount = {0}, FNotInStockCount = FHQty - {0}, FHEntryCloseDate = getdate(), FHCloseTypeSub = 1 where FEntryID={1}", FRealQty, selectedRow["Id"]); sqlList.Add(sql); } DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.Refresh(); if (string.IsNullOrEmpty(result.ToString())) this.View.ShowMessage("操作成功"); else this.View.ShowErrMessage(result.ToString()); } else if (e.BarItemKey.ToUpper() == "TBROWCANCELCLOSE") { int[] selectedIndexsR = this.View.GetControl("FEntity").GetSelectedRows(); //单据体数据     Array.Sort(selectedIndexsR); DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;        //选中行数据      DynamicObject selectedRow; List sqlList = new List(); foreach (var item in selectedIndexsR) { selectedRow = selectedRowsDy[item]; string sql = string.Format(@" /*dialect*/ update Sc_WorkBillSortBillSub set FInStockCount = 0, FNotInStockCount =0, FHEntryCloseDate = null, FHCloseTypeSub = 0 where FEntryID={0}", selectedRow["Id"]); sqlList.Add(sql); } DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.Refresh(); this.View.ShowMessage("操作成功"); } } } }