1.业务函数
1.1 取假勤日历天数()
返回指定期间内,员工所属出勤规则的工作日历天数
取假勤日历天数(开始日期,结束日期,日期类型)
开始日期:日期型 必填
结束日期:日期型 必填
日期类型:必填,自然日;工作日含法定节假日;工作日不含法定节假日;法定节假日
日期规则:
开始日期不得早于2019年1月1日
结束日期不得晚于当前日期下一年的12月31日
场景1:客服专员张三,当月10号入职,走排班规则,算当月一共有多少工作日,用于计算日薪
公式:取假勤日历天数(任职信息.入职日期,薪酬核算.期间结束日期,"工作日不含法定节假日")
其他:如果需要取当前核算周期内的工作日不含法定节假日,也可以使用【算薪数据】-【出勤月报】-【日历工作日天数】
1.2 取标准日历天数()
返回指定期间内,标准工作日历天数
取标准日历天数(开始日期,结束日期,日期类型)
开始日期:日期型 必填
结束日期:日期型 必填
日期类型:必填,自然日;工作日含法定节假日;工作日不含法定节假日;法定节假日
日期规则:
开始日期不得早于2019年1月1日
结束日期不得晚于当前日期下一年的12月31日
场景1:正常员工张三,当月10号入职,算当月一共有多少工作日,用于计算日薪
公式:取标准日历天数(任职信息.入职日期,薪酬核算.期间结束日期,"工作日含法定节假日")
1.3 取工资项累计值()
返回指定核算规则、指定项目在指定期间薪酬核算的累计结果
取值逻辑:已归档状态的结果,且不包含当月的计算结果
取工资项累计值(指定核算规则, 指定项目, 指定期间)
指定核算规则:必填,获取全部方案结果时,填写「全部规则」
指定项目:必填,指定工资项目(数字类型)
指定期间:必填,上年、上月、当年,其他期间直接填写数字:2、3、4、5、6...(不包含计算当月的数据)
场景1:当年累计事假天数小于等于10天,事假按日工资的30%扣除;当年累计事假天数大于10天且小于等于30天,事假按日工资的50%扣除;当年累计事假天数大于30天,事假按日工资的70%扣除
公式:增加工资项目【累计事假次数(截止上月)】、【累计事假次数】、【病假扣款】
【累计事假次数(截止上月)】 =
取工资项累计值("全部规则",工资项目.病假天数,"当年")
【累计事假次数】= 工资项目.累计事假次数(截止上月) +
工资项目.累计事假次数
【病假扣款】=
if 0 < 工资项目.累计事假次数 and 工资项目.累计事假次数 <= 10
then 工资项目.病假天数 * 工资项目.日工资 * 0.3
else if 10 < 工资项目.累计事假次数 and 工资项目.累计事假次数 <= 30
then 工资项目.病假天数 * 工资项目.日工资 * 0.5
else if 工资项目.累计事假次数 > 30
then 工资项目.病假天数 * 工资项目.日工资 * 0.7
else 0
1.4 是否不为空()
判断是否不为空,如果不空返回True(是),否则返回False(否)
是否不为空(值)
值:必填,可使用任意字段
场景1:员工如果存在最后发薪日,则按0计算,如果不存在,则发放补贴
公式:
if 是否不为空(薪资档案.最后发薪日) = "是"
then 0
else 工资项目.补贴
1.5 按天计算然后求和()
入离职、调薪时,如需要薪酬折算,则使用此函数
根据薪酬核算的期间,拆分到每天,计算每天的结果,然后求和汇总
按天计算然后求和(公式)
公式:填写具体的计算逻辑
场景1:当前计算6月1日-6月30日工资,张三6月12日调薪,6月1日-6月11日按照调薪前工资计算,6月12日-6月30日按照调薪后工资计算,需要计算张三6月份每一天的日薪,将每一天的日薪累加起来,得到当月的工资,日薪以工作日+法定节假日为计算基准
公式:
按天计算然后求和(
if 系统变量.日历日期类型="工作日" or 系统变量.日历日期类型="法定节假日"
then 薪资档案.基本薪资 / 取标准日历天数(薪酬核算.期间开始日期,薪酬核算.期间结束日期,"工作日含法定节假日")
else 0)
其他:一般用于配置基本工资等固定薪资的公式,需要询问客户当月入离职、当月调薪的具体规则、日薪计算的基准、是否不同类型的人员基准不同(排班的和正常的)
1.6 是否归属于部门()
判断员工当前任职的最新部门是否归属于指定部门,如果属于返回True(是),否则返回False(否)
是否归属于部门(指定部门)
指定部门:填写部门全称,用双引号引用
场景1:张三所属部门
外部客户服务中心-非洲服务部-基础设施组,非洲服务部的员工都享受高温补贴
公式:工资项目【高温补贴】
【高温补贴】=
if 是否归属于部门(非洲服务部) = "是"
then 8000
else 0
2.日期函数
2.1 Day()
获取指定日期中的"日"
Day(日期)
日期:可使用日期、日期时间类型字段或常量(yyyy/MM/dd或yyyy/MM/dd
HH:mm),常量用双引号引用
场景1:算薪当月入职的,入职日期在15日之前的,当月可享受整月补贴,否则不享受补贴
公式:工资项目【整月补贴】
if Day(任职信息.入职日期) < 15
then 2000
else 0
2.2 Month()
获取指定日期字段中的"月"
Month(日期)
日期:可使用日期、日期时间类型字段或常量(yyyy/MM/dd或yyyy/MM/dd
HH:mm),常量用双引号引用
场景1:每年1月重新计算累计收入,否则按月累计
公式:工资项目【累计收入】
if Month(薪酬核算.发薪所属年月) = 1
then 0
else 工资项目.累计收入(截止上月)+ 工资项目.累计收入
2.3 Year()
获取指定日期字段中的"年"
Month(日期)
日期:可使用日期、日期时间类型字段或常量(yyyy.MM.dd或yyyy.MM.dd
HH:mm),常量用双引号引用
场景1:2020年之前入职的员工,享受忠诚奖
公式:工资项目【忠诚奖】
if Year(任职信息.入职日期) < 2021
then 1500
else 0
2.4 Days()
获取两个日期相差的天数
Days(日期1,日期2)
日期1、日期2:可使用日期、日期时间类型字段或常量(yyyy.MM.dd,yyyy-mm-dd,yyyy/mm/dd),常量用双引号引用
场景1:无
公式:Days("2020.01.01", 基本信息.参加工作时间)
2.5 Months()
获取两个日期相差的月数
Months(日期1,日期2)
日期1、日期2:可使用日期、日期时间类型字段或常量(yyyy.MM.dd,yyyy-mm-dd,yyyy/mm/dd),常量用双引号引用
场景1:无
公式:Months("2020.01.01", 基本信息.参加工作时间)
2.6 Years()
获取两个日期相差的年数
Years(日期1,日期2)
日期1、日期2:可使用日期、日期时间类型字段或常量(yyyy.MM.dd,yyyy-mm-dd,yyyy/mm/dd),常量用双引号引用
场景1:无
公式:Years("2020.01.01", 基本信息.参加工作时间)
场景2:司龄计算,司龄一般关系到司龄工资的算法,一般为满xx年,有一定的奖励,所以目标是算出员工入职到发薪一共是第几年,员工司龄满或小于1年一年有100司龄补贴,之后每年增加50
公式:新增工资项目【在职月数】、【司龄-年】、【司龄补贴】
【在职月数】= Years(薪酬核算.期间结束日期, 任职信息.入职日期) * 12 +
Months(薪酬核算.期间结束日期, 任职信息.入职日期)
【司龄-年】= 【在职月数】/ 12
【司龄补贴】=
if 工资项目.司龄-年 > 1
then (工资项目.司龄-年 - 1) * 50 + 100
else 100
3.数学函数
3.1 Round()
按指定的位数对数值进行四舍五入
Round(数值 ,保留位数)
数值:可使用数值类型字段或常量
保留位数:必填,整数
场景1:工资项目.养老保险的计算结果四舍五入保留两位小数
公式:Round(工资项目.个人养老保险, 2)
结果:890.126 -> 890.13
3.2 RoundUp()
按指定的位数将数值向上舍入到最接近的整数或小数
RoundUP(数值 ,保留位数)
数值:可使用数值类型字段或常量
保留位数:整数
场景1:工资项目.养老保险的计算结果向上补足到两位小数
公式:RoundUp(工资项目.个人养老保险, 2)
结果:890.121 -> 890.13
3.3 RoundDown()
按指定的位数将数值向下舍入到最接近的整数或小数
RoundDown(数值 ,保留位数)
数值:可使用数值类型字段或常量
保留位数:整数
场景1:工资项目.养老保险的计算结果向下取舍到两位小数
公式:RoundDown(工资项目.个人养老保险, 2)
结果:890.129 -> 890.12
4.统计函数
4.1 Min()
取结果中的最小值
Min(数值1 ,数值2,数值3....)
数值:可使用数值类型字段或常量
场景1:工资项目.养老保险基数,上限为28000
公式:Min(工资项目.养老保险基数, 28000)
结果:工资项目.养老保险基数 = 30000,公式结果 = 28000
4.2 Max()
取结果中的最大值
Max(数值1 ,数值2,数值3....)
数值:可使用数值类型字段或常量
场景1:一般用于防止负数的产生,出勤工资 = 应发工资 - 扣款合计
公式:Max(工资项目.出勤工资, 0)
结果:工资项目.出勤工资 = -300,公式结果 = 0
5.其他函数
5.1 Def()
自定义变量,函数结束需加分号
Def(变量, 表达式);
变量:必填,英文、中文均可
表达式:必填,通过运算符连接的表达式,也可使用由"如果...那么...否则"
场景1:一般用于计算公式中需要添加临时变量,且不想单独创建一个新的工资项目时,例如如果员工工资低于最低工资标准,则发放补贴
公式:工资项目【最低工资补贴】
Def(低于最低工资标准, if 工资项目.应发工资>3000 then "否" else "是"); //这里自定义"最低工资标准"
if 低于最低工资标准 ="是"
then 5000
else 0