如何設(shè)計一套OA系統(tǒng)中的薪資核算系統(tǒng)
本文深入探討了如何設(shè)計一套高效、準(zhǔn)確的薪資計算系統(tǒng),涵蓋從基本工資的設(shè)定到復(fù)雜的稅務(wù)處理等各個方面。通過詳盡的分析與實用的建議,幫助讀者理解薪資計算的復(fù)雜性及其背后的邏輯,旨在為HR專業(yè)人士和軟件開發(fā)者提供有價值的參考。
作為一名打工人,每月工資到賬就最開心的時候。那么我們每月的工資是怎么算出來的,稅前、稅后工資是什么意思,社保公積金、個稅這些要扣多少?要設(shè)計一套計算工資的系統(tǒng),又需要做哪些功能?
本文描述一下搭建OA系統(tǒng)中的薪資計算模塊,需要做哪些事情,以及關(guān)于薪資計算的一些關(guān)鍵問題。
薪資計算是OA系統(tǒng)的核心功能,也基本上是最復(fù)雜的一塊功能,雖然今天市面上到處都是OA系統(tǒng),但要實現(xiàn)一套完整的薪資計算,依舊不是一件容易的事情。
一、薪資是怎么算出來的
首先從HR視角,來看每個人的薪資是怎么算出來的。
1. 工資包含哪幾項
比如有個打工人叫小帥,每個月工資兩萬塊錢,他的工資的具體構(gòu)成,會有這么幾項:
- 基本工資,通常是合同上寫的薪資,“每個月兩萬塊錢”指的就是基本工資;
- 出勤工資,結(jié)合實際出勤天數(shù)、請假天數(shù)、遲到早退,算出來的出勤工資。比如小帥這個月請事假一天,基本工資兩萬塊錢,出勤工資可能就是一萬九;
- 補貼扣款,即我們常見的餐補、出差補貼等;
- 社保和公積金,即我們常說的五險一金,需要扣在工資里的部分;
- 稅前工資,以上該加的相加,該扣的扣除,就是稅前工資;
- 個人所得稅,工資中應(yīng)繳的稅;
- 稅后工資,交稅后,實際我們銀行卡入賬的錢。
2. 工資值如何計算
以上每個項目的值需要如何計算:
1)基本工資
通?;竟べY就是合同上寫的工資。有些公司會設(shè)置一個績效工資,績效拿滿了才把這部分工資發(fā)給員工,也屬于基本工資這一類。還有的公司有個崗位補貼,可能也會寫到合同中。
我們得出第一個公式:
基本工資合計=基本工資+績效工資+崗位補貼
2)出勤工資
出勤工資會按照員工當(dāng)月實際計薪天數(shù)進行計算。
一般有兩種規(guī)則:一種是以當(dāng)月應(yīng)出勤天數(shù)作為分母;另一種是將固定值21.75作為分母,21.75代表一年中平均每月的應(yīng)出勤天數(shù)。具體用哪種就看公司制度了,本文我們按第一種為案例。
應(yīng)出勤天數(shù),為當(dāng)月工作日的天數(shù)加法定節(jié)假日的天數(shù)。我國的法定節(jié)假日分為屬于節(jié)假日的天數(shù)、和周末調(diào)休的天數(shù),比如國慶7天,是3天的法定節(jié)假日和4天的周末,這3天的法定節(jié)假日是帶薪的,需要加到出勤天數(shù)中,而4天的周末是不帶薪的。
由此我們得出第二個公式:
出勤工資=基本工資×(實際計薪天數(shù)/本月應(yīng)出勤天數(shù))
應(yīng)出勤天數(shù)=工作日天數(shù)+法定節(jié)假日帶薪天數(shù)
3)各項假勤的扣款
請假考勤相關(guān)的扣款,類型會相對多一些:
實際計薪天數(shù):按照打卡天數(shù),加上帶薪假的天數(shù)。如有當(dāng)月入離職,只統(tǒng)計實際在職的天數(shù)即可。
考勤扣款:通常公司會有遲到、早退、缺勤的扣款規(guī)則,比如遲到一小時扣50塊錢,計入考勤扣款中,或者算作缺勤,扣到計薪天數(shù)中;
當(dāng)月試用期轉(zhuǎn)正:試用期有試用期的基本工資,如果當(dāng)月剛好轉(zhuǎn)正,需要將出勤天數(shù)拆開來,分為試用期和轉(zhuǎn)正后的天數(shù),然后分別計算試用期和轉(zhuǎn)正后的出勤工資,再相加。
這一塊深入下去,計算規(guī)則比較復(fù)雜,幾個關(guān)鍵問題見第三節(jié);
由此我們得出第三個公式:
實際計薪天數(shù)=打卡天數(shù)+帶薪假天數(shù)+法定節(jié)假日天數(shù)-遲到早退計缺勤的天數(shù)
并且完善第二個公式:
出勤工資=試用期基本工資×(試用期實際出勤天數(shù)/本月應(yīng)出勤天數(shù))+轉(zhuǎn)正后基本工資×(轉(zhuǎn)正后實際出勤天數(shù)/本月應(yīng)出勤天數(shù))-考勤扣款
4)社保公積金
社保分為公司繳納部分和員工繳納部分,公司繳納部分不會包含在薪資里,公司直接繳納;員工繳納部分,會直接在員工的薪資中扣除。社保會在前一個月月底繳納,第二個月算前一個月薪資時扣除。
我們所說的五險,包括醫(yī)保、養(yǎng)老、失業(yè)、工傷和生育這5項,前三項是公司和個人都需要繳的,后兩項是只需要公司繳的。另外其他險種,比如大病。具體規(guī)則各個地方可能會有所不同。
公積金和社保一樣,分為公司部分和個人部分,個人部分在員工的薪資中扣除。
社保公積金要繳納的金額,標(biāo)準(zhǔn)的方案是以每個員工過去12個月平均收入作為基數(shù),乘公司比例和個人比例。而有些公司會統(tǒng)一按一個特定的基數(shù)繳納,比如最低工資作為基數(shù)。這一塊具體規(guī)則本文就不展開了。
由此我們可以得出稅前工資的公式:
稅前工資=出勤工資-社保個人部分-公積金個人部分;
社保個人部分=醫(yī)保個人部分+養(yǎng)老個人部分+失業(yè)個人部分
5)補貼扣款/個稅
所有補貼和扣款項,要按兩個維度進行分類:
一是是否計稅。比如我們常見的餐補、出差補貼、加班補貼,都是要計稅的;有些是不用計稅的,比如小帥想讓公司給他多交一些公積金,錢從自己的工資里扣,這筆錢可以通過扣款的形式來計,這就屬于不用計稅的;
二是是否已經(jīng)發(fā)放。比如出差補貼,有些公司不一定在薪資里發(fā)放,可能月中就已經(jīng)發(fā)放了,但這筆錢需要放到薪資里計稅。這里要引申出一個報稅工資的概念,就是要用來算稅的錢是多少,他和稅前工資的差別就在這一項。
以上要算稅的項目統(tǒng)計出來,并算完個稅,就完成了算薪的最后一步。
個稅的值,一般是上稅務(wù)局網(wǎng)站算出結(jié)果后再導(dǎo)下來。因為個稅計算規(guī)則較復(fù)雜,且數(shù)據(jù)源多,會有專項附加扣除等數(shù)據(jù),因此不一定要在OA系統(tǒng)中計算。
最后我們得出三個公式:
稅前工資=出勤工資-社保個人部分-公積金個人部分+未發(fā)放要計稅的補貼-未發(fā)放要計稅的扣款
報稅工資=稅前工資+已發(fā)放要計稅的補貼
稅后工資=稅前工資-個人所得稅+不計稅的補貼-不計稅的扣款
下圖提供了一個具體案例,來說明整個工資計算的規(guī)則:
3. 算工資的業(yè)務(wù)流程
hr每個月計算工資的工作流程,一般是這么幾步:確定要算薪人員,包括在職和本月入離職→統(tǒng)計出勤天數(shù)、考勤扣款、各項補貼等數(shù)據(jù)→計算稅前工資、報稅工資→員工確認工資條→找財務(wù)獲取個稅,計算稅后工資→發(fā)薪審批流程→發(fā)工資
二、如何設(shè)計一個薪資系統(tǒng)
明確業(yè)務(wù)規(guī)則后,我們就可以開始著手設(shè)置一套薪資計算系統(tǒng)了。
1. 產(chǎn)品方向
薪資系統(tǒng)屬于OA系統(tǒng)中的一個模塊,目標(biāo)為準(zhǔn)確計算員工薪資。為了滿足各公司不同的業(yè)務(wù)規(guī)則,這套系統(tǒng)需要支持用戶自主可配置。
2. 產(chǎn)品架構(gòu)
如圖
通俗的解釋,可以分為這5塊:有哪些錢-薪資項目,誰、什么時候、需要發(fā)哪些錢-薪資方案,每人每月這些錢是多少-薪資檔案、社保公積金、補貼扣款,計算每人每月的薪資-薪資核算,發(fā)工資條-工資條。
3. 薪資項目
薪資項目模塊定義公司有哪些錢。所有前面提到的項目,比如基本工資、公積金這些基礎(chǔ)項目,以及稅前工資、稅后工資這些結(jié)果項目,都要作為薪資項目。
對薪資項目的管理,需要讓用戶自定義這些項目的計算規(guī)則、數(shù)據(jù)來源、保留小數(shù)位數(shù)規(guī)則、是否可修改刪除等。幾個比較重要的設(shè)置:
1)是否可刪除:
薪資項目可以讓用戶自主定義,但有些薪資項目會被其他系統(tǒng)使用到,如果刪除其他系統(tǒng)就沒數(shù)據(jù)了。比如實發(fā)薪資項目,會給到財務(wù)系統(tǒng)作為實際發(fā)工資的錢,這個刪了工資沒的發(fā)了。這類薪資項目可以設(shè)置為不可刪除。
通常在系統(tǒng)開發(fā)時,我們會預(yù)置一些常用的薪資項目和對應(yīng)的計算規(guī)則,一來減少用戶的操作成本,提升使用效率,二來可以定義被其他系統(tǒng)引用的、不可刪除的項目。
2)數(shù)據(jù)來源:
有三種方式:直接取值,如基本工資;手動錄入或?qū)耄绺黝愌a貼;以及通過公式得出。
3)公式:
薪資項目里最復(fù)雜的就是公式配置。
公式由參數(shù)和運算符號組成。參數(shù)的作用是傳遞各項值,具體分為幾類:考勤數(shù)據(jù),比如月應(yīng)出勤幾天、實際計薪天數(shù)幾天、遲到幾天、早退幾天、請假幾天等;薪資檔案數(shù)據(jù),即基本工資、績效工資;社保公積金數(shù)據(jù),即各個險種的個人部分金額;還有各類已創(chuàng)建的薪資項目,也需要作為參數(shù)。
參數(shù)加上簡單的加減乘除運算符號,即可實現(xiàn)公式的配置,比如前面提到的各個公式。
如果進一步擴展,還可以做一類條件公式,由多個條件+公式組成,根據(jù)結(jié)果在哪個條件來判斷取哪個值。
舉個例子,假如小帥所在公司,一個月遲到一天扣50元,遲到兩天以上每天扣一百元,這個時候就可以使用條件公式了,設(shè)置兩個條件+公式來實現(xiàn)。
條件公式的規(guī)則比基本公式更復(fù)雜。條件公式的運算符號,需要加上大于、小于、等于、不等于這些;條件本身,需要多個if和else;條件的驗證,需要驗證條件格式是否正確、各個條件之間是否有沖突的范圍等。
考慮到公式復(fù)雜,一般會設(shè)置公式校驗功能,在提交時也需要進行公示校驗,檢驗公式是否出現(xiàn)了語法錯誤、無關(guān)字符等。
4)保留小數(shù)位數(shù):
可以選擇保留幾位小數(shù),或者不保留。這里的區(qū)別是,計算過程中是否先要對這個薪資項目先進行四舍五入,再拿四舍五入后的結(jié)果去算最終結(jié)果,還是直接算到最后結(jié)果才四舍五入。
4. 薪資方案
薪資方案模塊定義發(fā)錢的規(guī)則,通俗解釋就是哪些人、什么時候、要發(fā)哪些錢。
首先選擇計薪時間、發(fā)薪日等規(guī)則;
然后是選人員范圍,可以按部門選人。一般情況下,普通員工是統(tǒng)一的一套薪資方案,一些特殊人群比如市場人員,有提成,單獨配一套薪資方案;
最后選擇薪資項目,已創(chuàng)建的項目哪些需要給這些人來發(fā)。
5. 薪資檔案
薪資檔案模塊為各類薪資基礎(chǔ)數(shù)據(jù)的取值來源,分為三個部分:
一是基本薪資,人+基本工資/績效工資,區(qū)分試用期和轉(zhuǎn)正后,和勞動合同的薪資保持一致。薪資檔案需要支持發(fā)起調(diào)薪;
二是社保公積金,人+社保各險種/公積金的個人部分的值,按照社保配置規(guī)則來計算。社保配置規(guī)則又是另外一個模塊了,本文暫不提;
三是補貼扣款,人+月+每一項補貼和扣款,需要按月添加或者導(dǎo)入每個人的數(shù)據(jù)。
6. 薪資核算
薪資核算模塊就是給員工算錢。每個月要給員工核算薪資的時候,創(chuàng)建一個薪資核算表,選擇薪資方案和算薪月份,即可開始算薪。
按照算錢的業(yè)務(wù)流程,薪資核算分為4個步驟:確認人員范圍、薪資核算、工資條確認、薪資發(fā)放審批。
1)確認人員范圍:按照創(chuàng)建時選擇的薪資方案來確定有哪些人,按照月份來確定在這個月內(nèi)在職、和有月中入離職的人。另外要支持人員的添加和移除;
2)薪資核算:按照所選薪資方案中包含的薪資項目,根據(jù)公式進行薪資計算。核算的結(jié)果可以進行導(dǎo)出、或者重新核算;
如果人比較多,薪資計算會比較慢,可以使用異步的方式進行。
3)工資條確認:核算完成后,給員工發(fā)送工資條,進行工資確認。如果員工的工資有誤,可以修改薪資檔案或考勤數(shù)據(jù)后,重新核算,并再次發(fā)送工資條。
工資條確認非強制,沒確認工資條的人,公司也得給他發(fā)工資不是??梢栽O(shè)置超過幾天后,自動為確認狀態(tài)的規(guī)則。
4)薪資發(fā)放審批:確認每個人的薪資都正確之后,發(fā)起薪資發(fā)放審批流程,給到相應(yīng)的財務(wù)人員進行審批。審批期間不能做其他操作,如果審批不通過,可以再進行重新核算。
審批完成之后,薪資核算流程結(jié)束,將薪資數(shù)據(jù)同步至財務(wù)系統(tǒng)的應(yīng)付賬單,進行薪資發(fā)放。
7. 工資條
員工的工資條,展示該員工該月的各項工資值和確認操作。
工資條模塊除了員工端的展示,也需要有后臺管理。一是工資條展示字段的設(shè)置,除了各薪資項目之外,工資條上還需要展示本月的出勤天數(shù)、備注等,讓員工自己能算出來實發(fā)工資。二是工資條發(fā)送和確認的人員數(shù)量統(tǒng)計。
8. 薪資賬單
屬于BI模塊,根據(jù)核算結(jié)果,統(tǒng)計每個月的發(fā)薪人數(shù)、實發(fā)薪資金額、個稅金額等。
三、薪資核算系統(tǒng)的一些常見問題的處理方式
1. “計薪天數(shù)” 的定義和計算規(guī)則
人事業(yè)務(wù)上,“計薪天數(shù)”和“出勤天數(shù)”并不完全相等?!俺銮谔鞌?shù)”就是正常打卡+外出出差+補卡的天數(shù),不包含任何請假,而“計薪天數(shù)”則是出勤天數(shù)+帶薪假+法定節(jié)假日的帶薪日。在系統(tǒng)設(shè)計中,這兩個數(shù)據(jù)需要分開計;
影響計薪天數(shù)的條件,包括是否打卡、補卡、外出出差、請假-帶薪假、請假-不帶薪假、遲到早退、后臺設(shè)置為正常等,每一類情況都需要確定計薪天數(shù)的規(guī)則,另外各類情況之間需要設(shè)置優(yōu)先級,用來解決同時發(fā)生的情況下是否需要計薪。比如,當(dāng)天遲到,然后請了事假,最后又后臺設(shè)置為考勤正常,這種的結(jié)果究竟是什么。通常來說,優(yōu)先級規(guī)則為后臺設(shè)置>請假>外出出差>補卡>遲到早退;
其中是否打卡,比如上班打卡、下班沒打卡,通常有兩種規(guī)則,計為半天缺勤、或者計為全天缺勤。具體的考勤規(guī)則設(shè)置,本文暫不展開。
2. 請假對薪資的影響
請假的計薪規(guī)則一般有3種:不帶薪比如事假、帶薪比如年假、只發(fā)一部分薪資比如病假產(chǎn)假等。規(guī)則需要在請假規(guī)則中配置。帶薪假,需要加到計薪天數(shù)中計算。只發(fā)基礎(chǔ)薪資的假期,需要另外計算這部分假期薪資,在稅前薪資中加上去。
請假可以按照小時、半天、上午/下午、全天來請假,對應(yīng)體現(xiàn)在計薪天數(shù)上。要注意的是半天和上午/下午是兩種不同的概念,半天=0.5天,而上午/下午不一定是0.5天,要看公司上午下午的上班時長。
3. 按天數(shù)計的遲到早退扣款規(guī)則設(shè)置
很多公司會有一種階梯式扣款的遲到早退扣款規(guī)則,比如,遲到一個小時以內(nèi),每天扣50塊錢;遲到1-4個小時,算缺勤半天;遲到4小時以上算缺勤一天。這種規(guī)則需要按照每天的遲到時長采用不同的規(guī)則,而且有兩類扣款規(guī)則,按固定金額計,和按出勤天數(shù)計。
系統(tǒng)設(shè)計的難點在于,薪資項目公式的遲到天數(shù)參數(shù),只能一個月傳整體的一個值,即一個月遲到了幾天,無法傳一個月里每天的值,即每天遲到的時長。所以無法通過公式配置。
為了讓遲到時長和扣款規(guī)則都可配置,這項規(guī)則需要放在考勤規(guī)則中配置,遲到時長+對應(yīng)的扣款金額OR出勤天數(shù)。每月薪資核算時,直接算出每個人的結(jié)果,體現(xiàn)在“考勤扣款”和“計薪天數(shù)”這兩個薪資項目的計算結(jié)果中。
4. 試用期轉(zhuǎn)正、調(diào)薪前后的薪資核算方式
試用期轉(zhuǎn)正和調(diào)薪,在轉(zhuǎn)正/調(diào)薪生效日期前后,基本工資不一樣。如果這一天發(fā)生在一個月的月中,就需要將計薪天數(shù)拆分。和上一條一樣,薪資項目公式的基本薪資參數(shù),只能一個月傳整體的一個值,無法傳一個月里每天的值。
試用期轉(zhuǎn)正,我們的處理方式是將“月計薪天數(shù)”拆分為“試用期計薪天數(shù)”和“轉(zhuǎn)正后計薪天數(shù)”這兩個參數(shù),公式參照第一節(jié)的1-3。
調(diào)薪,我們只允許調(diào)薪生效日期在每月1日,從規(guī)則上規(guī)避這個問題。如果一定要在月中調(diào)薪,只能手動計算當(dāng)月調(diào)薪前后的差值,在稅前薪資中另外增加或者扣減。
專欄作家
潘帕斯雄鷹,人人都是產(chǎn)品經(jīng)理專欄作家,進擊、踩坑中的產(chǎn)品狗一枚,關(guān)注互聯(lián)網(wǎng),寫過小說,看過哲學(xué)。簡書:潘帕斯雄鷹。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash ,基于 CC0 協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
mark
沒想到薪資里面有這么多門道和學(xué)問,知識還挺多挺復(fù)雜的,這篇文章講的很清楚明了,點贊收藏點贊收藏!