Sistem Absensi Dan Laporan Penggajian

Sistem Absensi dan Laporan Penggajian

Tutorial ini bisa dikembangkan lagi dan digunakan di tempat kerja yang tidak mempunyai Software applikasi pengolahan Data. Rancangan sistem yang saya buat ini terdiri dari 4 Sesion :

Sesion # 1. Membuat Form Input Data Karyawan
Sesion # 2. Membuat Form Input Absensi Karyawan
Sesion # 3. Membuat Form Input Data Slip Gaji Karyawan
Sesion # 4. Membuat Template Laporan Absensi dan Laporan Penggajian

Sesion # 3 Membuat Form Input Data Slip Gaji Karyawan

Pada Sesion ini kita akan membahas pembuatan Slip Gaji Karyawan nya, Proses ini membutuhkan Dua Sheet untuk penyimpanan Data nya, yaitu Sheet ("DataPenggajian") untuk menyimpan data Penggajian dan Sheet ("Potongan") untuk menyimpan Data Potongan Gaji Karyawan.

Rancangan Form Slip Gaji Karyawan ini dibuat juga pada Sheet ("Template").
Berikut ini Tampilan Rancangan Slip Gaji Karyawan:

Pada Range ("X5") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,2,0)),"",VLOOKUP($X$4,DT_Karyawan,2,0))

Pada Range ("AB4") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,10,0)),"",VLOOKUP($X$4,DT_Karyawan,10,0))

Pada Range ("AB5") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,9,0)),"",VLOOKUP($X$4,DT_Karyawan,9,0))

Pada Range ("X9") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,11,0)),"",VLOOKUP($X$4,DT_Karyawan,11,0))

Pada Range ("X10") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,12,0)),"",VLOOKUP($X$4,DT_Karyawan,12,0))

Pada Range ("X11") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,13,0)),"",VLOOKUP($X$4,DT_Karyawan,13,0))

Pada Range ("X12") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,15,0)),"",VLOOKUP($X$4,DT_Karyawan,15,0))

Pada Range ("X13") masuk Fungsi VLOOKUP
=IF(ISNA(VLOOKUP($X$4,DT_Karyawan,14,0)),"",VLOOKUP($X$4,DT_Karyawan,14,0))

"Fungsi - Fungsi tersebut pencarian data pada Sheeet ("DataKaryawan") sesuai NIK pada Range ("X4")"

Buat Dynamic Name Manager untuk :



Tot_Lembur =Absensi!$G$4:$G$998
Tot_Absensi =Absensi!$J$4:$J$998
Tgl_Absensi =Absensi!$B$4:$B$998
Nik_Absensi =Absensi!$A$4:$A$998

Pada Range ("AE9") masukkan Fungsi Rumus
=SUMIFS(Tot_Lembur,Tgl_Absensi,">="&X6,Tgl_Absensi,"<="&Z6,Nik_Absensi,X4)
Pada Range ("AE10") masukkan fungsi rumus
=SUMIFS(Tot_Absensi,Tgl_Absensi,">="&X6,Tgl_Absensi,"<="&Z6,Nik_Absensi,X4)

"Fungsi - Fungsi tersebut menghitung Jumlah Jam Lembur dan Jumlah Jam Absensi sesuai dari tanggal sampai tanggal kerja Karyawan pada Sheeet ("Absensi") sesuai NIK pada Range ("X4")"
 
Pada Range ("AE11") masuk Fungsi = X9/173
 "Fungsi ini untuk menghitung Jumlah upah per Jam dari besaran nya Gaji Pokok pada Range ("X9")"

Pada Range ("X14") masuk Fungsi = X9*0.04
Pada Range ("X15") masuk Fungsi = X9*0.037
Pada Range ("X16") masuk Fungsi = X9*0.15
Pada Range ("X17") masuk Fungsi = AE9*AE11
 "Fungsi - Fungsi tersebut menghitung Jumlah Upah Tambahan dari Perusahaan sesuai Undang - Undang yang berlaku dimana besaran disesuaikan dengan Gaji Pokok pada Range ("X9")"

Pada Range ("AB9") masuk Fungsi = AE10*AE11
Pada Range ("AB10") masuk Fungsi = X9*0.01
Pada Range ("AB11") masuk Fungsi = X9*0.02
Pada Range ("AB12") masuk Fungsi = X9*0.05
"Fungsi - Fungsi tersebut menghitung Jumlah Potongan Gaji sesuai Undang - Undang yang berlaku dimana besaran disesuaikan dengan Gaji Pokok pada Range ("X9")"

Pada Range ("X19") masuk Fungsi = SUM(X9:Z17) ' Menghitung Total Pendapatan Gaji
Pada Range ("AB19") masuk Fungsi = SUM(AB9:AB12) ' Menghitung Total Potongan Gaji
Pada Range ("X21") masuk Fungsi = X19-AB19 ' Menghitung Total Penerimaan Gaji

Untuk Proses Data saya buat Tombol Perintah Simpan, Cari, Edit dan Hapus Data pada Sheet ("DataPenggajian") dan Sheet("Potongan")

Berikut ini Koding Module untuk Perintah Simpan :


Sub Simpan_DataPenggajian()
Dim Gaji As Long
Dim Potongan As Long
Set WsGaji = Worksheets("DataPenggajian")
Set WsPotongan = Worksheets("Potongan")
nik = Worksheets("Template").Range("X4")
If Worksheets("Template").Range("X4") = "" Then
MsgBox "NIK Karyawan Masih Kosong", vbOKOnly + vbInformation, "Data Gaji"
Worksheets("Template").Range("X4").Select
Exit Sub
End If
cSimpan = MsgBox("Apakah Anda Yakin Untuk Menyimpan Data Karyawan: " & nik, vbYesNo + 48, "Komfirmasi")
If cSimpan = vbYes Then
With WsGaji
Gaji = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).row
.Cells(Gaji, 1).Value = Range("X4").Value
.Cells(Gaji, 2).Value = Range("AB21").Value
.Cells(Gaji, 3).Value = Range("X6").Value
.Cells(Gaji, 4).Value = Range("Z6").Value
.Cells(Gaji, 5).Value = Range("X19").Value
.Cells(Gaji, 6).Value = Range("AB19").Value
.Cells(Gaji, 7).Value = Range("X21").Value
End With
With WsPotongan
Potongan = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).row
.Cells(Potongan, 1).Value = Range("X4").Value
.Cells(Potongan, 2).Value = Range("AB21").Value
.Cells(Potongan, 3).Value = Range("AB9").Value
.Cells(Potongan, 4).Value = Range("AB10").Value
.Cells(Potongan, 5).Value = Range("AB11").Value
.Cells(Potongan, 6).Value = Range("AB12").Value
End With
MsgBox "Data Telah Di Simpan...", 64, "Data Gaji"
Else
MsgBox "Data Batal di Simpan", 64, "Data Gaji"
End If
Worksheets("Template").Range("X4").Value = ""
End Sub


Berikut ini Koding Module untuk Perintah Cari :


Sub Cari_Gaji()
Dim nik
Dim Tglterima
If Worksheets("Template").Range("X4") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
If Worksheets("Template").Range("AB21") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
Tglterima = Format(Worksheets("Template").Range("AB21").Value, "mm/dd/yy")
Worksheets("DataPenggajian").Range("B2").AutoFilter Field:=2, Criteria1:=">=" & Tglterima
Worksheets("Potongan").Range("B2").AutoFilter Field:=2, Criteria1:=">=" & Tglterima
    nik = Worksheets("Template").Range("X4")
    Set C = Worksheets("DataPenggajian").Range("A:A").Find(nik, LookIn:=xlValues)
        If Not C Is Nothing Then
        Baris = C.row
        Worksheets("Template").Range("X6").Value = Worksheets("DataPenggajian").Cells(Baris, 3).Value
        Worksheets("Template").Range("Z6").Value = Worksheets("DataPenggajian").Cells(Baris, 4).Value
          Else
        MsgBox "Nik Karyawan belum terdaftar" & vbCrLf & "Cek Kembali Tanggal Masuk dan Nik Karyawan", 64, "Data Absensi"
    End If
With Worksheets("DataPenggajian")
If Worksheets("DataPenggajian").AutoFilterMode Then
                Worksheets("DataPenggajian").Range("B3").AutoFilter
        End If
End With
With Worksheets("Potongan")
If Worksheets("Potongan").AutoFilterMode Then
                Worksheets("Potongan").Range("B3").AutoFilter
        End If
End With
End Sub

Berikut ini Koding Module untuk Perintah Edit :


Sub Edit_Gaji()
On Error Resume Next
Dim nik
Dim Tglterima
If Worksheets("Template").Range("X4") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
If Worksheets("Template").Range("AB21") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
Tglterima = Format(Worksheets("Template").Range("AB21").Value, "mm/dd/yy")
Worksheets("DataPenggajian").Range("B2").AutoFilter Field:=2, Criteria1:=">=" & Tglterima
Worksheets("Potongan").Range("B2").AutoFilter Field:=2, Criteria1:=">=" & Tglterima
    nik = Worksheets("Template").Range("X4")
    Set C = Worksheets("DataPenggajian").Range("A:A").Find(nik, LookIn:=xlValues)
    Set D = Worksheets("Potongan").Range("A:A").Find(nik, LookIn:=xlValues)
    If Not C And Not D Is Nothing Then
    Baris1 = C.row
    Baris2 = D.row
    With Worksheets("DataPenggajian")
    .Cells(Baris1, 2).Value = Worksheets("Template").Range("AB21").Value
    .Cells(Baris1, 3).Value = Worksheets("Template").Range("X6").Value
    .Cells(Baris1, 4).Value = Worksheets("Template").Range("Z6").Value
    .Cells(Baris1, 5).Value = Worksheets("Template").Range("X19").Value
    .Cells(Baris1, 6).Value = Worksheets("Template").Range("AB19").Value
    .Cells(Baris1, 7).Value = Worksheets("Template").Range("X21").Value
    End With
    With Worksheets("Potongan")
    .Cells(Baris2, 2).Value = Worksheets("Template").Range("AB21").Value
    .Cells(Baris2, 3).Value = Worksheets("Template").Range("AB9").Value
    .Cells(Baris2, 4).Value = Worksheets("Template").Range("AB10").Value
    .Cells(Baris2, 5).Value = Worksheets("Template").Range("AB11").Value
    .Cells(Baris2, 6).Value = Worksheets("Template").Range("AB12").Value
    End With
    Else
        MsgBox "Nik Karyawan belum terdaftar" & vbCrLf & "Cek Kembali Tanggal Masuk dan Nik Karyawan", 64, "Data Absensi"
    End If
Worksheets("Template").Range("X4").Value = ""
With Worksheets("DataPenggajian")
If Worksheets("DataPenggajian").AutoFilterMode Then
                Worksheets("DataPenggajian").Range("B3").AutoFilter
        End If
End With
With Worksheets("Potongan")
If Worksheets("Potongan").AutoFilterMode Then
               Worksheets("Potongan").Range("B3").AutoFilter
        End If
End With
End Sub


Berikut ini Koding Module untuk Perintah Hapus :


Sub Hapus_Gaji()
On Error Resume Next
Dim nik
Dim Tglterima
If Worksheets("Template").Range("X4") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
If Worksheets("Template").Range("AB21") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
Tglterima = Format(Worksheets("Template").Range("AB21").Value, "mm/dd/yy")
Worksheets("DataPenggajian").Range("B3").AutoFilter Field:=2, Criteria1:=">=" & Tglterima
Worksheets("Potongan").Range("B3").AutoFilter Field:=2, Criteria1:=">=" & Tglterima
    nik = Worksheets("Template").Range("X4")
    cDelete = MsgBox("Apakah Anda Yakin Untuk Menghapus Data Absensi: " & nik, vbYesNo + 48, "Komfirmasi")
    If cDelete = vbYes Then
    Set C = Worksheets("DataPenggajian").Range("A:A").Find(nik, LookIn:=xlValues)
    Set D = Worksheets("Potongan").Range("A:A").Find(nik, LookIn:=xlValues)
    If Not C And Not D Is Nothing Then
    Baris1 = C.row
    Baris2 = D.row
    Worksheets("DataPenggajian").Cells(Baris1, 2).EntireRow.Delete
    Worksheets("Potongan").Cells(Baris2, 2).EntireRow.Delete
    MsgBox "Data Telah Di Hapus...", 64, "Data Karyawan"
    Else
    MsgBox "Data Batal di Hapus", 64, "Data Karyawan"
    End If
Clear_Data
Else
MsgBox "Nik Karyawan belum Terdaftar Untuk Di Hapus" & vbCrLf & "Cek Kembali Nik Karyawan", 64, "Data Karyawan"
End If
Worksheets("Template").Range("X4").Value = ""
With Worksheets("DataPenggajian")
If Worksheets("DataPenggajian").AutoFilterMode Then
                Worksheets("DataPenggajian").Range("B4").AutoFilter
        End If
End With
With Worksheets("Potongan")
If Worksheets("Potongan").AutoFilterMode Then
                Worksheets("Potongan").Range("B4").AutoFilter
        End If
End With
End Sub


CopyPaste kan saja Koding nya, lalu koneksikan tiap - tiap Tombol perintah sesuia dengan Sub Koding Module Masing - Masing.

Demikian Penjelasan untuk Sesion # 3 Membuat Form Input Data Slip Gaji Karyawan, saya juga sertakan tutorial Video YouTube nya diatas silahkan dipelajari serta dikembangkan dan lanjutka kembali untuk mengupas tuntas Tutorial Sistem Absensi dan Laporan Penggajian ini pada Sesion # 4 Membuat Template Sistem Absensi dan Laporan Penggajian.

Salam...,

 

No comments:

Post a Comment