美文网首页
NC65薪资发放项目客开

NC65薪资发放项目客开

作者: 把酒对牛 | 来源:发表于2019-12-27 11:12 被阅读0次

    需求

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

    分析

    这些单据都是根据各自模块的【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语句当中去。
    <entry>
      <string>valueOfJXSPXM</string>
      <function>
        <defaultName>绩效审批项目</defaultName>  <!-- 名称 -->
        <displayName>valueOfJXSPXM()</displayName>  <!-- 公式 -->
        <hintMsgRes>取对象在指定绩效方案或期间中的绩效审批项目值</hintMsgRes>  <!-- 解释 -->
        <inputSigRes>绩效审批项目</inputSigRes>
        <pattern>valueOfJXSPXM\(\w+\)</pattern>  <!-- 公式格式校验 -->
        <arguments>valueOfJXSPXM({0})</arguments>  <!-- 公式参数 -->
        <parapanel>nc.ui.hr.func.WAJxspxmPanel</parapanel>  <!-- 公式配置界面 -->
        <convertor>nc.ui.hr.func.WAJxspxmConvertor</convertor>  <!-- 公式转换 -->
        <group>PE</group>  <!-- 所属系统 -->
        <process>nc.impl.wa.func.WAJxspxmParse</process>  <!-- 公式解析 -->
        <productCode>UPP6013func</productCode>
      </function>
    </entry>
    

    相关文章

      网友评论

          本文标题:NC65薪资发放项目客开

          本文链接:https://www.haomeiwen.com/subject/urkloctx.html