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<EntryGrid>("FEntity").GetSelectedRows(); //单据体数据
|
Array.Sort(selectedIndexsR);
|
DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection; //选中行数据
|
DynamicObject selectedRow;
|
StringBuilder result = new StringBuilder();
|
List<string> sqlList = new List<string>();
|
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<decimal>(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<decimal>(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<EntryGrid>("FEntity").GetSelectedRows(); //单据体数据
|
Array.Sort(selectedIndexsR);
|
DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection; //选中行数据
|
DynamicObject selectedRow;
|
List<string> sqlList = new List<string>();
|
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("操作成功");
|
}
|
|
}
|
}
|
}
|