业务流-》使用单据转换插件干预分组

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

业务流-》使用单据转换插件干预分组

1、转换规则中的分组策略,没有条件设置来控制特定场景下分组

2、比如单据下推时,分录的数量大于等于5,则分录按配置合并,否则不合并。代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata.ConvertElement;
using Kingdee.BOS.Core.Metadata.EntityElement;
namespace Kingdee.BOS.TestPlugIn.BillABillB
{
    [HotUpdate]
    [Description("单据转换插件")]
    public class BillConvertPlugIn : AbstractConvertPlugIn
    {
        string _sourceEntitykey; 
        /// <summary>
        /// 得到来源单关联单据体
        /// </summary>
        /// <param name="e"></param>
        public override void OnInitVariable(InitVariableEventArgs e)
        {
            base.OnInitVariable(e);
            var defaultPolicy = e.Rule.Policies.First(x => x is DefaultConvertPolicyElement) as DefaultConvertPolicyElement;
            this._sourceEntitykey = defaultPolicy.SourceEntryKey;
        }
/// <summary>
        /// 分组之前,根据从数据库取到的行数,判断是否要分录合并
        /// 注意:
        /// 1、如果数据中包含子单据体的数据,则使用e.SourceData.Count计算分录行数就不准了
        /// 2、如果包含了跨组织的基础资料,则也不准
        /// 3、通过循环e.SourceData取分录的内码最准了
        /// </summary>
        /// <param name="e"></param>
        public override void OnBeforeGroupBy(BeforeGroupByEventArgs e)
        {
            base.OnBeforeGroupBy(e);
            //取分录的内码
            // var entryId = ObjectUtils.Object2Int64(obj[sourceEntryPkFieldName]);
//分录数小于5,不合并分录,则需要把分录内码作为单据体分组依据,否则使用分组策略配置好的数据作为分组依据。
            if (e.SourceData.Count < 5) 
            {
                var entity = e.SourceBusinessInfo.GetEntity(this._sourceEntitykey);
                if (entity != null && entity is EntryEntity)
                {
                    e.EntryGroupKey = string.Concat(entity.Key, "_", entity.EntryPkFieldName);
                }
            }
        }
    }
}

3、情况1,单据A有4行数据下推,分录不合并,如下图:

image.webp

image.webp

4、情况2,5行数据下推,数据合并,如下图:

image.webp








Mark~

业务流-》使用单据转换插件干预分组

1、转换规则中的分组策略,没有条件设置来控制特定场景下分组2、比如单据下推时,分录的数量大于等于5,则分录按配置合并,否则不合并。代...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息