1. 取絕對值
名稱:絕對值
函數名:abs(double value)
參數列表:value 數字類型
示例:abs(-1.25) 結果為 1.25
特殊說明:無
2. 四捨五入
名稱:四捨五入
函數名:round(double value, int digit)
參數列表:value 數字類型,digit 整型(非必填)
示例:round(2.5645, 2) 結果為 2.56,round(2.5645) 結果為 3
特殊說明:如果 digit 未填寫,只填一個參數,則返回四捨五入的整數
3. 向上取整
名稱:向上取整
函數名:ceil(double value)
參數列表:value 數字類型
示例:ceil(2.45) 結果為 3.0
特殊說明:無
4. 向下取整
名稱:向下取整
函數名:floor(double value)
參數列表:value 數字類型
示例:floor(2.45) 結果為 2.0
特殊說明:無
5. 取日期
名稱:日期值
函數名:day (date value)
參數列表:value 日期類型
示例:day(‘2019-12-20’) 結果為 20
特殊說明:無
6. 取月份
名稱:月份值
函數名:month (date value)
參數列表:value 日期類型
示例:month(‘2019-12-20’) 結果為 12
特殊說明:無
7. 取年份
名稱:年份值
函數名:year(date value)
參數列表:value 日期類型
示例:year(‘2019-12-20’) 結果為 2019
特殊說明:無
8. 日期時間差
名稱:計算指定兩個日期之間的時間差
函數名:DateDiff (Date Part, StartDate, EndDate)
參數列表:
Date Part可選範圍 DAY / MONTH / YEAR
StartDate/EndDate 格式:YYYY-MM-DD
示例:
DateDiff (DAY, '2019-01-01', '2019-12-31') 結果為 364
DateDiff (MONTH, '2019-01-01', '2019-12-31') 結果為 11
9. 日期推算
名稱:推算一個特定的日期
函數名:DateAdd (Date Part, number, Date)
參數列表:
Date Part 字符串可選範圍 DAY/MONTH/YEAR
Date 完整日期YYYY-MM-DD
Number 整數,往前(正數)或往後(負數)推算的日期值
示例:
DateAdd (DAY, -5, '2019-12-20') 結果為 2019-12-15
DateAdd (MONTH, 5, '2019-12-20') 結果為 2020-05-20
10. 薪資項月平均值
名稱:PayitemMthlyAverage
功能說明:給一個薪酬項目指定時間段,算出這一段時間薪資的月平均值。
方法:PayitemMthlyAverage (Payitem, MonthDiffNumber, 0)
參數說明:
Payitem:系統中的工資項目
MonthDiffNumber:從當前月往回取過往指定多少個月(不包含當前月)
示例:
當前薪酬計算周期為2019-06-01 到2019-06-30
某員工3月-5月的基本工資(BasicSalary)分別為 10000,15000,20000
計算該員工在當前薪酬周期之前的三個月基本工資的月平均值:PayitemMthlyAverage (\'BasicSalary\', 3, 0) ,結果為 15000
11. 月薪酬匯總求和
名稱:PayitemMthlyTotal
功能說明:給一個薪酬項目指定時間段,算出這一段時間薪資的總和。
方法:PayitemMthlyTotal (Payitem, MonthDiffNumber, 0)
參數說明:
Payitem:取系統中的工資項目,不可自己輸入
MonthDiffNumber:從當前月往回取過往指定多少個月(不包含當前月)
示例:
當前薪酬計算周期為6月份
某員工3月-5月的基本工資(系統中名稱為BasicSalary)分別為 10000,15000,20000
計算該員工在當前薪酬周期之前的三個月基本工資的總和:PayitemMthlyTotal ('BasicSalary', 3, 0) ,結果為 45000
12. 周期開始日期
名稱:PayRunCycleStartDate
功能說明:返回當前薪酬計算周期的開始日期
方法:PayRunCycleStartDate ()
參數說明:無參數
示例:
假設當前薪酬計算周期是2020-03-01 到 2020-03-31
PayRunCycleStartDate() 的結果為 2020-03-01
13. 周期結束日期
名稱:PayRunCycleEndDate
功能說明:返回當前薪酬計算周期的結束日期
方法:PayRunCycleEndDate ()
參數說明:無參數
示例:
如果當前薪酬計算周期是2020-03-01 到 2020-03-31
PayRunCycleEndDate () 的結果為 2020-03-31
示例:根據12,13的函數,計算兩個日期的時間差
如果當前薪酬計算周期是2020-03-01 到 2020-03-31
var a = PayRunCycleStartDate ()
var b = PayRunCycleEndDate ()
DateDiff (DAY, ‘a’, ‘b’) 結果為30
14. 考勤開始日期
名稱:PayRunAttendStartDate
功能說明:返回當前薪酬計算周期中所採用的考勤周期開始日期
方法:PayRunAttendStartDate ()
參數說明:無參數
示例:
如果當前的薪酬計算周期採用的考勤時間是2020-03-01 到 2020-03-31
PayRunAttendStartDate () 的結果為 2020-03-01
15. 考勤結束日期
名稱:PayRunAttendEndDate
功能說明:返回當前薪酬計算周期中所採用的考勤周期結束日期
方法:PayRunAttendEndDate ()
參數說明:無參數
示例:
如果當前的薪酬計算周期採用的考勤時間是2020-03-01 到 2020-03-31
PayRunAttendEndDate () 的結果為 2020-03-31
示例 根據14,15的函數,計算兩個日期的時間差。如果當前的薪酬計算周期採用的考勤時間是2020-03-01 到 2020-03-31:
var a = PayRunAttendStartDate ()
var b = PayRunAttendEndDate ()
DateDiff (DAY, a, b) 的結果為 30
16. 薪資支付日期
名稱:PayRunPayDate
功能說明:返回當前薪酬運算的薪資支付日期
方法:PayRunPayDate ()
參數說明:無參數
示例:
假設當前薪酬運算周期為2020-03-01 到 2020-03-31,薪酬支付日期為2020-04-01
PayRunPayDate () 的結果為 2020-04-01
17. 在職日曆天數
名稱:PayRunPeriodInSerCalDays
功能說明:返回職員在當前薪酬運算周期內的在職日曆天數 (包括周六日)
方法:PayRunPeriodInSerCalDays ()
參數說明:無參數
示例 假如當前的薪酬計算周期為2020-03-01 到 2020-03-31 :
如果該員工在2020-03-01前已入職,PayRunPeriodInSerCalDays () 運算結果為 31
如果該員工在2020-03-16號入職,PayRunPeriodInSerCalDays () 運算結果為 16
18. 在職工作日天數
名稱:PayRunPeriodInSerWorkDays
功能說明:返回職員在當前周期時間範圍內的工作日天數 (不包括周六日)
方法:PayRunPeriodInSerWorkDays ()
參數說明:無參數
示例 假如當前的薪酬計算周期為2020-03-01 到 2020-03-31,公司規定的工作日為周一到周五:
如果該員工在2020-03-01前已入職,PayRunPeriodInSerWorkDays () 運算結果為 23
如果該員工在2020-03-16號入職,PayRunPeriodInSerWorkDays () 運算結果為 12
19. 按比例計薪的基準天數
名稱:MonthlyPayrollBaseDays
功能說明:在當前薪酬規則下,按多少天為基數來按比例計算當月應得收入
方法:MonthlyPayrollBaseDays ()
參數說明:無參數
示例:
假定當前的薪酬規則為月薪,按照周期日曆日數
當月為1月,日曆天數一共31天
MonthlyPayrollBaseDays () 運算結果為 31
20. 法定假日總天數
名稱:PayRunPeriodSHDays
功能說明:當前薪酬運算周期內的法定假日總天數
方法:PayRunPeriodSHDays ()
參數說明:無參數
示例:
假定當前的薪酬計算周期為2020-04-01 到 2020-04-30
當月2020-04-04 清明節為法定假日
PayRunPeriodSHDays () 運算結果為 1
21. 取職員屬性
名稱:GetEmployeeInfo
功能說明:取職員屬性對應的值(數值,日期或文本等)
方法:GetEmployeeInfo (‘field name’)
參數說明:Field Name 要跟系統對應的職員屬性名稱
示例:GetEmployeeInfo (\'lastWorkingDate\') 運算結果 2020-02-29
22. 自定義假期類型的總請假天數
名稱:AttendPeriodLeaveDays
功能說明:員工在當前薪酬計算中指定考勤周期內,公司自定義添加的假期的總請假天數
方法:AttendPeriodLeaveDays (‘Leave Type’),運算結果為天數
參數說明:Leave Type 為用戶手動在系統中添加的假期類型
示例:AttendPeriodLeaveDays ('Bereavement Leave')
示例詳細說明:
假定當前的薪酬計算周期為2020-03-01 到 2020-03-31,考勤周期一致
假設該員工在當月請了 3天的喪假(喪假是自定義添加的)
AttendPeriodLeaveDays ('Bereavement Leave') 運算結果為 3
23. 有考勤異常狀態的總天數統計
名稱:CountAttendStatusByDay
功能說明:在該薪酬運算周期對應的考勤周期,考勤狀態(遲到,早退,缺勤)以天為單位統計該狀態出現的次數 (一個月之內,有遲到狀態的總天數)
方法:CountAttendStatusByDay (Status Item, Range in mins),運算結果為總天數
參數說明:
Status Item: Late, Early Leave, Absence
Range 分鐘數範圍
示例 以遲到作為例子,假定當前的薪酬計算周期為2020-03-01 到 2020-03-31,考勤周期一致。某員工當月一共有5天,有遲到記錄。其中2天遲到在10分鐘內,另外3天遲到了20分鐘:
CountAttendStatusByDay ('Late', 0-10) 結果為 2
CountAttendStatusByDay ('Late', 10-30) 結果為 3
CountAttendStatusByDay ('Late', 0-30) 結果為 5
24. 考勤異常狀態總分鐘數求和
名稱:AttendStatusSumByMins
功能說明:考勤異常狀態(遲到,早退,缺勤)總分鐘數求和
方法:AttendStatusSumByMins (\'Status Item\'),運算結果為總分鐘數
參數說明:
Status Item: Late, Early Leave, Absence
示例 以遲到作為例子,假定當前的薪酬計算周期為2020-03-01 到 2020-03-31,考勤周期一致。某員工當月一共有3天有遲到記錄,分別遲到了 5分鐘,8分鐘,10分鐘:AttendStatusSumByMins ('Late') 結果為 23分鐘 (5+8+10)
25. 職員在指定時間範圍內的法定假期總天數
名稱:GetEmpSHDay
功能說明:從入職日期開始後多長時間,到該薪酬計算周期截止/或該員工離職(取這兩者中最早的日子),這段時期內該職員的法定假期總天數
方法:GetEmpSHDay (Date Part, Number )
參數說明:
Date Part:DAY / MONTH / YEAR (3選1)
Number:Date type的計量單位,為整數
示例1
一名員工2020-01-01入職,目前在
職本次薪酬計算周期為 2020-04-01 到 2020-04-30
如果想計算該員工入職後一個月,到2020-04-30 這段時間內,一共有多少天法定假期,即可用該公式 GetEmpSHDay (MONTH, 1)
示例2
一名員工2019-01-01入職,2019-11-18號離職
本次薪酬計算周期為 2019-11-01 到 2019-11-31
如果想計算該員工入職後3個月,到離職這段時間,一共有多少天法定假,即可用該公式 GetEmpSHDay (‘M’, 3)
26. 返回指明日期的ADW
名稱:SpecifiedADW
功能說明:結合當前的特定的pay item(假期)根據假期的首日,返回指明日期的ADW
方法:GetEmpShDay()
參數說明:無參數
示例:
var a = SpecifiedADW()
Value = a * 0.8
27.特殊的補發或扣減項的金額 – 新增函數
名稱:VariablePayitemByEffDate
功能說明:如果在過去有一些非固定薪酬項目的記錄發生了改變,但未能及時錄入在系統中,導致該記錄是在當前薪酬運算周期內輸入系統的,該函數可以計算,因為該項歷史紀錄的輸入,需要在當月的發薪做什麼樣的金額調整
方法:VariablePayitemByEffDate (‘VariablePayItemName A’, ‘VarablePayItemValue*-+/[PayrollRecordPayItemName B]’)
參數說明:
VariablePayItemName A: 非固定薪酬項的系統名稱, 結果為非固定薪酬項A在補充記錄中對應的數值
VarablePayItemValue:固定表達
[PayrollRecordPayItemName B]: 薪酬項的系統名。運算過程:先找到A薪酬項本該發生的日期,以及該日期所屬的薪酬計算周期,再找出B薪酬項在該薪酬計算周期中對應的數值,按照所定義的四則運算求值
示例1
一名員工在2019年12月請了3天無薪假 (無薪假NoPayLeaveDays 為VariablePayItemName A)
該記錄是在2020年2月的薪酬計算周期錄入系統的
需要根據12月的平均日工資(ADW 為PayrollRecordPayItemName B)計算無薪假期等值的金額,從該員工2月的工資中扣除。公式可以寫成:
VariablePayitemByEffDate (‘NoPayLeaveDays’, ‘VarablePayItemValue*[ADW]’)
28.第幾次發薪計算 – 新增函數
名稱:CountPayrollRun
功能說明:當前的計算,屬於該薪酬週期中的第幾次發薪計算
方法:CountPayrollRun () 出來的結果就是次數
參數說明:無參數
29.找到薪酬規則下計算週期天數基數 – 新增函數
名稱:CountPayrollRun
功能說明:當前的計算,屬於該薪酬週期中的第幾次發薪計算
方法:CountPayrollRun () 出來的結果就是次數
參數說明:無參數
30.取一個或多個報銷類型-新增函數
名稱:GetExpensesAmount
功能說明:如果有僱員在系統內有報銷申請紀錄,並需要在規定薪酬週期中出糧,該函數可以分情況判斷。
方法:GetExpensesAmount(‘週期類型’,'報銷類型名稱')
參數說明:
週期類型:A (考勤週期)/ P (薪酬週期) 二選一
報銷類型名稱:系統內用戶所定義的報銷類型名稱,如有多條符合那麼則計算多條報銷單。如果填寫“AllType“,則代表合計全部報銷單數值。
(注意:系統會自動忽略報銷類型名稱中的英文大小寫,假設公司有兩個報銷類型 “travel expenses” 和 “Travel expenses”。如果在參數2設置中選擇前者,系統也會自動合計後者的數值)
示例1:
以 A 公司4月計薪週期為例,HR通常會取3月25日- 4月24日的考勤數據用於5月10日的正常出糧,以便每月有4-5天來檢查MPF,僱員薪水,報稅,離職算薪等情況是否計算準確。
這種情況下,如僱員David在3月17日提交了一條差旅報銷,取David考勤週期中差旅項目的報銷金額時,公式為GetExpensesAmount('A','差旅')
示例2:
而在B公司的人事流程中,報銷金額都會次月在薪水中體現。這種情況下,如僱員在27/3提交了數條報銷,當取Laura薪酬週期中的所有報銷金額時,公式為GetExpensesAmount('B','AllType')
31.將表達式或者變量轉換為數值類型
功能說明:將表達式或者變量轉換為數值類型
方法:ConvertToNumber(expression)
參數說明:
expression: 函數表達式或者文本變量
示例:
如果某員工的基本薪酬是10000,則調用 ConvertToNumber(GetEmployeeInfo('basicPay')) 返回數值型 10000,供後續公式運算使用
直接使用 ConvertToNumber('10000') 返回數值類型 10000,如果參數異常,則返回 0
32.獲取當前薪酬運算的薪酬規則名稱
功能說明:獲取當前薪酬運算的薪酬規則名稱
方法:PayrollPolicyName()
示例:
假定當前的薪酬計算的運算規則為 Sample Payroll Policy,則 PayrollPolicyName() 函數將返回 Sample Payroll Policy 用於公式編寫判斷使用
33.統計班次類型天數
功能說明:統計班次類型天數
方法:CountRosterByDay('type')
參數說明:
type:當值為Working時,返回計薪周期內的排班工作日天數;當值為Rest時,返回排班休息日天數;當值為SH時,返回排班法定假日天數;當值為空時,返回排班的天數;
示例:
CountRosterByDay('Working'); CountRosterByDay('Rest'); CountRosterByDay()
34.排班時長
功能說明:依據薪酬當前周期對應的考勤周期,返回雇員的排班時長
方法:GetRosterByTime('startTime', 'endTime')
參數說明:
startTime:開始時間
endTime:結束時間
示例:
GetRosterByTime('09:00' ,'17:00')
2020-07-01—2020-07-01 排班09:00 —12:00 180 min
2020-07-02—2020-07-02 排班14:00 —18:00 180 min
2020-07-03—2020-07-03 排班17:00 —20:00 0 min
共返回360 min
35.獲取指定地點排班時長
功能說明:依據薪酬當前周期對應的考勤周期,返回指定地點排班時長
方法:GetRosterByLocation ('location')
參數說明:
location: 辦公打卡點名稱,如果存在多個Location字段,則在參數內用逗號依次分隔
示例:
GetRosterByLocation ('上海, 深圳, 長沙')
2020-07-01—2020-07-01 排班09:00 —12:00 location:上海
2020-07-02—2020-07-02 排班14:00 —18:00 location:深圳
2020-07-03—2020-07-03 排班17:00 —20:00 location:長沙
共返回420 min
36.返回指定排班項目的排班時長
功能說明:依據薪酬當前周期對應的考勤周期,返回指定排班項目的排班時長
方法:GetRosterByProject ('project')
參數說明:
project:排班項目名稱,如果存在多個Project字段,則在參數內用逗號依次分隔
示例:
GetRosterByProject ('舞蹈, 室內單車, 搏擊')
2020-07-01—2020-07-01 排班09:00 —12:00 location:舞蹈
2020-07-02—2020-07-02 排班14:00 —18:00 location:室內單車
2020-07-03—2020-07-03 排班17:00 —20:00 location:搏擊
共返回180 min
37.判斷表達式是否為空
功能說明:判斷表達式是否為空
方法:isNull(expression)
示例:
var variable; isNull(variable) 結果為 true;var variable = 10; isNull(variable) 結果為 false
38.計算指定周期指定次數薪資
功能說明:給一個薪酬項目指定時間段,算出指定周期指定次數薪資
方法:PayItemMthlySome('payItem', monthDiffNumber, index)
參數說明:
payItem:取系統中的工資項目, 只能輸入公式別名
monthDiffNumber:從當前運算周期月為基準,取之前第幾個月的數據,例如當該值為1時,則取上個月的薪酬數據,當該值為2時,當前的薪酬運算周期為 2020-05,則取 2020-03月的薪酬運算數據
index:定位到目標月後的期次參數,如果為0,則取整月之和
示例:
當前薪酬計算周期為6月份第三次算薪某員工3月第一次的基本工資(系統中名稱為BasicSalary)分別為 100004月第一次的基本工資(系統中名稱為BasicSalary)分別為 150005月第一次的基本工資(系統中名稱為BasicSalary)分別為 200006月第一次的基本工資(系統中名稱為BasicSalary)分別為 250006月第二次的基本工資(系統中名稱為BasicSalary)分別為 30000
計算該員工在當前薪酬周期前一月第一次基本工資:
PayItemMthlySome ('BasicSalary', 1, 1) ,結果為 20000
計算該員工在當前薪酬周期第一次基本工資:
PayItemMthlySome ('BasicSalary', 0, 1) ,結果為 25000
計算該員工在當前薪酬周期所有基本工資:
PayItemMthlySome ('BasicSalary', 0, 0) ,結果為25000 + 30000 = 55000
39.獲取考勤相關數據 的總分鐘數
功能說明:獲取考勤相關數據(遲到/早退/總分鐘數,工作時長等) 的總分鐘數
方法:SumAttendData('attendItemName')
參數說明:
attendItemName: beLateLength, leaveEarlyLength, shiftLabor, totalWorkingDaysOrHours, workingOvertimeOnWeekdays, workingOvertimeOnRestDays, workingOvertimeOnStatutoryHolidays,absenceLength 中八選一,字段統計分別為 遲到、早退、缺勤、總出勤時長、工作日加班時長、休息日加班時長、法定假日加班時長 、曠工時長的總分鐘數
示例:
假定當前的薪酬計算周期為2020-03-01 到 2020-03-31,考勤周期一致某員工當月一共有3天有遲到記錄。分別遲到了 5分鐘,8分鐘,10分鐘SumAttendData ('beLateLength') 結果為 23分鐘 (5+8+10)
40.返回下拉選項在數據字典的附加值
功能說明:依據雇員檔案下拉值信息,返回下拉選項在數據字典的附加值
方法:GetDataDictionary ('DictionaryField',Number)
參數說明:
DictionaryField 數據字典子段名(employeeType、jobLevel、post、salaryScale)
Number:1或2或3或4或5
示例:
GetDataDictionary ('employeeType',Number)
示例詳細說明:
- 假定數據字典人員分類:附加值1為200;附加值1為300;附加值3為400
-GetDataDictionary ('employeeType',1) 運算結果為 300
41.依據雇員檔案人員分類與薪級下拉值信息,返回薪級表附加值
功能說明:依據雇員檔案人員分類與薪級下拉值信息,返回薪級表附加值
方法:GetTableValue (Number)
參數說明:
Number:1或2或3或4或5或6
示例:
- 假定薪级表设定:
- 人員分類 薪級 值 最低值 25分位 中分位 75分位 最高值
- 管理 1 800 200 400 500 700 900
- 管理 2 1600 800 1000 2000 3000 4000
- GetTableValue (3) 運算結果為 25分位對應的值
42.獲取考勤相關數據
功能說明:獲取考勤相關數據(遲到/早退/確定,工作時長等) 中符合參數二聲明時間範圍的次數,獲得次數通過參數三的表達式運算,作為函數的運算結果
方法:CountAttendDataByDay('attendItemName', 'MinsRange', 'expression')
參數說明:
attendItemName: beLateLength, leaveEarlyLength, shiftLabor, totalWorkingDaysOrHours,
workingOvertimeOnWeekdays, workingOvertimeOnStatutoryHolidays, workingOvertimeOnRestDays, absenceLengthMinsRange:分鐘數時間範圍
expression:次數運算表達式,支持 +-*/ 四則運算
示例
假定當前的薪酬計算周期為2020-03-01 到 2020-03-31,考勤周期一致某員工當月一共有5天,有遲到記錄。其中2天遲到在10分鐘內。另外3天遲到了20分鐘
CountAttendDataByDay('beLateLength','0-10','a*10') 結果為 20
CountAttendDataByDay('beLateLength','11-20','a*50') 結果為 150
兼容寫法:
var str = 'tempValue' + '+' + BasicSalary + '>=0' + '&&' + 'tempValue'+ '+' + BasicSalary + '<=200000'
CountAttendDataByDay('beLateLength',str,'a*50')
兼容寫法:
var str = 'totalWorkingDaysOrHours' + '+' + 'leaveEarlyLength' + BasicSalary + '>=0' + '&&' + 'totalWorkingDaysOrHours'+ '+' + BasicSalary + '<=200000' CountAttendDataByDay('str','a*10')