Basic Salary
1
BASIC
none
code
result = payslip.paid_amount
Transport Allowance
TRANSPORT_ALW
2
input
input
Insurance
INSURANCE
2
input
input
Latpop
LAPTOP
2
input
input
Insentif
INSENTIF
2
input
input
THR
THR
2
input
input
Meal Allowance
MEAL
2
input
input
Level Allowance
LEVEL
2
input
input
Basic + Benefits
BASE
3
none
code
result = categories['BASIC'] + categories['ALW']
(Allowance) BPJS JKK
BPJS_JKK
4
python
result = version.l10n_id_bpjs_jkk and payslip.l10n_id_include_jkk_jkm
code
result = payslip._l10n_id_get_worked_days_rate() * version.wage * version.l10n_id_bpjs_jkk
(Allowance) BPJS JKM
BPJS_JKM
4
python
result = payslip.l10n_id_include_jkk_jkm
code
result = payslip._l10n_id_get_worked_days_rate() * version.wage
result_rate = payslip._rule_parameter('l10n_id_jkm_percentage')
(Allowance) BPJS Kesehatan
BPJS_Kesehatan
4
python
result = payslip.l10n_id_include_bpjs_kesehatan
code
result = min(payslip._l10n_id_get_worked_days_rate() * version.wage, payslip._rule_parameter('l10n_id_bpjs_salary_threshold'))
result_rate = payslip._rule_parameter('l10n_id_alw_bpjs_kesehatan_percent')
Taxable Salary
100
GROSS
none
code
result = categories['BASE'] + categories['COMP']
JHT
JHT
110
python
result = payslip.l10n_id_include_jkk_jkm
code
result_rate = payslip._rule_parameter('l10n_id_jht_percent')
result = - payslip._l10n_id_get_worked_days_rate() * version.wage
BPJS Kesehatan Deduction
BPJS_KESEHATAN_DED
110
python
result = payslip.l10n_id_include_bpjs_kesehatan
code
result = - min(payslip._l10n_id_get_worked_days_rate() * version.wage, payslip._rule_parameter('l10n_id_bpjs_salary_threshold'))
result_rate = payslip._rule_parameter('l10n_id_ded_bpjs_kesehatan_percent')
JP
JP
110
python
result = payslip.l10n_id_include_jkk_jkm
code
result = - min(payslip._l10n_id_get_worked_days_rate() * version.wage, payslip._rule_parameter('l10n_id_jp_threshold'))
result_rate = payslip._rule_parameter('l10n_id_jp_percent')
Biaya Jabatan
JABATAN
111
python
result = payslip.l10n_id_include_pkp_ptkp and employee.employee_type == 'employee'
code
gross_total = payslip._l10n_id_get_gross_accumulated()
amount_to_apply = min(payslip._rule_parameter('l10n_id_biaya_jabatan_salary_threshold'), categories['GROSS'])
to_add = (payslip._rule_parameter('l10n_id_biaya_jabatan_percent') / 100 ) * amount_to_apply
result = gross_total + to_add
PTKP
PTKP
120
python
result = payslip.l10n_id_include_pkp_ptkp
code
status_ptk_map = {'tk0': 54, "tk1": 58.5, "tk2": 63, "tk3": 67.5, "k0": 58.5, "k1": 63, "k2": 67.5, "k3": 72, "ki0": 112.5, "ki1": 117, "ki2": 121.5, "ki3": 126}
result = status_ptk_map[employee.l10n_id_kode_ptkp] * 10**6
PKP
PKP
121
python
result = payslip.l10n_id_include_pkp_ptkp
code
result = max(0, payslip._l10n_id_get_total_gross() + categories['GROSS'] - categories['JABATAN'] - categories['PTKP'])
PPH 21
PPH21
122
none
code
# regular period
if payslip.l10n_id_include_pkp_ptkp:
# end of year/end of contract
thresholds = [60, 190, 250, 4500]
percentages = [5, 15, 25, 30]
level = 0
total = categories['PKP']
pph21 = 0
while total > 0 and level <= 3:
to_reduce = min(total, thresholds[level] * 1e6)
pph21 += to_reduce * percentages[level] / 100
total -= to_reduce
level += 1
pph21 += total * 0.35 # should now contain the yearly
total_yearly = -payslip._l10n_id_get_end_total_pph_amount()
result = pph21 - total_yearly
else:
amount_to_apply = categories['GROSS']
percentage = payslip._l10n_id_get_pph21_amount(amount_to_apply)
result = categories['GROSS'] * (percentage / 100)
result = -result
Attachment of Salary
174
ATTACH_SALARY
python
result = 'ATTACH_SALARY' in inputs
code
result = -inputs['ATTACH_SALARY'].amount
result_name = inputs['ATTACH_SALARY'].name
Assignment of Salary
174
ASSIG_SALARY
python
result = 'ASSIG_SALARY' in inputs
code
result = -inputs['ASSIG_SALARY'].amount
result_name = inputs['ASSIG_SALARY'].name
Child Support
CHILD_SUPPORT
code
174
python
result = 'CHILD_SUPPORT' in inputs
result = -inputs['CHILD_SUPPORT'].amount
result_name = inputs['CHILD_SUPPORT'].name
Deduction
198
DEDUCTION
python
result = 'DEDUCTION' in inputs
code
result = -inputs['DEDUCTION'].amount
result_name = inputs['DEDUCTION'].name
Reimbursement
199
REIMBURSEMENT
python
result = 'REIMBURSEMENT' in inputs
code
result = inputs['REIMBURSEMENT'].amount
result_name = inputs['REIMBURSEMENT'].name
Net Salary
200
NET
none
code
result = categories['BASIC'] + categories['ALW'] + categories['DED']