跳至主要內容
薪酬項目公式設置,部分內置函數舉例說明

不知道如何新增薪酬項目的計算公式?在這裡找到你所需要的公式,即可立即套用!

Workstem CS avatar
作者:Workstem CS
2 年前已更新

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, absenceLength

    • MinsRange:分鐘數時間範圍

    • 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')



是否回答了您的問題?