列表插件合计行按条件汇总二开处理
一、【需求问题】
形态转换单在单据中数量合计只显示转换后的合计,但是列表显示转换前+转换后合计,想列表也只显示转换后合计数
二、【功能分析】
形态转换单结构比较特殊,分为转换前和转换后的明细分录,且转换前后数据有对应关系,表单插件中在事件OnEntrySum(EntrySumEventArgs e)做了特殊处理,合计行只统计了"转换后"的数量。
列表插件无法通过配置直接干预合计行,只能通过二开列表插件处理。
具体的二开思路
1、重写FormatCellValue方法,当前列Key值为"转换数量"时,过滤获取"转换后"数值进行累加
2、IsSummaryRow判断是否为汇总行,进行赋值处理
3、重写AfterGetData,AfterBindData方法,数据刷新重新绑定时,清空累加的数值
py脚本:
import clr clr.AddReference("System") clr.AddReference("System.Core") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") from System import * from System import StringComparison from Kingdee.BOS.Core.List.PlugIn import * from Kingdee.BOS.Core.List.PlugIn.Args import * from Kingdee.BOS.Util import * _filterTmpSumQty = 0 _filterSumQty = 0 def AfterBindData(e): global _filterTmpSumQty,_filterSumQty _filterSumQty = 0 def AfterGetData(): global _filterTmpSumQty,_filterSumQty _filterSumQty = _filterTmpSumQty _filterTmpSumQty = 0 def FormatCellValue(e): global _filterTmpSumQty,_filterSumQty if e.Header.Key.Equals("FConvertQty", StringComparison.OrdinalIgnoreCase): if e.DataRow.ColumnContains("FConvertType"): convertType = Convert.ToString(e.DataRow["FConvertType"]) if convertType == "B": _filterTmpSumQty += Convert.ToDecimal(e.DataRow["FConvertQty"]) if e.IsSummaryRow and e.Header.Key.Equals("FConvertQty", StringComparison.OrdinalIgnoreCase): e.FormateValue = Convert.ToString(_filterSumQty)
显示效果:
参考:
说明:
1、该方案只处理了当前页的合计,系统默认的处理是汇总所有页的合计,当数据量较大涉及分页显示的话,则插件干预后合计数是当前页的合计
1、列表配置插件,不再统计"转换前"的数量,当条件筛选过滤只显示"转换前"数据时,合计转换数量依然为0,显示会有歧义
2、单据明细中转换前后有关联关系,删除转换前(后),会联动删除对应的转换前(后)数据
学习
列表插件合计行按条件汇总二开处理
一、【需求问题】形态转换单在单据中数量合计只显示转换后的合计,但是列表显示转换前+转换后合计,想列表也只显示转换后合计数二、【功能...
点击下载文档
本文2024-09-16 19:04:58发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26278.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章