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

【二开】销售订单关联收款单时选单的收款单分录列表如何显示收款单自定义字段

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

【二开】销售订单关联收款单时选单的收款单分录列表如何显示收款单自定义字段

       销售订单的收款计划里通过点击关联单号进行关联收款单做预收,选单的时候,弹出来的收款单分录列表实际上是一个动态表单Sal_ReceiveList,动态表单里的取数是通过表单插件执行的,因此,表单里展示的收款单相关字段是固定的,并不支持通过配置显示收款单自定义字段或者是当前未显示的其他字段,而实际应用中,则确实有这样的需求。

图片.webp


       当前这样的需求,那就需要二开插件来变通处理,以下就简单介绍一下二开方案,相关思路和代码仅做参考,实际应用中还需要客户二开根据实际应用适当改写并测试应用。

       二开这个动态表单的表单插件,注册进来应用,二开插件里建议重载AfterBindData事件,即在标准绑定数据后进行二次关联查询取数。

图片.webp


       二开的基本思路是在AfterBindData事件中,遍历获取动态表单里的单据体的数据,从单据体里获取标准逻辑已返回的收款单的分录内码,以这些内码做条件,关联查询收款单的相关表,将收款单的自定义字段获取返回并和收款单分录内码拼成字典对象,形成对应关系,再用该字典跟原单据体进行匹配,将自定义字段赋值回单据体对应行显示。二开代码参考如下,代码仅做参考,实际应用中还需要客户二开根据实际应用适当改写并测试应用:

public override void AfterBindData(EventArgs e)
        {
            Entity entryEntity = this.View.BusinessInfo.GetEntity("FSalReceive");
            DynamicObjectCollection entryList = this.View.Model.GetEntityDataObject(entryEntity);
            List<long> entryIdLists = new List<long>();
            foreach (var item in entryList)
            {
                if (item == null)
                    continue;
                long entryId = Convert.ToInt64(item["EntryId"]);  //预收单分录内码
                if (entryId > 0 && !entryIdLists.Contains(entryId))
                {
                    entryIdLists.Add(entryId);
                }
            }
            if (entryIdLists.Count > 0)
            {
                #region  这一段关联收款单表重取数据,执行SQL一般不在表单插件直接执行,建议改写放到服务端插件里去

                string sql = string.Format(@"select E.FENTRYID,E.自定义字段 from T_AR_RECEIVEBILLENTRY E
                inner join (SELECT {0} FID FROM TABLE(fn_StrSplit(@FENTRYID, ',', 1)) B) SS on SS.FID = E.FENTRYID",
                this.Context.DatabaseType != DatabaseType.MS_SQL_Server ? string.Format("/*+ cardinality({0} {1})*/", "B", entryIdLists.Count) : ""); //实际取数SQL按需编写
                List<SqlParam> lstParam = new List<SqlParam>();
                lstParam.Add(new SqlParam("@FENTRYID", KDDbType.udt_inttable, entryIdLists.Distinct().ToArray()));
                DynamicObjectCollection result = DBUtils.ExecuteDynamicObject(this.Context, sql, null, null, CommandType.Text, lstPara

【二开】销售订单关联收款单时选单的收款单分录列表如何显示收款单自定义字段

销售订单的收款计划里通过点击关联单号进行关联收款单做预收,选单的时候,弹出来的收款单分录列表实际上是一个动态表单Sal_Receiv...
点击下载文档文档为doc格式

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

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