NC65薪资发放项目客开

需求

客户要求【人力资本】模块的有关【薪资发放】单据能够支持审批流,如【社保缴交】、【考勤月报】等。

分析

这些单据都是根据各自模块的【xx项目】动态执行公式取数到界面上来的,标准产品并不支持审批流。经过沟通,直接在【社保】、【考勤】、【绩效】等模块,各自增加一个单据,由客户自己手动录入数据,并提交审批。然后在【薪酬管理】的【薪资发放项目】中,将【项目数据来源】设置为对应的单据字段。

实现

以【绩效】为例,开发【绩效审批项目】单据。

  1. 薪资发放项目添加字段
  • 元数据class_item.bmf
    添加【是否绩效审批项目】、【绩效审批项目编号】。
  • 代码
    元数据发布之后界面会出现字段,但是保存不进去。原因是【薪资发放项目】有自己的数据库操作类nc.impl.wa.classitem.ClassitemDAO,其中并没有我们新添加的字段,需要在getFileds()里加上。并且WaClassItemVO要添加新字段的getset方法,否则取不到值。
  1. 薪资期间添加参照
  • 数据库
    在参照数据表bd_refinfo中添加参照【薪资期间1】。
    不知道为什么,元数据里有taxyeartaxperiod,但是数据库里并没有,所以要添加这两个字段,否则查询会报错。
  • 元数据periodscheme.bmf
    为子表【薪资期间】设置参照【薪资期间1】。
INSERT INTO "BD_REFINFO"("CODE", "DR", "ISNEEDPARA", "ISSPECIALREF", "METADATATYPENAME", "MODULENAME", "NAME", "PARA1", "PARA2", "PARA3", "PK_REFINFO", "REFCLASS", "REFSYSTEM", "REFTYPE", "RESERV1", "RESERV2", "RESERV3", "RESID", "RESIDPATH", "TS", "WHEREPART", "METADATANAMESPACE", "LAYER", "PK_COUNTRY", "PK_INDUSTRY") VALUES ('waperiod1', '0', NULL, NULL, 'PeriodVO', 'hrwa', '薪资期间1', NULL, NULL, NULL, 'hrwaZ7110000000XAY93', 'nc.ui.wa.ref.WaPeriodRefTreeModel', NULL, '1', NULL, NULL, NULL, '060130refinfo0018', '60130refinfo', '2019-11-29 22:58:26', NULL, 'hrwa', NULL, NULL, NULL);
alter table wa_period add taxyear char(4);
comment on column wa_period.taxyear is '纳税年度';
alter table wa_period add taxperiod char(2);
comment on column wa_period.taxperiod is '纳税期间';
  1. 单据绘制
    单据要根据薪资发放项目动态加载字段,预留了30个数值型的字段,在列表态和卡片态初始化的时候,去查询符合条件的薪资发放项目,根据编码依次将表体的列名改为对应的薪资发放项目。即在ShowUpableBillFormShowUpableBillListView两个类的handleEvent函数中处理。但是列表态没必要动态修改列名,反正导入导出是根据卡片的字段来的,列表态也无法确定pk_org
  2. 公式配置
    为了能让薪资发放项目从新建的单据上取数,需要配置公式,公式的路径是home/resources/hr/wa/formula/wa_formula.xml,该文件的编码是UTF-8,但是系统是以GB2312的格式读取的,所以配置中文的时候要以GB2312的格式打开,标准产品不存在中文配置,名称都是以多语资源的形式录入的,最关键的是parapanelconvertorprocess三个配置项。
  • 【项目数据来源】选择【其他系统】,并选中自定义的功能名称之后,会显示parapanel中定义的面板,在上面选择参数后保存。系统在保存的时候会用正则校验是否存在环状依赖,因此需要破坏系统的检测,可以将_替换为约定的字符串,在解析的时候动态转换为正常的公式。
  • 用户看到的公式,是经过convertor转换过的,实际存储在数据库里的,是parapanel里生成的。
  • 薪资发放计算的时候,会执行process解析公式,实际上就是将公式解析SQL语句代入到薪资发放的SQL语句当中去。

  valueOfJXSPXM
  
    绩效审批项目  
    valueOfJXSPXM()  
    取对象在指定绩效方案或期间中的绩效审批项目值  
    绩效审批项目
    valueOfJXSPXM\(\w+\)  
    valueOfJXSPXM({0})  
    nc.ui.hr.func.WAJxspxmPanel  
    nc.ui.hr.func.WAJxspxmConvertor  
    PE  
    nc.impl.wa.func.WAJxspxmParse  
    UPP6013func
  

你可能感兴趣的:(NC65薪资发放项目客开)