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.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
namespace Demo.BillView.PRD
|
{
|
[Description("[日计划工单] 表单插件"), HotUpdate]
|
public class Pro_DayPlan : AbstractBillPlugIn
|
{
|
public override void BarItemClick(BarItemClickEventArgs e)
|
{
|
base.BarItemClick(e);
|
try
|
{
|
//主表关闭
|
if (e.BarItemKey.ToUpper() == "BTNCLOSE")
|
{
|
var FID = this.View.Model.GetPKValue();
|
string sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'E',FHCloseMan = '{Context.UserId}',FHCloseDate = GETDATE() where FID = {FID}";
|
DBServiceHelper.Execute(Context, sql);
|
this.View.Refresh();
|
this.View.ShowMessage("操作成功");
|
}
|
//反关闭
|
if (e.BarItemKey.ToUpper() == "BTNCANCELCLOSE")
|
{
|
var FID = this.View.Model.GetPKValue();
|
string yzSql = string.Format(@"/*dialect*/
|
SELECT A.FBILLNO FROM SC_WORKBILLSORTBILLMAIN A
|
JOIN (SELECT * FROM SC_WORKBILLSORTBILLMAIN WHERE FDOCUMENTSTATUS <>'E') B ON A.FSCORDERNO=B.FSCORDERNO AND A.FSRCBILLENTRYSEQ=B.FSRCBILLENTRYSEQ
|
WHERE A.FID IN ({0})
|
", FID);
|
DataTable dataTable = DBServiceHelper.ExecuteDataSet(Context, yzSql).Tables[0];
|
if (dataTable.Rows.Count > 0)
|
{
|
this.View.ShowErrMessage("反关闭后会存在生产订单和明细行号数据重复");
|
return;
|
}
|
string sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'C',FHCloseMan = '',FHCloseDate = NULL where FID = {FID}";
|
DBServiceHelper.Execute(Context, sql);
|
this.View.Refresh();
|
this.View.ShowMessage("操作成功");
|
}
|
}
|
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);
|
}
|
var fid = this.View.Model.GetPKValue();
|
sqlList.Add($"update Sc_WorkBillSortBillMain set FCloseCount = (select sum(FNotInStockCount) from Sc_WorkBillSortBillSub where FID ={fid}) where FID ={fid}");
|
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);
|
}
|
var fid = this.View.Model.GetPKValue();
|
sqlList.Add($"update Sc_WorkBillSortBillMain set FCloseCount = (select sum(FNotInStockCount) from Sc_WorkBillSortBillSub where FID ={fid}) where FID ={fid}");
|
DBServiceHelper.ExecuteBatch(Context, sqlList);
|
this.View.Refresh();
|
this.View.ShowMessage("操作成功");
|
}
|
|
}
|
}
|
}
|