王 垚
2022-09-05 226dd2b152c0fb06b3f8108ac7740216a8a453c6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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());
            }
        }
    }
}