业务流-》使用单据转换插件干预分组
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行数据下推,分录不合并,如下图:
4、情况2,5行数据下推,数据合并,如下图:
Mark~
业务流-》使用单据转换插件干预分组
1、转换规则中的分组策略,没有条件设置来控制特定场景下分组2、比如单据下推时,分录的数量大于等于5,则分录按配置合并,否则不合并。代...
点击下载文档
本文2024-09-16 18:19:32发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-21410.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章