using System;
|
using System.Collections.Generic;
|
using Kingdee.BOS.Util;
|
using Kingdee.BOS.Core.Metadata.EntityElement;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
using Kingdee.BOS.Orm.DataEntity;
|
using System.ComponentModel;
|
using Kingdee.BOS.ServiceHelper;
|
using Kingdee.BOS.Core.Bill.PlugIn;
|
using Kingdee.BOS.Core.List;
|
using Kingdee.BOS.Core.DynamicForm;
|
using Kingdee.BOS;
|
using Kingdee.BOS.Core.Bill.PlugIn.Args;
|
|
namespace Demo.BillView.PRD
|
{
|
//保存时校验收料通知单数量是否超出提料计划单数量
|
[Description("[收料通知单-保存]表单插件]")]
|
[HotUpdate]
|
public class Pur_ReceiveBill : AbstractBillPlugIn
|
{
|
public override void BarItemClick(BarItemClickEventArgs e)
|
{
|
base.BarItemClick(e);
|
try
|
{
|
var fid = this.View.Model.GetPKValue()?.ToString();
|
if (string.IsNullOrEmpty(fid))
|
return;
|
DynamicObjectCollection selectedRowsDy = this.Model.DataObject["PUR_ReceiveEntry"] as DynamicObjectCollection;
|
foreach (var item in selectedRowsDy)
|
{
|
if (item["FTLENTRYID"].ToString() == "0")
|
break;
|
decimal FActReceiveQty = Convert.ToDecimal(item["ActReceiveQty"]);//本次修改后收货数量
|
string sql = $"/*dialect*/ select sum(FActReceiveQty)FActReceiveQty from T_PUR_RECEIVEENTRY where FTLENTRYID = {item["FTLENTRYID"]} and FENTRYID <> {item["Id"]}";
|
decimal FSumActReceiveQty = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);//已有收料单数量
|
sql = $"/*dialect*/ select FHQTY from Cg_PODemandPlanBillSub where FENTRYID = {item["FTLENTRYID"]}";
|
decimal FQty = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0);//提料计划单数量
|
if (FQty < FActReceiveQty + FSumActReceiveQty)
|
{
|
//取消
|
e.Cancel = true;
|
if (FSumActReceiveQty == 0)
|
this.View.ShowErrMessage($"收货数量:{FActReceiveQty},超出提料计划单总数:{FQty}");
|
else
|
this.View.ShowErrMessage($"该单据收货数量:{FActReceiveQty},其它单据收货总数量:{FSumActReceiveQty},超出提料计划单总数:{FQty}");
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
this.View.ShowErrMessage(ex.Message.ToString());
|
}
|
}
|
}
|
}
|