Mengetahui berapa jumlah pajak penghasilan PPh 21 yang harus dibayarkan oleh seorang wajib pajak adalah hal yang penting. Tarif PPh 21 dipotong dari jumlah Penghasilan Kena Pajak yang dibulatkan ke bawah ke ribuan penuh. Jadi, misalkan jumlah Penghasilan Kena Pajak adalah Rp 12.345.678, maka pembulatan ke bawah ke ribuan penuh menjadi Rp 12.345.000.
Berikut adalah penghasilan dan persentase tarif pajak PPh 21 berdasarkan Pasal 17 ayat (1) huruf a Peraturan Direktur Jenderal Pajak Nomor PER-32/PJ/2015:
Buatlah sebuah tabel. Namailah tabel di Access itu sama dengan tblTarifPajak. Berikut ini adalah nama field dan properti yang dibutuhkan:
Setelah selesai mendesain tabel, isikan data berikut ini:
Nilai dari tabel di atas diambil dari peraturan perpajakan sesuai dengan PER-32/PJ/2015. Sampai saat ini, format tarif pajak selalu sama, yaitu terdiri dari beberapa lapisan. Masing-masing lapisan mempunyai batas bawah (jumlah minimum) dan batas atas (jumlah maksimum) dan persentase tarif yang nilainya disesuaikan (bisa berubah) dengan perkembangan perekonomian nasional. Jadi, bila ada perubahan tarif, kita hanya perlu memperbaharui nilai data setiap lapisan di atas. Kolom/field akumulasiPajak, karena mempunyai tipe data Calculated, nilainya tidak perlu dimasukkan. Kolom itu akan otomatis terisi saat jumlah minimum dan maksimum terisi.
Selanjutnya, kita membuat sebuah modul yang berisi fungsi berikut ini:
Simpanlan modul di atas dengan nama sesuai selera. Kita dapat menjalankan fungsi hitungPPH21 pada sebuah form seperti gambar di atas. Bila fungsi itu dijalankan di Immediate Window, maka hasilnya adalah sebagai berikut.
Berikut adalah penghasilan dan persentase tarif pajak PPh 21 berdasarkan Pasal 17 ayat (1) huruf a Peraturan Direktur Jenderal Pajak Nomor PER-32/PJ/2015:
- Wajib Pajak dengan penghasilan tahunan sampai dengan Rp 50.000.000,- adalah 5%
- Wajib Pajak dengan penghasilan tahunan di atas Rp 50.000.000,- sampai dengan Rp 250.000.000,- adalah 15%
- Wajib Pajak dengan penghasilan tahunan di atas Rp 250.000.000,- sampai dengan Rp 500.000.000,- adalah 25%
- Wajib Pajak dengan penghasilan tahunan di atas Rp 500.000.000,- adalah 30%
- Untuk Wajib Pajak yang tidak memiliki NPWP, dikenai tarif 20% lebih tinggi dari mereka yang memiliki NPWP.
Buatlah sebuah tabel. Namailah tabel di Access itu sama dengan tblTarifPajak. Berikut ini adalah nama field dan properti yang dibutuhkan:
- Field Name= noLapisan
- Data Type= AutoNumber
- Caption= Lapisan Nomor
- Field Name= jumlahMinimum
- Data Type= Currency
- Format= Standard
- Decimal Places=0
- Caption= Jumlah Minimum
- Field Name= jumlahMaksimum
- Data Type= Currency
- Format= Standard
- Decimal Places=0
- Caption= Jumlah Maksimum
- Field Name= pctTarif
- Data Type= Number
- Field Size= Decimal
- Format= Percent
- Precision= 7
- Scale= 5
- Decimal Places= Auto
- Caption= Persentase Tarif
- Field Name= akumulasiPajak
- Data Type= Calculated
- Expression= IIf([jumlahMaksimum]=0,0,([jumlahMaksimum]-[jumlahMinimum])*[pctTarif])
- Result Type= Currency
- Format= Standard
- Decimal Places=0
- Caption= Jumlah Maksimum
Setelah selesai mendesain tabel, isikan data berikut ini:
| noLapisan | Jumlah Minimum | Jumlah Maksimum | Persentase Tarif |
|---|---|---|---|
| 1 | 0 | 50.000.000 | 5% |
| 2 | 50.000.000 | 250.000.000 | 15% |
| 3 | 250.000.000 | 500.000.000 | 25% |
| 4 | 500.000.000 | 0.00 | 30% |
Nilai dari tabel di atas diambil dari peraturan perpajakan sesuai dengan PER-32/PJ/2015. Sampai saat ini, format tarif pajak selalu sama, yaitu terdiri dari beberapa lapisan. Masing-masing lapisan mempunyai batas bawah (jumlah minimum) dan batas atas (jumlah maksimum) dan persentase tarif yang nilainya disesuaikan (bisa berubah) dengan perkembangan perekonomian nasional. Jadi, bila ada perubahan tarif, kita hanya perlu memperbaharui nilai data setiap lapisan di atas. Kolom/field akumulasiPajak, karena mempunyai tipe data Calculated, nilainya tidak perlu dimasukkan. Kolom itu akan otomatis terisi saat jumlah minimum dan maksimum terisi.
Selanjutnya, kita membuat sebuah modul yang berisi fungsi berikut ini:
Function hitungPPH21(lngRupiah As Currency) As Currency
Dim dbs As DAO.Database
Dim rs As DAO.Recordset
Dim lngSisa, lngJumlahMinimum, lngAkumulasiPajak As Currency
Dim lngAkumulasiPajakAkhir, lngAkumulasiPajak1, lngPPH As Currency
Dim sglTarif As Single
Set dbs = CurrentDb
If dbs.OpenRecordset("SELECT COUNT(akumulasiPajak) FROM tblTarifPajak WHERE akumulasiPajak=0", dbOpenSnapshot).Fields(0).Value <> 1 Then
MsgBox "Ada kesalahan dalam penyusunan daftar tarif PPH", vbCritical
hitungPPH21 = 0
Exit Function
End If
Set rs = dbs.OpenRecordset("SELECT * FROM tblTarifPajak ORDER BY jumlahMinimum", dbOpenSnapshot)
lngAkumulasiPajak = 0
lngAkumulasiPajak1 = 0
Do While Not rs.EOF
lngJumlahMinimum = rs.Fields("jumlahMinimum").Value
If lngRupiah > rs.Fields("jumlahMinimum").Value Then
lngSisa = lngRupiah - rs.Fields("jumlahMinimum").Value
sglTarif = rs.Fields("pctTarif").Value
lngPPH = lngSisa * sglTarif
If rs.Fields("akumulasiPajak").Value <> 0 Then
If lngPPH < rs.Fields("akumulasiPajak").Value Then
lngAkumulasiPajak = lngAkumulasiPajak1 + lngPPH
Else
lngAkumulasiPajak = lngAkumulasiPajak + rs.Fields("akumulasiPajak").Value
lngAkumulasiPajak1 = lngAkumulasiPajak
End If
Else
lngAkumulasiPajak = lngAkumulasiPajak + lngPPH
End If
End If
lngAkumulasiPajakAkhir = rs.Fields("akumulasiPajak").Value
rs.MoveNext
Loop
If lngAkumulasiPajakAkhir <> 0 Then
MsgBox "Ada kesalahan dalam penyusunan daftar tarif PPH", vbCritical
hitungPPH21 = 0
Exit Function
End If
hitungPPH21 = lngAkumulasiPajak
End Function
Simpanlan modul di atas dengan nama sesuai selera. Kita dapat menjalankan fungsi hitungPPH21 pada sebuah form seperti gambar di atas. Bila fungsi itu dijalankan di Immediate Window, maka hasilnya adalah sebagai berikut.
?hitungPPH21 (250000000) 32500000



Hasil hitungpph21 nya #Name? ada error dimana yah
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
DeleteThis comment has been removed by the author.
ReplyDelete