As far as SAP HR is aware, SAP provides two payroll schemas in China, one is CN00 and the other is CN28. The biggest difference is that one is to bring the results of tax revenue to the current month, and the other is to bring the tax base to the current month.
I now meet a client whose demand is that if the employee had a salary last month (there is payroll result), then bring the tax base to this month, if the employee's salary was not paid last month, then bring the result of the tax to this month:
So I looked at the difference between the two schemas and the results are as follows
First look at the differences in the SAP standard schema when dealing with the two tax models:
1. CN00: With tax results to the current month
CN28: With tax base to the current month
2. CN00 is used in the Cnnt
CN28 is used in the cnng
3. Cnnt is used in the Cntx
Cnng is used in the CNTG
4. The source code for CNTX is as follows:
Line Func. Par1 Par2 Par3 PAR4 D Text
000010 BLOCK BEG Process Individual Income tax
000020 PIT CN15 P67 noab Taxable foreign wage need spec exchange
000030 cngro re-convert Foreign Currency Amount
000040 PIT cnbn P66 noab Process bonus need to caclculate tax Sep
000050 PIT CNSS P70 noab Process Special salary related income SE
000060 PIT CNMV noab Save tax base before gross-up/40x->/44x
000070 Cngrs Gross up for the EE tax paid is ER.
000080 Cntax Tax calculation
000090 cnsot Calculate stock options Income Tax
000100 CNTXR calculation for tax partially paid by ER
000110 BLOCK END Process Individual Income tax
The source code for CNTG is as follows:
000010 BLOCK BEG Process Individual Income tax
000020 PIT CN15 P67 noab Taxable foreign wage need spec exchange
000030 cngro re-convert Foreign Currency Amount
000040 PIT cnbn P66 noab Process bonus need to caclculate tax Sep
000050 PIT CNSS P70 noab Process Special salary related income SE
000060 PIT CNMV noab Save tax base before gross-up/40x->/44x
000070 COPY CNTL Get influx WT from LRT to tax base
000080 IF O Original Period
000090 Cngrs Gross up for the EE tax paid is ER.
000100 Cntax Tax calculation
000110 cnsot Calculate stock options Income Tax
000120 CNTXR calculation for tax partially paid by ER
000130 ELSE Form Tax base diff and move ORT to RT
000140 COPY cntr Form diff for tax base
000150 ENDIF End of IF form tax base diff.
000160 BLOCK END Process Individual Income tax
5. The code for CNTR is as follows:
Line Func. Par1 Par2 Par3 PAR4 D Text
000010 BLOCK BEG Form diffrence and move ORT to RT
000020 Lpbeg RC Loop over old results
000030 imprt O Import old result (' x ' in ' y-1′)
000040 print NP ORT print ORT
000050 Lpend Endloop
000060 IF LPRC if:there is old result
000070 PIT CNL7 noab Form diff. To influx, tax base
000080 PORT CNL8 noab Get retro-relevant wage types
000090 PORT CNL5 noab Move old Data from ORT to IT
000100 ELSE No old results, calculate the
000110 PIT cnlb noab Form diff. To influx, tax base
000120 ENDIF End of If LPRC
000130 BLOCK END Form difference and move ORT to RT
The most important difference, by observation, is that in the schema of CNTG, it is judged whether the salary of the current salary cycle is calculated, if not, only the sum of the tax base and, if so, the tax base to be used to calculate the tax.
The final solution is as follows, the central idea is: whether in the current period, as long as the old salary results, calculate the tax base difference to the current period. As long as there is no, then directly in the period of tax, after the calculation of the current salary results added
1:copy CN28 to ZCN1
2: Change the cnng in ZCN1 to Znng
3:znng to change the CNTG in cnng to ZNTG
4:zntg as follows:
Cmmnd
Line Func. Par1 Par2 Par3 PAR4 D Text
000010 BLOCK BEG Process Individual Income tax
000020 PIT CN15 P67 noab Taxable foreign wage need spec exchange
000030 cngro re-convert Foreign Currency Amount
000040 PIT cnbn P66 noab Process bonus need to caclculate tax SE
000050 PIT CNSS P70 noab Process Special salary related income s
000060 PIT CNMV noab Save tax base before GROSS-UP/40X->/44
000070 COPY CNTL Get influx WT from LRT to tax base
000080 IF O * Original Period
000090 Lpbeg RC
000100 imprt O
000110 Lpend
000120 IF LPRC
000130 COPY cntr Form diff for tax base
000140 ELSE Form Tax base diff and move ORT to RT
000150 Cngrs Gross up for the EE tax paid is ER.
000160 Cntax Tax calculation
000170 cnsot Calculate stock options Income Tax
000180 CNTXR calculation for tax partially paid by E
000190 ENDIF End of IF form tax base diff.
000200 ELSE *
000210 COPY cntr *
000220 ENDIF *
000230 BLOCK END Process Individual Income tax
The difference between CN00 and CN28