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
ReplyDelete