电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.服务插件.校验器.子单据体字段汇总到单据体后的数据合法性检查

来源:金蝶云社区作者:金蝶2024-09-239

二开案例.服务插件.校验器.子单据体字段汇总到单据体后的数据合法性检查

【应用场景】

使用校验器,执行子单据体字段汇总到单据体后的数据合法性检查。

【案例演示】

采购订单有明细信息单据体,明细信息单据体有交货明细子单据体,添加校验器,验证交货明细子单据体的数量列合计值是否等于其父单据体的交货数量字段的值。

【实现步骤】

<1>编写服务插件,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.Core;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.Validation;

using Kingdee.BOS.Orm.DataEntity;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;

using System.Linq;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【服务插件】子单据体字段汇总到单据体后的数据合法性检查

    /// </summary>

    [Description("【服务插件】子单据体字段汇总到单据体后的数据合法性检查"), HotUpdate]

    public class SubEntitySummaryToEntityOperationServicePlugIn : AbstractOperationServicePlugIn

    {

        /// <summary>

        /// 添加插件需要用到的字段引用

        /// </summary>

        /// <param name="e"></param>

        public override void OnPreparePropertys(PreparePropertysEventArgs e)

        {

            base.OnPreparePropertys(e);

            e.FieldKeys.Add("F_Jac_Qty");

            e.FieldKeys.Add("FPlanQty");

        }


        /// <summary>

        /// 添加校验器

        /// </summary>

        /// <param name="e"></param>

        public override void OnAddValidators(AddValidatorsEventArgs e)

        {

            base.OnAddValidators(e);

            var validator = new SubEntitySummaryToEntityValidator();

            e.Validators.Add(validator);

        }

    }


    /// <summary>

    /// 校验器-子单据体字段汇总到单据体后的数据合法性检查

    /// </summary>

    public class SubEntitySummaryToEntityValidator : AbstractValidator

    {

        public override void InitializeConfiguration(ValidateContext validateContext, Context ctx)

        {

            base.InitializeConfiguration(validateContext, ctx);

            if (validateContext.BusinessInfo != null)

            {

                // 将完整数据包传入校验器内部,方便取数

                EntityKey = validateContext.BusinessInfo.GetEntity(0).Key;

            }

        }


        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)

        {

            if (validateContext.IgnoreWarning)

            {

                return; // 警告已经被用户忽略,就不需要再次执行了

            }


            if (dataEntities == null || dataEntities.Length == 0)

            {

                return;

            }


            foreach (var et in dataEntities)

            {

                var entityObjs = et["POOrderEntry"] as DynamicObjectCollection;

                if (entityObjs == null || entityObjs.Count == 0)

                {

                    continue;

                }


                var rowIndex = 0;

                foreach (var entityObj in entityObjs)

                {

                    rowIndex++;

                    var subObjs = entityObj["POOrderEntryDeliPlan"] as DynamicObjectCollection;

                    if (subObjs ==

二开案例.服务插件.校验器.子单据体字段汇总到单据体后的数据合法性检查

【应用场景】使用校验器,执行子单据体字段汇总到单据体后的数据合法性检查。【案例演示】采购订单有明细信息单据体,明细信息单据体有交货...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信