1. BAB I
PENDAHULUAN
A. Pendahuluan
Administrasi penggajian/payroll adalah pekerjaan rutin dan merupakan salah satu
bagian terpenting dalam manajemen perusahaan. Proses perhitungan gaji harus dapat
dilakukan dengan cepat, tepat dan akurat. Untuk dapat melakukan administrasi
penggajian yang baik diperlukan pengetahuan dan pemahaman yang komprehensif
tentang administrasi penggajian. Administrasi penggajian harus sesuai dengan hukum
dan perundang-undangan yang berlaku seperti UU Tenaga Kerja, Perpajakan, Jamsostek
dan menunjang keberhasilan perusahaan. Untuk itu profesional dalam bidang
HRD/Payroll dituntut mampu melaksanakan proses administrasi penggajian mulai dari
pemahaman terhadap konsep penggajian, proses perhitungan dan pembuatan laporan
penggajian.
B. Tujuan
1. Mengerti dan memahami konsep penggajian dan kesejahteraan bagi karyawan.
2. Membuat perhitungan lembur, cuti, absensi, klaim medical dsb.
3. Menghitung PPh 21 dengan berbagai metode seperti gross dan membuat laporannya.
4. Menghitung dan membuat laporan tenaga kerja.
5. Menyusun komponen gaji , pendapatan dan potongan serta mengkalkulasi proses
perhitungan gaji mulai dari input data, proses dan pembuatan laporan penggajian.
2. BAB II
PEMBAHASAN
A. Defenisi
Administrasi penggajian/payroll adalah pekerjaan rutin dan merupakan salah satu bagian
terpenting dalam manajemen perusahaan. Proses perhitungan gaji harus dapat dilakukan
dengan cepat, tepat dan akurat. Untuk dapat melakukan administrasi penggajian yang
baik diperlukan pengetahuan dan pemahaman yang komprehensif tentang administrasi
penggajian. Administrasi penggajian harus sesuai dengan hukum dan perundang-
undangan yang berlaku seperti UU Tenaga Kerja, Perpajakan, Jamsostek dan menunjang
keberhasilan perusahaan. Untuk itu profesional dalam bidang HRD/Payroll dituntut
mampu melaksanakan proses administrasi penggajian mulai dari pemahaman terhadap
konsep penggajian, proses perhitungan dan pembuatan laporan penggajian.
B. Tahapan Pembuatan ERD
Untuk memulai pengerjaan System Payroll ini saya mulai dengan membuat
Database terlebih dahulu, yang terdiri dari 11 Tabel yaitu :
1. Tahap 1: Penentuan Entities
7. 3. Tahap 3 : Penentuan Kardinalitas Relasi
4. Tahap 4 : Pembuaatan ERD
C. Cara Membuat Koneksi ODBC Setelah ERD terbentuk pada program payroll sebagai
berikut :
Masuk ke dalam Jendela Control Panel (Start - Control Panel)
Pilih Administrative Tools
Pilih Data Source (ODBC)
Tampil Jendela ODBC Data Source Administrator, Pilih Add
Pada Jendela Create New Data Source, Pilih MySQL ODBC 5.1w Driver
8. Klik tombol Finish
Maka akan tampil jendela form konfigurasi seperti di bawah ini
Pada Bingkai Connection Parameters isi dengan ketentuan sebagai berikut :
1. Data Source Name, merupakan Nama Data Source yang akan digunakan dalam
koneksi dengan Basis Data.
2. Description, untuk mendeskripsikan koneksi Basisdata yang anda buat. Text ini boleh
dikosongkan
3. Server, jika hanya untuk local computer gunakan localhost atau isi dengan IP
127.0.0.1. Jika untuk koneksi ke server atau client gunakan IP Address Komputer
server tujuan.
4. User adalah nama user/pengguna, untuk default dari database MySQL isi dengan
root
5. Password diisi sesuai dengan password user
6. Database merupakan database yang akan digunakan dalam koneksi. Pilih sesuai
dengan database yang akan dituju
7. Untuk mencoba koneksi database, klik tombol Test
8. Jika selesai, klik tombol OK
9. Contoh Dari pengaturan ODBC mySQL yang sudah saya gunakan
D. Setelah tabel selesai di buat, kita lanjutkan untuk membuat querynya :
a. Query Daftar Pegawai
b. Query Kehadiran
10. c. Query Daftar Gaji
d. Query Untuk Mencari Jumlah Hari
e. Query Slip Gaji
Simtak :
select `pegawai`.`nama_karyawan0108` AS `nama_karyawan0108`,`pegawai`.`nik0108` AS
`nik0108`,`jabatan`.`nama_jabatan0108` AS `nama_jabatan0108`,`golongan`.`golongan0108`
AS `golongan0108`,`pegawai`.`status_kawin0108` AS
`status_kawin0108`,`golongan`.`gaji_pokok0108` AS
`gaji_pokok0108`,`jabatan`.`uang_makan0108` AS
`uang_makan0108`,`jabatan`.`tunjangan_transport0108` AS
`tunjangan_transport0108`,`jabatan`.`tunjangan_jabatan0108` AS
11. `tunjangan_jabatan0108`,((`mutia`.`Total_Jam_Lembur` / 3600) * 7500) AS
`Pendapatan_Lembur`,((((`golongan`.`gaji_pokok0108` + `jabatan`.`uang_makan0108`) +
`jabatan`.`tunjangan_transport0108`) + `jabatan`.`tunjangan_jabatan0108`) +
((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) AS
`total_gaji`,if((`pegawai`.`status_kawin0108` = 'Belum
Menikah'),((((((((`golongan`.`gaji_pokok0108` + `jabatan`.`uang_makan0108`) +
`jabatan`.`tunjangan_transport0108`) + `jabatan`.`tunjangan_jabatan0108`) +
((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) * 12) - 24300000) * 0.05) /
12),((((((((`golongan`.`gaji_pokok0108` + `jabatan`.`uang_makan0108`) +
`jabatan`.`tunjangan_transport0108`) + `jabatan`.`tunjangan_jabatan0108`) +
((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) * 12) - 26325000) * 0.05) / 12)) AS
`PPh21`,if((`pegawai`.`status_kawin0108` = 'Belum
Menikah'),(((((`golongan`.`gaji_pokok0108` + `jabatan`.`uang_makan0108`) +
`jabatan`.`tunjangan_transport0108`) + `jabatan`.`tunjangan_jabatan0108`) +
((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) - ((((((((`golongan`.`gaji_pokok0108` +
`jabatan`.`uang_makan0108`) + `jabatan`.`tunjangan_transport0108`) +
`jabatan`.`tunjangan_jabatan0108`) + ((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) * 12) -
24300000) * 0.05) / 12)),(((((`golongan`.`gaji_pokok0108` + `jabatan`.`uang_makan0108`) +
`jabatan`.`tunjangan_transport0108`) + `jabatan`.`tunjangan_jabatan0108`) +
((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) - ((((((((`golongan`.`gaji_pokok0108` +
`jabatan`.`uang_makan0108`) + `jabatan`.`tunjangan_transport0108`) +
`jabatan`.`tunjangan_jabatan0108`) + ((`mutia`.`Total_Jam_Lembur` / 3600) * 7500)) * 12) -
26325000) * 0.05) / 12))) AS `gaji_diterima` from ((((`pegawai` join `jabatan`) join
`golongan`) join `mutia`) join `jabatan`) where ((`pegawai`.`kode_jabatan0108` =
`jabatan`.`kode_jabatan0108`) and (`golongan`.`golongan0108` = `pegawai`.`golongan0108`)
and (`pegawai`.`nik0108` = `mutia`.`nik0108`) and (`pegawai`.`nama_karyawan0108` =
`mutia`.`nama_karyawan0108`)) group by `pegawai`.`nik0108` order by
`pegawai`.`nik0108`;
f. Queri Rekapitulasi Gaji
Simtak :
select `pegawai`.`nik0108` AS `nik0108`,` pegawai`.`nama_karyawan0108` AS
`nama_karyawan0108`,`slip_gaji_pegawai`.`total_gaji` AS
`total_gaji_0108`,`slip_gaji_pegawai`.`Pendapatan_Lembur` AS
`pendapatan_lembur`,`slip_gaji_pegawai`.`PPh21` AS
`PPh21`,((((`golongan`.`gaji_pokok0108` + `jabatan`.`uang_makan0108`) +
`jabatan`.`tunjangan_transport0108`) + `slip_gaji_pegawai`.`Pendapatan_Lembur`) -
`slip_gaji_pegawai`.`PPh21`) AS `gaji_diterima` from (((`pegawai` join `golongan`) join
12. `jabatan`) join `slip_gaji_pegawai`) where ((`pegawai`.`kode_jabatan0108` =
`jabatan`.`kode_jabatan0108`) and (`pegawai`.`golongan0108` = `jabatan`.`golongan0108`)
and (`pegawai`.`nik0108` = `slip_gaji_pegawai`.`nik0108`) and (`pegawai`.`golongan0108` =
`slip_gaji_pegawai`.`golongan0108`));
E. SETELAH ITU MULAILAH KITA MENDESAIN FORM PADA VISUAL BASIC.
Pembuatan Rumus Pada Vb yang ada pada Payroll :
Adapun form yang penulis desain adalah :
1. Module
Public Conn As New ADODB.Connection
Public Rs As New ADODB.Recordset
Public strKon As String
Public strSQL As String
Public Tempat As String
Public Sub konek()
strKon = "driver={MySQL ODBC 3.51 Driver};" _
& "SERVER=localhost;" _
& "DATABASE=payroll;" _
& "port=3306;" _
& "user=root;" _
& "option=3;"
If Conn.State = adStateOpen Then
Conn.Close
Conn.CursorLocation = adUseClient
Set Conn = New ADODB.Connection
Conn.Open strKon
Else
Conn.Open strKon
End If
End Sub
Note :
Pastikan komputer anda sudah aktive SQL servernya
Pastikan Komputer Anda sudah Aktive VB nya
Pastikan Database anda dan tabel anda sudah bisa di gunakan
Pastikan seting ODBC anda sudah aktive
Langkah langkah yang harus dipersiapkan untuk memulai sebuah proyek
adalah menyiapkan folder kusus untuk sistem yang kita bangun. didalam folder
tersebut terdapat file file program, database, gambar, icon dll.
Didalam VB kita bisa membuat sebuah project yang terdidi dari Form,
modul dan Designer. Form adalah wadah tempat kita meletakan tools dan menulis
bahasa program. Sedangkan modul dapat digunakan seagai sebuah mesin
prosedur yang bisa digiunakan ketika kita ingin mejlankan sebuak sistem pada
form, biasanya modul digunakan untuk melakukan koneksi ke database. Dan
13. Designer merupakan software Report yang digunakan untuk menapilkan data
yang ada di database, biasanya ini digunakan untuk pencetakan data ke printer.
2. Cara Pembuatan MDI From seperti ini :
Proses Pembuatan ini :
a. Kita Klik Menu Editor yang ada pada toolbar
b. Setelah kita tekan menu editor maka akan muncul kotak dialog seperti ini dan ini datanya
dengan field yang tidak boleh sama :
14. 2. Pembuatan Form Pegawai
LAPORAN PEGAWAI
Simtak Untuk Data pegawai :
Private Sub Combo1_Click()
Text5.SetFocus
End Sub
15. Private Sub Combo2_Click()
Text8.SetFocus
End Sub
Private Sub Combo3_Click()
Combo4.SetFocus
End Sub
Private Sub Combo4_Click()
Combo5.SetFocus
End Sub
Private Sub Combo6_Click()
Combo7.SetFocus
End Sub
Private Sub Command1_Click()
Unload Me Ini Simtak Untuk Tombol Keluar
End Sub
Private Sub Command2_Click()
kondisi
Aktiv
notis
Text2.SetFocus
End Sub
Private Sub Command3_Click()
Simpan Proseder untuk memanggil Proseder simpan dan hitung yang telah ada
Hitung
End Sub
Private Sub Command4_Click()
Simpan
Hitung
End Sub
Private Sub Command5_Click()
Aktiv
Text1.SetFocus
Hitung
End Sub
Private Sub Command6_Click()
Hapus
bersih
kondisi
Hitung
End Sub
16. Private Sub Command7_Click()
bersih
Tidak_Aktiv
kondisi
Hitung
End Sub
Private Sub Command8_Click()
CommonDialog1.Filter = "Picture files (*.jpg;*.bmp;*.gif;*.png)|*.jpg;*.bmp;*.gif;*.png"
CommonDialog1.ShowOpen
Image1.Picture = LoadPicture(CommonDialog1.FileName)
Image1.Visible = True
Text15.Text = CommonDialog1.FileName
End Sub
Private Sub Command9_Click()
CrystalReport1.ReportFileName = "D:semester4pak budipayrollkepegawaian.rpt"
CrystalReport1.WindowState = crptMaximized
CrystalReport1.RetrieveDataFiles
CrystalReport1.Action = 0
End Sub
Private Sub Commbo8_Click()
CommonDialog1.Filter = "Picture files (*.jpg;*.bmp;*.gif;*.png)|*.jpg;*.bmp;*.gif;*.png"
CommonDialog1.ShowOpen
Image1.Picture = LoadPicture(CommonDialog1.FileName)
Image1.Visible = True
Text15.Text = CommonDialog1.FileName
End Sub
Private Sub Form_Load()
Tidak_Aktiv
bersih
jk
status
Agama
Pendidikan
Kd_Jabatan
Kd_Golongan
Kebangsaan
Hitung
'Label27.Caption = Format(Date, "dd mmmm yyyy")
'Label28.Caption = Format(Date, "dd mmmm yyyy")
'Label29.Caption = Format(Date, "dd mmmm yyyy")
'Label30.Caption = Format(Date, "dd mmmm yyyy")
DTPicker5 = Date
DTPicker2 = Date
DTPicker3 = Date
17. DTPicker4 = Date
Adodc1.Visible = False
End Sub
Private Sub bersih()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""
Text11.Text = ""
Text12.Text = ""
Text13.Text = ""
Text14.Text = ""
Combo1.Text = ""
Combo2.Text = ""
Combo3.Text = ""
Combo4.Text = ""
Combo5.Text = ""
Combo6.Text = ""
Combo7.Text = ""
End Sub
Private Sub notis()
Konek
strSQL = "select max(right(nik0108,3)) as urut from pegawai"
Set rs = conn.Execute(strSQL)
If Not rs.EOF Then
a = "" & rs("urut")
bil = Right(a, 2.1)
If bil = "0" Or bil = "" Then
Text1.Text = "M" + "001"
Else
Text1.Text = Format("M" & "00" & bil + 1)
End If
Else
Text1.Text = "M" + "001"
End If
End Sub
Private Sub jk()
Combo1.Text = "Pilih Jenis Kelamin"
Combo1.AddItem ("Pria")
Combo1.AddItem ("Perempuan")
End Sub
Private Sub Tidak_Aktiv()
Text1.Enabled = False
19. Combo7.Enabled = True
'Label27.Enabled = True
'Label28.Enabled = True
'Label29.Enabled = True
'Label30.Enabled = True
DTPicker5.Enabled = True
DTPicker2.Enabled = True
DTPicker3.Enabled = True
DTPicker4.Enabled = True
End Sub
Private Sub status()
Combo2.Text = "Pilih Status"
Combo2.AddItem ("Belum Menikah")
Combo2.AddItem ("Menikah")
Combo2.AddItem ("Cerai")
End Sub
Private Sub Agama()
Combo3.Text = "Pilih Agama"
Combo3.AddItem ("Islam")
Combo3.AddItem ("Kristen Katolik")
Combo3.AddItem ("Kristen Protesta")
Combo3.AddItem ("Budha")
Combo3.AddItem ("Hindu")
End Sub
Private Sub Pendidikan()
Combo4.Text = "Pilih Pendidikan"
Combo4.AddItem ("S3")
Combo4.AddItem ("S2")
Combo4.AddItem ("S1")
Combo4.AddItem ("D3")
Combo4.AddItem ("SMA")
Combo4.AddItem ("SMP")
Combo4.AddItem ("SD")
End Sub
Private Sub Kd_Jabatan()
Konek
strSQL = "select kode_jabatan0108 From jabatan"
Set rs = conn.Execute(strSQL)
Combo6.Clear
Do While Not rs.EOF
Combo6.Refresh
Combo6.Text = "Pilih Kode Jabatan"
Combo6.AddItem Trim(rs("kode_jabatan0108"))
rs.MoveNext
Loop
End Sub
20. Private Sub Kd_Golongan()
Konek
strSQL = "select golongan0108 From golongan"
Set rs = conn.Execute(strSQL)
Combo7.Clear
Do While Not rs.EOF
Combo7.Refresh
Combo7.Text = "Pilih Kode Golongan"
Combo7.AddItem Trim(rs("golongan0108"))
rs.MoveNext
Loop
End Sub
Private Sub Kebangsaan()
Combo5.Text = "Pilih Kebangsaan"
Combo5.AddItem ("Indonesia")
Combo5.AddItem ("Warga Negara Asing")
End Sub
'Menghitung Jumlah Data
Private Sub Hitung()
Konek
strSQL = "select COUNT(nik0108) as banyak from pegawai"
Set rs = conn.Execute(strSQL)
If Not rs.EOF Then
X1 = "" & rs("banyak")
Else
X1 = 0
End If
Text14.FontSize = 13
Text14.Text = X1
End Sub
Private Sub Simpan()
'Cek
'On Error GoTo Bantu:
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from pegawai where nik0108 = '" & Text1.Text & "'", conn, adOpenStatic,
adLockOptimistic
If Not rs.EOF Then
Set rs = New ADODB.Recordset
rs.Open "select * from pegawai where nik0108 ='" & Text1.Text & "'", conn, adOpenStatic,
adLockOptimistic
rs!nik0108 = Trim(Text1.Text)
rs!nama_karyawan0108 = Trim(Text2.Text)
rs!tempat_lahir108 = Trim(Text3.Text)
rs!tgl_lahir0108 = Trim(Label27.Caption)
'rs!tgl_lahir0108 = Trim(DTPicker5)
rs!no_npwp0108 = Trim(Text9.Text)
rs!tgl_daftar_npwp0108 = Trim(Label28.Caption)
'rs!tgl_daftar_npwp0108 = Trim(DTPicker2)
rs!alamat0108 = Trim(Text4.Text)
22. rs!no_ansuransi0108 = Trim(Text11.Text)
rs!kode_jabatan0108 = Trim(Combo6.Text)
rs!golongan0108 = Trim(Combo7.Text)
rs!no_rek_bank0108 = Trim(Text12.Text)
rs!nama_bank0108 = Trim(Text13.Text)
rs!jumlah_anak = Trim(Text8.Text)
rs.Update
rs.Close
bersih
'MsgBox "Data Jabatan Sudah Di Simpan", vbInformation, "Informasi"
'Bantu:
'If Err.Number = 0 Then
'Exit Sub
'Else
'MsgBox "Ada Kesalahan pada Proses Data", vbInformation, "Informasi"
'End If
End If
End Sub
Private Sub Text1_Change()
On Error GoTo Bantu:
'Membatasi Input Pada Text
If rs.State = adStateOpen Then
rs.Close
End If
If Len(Text1.Text) <> 13 Then
Close
Else
Aktiv
Text2.SetFocus
End If
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from pegawai where nik0108='" & Text1.Text & "'", conn, adOpenStatic,
adLockOptimistic
If Not rs.EOF Then
Set rs = New ADODB.Recordset
rs.Open "select * from pegawai where nik0108='" & Text1.Text & "'", conn, adOpenStatic,
adLockOptimistic
Text1.Text = rs!nik0108
Text2.Text = rs!nama_karyawan0108
Text3.Text = rs!tempat_lahir108
Label27.Caption = rs!tgl_lahir0108
'DTPicker5 = rs!tgl_lahir0108
Text4.Text = rs!alamat0108
Combo1.Text = rs!jenis_kelamin0108
Text5.Text = rs!no_telp0108
Text6.Text = rs!no_ktp0108
Text7.Text = rs!jenis_pegawai0108
Combo2.Text = rs!status_kawin0108
23. Text8.Text = rs!jumlah_anak
Combo3.Text = rs!agama0108
Combo4.Text = rs!pendidikan_akhir0108
Combo5.Text = rs!kebangsaaan0108
Combo6.Text = rs!kode_jabatan0108
Combo7.Text = rs!golongan0108
'Label29.Caption = rs!tgl_masuk_kerja0108
'Label30.Caption = rs!tgl_berhenti0108
'Label28.Caption = rs!tgl_daftar_npwp0108
DTPicker3 = rs!tgl_masuk_kerja0108
DTPicker4 = rs!tgl_berhenti0108
DTPicker2 = rs!tgl_daftar_npwp0108
Text9.Text = rs!no_npwp0108
Text10.Text = rs!no_jamsostek0108
Text11.Text = rs!no_asuransi91
Text12.Text = rs!no_rek_bank0108
Text13.Text = rs!nama_bank0108
Bantu:
If Err.Number = 0 Then
Exit Sub
Else
MsgBox "Pengimputan Data Salah !", vbInformation, "Informasi"
End If
bersih
End If
End Sub
Private Sub kondisi()
Combo1.Text = "Pilih Jenis Kelamin"
Combo2.Text = "Pilih Status"
Combo3.Text = "Pilih Agama"
Combo4.Text = "Pilih Pendidikan"
Combo5.Text = "Pilih Kebangsaan"
Combo6.Text = "Pilih Kode Jabatan"
Combo7.Text = "Pilih Kode Golongan"
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Do Until Me.Top <= -50000
DoEvents
Me.Move Me.Left, Me.Top - 5
DoEvents
Loop
Unload Me
End Sub
Private Sub Hapus()
On Error GoTo Bantu:
Konek
strSQL = "Select * from pegawai where nik0108='" & Trim(Text1.Text) & "'"
Set rs = conn.Execute(strSQL)
24. If rs.EOF Then
MsgBox "Data Tidak Ditemukan!", vbInformation, "Informasi"
Else
Pesan = MsgBox("Yakin Data Akan Di Hapus ?", vbYesNo, "Peringatan")
If Pesan = vbYes Then
strSQL = "delete from pegawai where nik0108='" & Trim(Text1.Text) & "'"
conn.Execute (strSQL)
MsgBox "Data Berhasil Di Hapus", vbInformation, "Informasi"
Else
'Manajemen Tombol
Bantu:
If Err.Number = 0 Then
Exit Sub
Else
MsgBox "Ada Kesalahan pada Koneksi Database", vbInformation, "Informasi"
End If
End If
End If
bersih
End Sub
3. Pembuatan Form Golongan
25. LAPORAN GOLONGAN PEGAWAI
Simtak form golongan :
Private Sub add_Click()
add.Enabled = False
save.Enabled = True
edit.Enabled = False
delete.Enabled = False
cetak.Enabled = False
batal.Enabled = True
AKTIF
bersih
Text1.SetFocus
End Sub
Private Sub AKTIF()
Text1.Enabled = True
Text2.Enabled = True
End Sub
Private Sub tidak_aktif()
Text1.Enabled = False
Text2.Enabled = False
End Sub
Private Sub bersih()
Text1.Text = ""
Text2.Text = ""
End Sub
Private Sub batal_click()
bersih
tampil_ke_object
delete.Enabled = False
edit.Enabled = False
save.Enabled = False
add.Enabled = True
cetak.Enabled = True
tidak_aktif
26. End Sub
Private Sub cetak_Click()
CrystalReport1.ReportFileName = "D:semester4pak budipayrollgolongan108.rpt"
CrystalReport1.WindowState = crptMaximized
CrystalReport1.RetrieveDataFiles
CrystalReport1.Action = 0
End Sub
Private Sub DataGrid1_RowColChange(lastrow As Variant, ByVal lastcol As Integer)
tampil_ke_object
End Sub
Private Sub delete_Click()
Hapus_data
End Sub
Private Sub edit_Click()
AKTIF
add.Enabled = False
save.Enabled = True
edit.Enabled = False
delete.Enabled = False
Text1.Enabled = False
cetak.Enabled = False
End Sub
Private Sub Form_Load()
bersih
tampil
'tampildataGOLONGAN
Adodc1.Visible = False
tidak_aktif
End Sub
Private Sub tampildataGOLONGAN()
Konek
Adodc1.ConnectionString = strKon
Adodc1.RecordSource = "select * from golongan order by golongan0108 asc"
Adodc1.Refresh
With DataGrid1
Set .DataSource = Adodc1
.Caption = "Daftar Golongan [System Payroll]"
End With
DataGrid1.Columns(0).Width = 1200
DataGrid1.Columns(1).Width = 1800
DataGrid1.Columns(0).Caption = "Golongan"
DataGrid1.Columns(1).Caption = "Gaji Pokok"
End Sub
Private Sub tampil()
Konek
27. Adodc1.ConnectionString = strKon
Adodc1.RecordSource = "select * from golongan"
Adodc1.Refresh
With DataGrid1
Set .DataSource = Adodc1
.Caption = "DATA golongan"
.Columns(0).Width = 1000
.Columns(0).Caption = "golongan0108"
.Columns(1).Width = 1900
.Columns(1).Caption = "gaji_pokok0108"
End With
'Menghitung Jumlah DATA golongan
Konek
strSQL = "select COUNT(golongan0108) as banyak from golongan"
Set rs = conn.Execute(strSQL)
If Not rs.EOF Then
X1 = "" & rs("banyak")
Else
X1 = 0
End If
Text3.FontSize = 13
Text3.Text = X1
End Sub
Private Sub Simpan()
On Error GoTo Bantu:
If Text1.Text = "" Or Text2.Text = "" Then
Text3.Text = "Semua Data Harus DiIsi"
Text1.SetFocus
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "Data Harus Diisi Semua !", 48, "Pesan"
Text2.SetFocus
Exit Sub
End If
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from golongan where golongan0108='" & Text1.Text & "'", conn,
adOpenStatic, adLockOptimistic
If Not rs.EOF Then
Set rs = New ADODB.Recordset
rs.Open "select * from golongan where golongan0108 ='" & Text1.Text & "'", conn,
adOpenStatic, adLockOptimistic
rs!golongan0108 = Trim(Text1.Text)
rs!gaji_pokok0108 = Trim(Text2.Text)
rs.Update
rs.Close
28. bersih
MsgBox "Data Golongan Sudah Di Perbaiki", vbInformation, "Pesan"
'Manajemen Tombol
tampil_ke_object
add.Enabled = True
save.Enabled = False
edit.Enabled = False
delete.Enabled = False
cetak.Enabled = True
tidak_aktif
Else
'Simpan
Set rs = New ADODB.Recordset
rs.Open "select * from golongan", conn, adOpenStatic, adLockOptimistic
rs.AddNew
rs!golongan0108 = Trim(Text1.Text)
rs!gaji_pokok0108 = Trim(Text2.Text)
rs.Update
rs.Close
bersih
MsgBox "Data Golongan Sudah Di Simpan", vbInformation, "Informasi"
tampil_ke_object
'manajemen tombol
add.Enabled = True
save.Enabled = False
edit.Enabled = False
delete.Enabled = False
cetak.Enabled = True
tidak_aktif
Bantu:
If Err.Number = 0 Then
Exit Sub
Else
MsgBox "Ada Kesalahan pada Pada Proses Data", vbInformation, "Informasi"
End If
End If
End Sub
Private Sub keluar_Click()
End
End Sub
Private Sub Label2_Click()
End Sub
Private Sub save_Click()
Simpan
tampil
End Sub
29. Private Sub Text1_Change()
'membatasi input pada text
If rs.State = adStateOpen Then
rs.Close
End If
If Len(Text1.Text) <> 13 Then
Close
Else
AKTIF
Text2.SetFocus
End If
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from golongan where golongan0108= '" & Text1.Text & Text1.Text & "'",
conn, adOpenStatic, adLockOptimistic
If Not rs.EOF Then
Set rs = New ADODB.Recordset
rs.Open "select * from golongan where golongan0108='" & Text1.Text & "'", conn,
adOpenStatic, adLockOptimistic
Text1.Text = rs!golongan0108
Text2.Text = rs!gaji_pokok0108
'menampilkan data yang tersedia ke datagrid
Adodc1.RecordSource = "select * from golongan where golongan0108 like '" & Text1.Text
& "%'"
Adodc1.Refresh
With DataGrid1
Set .DataSource = Adodc1
End With
tidak_aktif
save.Enabled = False
edit.Enabled = True
delete.Enabled = True
End If
End Sub
Private Sub text1_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.SetFocus
End If
End Sub
Private Sub text2_keypress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text2.SetFocus
End If
End Sub
Private Sub tampil_ke_object()
On Error GoTo help
If Adodc1.Recordset.BOF Then
Exit Sub
ElseIf Adodc1.Recordset.EOF Then
30. Exit Sub
Else
Text1.Text = "" & Adodc1.Recordset.Fields("golongan0108")
Text2.Text = "" & Adodc1.Recordset.Fields("gaji_pokok0108")
End If
help:
If Err.Number = 0 Then
Else
Text3.FontSize = 13
Text3.Text = "Terjadi Kesalahan Pada Data"
End If
End Sub
Private Sub Hapus_data()
On Error GoTo help:
If Trim(Text1.Text) = "" Then
Text3.Text = "Data Tidak Ditemukan"
DataGrid1.SetFocus
Else
Konek
strSQL = "select * from golongan where golongan0108='" & Trim(Text1.Text) & "'"
Set rs = conn.Execute(strSQL)
If rs.EOF Then
Text3.Text = "Data tidak Ditemukan"
Else
Pesan = MsgBox("Apakah data Barang :" & Trim(Text1.Text) & "Yakin Data Akan Di
Hapus", vbYesNo, "Peringatan")
If Pesan = vbYes Then
strSQL = "delete from golongan where golongan0108='" & Trim(Text1.Text) & "'"
conn.Execute (strSQL)
Text3.Text = "Data Terhapus"
tampil
Else
End If
End If
End If
help:
If Err.Number = 0 Then
Else
Text3.Text = "ERROR KONEKSI DATABASE"
End If
End Sub
31. 4. Pembuatan untuk form jabatan
LAPORAN DATA JABATAN
Simtak :
Simtak tabel jabatan hampir sama dengan simtak dari form golongan.
32. 5. Pembuatan Untuk Form Kehadiran
LaporanKehadiranPegawai Dan UangLembur
Simtak Untuk Kehadiran :
Private Sub Combo1_Click()
Konek
strSQL = "select nama_karyawan0108 from pegawai where nik0108 ='" & Trim(Combo1)
& "'"
Set rs = conn.Execute(strSQL)
If Not rs.EOF Then
Label2.Caption = " " & rs("nama_karyawan0108")
Else
Label12.Caption = "Nama Pegawai Belum Ada"
End If
End Sub
33. Private Sub nonik()
Konek
strSQL = "select nik0108 From pegawai order by nik0108 asc"
Set rs = conn.Execute(strSQL)
Combo1.Clear
Do While Not rs.EOF
Combo1.Refresh
Combo1.Text = "Pilih Kode"
Combo1.AddItem Trim(rs("nik0108"))
rs.MoveNext
Loop
End Sub
Private Sub Command1_Click()
strSQL = "select nik0108,tgl_kerja0108 from kehadiran where nik0108='" & Trim(Combo1)
& "' And tgl_kerja0108 = '" & Format(Now, "yyyy/mm/dd") & "'"
Set rs = conn.Execute(strSQL)
If Not rs.EOF Then
MsgBox ("Anda Sudah Absen...!"), vbInformation, "Pesan"
Else
Absenku
MsgBox ("Silakan Anda Masuk Kerja..!!!"), vbInformation, "Pesan"
End If
End Sub
Private Sub Command2_Click()
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from kehadiran where nik0108='" & Trim(Combo1) & "' And
tgl_kerja0108 = '" & Format(Now, "yyyy/mm/dd") & "'", conn, adOpenStatic,
adLockOptimistic
If Not rs.EOF Then
Set rs = New ADODB.Recordset
rs.Open "select * from kehadiran where nik0108='" & Trim(Combo1) & "' And
tgl_kerja0108 = '" & Format(Now, "yyyy/mm/dd") & "'", conn, adOpenStatic,
adLockOptimistic
rs!nik0108 = Trim(Combo1)
rs!jam_keluar0108 = Time
rs.Update
rs.Close
MsgBox "Silakan Anda Pulang...!!", vbInformation, "Pesan"
Else
End If
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
34. Private Sub Command4_Click()
Label2.Caption = ""
Combo1.Text = "Pilih NIK"
End Sub
Private Sub Command5_Click()
cetak
End Sub
Private Sub cetak()
CrystalReport1.ReportFileName = "D:semester4pak budipayrollLAPORAN
KEHADIRAN.rpt"
CrystalReport1.WindowState = crptMaximized
CrystalReport1.RetrieveDataFiles
CrystalReport1.ReplaceSelectionFormula "{kehadiran.nik0108}='" & Combo1.Text & "'"
CrystalReport1.Action = 0
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then
End
Else
End If
End Sub
Private Sub Form_Load()
Adodc1.Visible = False
Label2.Caption = ""
Text2.Text = ""
Combo1.Text = ""
Label5.Enabled = True
'DTPicker1.Enabled = False
Text2.Enabled = False
Label5 = Date
'DTPicker1 = Format(Now, ddyymm)
nik
End Sub
Private Sub Timer1_Timer()
Text2.Text = "" & Time & ""
End Sub
Private Sub nik()
Konek
strSQL = "select nik0108 From pegawai"
Set rs = conn.Execute(strSQL)
Combo1.Clear
Do While Not rs.EOF
Combo1.Refresh
Combo1.Text = "Pilih NIK"
Combo1.AddItem Trim(rs("nik0108"))
rs.MoveNext
35. Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Do Until Me.Top <= -50000
DoEvents
Me.Move Me.Left, Me.Top - 5
DoEvents
Loop
Unload Me
End Sub
Private Sub Absenku()
'simapn Data
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from kehadiran where kehadiran.nik0108='" & Trim(Combo1) & "'",
conn, adOpenStatic, adLockOptimistic
rs.AddNew
rs!nik0108 = Trim(Combo1.Text)
rs!tgl_kerja0108 = Format(Now, "yyyy/mm/dd")
rs!jam_masuk0108 = Trim(Text2.Text)
rs!jam_keluar0108 = Trim(Text2.Text)
rs!kelompok_hari0108 = "STAF"
rs!periode0108 = Month(Label5.Caption)
rs.Update
rs.Close
End Sub
Private Sub Timer2_Timer()
Label5.Caption = Format(Date, "dd mmmm yyyy")
End Sub
6. Form untuk Rekapitulasi Pegawai Berdasarkan Nik Kariawan :
36. LaporanRekapitulasi Pegawai
Simtaknya :
Private Sub Combo1_Click()
Konek
strSQL = "select nama_karyawan0108 from pegawai where nik0108 ='" & Trim(Combo1)
& "'"
Set rs = conn.Execute(strSQL)
If Not rs.EOF Then
Label2.Caption = " " & rs("nama_karyawan0108")
Else
Label12.Caption = "Nama Pegawai Belum Ada"
End If
End Sub
Private Sub nonik()
Konek
strSQL = "select nik0108 From pegawai order by nik0108 asc"
Set rs = conn.Execute(strSQL)
Combo1.Clear
Do While Not rs.EOF
Combo1.Refresh
Combo1.Text = "Pilih Kode"
Combo1.AddItem Trim(rs("nik0108"))
rs.MoveNext
Loop
End Sub
37. Private Sub Command3_Click()
Unload Me
End
End Sub
Private Sub Command4_Click()
Label2.Caption = ""
Combo1.Text = "Pilih NIK"
End Sub
Private Sub Command5_Click()
cetak
End Sub
Private Sub cetak()
CrystalReport1.ReportFileName = "D:semester4pak budipayrollREKAPITULASI
LEMBUR PEGAWAI.rpt"
CrystalReport1.WindowState = crptMaximized
CrystalReport1.RetrieveDataFiles
CrystalReport1.ReplaceSelectionFormula "{kehadiran.nik0108}='" & Combo1.Text & "'"
CrystalReport1.Action = 0
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then
End
Else
End If
End Sub
Private Sub Form_Load()
Adodc1.Visible = False
Label2.Caption = ""
Text2.Text = ""
Label5.Enabled = True
'DTPicker1.Enabled = False
Text2.Enabled = False
Label5 = Date
'DTPicker1 = Format(Now, ddyymm)
nik
End Sub
Private Sub Timer1_Timer()
Text2.Text = "" & Time & ""
End Sub
Private Sub nik()
38. Konek
strSQL = "select nik0108 From pegawai"
Set rs = conn.Execute(strSQL)
Combo1.Clear
Do While Not rs.EOF
Combo1.Refresh
Combo1.Text = "Pilih NIK"
Combo1.AddItem Trim(rs("nik0108"))
rs.MoveNext
Loop
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Do Until Me.Top <= -50000
DoEvents
Me.Move Me.Left, Me.Top - 5
DoEvents
Loop
Unload Me
End Sub
Private Sub Absenku()
'simapn Data
Konek
Set rs = New ADODB.Recordset
rs.Open "select * from kehadiran where kehadiran.nik0108='" & Trim(Combo1) & "'",
conn, adOpenStatic, adLockOptimistic
rs.AddNew
rs!nik0108 = Trim(Combo1.Text)
rs!tgl_kerja0108 = Format(Now, "yyyy/mm/dd")
rs!jam_masuk0108 = Trim(Text2.Text)
rs!jam_keluar0108 = Trim(Text2.Text)
rs!kelompok_hari0108 = "STAF"
rs!periode0108 = Month(Label5.Caption)
rs.Update
rs.Close
End Sub
Private Sub Timer2_Timer()
Label5.Caption = Format(Date, "dd mmmm yyyy")
End Sub
39. 7.Form Slip Gaji
Laporan Slip Gaji
Simtak Pada Vb Pada form Slip Gaji sama dengan Simtak Pada Kehadiran, hanya saja
yang membedakannya itu adalah tombol masuk dan pulangnya diamana di sini tidak
menggunakan simtak tersebut
9. LaporanRekapitulasiGajiPegawai
40. BAB III
PENUTUP
Kesimpulan
Payroll dapat menghemat waktu dan uang perusahaan. Hal ini memungkinkan
bisnis untuk tidak membuang-buang jam kerja penanganan fungsi yang tidak mendatangkan
penghasilan apapun. Biaya proses penggajian sangat berkurang dengan menggunakan
perusahaan jasa penggajian. Biasanya biaya lebih untuk membayar karyawan untuk
menangani penggajian daripada biaya untuk melakukan outsourcing untuk perusahaan
profesional.
Penghematan biaya lain dari outsourcing adalah menghindari denda dan biaya dari
IRS dan negara jika pengajuan pajak atau pembayaran dikirimkan terlambat atau salah.
Dalam hal kesalahan tidak terjadi sebagian besar perusahaan layanan penggajian akan
membayar denda dan bunga yang masih harus dibayar.
Perusahaan Payroll tetap up to date pada tabel pajak terbaru dan undang-undang
pajak. Undang-undang perpajakan yang terus berubah dan perusahaan gaji tetap di atas
perubahan baru untuk menjaga bisnis keluar dari kesulitan. Perusahaan penggajian
menawarkan layanan seperti deposit langsung dan bayar karena Anda pergi asuransi
kompensasi pekerja bahwa beberapa pengusaha tidak bisa sendiri. Beberapa perusahaan
layanan penggajian juga dapat membantu dengan set up dan administrasi manfaat karyawan.