服务插件给单据字段赋值-简单示例

需求场景:委外用料清单保存时,根据子项物料的物料属性,判断勾不勾选MRP计算。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.Core;
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using System.Data;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm;
using System.ComponentModel;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm;
using System.Web;
using System.IO;


namespace MRPSelect
{
    [Description("委外用料清单保存判断MRP")]
    public class SUBBOMMRP:AbstractOperationServicePlugIn
    {
        public override void OnPrepareOperationServiceOption(OnPrepareOperationServiceEventArgs e)
        {
            base.OnPrepareOperationServiceOption(e);
        }
        /// <summary>
        /// 数据加载前,确保需要的属性被加载
        /// </summary>
        /// <param name="e"></param>
        /// <remarks>
        /// 在列表上执行操作时,单据的字段并没有被完全加载。
        /// 如果操作插件用到了未被加载的字段,一定会中断;
        /// 本事件允许插件,强制要求加载某些字段,避免中断
        /// </remarks>
        public override void OnPreparePropertys(PreparePropertysEventArgs e)
        {
            // 如下代码行,指定字段xxxxx的Key,强制要求加载字段
            //e.FieldKeys.Add("FJSTORDERNO");
            //e.FieldKeys.Add("FSOURCETYPE");
            //e.FieldKeys.Add("FSetAccountType");
            //e.FieldKeys.Add("FDATE");
        }
        public override void OnAddValidators(AddValidatorsEventArgs e)
        {
            base.OnAddValidators(e);
            this.OperationResult.IsShowMessage = true;
        }
        public override void BeginOperationTransaction(BeginOperationTransactionArgs e)
        {
            base.BeginOperationTransaction(e);
            if (e.DataEntitys.Count() < 1)
            {
                return;
            }
            string MatID = "";
            string Sql = "";
            DataSet ds = new DataSet();
            foreach (var item in e.DataEntitys)
            {
                    
                DynamicObjectCollection PPBomEntry = item["PPBomEntry"] as DynamicObjectCollection;
                if (PPBomEntry.Count > 0)
                {
                    for (int i = 0; i < PPBomEntry.Count; i++)
                    {
                        MatID = PPBomEntry[i]["MaterialID_Id"].ToString();
                        Sql = "select FERPCLSID from t_BD_MaterialBase where FMATERIALID = '" + MatID + "' ";
                        ds = Kingdee.BOS.ServiceHelper.DBServiceHelper.ExecuteDataSet(this.Context, Sql);
                        if (ds.Tables[0].Rows.Count > 0)
                        {
                            if (ds.Tables[0].Rows[0]["FERPCLSID"].ToString() == "2" || ds.Tables[0].Rows[0]["FERPCLSID"].ToString() == "3")
                            {
                                PPBomEntry[i]["IsMrpRun"] = 0;
                            }
                        }
                    }
                }   
            }
        }
    }
}

posted @ 2020-03-11 15:47  放放的Blog  阅读(672)  评论(0编辑  收藏  举报