如何設計一套OA系統中的薪資核算系統
更新于:2025-03-26 06:46:45

本文深入探討了如何設計一套高效、準確的薪資計算系統,涵蓋從基本工資的設定到複雜的稅務處理等各個方面。通過詳盡的分析與實用的建議,幫助讀者理解薪資計算的複雜性及其背後的邏輯,旨在為 HR 專業人士和軟體開發者提供有價值的參考。

作為一名打工人,每月工資到賬就最開心的時候。那麼我們每月的工資是怎麼算出來的,稅前、稅後工資是什麼意思,社保公積金、個稅這些要扣多少?要設計一套計算工資的系統,又需要做哪些功能?

本文描述一下搭建 OA 系統中的薪資計算模組,需要做哪些事情,以及關於薪資計算的一些關鍵問題。

薪資計算是 OA 系統的核心功能,也基本上是最複雜的一塊功能,雖然今天市面上到處都是 OA 系統,但要實現一套完整的薪資計算,依舊不是一件容易的事情。

一、薪資是怎麼算出來的

首先從 HR 視角,來看每個人的薪資是怎麼算出來的。

1. 工資包含哪幾項

比如有個打工人叫小帥,每個月工資兩萬塊錢,他的工資的具體構成,會有這麼幾項:

基本工資,通常是合同上寫的薪資,“每個月兩萬塊錢”指的就是基本工資;

出勤工資,結合實際出勤天數、請假天數、遲到早退,算出來的出勤工資。比如小帥這個月請事假一天,基本工資兩萬塊錢,出勤工資可能就是一萬九;

補貼扣款,即我們常見的餐補、出差補貼等;

社保和公積金,即我們常說的五險一金,需要扣在工資里的部分;

稅前工資,以上該加的相加,該扣的扣除,就是稅前工資;

個人所得稅,工資中應繳的稅;

稅後工資,交稅後,實際我們銀行卡入帳的錢。

2. 工資值如何計算

以上每個專案的值需要如何計算:

1)基本工資

通常基本工資就是合同上寫的工資。有些公司會設置一個績效工資,績效拿滿了才把這部分工資發給員工,也屬於基本工資這一類。還有的公司有個崗位補貼,可能也會寫到合同中。

我們得出第一個公式:

基本工資合計 = 基本工資 + 績效工資 + 崗位補貼

2)出勤工資

出勤工資會按照員工當月實際計薪天數進行計算。

一般有兩種規則:一種是以當月應出勤天數作為分母;另一種是將固定值 21.75 作為分母,21.75 代表一年中平均每月的應出勤天數。具體用哪種就看公司制度了,本文我們按第一種為案例。

應出勤天數,為當月工作日的天數加法定公休日的天數。我國的法定公休日分為屬於公休日的天數、和週末調休的天數,比如國慶 7 天,是 3 天的法定公休日和 4 天的週末,這 3 天的法定公休日是帶薪的,需要加到出勤天數中,而 4 天的週末是不帶薪的。

由此我們得出第二個公式:

出勤工資 = 基本工資 × ( 實際計薪天數 / 本月應出勤天數 )

應出勤天數 = 工作日天數 + 法定公休日帶薪天數

3)各項假勤的扣款

請假考勤相關的扣款,類型會相對多一些:

實際計薪天數:按照打卡天數,加上帶薪假的天數。如有當月入離職,只統計實際在職的天數即可。

考勤扣款:通常公司會有遲到、早退、缺勤的扣款規則,比如遲到一小時扣 50 塊錢,計入考勤扣款中,或者算作缺勤,扣到計薪天數中;

當月試用期轉正:試用期有試用期的基本工資,如果當月剛好轉正,需要將出勤天數拆開來,分為試用期和轉正後的天數,然後分別計算試用期和轉正後的出勤工資,再相加。

這一塊深入下去,計算規則比較複雜,幾個關鍵問題見第三節;

由此我們得出第三個公式:

實際計薪天數 = 打卡天數 + 帶薪假天數 + 法定公休日天數 - 遲到早退計缺勤的天數

並且完善第二個公式:

出勤工資 = 試用期基本工資 × ( 試用期實際出勤天數 / 本月應出勤天數 ) + 轉正後基本工資 × ( 轉正後實際出勤天數 / 本月應出勤天數 ) - 考勤扣款

4)社保公積金

社保分為公司繳納部分和員工繳納部分,公司繳納部分不會包含在薪資里,公司直接繳納;員工繳納部分,會直接在員工的薪資中扣除。社保會在前一個月月底繳納,第二個月算前一個月薪資時扣除。

我們所說的五險,包括醫保、養老、失業、工傷和生育這 5 項,前三項是公司和個人都需要繳的,后兩項是只需要公司繳的。另外其他險種,比如大病。具體規則各個地方可能會有所不同。

公積金和社保一樣,分為公司部分和個人部分,個人部分在員工的薪資中扣除。

社保公積金要繳納的金額,標準的方案是以每個員工過去 12 個月平均收入作為基數,乘公司比例和個人比例。而有些公司會統一按一個特定的基數繳納,比如最低工資作為基數。這一塊具體規則本文就不展開了。

由此我們可以得出稅前工資的公式:

稅前工資 = 出勤工資 - 社保個人部分 - 公積金個人部分;

社保個人部分 = 醫保個人部分 + 養老個人部分 + 失業個人部分

5)補貼扣款 / 個稅

所有補貼和扣款項,要按兩個維度進行分類:

一是是否計稅。比如我們常見的餐補、出差補貼、加班補貼,都是要計稅的;有些是不用計稅的,比如小帥想讓公司給他多交一些公積金,錢從自己的工資里扣,這筆錢可以通過扣款的形式來計,這就屬於不用計稅的;

二是是否已經發放。比如出差補貼,有些公司不一定在薪資里發放,可能月中就已經發放了,但這筆錢需要放到薪資里計稅。這裡要引申出一個報稅工資的概念,就是要用來算稅的錢是多少,他和稅前工資的差別就在這一項。

以上要算稅的項目統計出來,並算完個稅,就完成了算薪的最後一步。

個稅的值,一般是上稅務局網站算出結果后再導下來。因為個稅計算規則較複雜,且數據源多,會有專項附加扣除等數據,因此不一定要在 OA 系統中計算。

最後我們得出三個公式:

稅前工資 = 出勤工資 - 社保個人部分 - 公積金個人部分 + 未發放要計稅的補貼 - 未發放要計稅的扣款

報稅工資 = 稅前工資 + 已發放要計稅的補貼

稅後工資 = 稅前工資 - 個人所得稅 + 不計稅的補貼 - 不計稅的扣款

下圖提供了一個具體案例,來說明整個工資計算的規則:

3. 算工資的業務流程

hr 每個月計算工資的工作流程,一般是這麼幾步:確定要算薪人員,包括在職和本月入離職→統計出勤天數、考勤扣款、各項補貼等數據→計算稅前工資、報稅工資→員工確認工資條→找財務獲取個稅,計算稅後工資→發薪審批流程→發工資

二、如何設計一個薪資系統

明確業務規則后,我們就可以開始著手設置一套薪資計算系統了。

1. 產品方向

薪資系統屬於 OA 系統中的一個模組,目標為準確計算員工薪資。為了滿足各公司不同的業務規則,這套系統需要支持使用者自主可配置。

2. 產品架構

如圖

通俗的解釋,可以分為這 5 塊:有哪些錢 - 薪資專案,誰、什麼時候、需要發哪些錢 - 薪資方案,每人每月這些錢是多少 - 薪資檔案、社保公積金、補貼扣款,計算每人每月的薪資 - 薪資核算,發工資條 - 工資條。

3. 薪資專案

薪資專案模組定義公司有哪些錢。所有前面提到的專案,比如基本工資、公積金這些基礎專案,以及稅前工資、稅後工資這些結果專案,都要作為薪資專案。

對薪資專案的管理,需要讓使用者自定義這些項目的計算規則、數據來源、保留小數位數規則、是否可修改刪除等。幾個比較重要的設置:

1)是否可刪除:

薪資專案可以讓使用者自主定義,但有些薪資專案會被其他系統使用到,如果刪除其他系統就沒數據了。比如實發薪資專案,會給到財務系統作為實際發工資的錢,這個刪了工資沒的發了。這類薪資專案可以設置為不可刪除。

通常在系統開發時,我們會預置一些常用的薪資項目和對應的計算規則,一來減少使用者的操作成本,提升使用效率,二來可以定義被其他系統引用的、不可刪除的專案。

2)數據來源:

有三種方式:直接取值,如基本工資;手動錄入或導入,如各類補貼;以及通過公式得出。

3)公式:

薪資專案里最複雜的就是公式配置。

公式由參數和運算符號組成。參數的作用是傳遞各項值,具體分為幾類:考勤數據,比如月應出勤幾天、實際計薪天數幾天、遲到幾天、早退幾天、請假幾天等;薪資檔案數據,即基本工資、績效工資;社保公積金數據,即各個險種的個人部分金額;還有各類已創建的薪資專案,也需要作為參數。

參數加上簡單的加減乘除運算符號,即可實現公式的配置,比如前面提到的各個公式。

如果進一步擴展,還可以做一類條件公式,由多個條件 + 公式組成,根據結果在哪個條件來判斷取哪個值。

舉個例子,假如小帥所在公司,一個月遲到一天扣 50 元,遲到兩天以上每天扣一百元,這個時候就可以使用條件公式了,設置兩個條件 + 公式來實現。

條件公式的規則比基本公式更複雜。條件公式的運算符號,需要加上大於、小於、等於、不等於這些;條件本身,需要多個 if 和 else;條件的驗證,需要驗證條件格式是否正確、各個條件之間是否有衝突的範圍等。

考慮到公式複雜,一般會設置公式校驗功能,在提交時也需要進行公示校驗,檢驗公式是否出現了語法錯誤、無關字元等。

4)保留小數位數:

可以選擇保留幾位小數,或者不保留。這裏的區別是,計算過程中是否先要對這個薪資專案先進行四捨五入,再拿四捨五入后的結果去算最終結果,還是直接算到最後結果才四捨五入。

4. 薪資方案

薪資方案模組定義發錢的規則,通俗解釋就是哪些人、什麼時候、要發哪些錢。

首先選擇計薪時間、發薪日等規則;

然後是選人員範圍,可以按部門選人。一般情況下,普通員工是統一的一套薪資方案,一些特殊人群比如市場人員,有提成,單獨配一套薪資方案;

最後選擇薪資專案,已創建的專案哪些需要給這些人來發。

5. 薪資檔案

薪資檔案模組為各類薪資基礎數據的取值來源,分為三個部分:

一是基本薪資,人 + 基本工資 / 績效工資,區分試用期和轉正後,和勞動合同的薪資保持一致。薪資檔案需要支持發起調薪;

二是社保公積金,人 + 社保各險種 / 公積金的個人部分的值,按照社保配置規則來計算。社保配置規則又是另外一個模組了,本文暫不提;

三是補貼扣款,人 + 月 + 每一項補貼和扣款,需要按月添加或者導入每個人的數據。

6. 薪資核算

薪資核算模組就是給員工算錢。每個月要給員工核算薪資的時候,創建一個薪資核算表,選擇薪資方案和算薪月份,即可開始算薪。

按照算錢的業務流程,薪資核算分為 4 個步驟:確認人員範圍、薪資核算、工資條確認、薪資發放審批。

1)確認人員範圍:按照創建時選擇的薪資方案來確定有哪些人,按照月份來確定在這個月內在職、和有月中入離職的人。另外要支持人員的添加和移除;

2)薪資核算:按照所選薪資方案中包含的薪資專案,根據公式進行薪資計算。核算的結果可以進行導出、或者重新核算;

如果人比較多,薪資計算會比較慢,可以使用異步的方式進行。

3)工資條確認:核算完成後,給員工發送工資條,進行工資確認。如果員工的工資有誤,可以修改薪資檔案或考勤數據後,重新核算,並再次發送工資條。

工資條確認非強制,沒確認工資條的人,公司也得給他發工資不是。可以設置超過幾天后,自動為確認狀態的規則。

4)薪資發放審批:確認每個人的薪資都正確之後,發起薪資發放審批流程,給到相應的財務人員進行審批。審批期間不能做其他操作,如果審批不通過,可以再進行重新核算。

審批完成之後,薪資核算流程結束,將薪資數據同步至財務系統的應付帳單,進行薪資發放。

7. 工資條

員工的工資條,展示該員工該月的各項工資值和確認操作。

工資條模組除了員工端的展示,也需要有後台管理。一是工資條展示欄位的設置,除了各薪資專案之外,工資條上還需要展示本月的出勤天數、備註等,讓員工自己能算出來實發工資。二是工資條發送和確認的人員數量統計。

8. 薪資帳單

屬於 BI 模組,根據核算結果,統計每個月的發薪人數、實發薪資金額、個稅金額等。

三、薪資核算系統的一些常見問題的處理方式

1. “計薪天數” 的定義和計算規則

人事業務上,“計薪天數”和“出勤天數”並不完全相等。“出勤天數”就是正常打卡 + 外出出差 + 補卡的天數,不包含任何請假,而“計薪天數”則是出勤天數 + 帶薪假 + 法定公休日的帶薪日。在系統設計中,這兩個數據需要分開計;

影響計薪天數的條件,包括是否打卡、補卡、外出出差、請假 - 帶薪假、請假 - 不帶薪假、遲到早退、後台設置為正常等,每一類情況都需要確定計薪天數的規則,另外各類情況之間需要設置優先順序,用來解決同時發生的情況下是否需要計薪。比如,當天遲到,然後請了事假,最後又後台設置為考勤正常,這種的結果究竟是什麼。通常來說,優先順序規則為後台設置>請假>外出出差>補卡>遲到早退;

其中是否打卡,比如上班打卡、下班沒打卡,通常有兩種規則,計為半天缺勤、或者計為全天缺勤。具體的考勤規則設置,本文暫不展開。

2. 請假對薪資的影響

請假的計薪規則一般有 3 種:不帶薪比如事假、帶薪比如年假、只發一部分薪資比如病假產假等。規則需要在請假規則中配置。帶薪假,需要加到計薪天數中計算。只發基礎薪資的假期,需要另外計算這部分假期薪資,在稅前薪資中加上去。

請假可以按照小時、半天、上午 / 下午、全天來請假,對應體現在計薪天數上。要注意的是半天和上午 / 下午是兩種不同的概念,半天 =0.5 天,而上午 / 下午不一定是 0.5 天,要看公司上午下午的上班時長。

3. 按天數計的遲到早退扣款規則設置

很多公司會有一種階梯式扣款的遲到早退扣款規則,比如,遲到一個小時以內,每天扣 50 塊錢;遲到 1-4 個小時,算缺勤半天;遲到 4 小時以上算缺勤一天。這種規則需要按照每天的遲到時長採用不同的規則,而且有兩類扣款規則,按固定金額計,和按出勤天數計。

系統設計的難點在於,薪資專案公式的遲到天數參數,只能一個月傳整體的一個值,即一個月遲到了幾天,無法傳一個月裡每天的值,即每天遲到的時長。所以無法通過公式配置。

為了讓遲到時長和扣款規則都可配置,這項規則需要放在考勤規則中配置,遲到時長 + 對應的扣款金額 OR 出勤天數。每月薪資核算時,直接算出每個人的結果,體現在“考勤扣款”和“計薪天數”這兩個薪資項目的計算結果中。

4. 試用期轉正、調薪前後的薪資核算方式

試用期轉正和調薪,在轉正 / 調薪生效日期前後,基本工資不一樣。如果這一天發生在一個月的月中,就需要將計薪天數拆分。和上一條一樣,薪資專案公式的基本薪資參數,只能一個月傳整體的一個值,無法傳一個月裡每天的值。

試用期轉正,我們的處理方式是將“月計薪天數”拆分為“試用期計薪天數”和“轉正後計薪天數”這兩個參數,公式參照第一節的 1-3。

調薪,我們只允許調薪生效日期在每月 1 日,從規則上規避這個問題。如果一定要在月中調薪,只能手動計算當月調薪前後的差值,在稅前薪資中另外增加或者扣減。

專欄作家

潘帕斯雄鷹,人人都是產品經理專欄作家,進擊、踩坑中的產品狗一枚,關注互聯網,寫過小說,看過哲學。簡書:潘帕斯雄鷹。

題圖來自 Unsplash ,基於 CC0 協定。