4.1. Perancangan Program
Pada sistem penggajian buruh produksi ini memiliki beberapa spesifikasi yang harus diketahui dan diterapkan dalam sistem. Spesifikasi yang perlu diketahui untuk syarat yang harus dipenuhi sistem yang bersangkutan dengan keadaan buruh antara lain :
? Jam kerja buruh dalam satu hari adalah 8 jam
? Gaji buruh produksi dihitung secara harian dan gaji buruh produksi diberikan setiap minggu.
? Lama jam kerja diperoleh dari penghitungan jam pulang dikurangi jam masuk, dan apabila jam kerja lebih dari 8 jam maka sisa jam kerja dianggap sebagai jam lembur.
? Uang lembur diperoleh dari perhitungan jam lembur yang dikalikan dengan uang lembur per jam. Perhitungan dilakukan setiap minggu.
? Setiap 3 kali keterlambatan kehadiran buruh akan diberikan tanda dalam program bahwa buruh perlu diberikan surat teguran.
? Tanda peringatan juga akan diberikan sistem setiap 3 kali surat teguran diberikan pada buruh produksi tertentu sehingga surat peringatan dapat diberikan terhadap buruh yang bersangkutan. Surat peringatan diberikan dengan sanksi skorsing terhadap buruh yang bersangkutan.
? Setiap ketidakhadiran buruh produksi dengan alasan sakit disertai surat dokter tetap mendapatkan gaji pokok dan uang makan untuk hari yang bersangkutan.
? Setiap ketidakhadiran buruh untuk ijin tidak mendapatkan gaji dan tunjangan hari yang bersangkutan.
? Setiap ketidakhadiran buruh tanpa keterangan tidak akan mendapatkan gaji
total pada hari yang bersangkutan dan mendapatkan surat peringatan.
Spesifikasi dalam sistem yang menyangkut kepentingan perusahaan antara lain :
? Dalam sistem penggajian buruh produksi ini memiliki 2 level sekuriti, yaitu level A dan level B
? Level A berhak untuk mengakses bagian sistem yang penting, seperti proses edit dan hapus data dan gaji buruh produksi, melihat daftar username yang ada beserta password dan level sekuriti, berhak mengakses logfile untuk menelusuri setiap proses perubahan data yang terjadi.
? Level B diberikan untuk menginput data dan absensi buruh produksi dan berhak untuk mengubah username dan password miliknya sendiri.
Penerapan dalam sistem program dapat dilihat dari susunan form sesuai dengan cara kerja sistem yang dapat dapat dijelaskan sebagai berikut :
?
SIGaji.vbp
File ini merupakan proyek utama dari program sistem penggajian. File ini memiliki peranan penting untuk menjalankan program-program lainnya.
Cara kerja dari sistem pertama kali akan menampilkan form dari splash sebagai pembuka yang kemudian akan dilanjutkan dengan form login untuk mengisi nama user untuk akses masuk.
?
Frmsplash.frm
Digunakan untuk menampilkan form pembuka yang berisi keterangan dari sistem program.
?
Frmlogin.frm
Digunakan untuk menginputkan data dari user untuk alasan keamanan.
Setelah login user disetujui maka user dapat melihat isi dari menu utama sesuai dengan akses masuk yang dimilikinya, dimana akses masuk level A dapat melihat menu utama dengan lengkap sedangkan user level B tidak dapat melihat menu gaji, input user dan browse user.
?
Frmmenu.frm
Berisi tampilan menu utama dari sistem. Menu utama ini berisi 3 sub menu
utama, yaitu : menu buruh, gaji, dan laporan. Dalam sub menu utama tersebut
ada menu lainnya yang bersangkutan dengan sub menu tersebut.
Sub menu buruh memiliki menu seperti input data buruh, absensi harian, absensi mingguan, input data surat teguran, dan input surat peringatan.
Sedangkan sub menu gaji memiliki menu untuk input gaji, menghitung gaji mingguan, dan kenaikan gaji.
?
Frmabout.frm
Menampilkan keterangan sistem info dari hardware sistem.
?
Frminputuser.frm
Merupakan salah satu menu dalam menu utama yang hanya dapat diakses oleh user level A dan digunakan untuk menginputkan user baru.
‘cek kolom password dan foto user baru
If txtName.Text <> "" Then
If txtPass1.Text = txtPass2.Text Then 'tambahkan satu record kosong If txtPass1.Text = "" Then
MsgBox "Inputkan Password terlebih dulu !!!", vbExclamation + vbOKOnly,
"Perhatian"
txtPass1.SetFocus Exit Sub
End If
If NameGbr = "" Then
MsgBox "Inputkan Foto User terlebih dulu !!!", vbExclamation + vbOKOnly,
"Perhatian"
Exit Sub End If
‘simpan user baru
rs.AddNew
'isi record kosong dgn isi form
rs.Fields("username").Value = txtUserName.Text rs.Fields("name").Value = txtName.Text
rs.Fields("pass").Value = txtPass1.Text rs.Fields("allow").Value = status 'update record
With rs
.ActiveConnection = "provider=sqloledb; " & _ "User ID=sa;Password=alvin; " & _
"Initial Catalog=gaji; " & _ "Data source=alvin\alv;"
SavePicture gbrUser, "D:\jan20\Inge2\pic\" & Trim(txtUserName.Text) & ".jpg"
.UpdateBatch End With
MsgBox "Input Data User baru BERHASIL!!!", vbOKOnly + vbInformation, "Info"
BlankForm TidakSiapIsi WarnaTidakNormal txtUserName.Text = ""
txtUserName.SetFocus
Else
MsgBox "Inputkan Password yg sama !!!", vbExclamation + vbOKOnly, "Perhatian"
End If Else
MsgBox "Inputkan Nama User !!!", vbExclamation + vbOKOnly, "Perhatian"
Exit Sub End If
?
Frmchange.frm
Merupakan menu dalam menu utama dan dapat diakses oleh level A dan level B dan hanya dapat digunakan untuk mengganti password bagi user yang aktif saja untuk mengganti passwordnya sendiri.
‘ganti password
If txtPassLama.Text = pass Then
If txtPassBaru1.Text = txtPassBaru2.Text Then If txtPassBaru1.Text = "" Then
MsgBox "Inputkan Password Baru !!!", vbExclamation + vbOKOnly, "Perhatian"
Exit Sub End If
'rs.State = adStateOpen
rs.Fields("pass").Value = txtPassBaru1.Text With rs
.ActiveConnection = "provider=sqloledb; " & _ "User ID=sa;Password=alvin; " & _
"Initial Catalog=gaji; " & _ "Data source=alvin\alv;"
.UpdateBatch End With rs.Close Beep
MsgBox "Password telah diganti", vbOKOnly, "Password"
BlankForm Else
MsgBox "Inputkan Password baru yg sama !!!", vbExclamation + vbOKOnly,
"Perhatian"
txtPassBaru2.SetFocus End If
Else
MsgBox "Inputkan Password lama dgn BENAR !!!", vbExclamation + vbOKOnly,
"Perhatian"
txtPassLama.SetFocus End If
?
Frmbrowseuser.frm
Merupakan menu dalam menu utama yang hanya dapat diakses oleh user level A dan digunakan untuk melihat daftar user yang ada.
?
Frmburuh.frm
Salah satu sub menu dari menu utama dan digunakan untuk masuk kedalam
menu buruh yang berisi menu untuk input data buruh, absensi harian, absensi
mingguan, input surat teguran, dan input surat peringatan.
?
Frminburuh.frm
Merupakan salah satu menu pilihan dalam sub menu buruh dan digunakan untuk menginput data buruh baru.
‘simpan data buruh baru
If txtJab.Text <> "BR" And txtJab.Text <> "KB" Then
MsgBox "Inputkan Kode Jabatan<BR/KB> !!", vbExclamation + vbOKOnly,
"Perhatian"
Exit Sub End If
If txtNama.Text <> "" And _ txtAlamat.Text <> "" And _ txtKota.Text <> "" And _ txtDept.Text <> "" And _ txtJab.Text <> "" Then
'tambahkan satu record kosong
If NamaGbr = "" Then
MsgBox "Inputkan Foto User terlebih dulu !!!", vbExclamation + vbOKOnly,
"Perhatian"
Exit Sub End If rs.AddNew
'isi record kosong dgn isi form
rs.Fields("id").Value = txtID.Text rs.Fields("nama").Value = txtNama.Text rs.Fields("alamat").Value = txtAlamat.Text rs.Fields("kota").Value = txtKota.Text rs.Fields("telp").Value = txtTelp.Text
rs.Fields("tgl_lahir").Value = LahirDate.Value rs.Fields("status").Value = status
rs.Fields("J_Kelamin").Value = status2
rs.Fields("tgl_masuk").Value = MasukDate.Value rs.Fields("departemen").Value = txtDept.Text rs.Fields("st").Value = txtST.Text
rs.Fields("sp").Value = txtSP.Text 'update record
With rs
.ActiveConnection = "provider=sqloledb; " & _ "User ID=sa;Password=alvin; " & _
"Initial Catalog=gaji; " & _ "Data source=alvin\alv;"
SavePicture gbrUser, "D:\jan20\Inge2\pic\buruh\" & Trim(txtID.Text) & ".jpg"
.UpdateBatch End With
MsgBox "Input Data Buruh baru BERHASIL!!!", vbOKOnly + vbInformation, "Info"
rs1.AddNew
'isi ID buruh pd tabel gaji
rs1.Fields("id").Value = txtID.Text With rs1
.ActiveConnection = "provider=sqloledb; " & _ "User ID=sa;Password=alvin; " & _
"Initial Catalog=gaji; " & _ "Data source=alvin\alv;"
.UpdateBatch End With BlankForm TidakSiapIsi WarnaTidakNormal txtID.Text = ""
txtID.SetFocus Else
MsgBox "Inputkan DATA secara lengkap !!!", vbExclamation + vbOKOnly, "Perhatian"
End If
‘cek ID buruh
Dim IDx As String
If txtID.Text = "" Or Len(txtID.Text) <> 7 Then Exit Sub 'idx=select ID from Buruh where
BlankForm rs.MoveFirst
rs.Find "ID='" & txtID.Text & "'"
If rs.EOF Then rs.MoveLast txtJab.Text = "BR"
cmdSimpan.Enabled = True txtNama.Enabled = True txtAlamat.Enabled = True txtKota.Enabled = True txtTelp.Enabled = True txtDept.Enabled = True txtJab.Enabled = True MasukDate.Enabled = True LahirDate.Enabled = True txtID.SetFocus
WarnaNormal
Frame1.Enabled = True Frame2.Enabled = True Else
'jika ditemukan, tampilkan data WarnaTidakNormal
txtNama.Text = rs.Fields("Nama").Value txtAlamat.Text = rs.Fields("alamat").Value txtKota.Text = rs.Fields("kota").Value txtTelp.Text = rs.Fields("telp").Value 'txtNama.Text = rs.Fields("Nama").Value 'txtAlamat.Text = rs.Fields("alamat").Value LahirDate.Value = rs.Fields("Tgl_Lahir").Value Select Case rs.Fields("Status").Value
Case "K"
K.Value = True Case "T"
T.Value = True End Select
Select Case rs.Fields("J_Kelamin").Value Case "L"
L.Value = True Case "P"
P.Value = True End Select
MasukDate.Value = rs.Fields("Tgl_Masuk").Value txtDept.Text = rs.Fields("Departemen").Value txtJab.Text = rs.Fields("Jabatan").Value txtST.Text = rs.Fields("ST").Value txtSP.Text = rs.Fields("SP").Value TidakSiapIsi
NamaGbr = "d:\Inge2\pic\buruh\" & Trim(txtID.Text) & ".jpg"
On Error GoTo NoGbr
gbrUser.Picture = LoadPicture(NamaGbr) On Error GoTo 0
Exit Sub End If NoGbr:
gbrUser.Picture = LoadPicture("")
?
Frmabshari.frm
Merupakan salah satu menu dalam sub menu buruh dan digunakan untuk mengisi absensi harian buruh dengan menginputkan jam masuk dan jam pulang dan proses dilakukan oleh operator level B.
Dim masuk, pulang, total As Integer
Dim Jmasuk, Mmasuk, Jpulang, Mpulang, lembur As Byte Jmasuk = J1.Text 'jam mask
Mmasuk = M1.Text 'menit masuk Jpulang = J2.Text 'jam pulang Mpulang = M2.Text 'menit pulang If status <> "H" Then
J1.Text = "00"
M1.Text = "00"
J2.Text = "00"
M2.Text = "00"
' cek status
' if ALPHA lnsg + ST di tabel buruh Select Case status
Case "A"
Adodc2.Recordset.Fields("ST").Value = _ Adodc2.Recordset.Fields("ST").Value + 1
If (Adodc2.Recordset.Fields("ST").Value \ 3) > 0 Then MsgBox "ST Lebih dari 2", vbCritical, "PERHATIAN!!"
Adodc2.Recordset.Fields("SP").Value = _ Adodc2.Recordset.Fields("SP").Value + 1 Adodc2.Recordset.Fields("ST").Value = 0 End If
txtLembur.Text = 0 Adodc2.Recordset.Update Case "S"
txtLembur.Text = 0 Case "I"
txtLembur.Text = 0 End Select
simpan1 Exit Sub End If
‘cek buruh telat
If Jmasuk = 7 And Mmasuk > 0 Then 'periksa status Telat txtTelat.Text = "Y"
Else
If Jmasuk > 7 Then txtTelat.Text = "Y"
Else
txtTelat.Text = "T"
End If End If
masuk = (Jmasuk * 60) + Mmasuk 'waktu masuk dlm satuan menit pulang = (Jpulang * 60) + Mpulang 'waktu pulang
total = pulang - masuk 'total waktu kerja dlm sat menit If (total \ 60) > 8 Then
lembur = (total \ 60) - 8 'hitung jum lembur txtLembur.Text = lembur
End If simpan1 End Sub
Private Sub simpan1() Dim jam1, jam2 As String
DataEnvironment1.rshari.AddNew
DataEnvironment1.rshari.Fields("ID") = dcID.Text DataEnvironment1.rshari.Fields(1) = DT.Value If Len(J1.Text) < 2 Then
jam1 = "0" + J1.Text Else
jam1 = J1.Text End If
If Len(M1.Text) < 2 Then jam1 = jam1 + ":0" + M1.Text Else
jam1 = jam1 + ":" + M1.Text End If
If Len(J2.Text) < 2 Then jam2 = "0" + J2.Text Else
jam2 = J2.Text End If
If Len(M2.Text) < 2 Then jam2 = jam2 + ":0" + M2.Text Else
jam2 = jam2 + ":" + M2.Text End If
DataEnvironment1.rshari.Fields(2) = jam1 DataEnvironment1.rshari.Fields(3) = jam2 DataEnvironment1.rshari.Fields(4) = status DataEnvironment1.rshari.Fields(5) = txtTelat.Text DataEnvironment1.rshari.Fields(6) = txtLembur.Text DataEnvironment1.rshari.Update
MsgBox "Data Tersimpan", vbOKOnly, "Info"
'Blank form Blank
?
Frmabsminggu.frm
Merupakan salah satu menu pilihan dalam sub menu buruh dan digunakan untuk proses penghitungan jumlah hari kerja dan hari lembur beserta jumlah hari ijin dan sakit dalam satu minggu. Proses dilakukan oleh operator level B.
If rs.State = adStateOpen Then rs.Close
End If
rs.CursorLocation = CLocation rs.CursorType = CType
rs.Open "SELECT * FROM hadirhari WHERE id='" & dcID.Text & "' and status <> 'A' and tgl >= '" & dtAwal.Text & "'and tgl <= '" & Str(dtAkhir.Value) & "'", cn, CType
'menghitung jumlah hari kerja
txtHari.Text = rs.RecordCount If rs1.State = adStateOpen Then rs1.Close
End If
rs1.CursorLocation = CLocation rs1.CursorType = CType
'menghitung jumlah hari Sakit
rs1.Open "SELECT * FROM hadirhari WHERE id='" & dcID.Text & "' and status = 'S' and tgl >= '" & dtAwal.Text & "'and tgl <= '" & Str(dtAkhir.Value) & "'", cn, CType
txtSakit.Text = rs1.RecordCount If RS2.State = adStateOpen Then RS2.Close
End If
RS2.CursorLocation = CLocation RS2.CursorType = CType
'menghitung jumlah hari ijin
RS2.Open "SELECT * FROM hadirhari WHERE id='" & dcID.Text & "' and status = 'I' and tgl >= '" & dtAwal.Text & "'and tgl <= '" & Str(dtAkhir.Value) & "'", cn, CType
txtIjin.Text = RS2.RecordCount If rs3.State = adStateOpen Then rs3.Close
End If
rs3.CursorLocation = CLocation rs3.CursorType = CType
'menghitung jumlah Lembur
rs3.Open "select sum(LM) from hadirhari where id='" & dcID.Text & "' and status = 'H' and tgl >= '" & dtAwal.Text & "'and tgl <= '" & Str(dtAkhir.Value) & "'", cn, CType
txtLM.Text = rs3.Fields(0).Value
'Adodc4.RecordSource = "select ID from hadirhari where ID='" & dcID.Text & "' and "
cmdSimpan.Enabled = True
‘simpan data absensi mingguan
If DataEnvironment1.rsMinggu.State = adStateOpen Then DataEnvironment1.rsMinggu.Close
End If
DataEnvironment1.rsMinggu.Open DataEnvironment1.rsMinggu.AddNew
'DataEnvironment1.rsMinggu.AddNew
DataEnvironment1.rsMinggu.Fields("ID") = dcID.Text DataEnvironment1.rsMinggu.Fields(1) = dtAwal.Text DataEnvironment1.rsMinggu.Fields(2) = dtAkhir.Value DataEnvironment1.rsMinggu.Fields(3) = txtHari.Text DataEnvironment1.rsMinggu.Fields(4) = txtLM.Text DataEnvironment1.rsMinggu.Fields(5) = txtSakit.Text DataEnvironment1.rsMinggu.Fields(6) = txtIjin.Text DataEnvironment1.rsMinggu.Update
MsgBox "Data telah disimpan!!!", vbInformation + vbOKOnly, "Info"
BlankForm
?
FrminST.frm
Merupakan salah satu menu pilihan dalam sub menu buruh dan digunakan untuk mengisi surat teguran dimana proses dilakukan oleh operator level B.
?
FrminSP.frm
Merupakan salah satu menu pilihan dalam sub menu buruh dan digunakan untuk mengisi surat peringatan dimana proses dilakukan oleh operator level B.
?
Frmgaji.frm
Merupakan salah satu sub menu utama dimana didalamnya memiliki beberapa menu pilihan yang berkaitan dengan gaji buruh dan digunakan untuk memanggil beberapa menu pilihan dari gaji antara lain, input gaji, menghitung gaji mingguan, dan kenaikan gaji. Sub menu ini hanya dapat diakses oleh operator level A saja.
?
Frmingaji.frm
Merupakan salah satu menu pilihan dalam sub menu gaji dan digunakan untuk menginputkan dan mengedit data gaji.
If rs1.State = adStateOpen Then rs1.Close
End If
rs1.CursorLocation = CLocation rs1.CursorType = CType
rs1.Open "select count(id) from gaji where id='" & dcID & "'", cn, adOpenDynamic, adLockOptimistic
add = rs1.Fields(0).Value rs1.Close
rs1.Open "SELECT * from gaji where id='" & dcID & "'", cn, adOpenDynamic, adLockOptimistic
If add = 0 Then rs1.AddNew 'rs.MoveLast
rs1.Fields("id").Value = dcID.Text End If
'isi record kosong dgn isi form
rs1.Fields("gp").Value = txtGP.Text
rs1.Fields("um").Value = txtUM.Text rs1.Fields("tk").Value = txtTK.Text rs1.Fields("tr").Value = txtTR.Text rs1.Fields("kh").Value = txtKH.Text rs1.Fields("lm").Value = txtLM.Text rs1.Update
'update record 'With rs
' .ActiveConnection = "provider=sqloledb; " & _ ' "User ID=sa;Password=alvin; " & _
' "Initial Catalog=gaji; " & _ ' "Data source=alvin\alv;"
' .UpdateBatch 'End With
MsgBox "Input Data Gaji Buruh BERHASIL!!!", vbOKOnly + vbInformation, "Info"
BlankForm TidakSiapIsi WarnaTidakNormal add = 0
dcID.Enabled = True
‘edit data gaji
WarnaNormal SiapIsi
dcID.Enabled = False
If txtGP.Text = "" And txtUM.Text = "" Then add = 1
txtGP.DataField = ""
txtUM.DataField = ""
txtTK.DataField = ""
txtTR.DataField = ""
txtKH.DataField = ""
txtLM.DataField = ""
'Adodc3.Refresh Else
add = 0 End If
?
Frmhitung.frm
Merupakan salah satu menu pilihan dalam sub menu gaji dan digunakan untuk menghitung total gaji mingguan buruh berdasarkan periode absensi buruh.
Dim ID As String
Dim GP, UM, TK, TR, KH, LM, total As Long Dim hari, jumlm, sakit, ijin, n, i As Integer If rs.State = adStateOpen Then
rs.Close End If
rs.CursorLocation = CLocation rs.CursorType = CType
rs.Open "SELECT * FROM hadirminggu WHERE tgl1 = '" & dtAwal.Text & "'and tgl2 = '" & Str(dtAkhir.Value) & "'", cn, CType
n = rs.RecordCount i = 1
rs.MoveFirst
Do
'ambil data mingguan ID = rs.Fields("ID").Value hari = rs.Fields("jumhari").Value jumlm = rs.Fields("jumLM").Value sakit = rs.Fields("jumsakit").Value ijin = rs.Fields("jumijin").Value
'mengurangi jumlah hari bila ada ijin
hari = hari - ijin
If hari < 0 Then hari = 0 If rs1.State = adStateOpen Then rs1.Close
End If
rs1.CursorLocation = CLocation rs1.CursorType = CType
rs1.Open "SELECT * FROM gaji WHERE gaji.id='" & ID & "'", cn, CType
'ambil data gajinya
GP = rs1.Fields("gp").Value UM = rs1.Fields("um").Value TK = rs1.Fields("tk").Value TR = rs1.Fields("tr").Value KH = rs1.Fields("kh").Value LM = rs1.Fields("lm").Value
'hitung gaji
LM = LM * jumlm GP = GP * (hari + 1) UM = UM * (hari + 1) TK = TK * (hari - sakit) TR = TR * (hari - sakit) KH = KH * (hari - sakit)
'menyimpan data
If DataEnvironment1.rshit.State = adStateOpen Then DataEnvironment1.rshit.Close
End If
DataEnvironment1.rshit.Open DataEnvironment1.rshit.AddNew
DataEnvironment1.rshit.Fields("ID") = ID
DataEnvironment1.rshit.Fields("tgl1") = dtAwal.Text DataEnvironment1.rshit.Fields("tgl2") = dtAkhir.Value DataEnvironment1.rshit.Fields("GP") = GP
DataEnvironment1.rshit.Fields("UM") = UM DataEnvironment1.rshit.Fields("TK") = TK DataEnvironment1.rshit.Fields("TR") = TR DataEnvironment1.rshit.Fields("KH") = KH DataEnvironment1.rshit.Fields("LM") = LM total = GP + UM + TK + TR + LM + KH DataEnvironment1.rshit.Fields("Total") = total DataEnvironment1.rshit.Update
rs.MoveNext
Loop Until i = n Or rs.EOF
Adodc2.Refresh
?
Frmnaikgaji.frm
Merupakan salah satu menu pilihan dalam sub menu gaji dan digunakan untuk menampilkan dan mengedit data kenaikan gaji buruh.
?
Lapburuh.frm
Merupakan sub menu utama selain sub menu buruh dan gaji dalam menu utama yang digunakan untuk menampilkan laporan buruh, laporan gaji buruh, dan laporan surat teguran dan surat peringatan.
?
Lapburuh.frm
Merupakan salah satu menu pilihan dalam sub menu laporan dan digunakan untuk menampilkan laporan data buruh.
?