如何在提报单分录上增加、修改和删除字段

【适用版本】
s-HR Cloud V8.6.1.2及以上
【应用场景】
出于业务需求,客户希望对提报单上非提报项目类型的字段进行调整,比如修改字段某些属性、删除某个字段或者增加新的字段。

【详细说明】
1、提报单分录加载逻辑介绍
1.1 加载分录表头
1.1.1 在编辑页面下,提报单表单页的提报项目发生变化时,会触发提报单分录表的表头重新加载,即触发getEditGridColModel方法。视图中配置的js文件为:
<script src="${appPath}/${appCode}/web/js/integrate/base/submitbill/defaultBatchSubmitShemeBill.js" /> 
1.1.2 前端getEditGridColModel方法会调用后端Handler的getEditGridColModelAction方法加载columnModel。视图中配置的后端处理器为:
<handler class="com.kingdee.shr.compensation.web.handler.integrate.BatchSubmitShemeBillEditHandler" />
在BatchSubmitShemeBillEditHandler的getEditGridColModelAction方法中有一个可拓展的分录生成器,通过该分录生成器获取分录表头信息。
CmpColumnModels cmpColumnModels = getEntryGenerator(ctx).getEntryColumnModels(ctx, submitSchemeId, params);

(拓展点1)
1.1.3. BaseSubmitBillEntryGenerator简介
目前提报单分录的固定字段(非提报项目)加载哪些字段,是由视图com.kingdee.shr.compensation.app.integrate.BatchSubmitShemeBill.form.display配置决定的。

这些字段的加载方法,在BaseSubmitBillEntryGenerator中维护了视图中配置的field的name属性就对应字段加载columnModel方法,例如员工编码的columnModel加载方法为assembleNumber。
(拓展点2)

最终在方法getEntryColumnModelsCustom中通过反射调用完成了对表头的组装
1.2 加载分录数据
1.2.1 在脚本defaultBatchSubmitShemeBill.js中,getGridDataRequestURL为加载分录数据的方法。该方法配指定了加载数的后端处理器com.kingdee.shr.compensation.web.handler.integrate.BatchSubmitBillEntryGridHandler和加载数据的方法名getGridDataAction。
BatchSubmitBillEntryGridHandler的getGridDataAction方法拓展了父类并覆写了父类的getGridMap方法获取数据。

1.2.2 组装分录数据查询的SQL
上图所示的CmpIntegrateUtils类的getBillColumnListAndQuerySql方法组装了以下3种信息:
colNames: 字段在所属实体种的名称或者提报项目的数据库字段名
columnMap: 数值型字段名对应的精度信息
querySql: 数查询SQL,对应的变量为StringBuilder sd

(拓展点3)
1.3 分录F7选择员工后带出关联信息
用户在提报单分录上选择员工后,会自动填充组织和职位等信息,代码实现逻辑页在脚本defaultBatchSubmitShemeBill.js的setGridNameEvent方法中。

(拓展点4)
2、如何新增一个字段
2.1 拓展提报单单据分录,增加属性,给分录固定表和动态表增加字段(如何查找所有分录见社区文档如何根据提报单分录信息决定工作流走向)。如果字段是由其它属性带出无需报错则跳过这一步。
2.2 拓展视图,拓展js,拓展Handler ,拓展BaseSubmitBillEntryGenerator并在拓展的Handler中使用(见拓展点1)。
2.3 在拓展的BaseSubmitBillEntryGenerator的assembleFieldName2MethodName中,增加新字段名和方法名映射(见拓展点2),并实现新增字段的
如何在提报单分录上增加、修改和删除字段
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



