Aplikasi penggajian VB 6.0

 

Program ini digunakan di setiap perusahaan dengan pola yang berbeda-beda. Asumsi yang digunakan dalam program ini adalah pada sebuah perusahaan. Dengan memahami polanya, anda dapat membuat program penggajian sesuai dengan situasi dan kondisi sistem yang dijadikan objek observasi.

Proses awal program penggajian ini dimulai dengan mengolah data pegawai, dalam hal ini kami hanya membuat field di tabel pegawai yang ada kaitannya dengan pembayaran gaji, kami tidak menyertakan field agama, jenis kelamin dan sejenisnya yang tidak ada kaitannya dengan perhitungan gaji, olehkarena itu pembaca dipersilakan untuk menambahkan field lain yang dirasa perlu. Kemudian dilanjutkan dengan mengolah data golongan. Setiap golongan memiliki standar pembayaran tersendiri untuk menentukan berapa tunjangan keluarganya, tunjangan anak, uang makan, uang lembur dan jaminan kesehatannya. Setelah itu dilanjutkan dengan mengolah data jabatan, dimana setiap jabatan memiliki standar pembayaran tersendiri yang berupa gaji pokok dan tunjangan jabatannya. Proses berikutnya adalah mengentri data kehadiran pegawai, data kehadiran inilah yang menjadi sumber data dalam proses perhitungan gaji. Dalam hal ini kami sajika dua model pengolahan data kehadiran.

Pola pertama adalah dengan mengentri kehadiran dalam bentuk akumilasi dalam satu bulan. Asumsinya data ini diambil dari absen harian (amano) dimana jumlah kehadiran dalam satu bulan tersebut dientri dalam form berupa berapa hari seorang karyawan masuk kerja dalam sebulan, berapa hari sakit, izin dan alpa. Selain itu dalam form yang sama dientri pula jumlah jam lembur dalam satu bulan. Dan pada kolom terakhir dientri pula berapa jumlah potongannya dalam sebulan.

Pola kedua adalah dengan mengentri kahadiran karyawan per hari, jam berapa seorang karyawan masuk kerja dan jam berapa dia pulang. Setelah itu secara otomatis lama jam kerja akan tampil dan berapa jam lama kerja lemburnya di hari tersebut. Tapi model ini dirasakan kurang efektif karena proses entri data memakan waktu yang cukup lama.

1.1 Merancang Database Dan Bentuk Relasi Tabel

Langkah awal yang harus dilakukan dalam pembuatan program penggajian ini adalah :

1.              Membuat database dengan nama DBGAJI.mbd

2.              Membuat tabel pegawai, yang terdiri dari field :

   NIP

   Nama

   Kode jabatan

   Golongan

   Status

   Jumlah anak

 

Catatan :

 

Pembaca dipersilakan untuk menambahkan field yang dianggap perlu, seperti field jenis kelamin, agama, pendidikan, alamat, telepon dan sebagainya. Disini kami hanya membuatkan field yang ada kaitannya dengan kalkulasi keuangannya saja.

 

3.              Membuat tabel jabatan, yang terdiri dari field :

   Kode jabatan

   Nama jabatan

   Gaji pokok

   Tunjangan jabatan

Isi tabel jabatan adalah sebagai berikut :

JABATAN

KOJAB

NMJABATAN

GAPOK

TJJABATAN

ADM

ADMINISTRASI

1000000

300000

ANL

ANALIS

4000000

800000

BDN

BENDAHARA

1000000

300000

CLR

CLEANING SERVICE

600000

100000

DKM

DOKUMENTASI

800000

300000

DRK

DIREKTUR

8000000

2000000

DSR

DESIGNER

2500000

700000

KSM

KONSUMSI

600000

150000

MNG

MANAGER

7000000

1200000

PRL

PERALATAN

600000

100000

PRS

PERSONALIA

4000000

900000

RSP

RESEPSIONIS

750000

250000

SKR

SEKRETARIS

1000000

300000

SPR

SENIOR PROGRAMER

3000000

600000

YPR

YUNIOR PROGRAMER

1200000

400000

 

4.              Membuat tabel golongan, yang terdiri dari field :

   Golongan

   Tunjangan suami / istri

   Tunjangan anak

   Uang makan

   Uang lembur

   Askes

Isi tabel golongan adalah sebagai berikut :

 

GOLONGAN

GOL

TJSUAMIISTRI

TJANAK

UMAKAN

LEMBUR

ASKES

1

50000

40000

4000

2000

35000

2

100000

80000

5000

3000

50000

3

150000

120000

5000

4000

75000

4

200000

160000

6000

5000

100000

5

250000

200000

6000

6000

125000

6

300000

240000

7000

7000

150000

 

5.              Membuat tabel master absen, yang terdiri dari field :

   Bulan

   Nip

   Masuk

   Sakit

   Izin

   Alpa

   Lembur

   Potongan

 

Catatan :

 

Pembaca dapat membuat manuver sendiri pada field lembur dengan membuat tabel tersendiri dimana datanya dientri dari jam keluar dikurangi jam masuk, maka akan dihasilkan lama kerja. Jika lama kerja lebih dari 8 jam maka lama lemburnya adalah mlama kerja dikurangi 8 jam. Dalam buku ini jumlah jam lembur diasumsikan telah diakumulasikan dalam satu bulan.

Selain itu pada field potongan, pembaca juga dapat berinovasi dengan membuat tabel potongan tersendiri dengan rincian sesuai kebutuhan sistem. Misalnya potongan pinjaman koperasi, hutang dan sebagainya. Dalam buku ini jumlah potongan diasumsikan telah diakumulasikan.

6.              Membuat tabel gaji. Tabel inilah yang menjadi tabel master transaksi sebagai keseluruhan hasil transaksi atau kalkulasi penggajian berdasarkan jabatan, golongan, dan absensi karyawan.

7.              Membuat tabel temporer. Tabel ini hanyalah tabel sementara tempat transaksi absen, lembur dan potongan.

 

Demikianlah ilustrasi awal rancangan database untuk program penggajian ini. Langkah selanjutnya adalah membuat project di VB.

Bentuk relasi tabel dalam program penggajian ini terlihat pada gambar di bawah ini :

1.2 Membuat Modul

 

Hal ini dibuat agar melakukan koneksi ke database cukup dengan memanggil nama prosedurnya saja. Lakukanlah langkah di bawah ini :

                Buka VB

                Klik menu project

                Pilih add module

                Klik open

                Kemudian ketiklah koding di bawah ini :

Public Conn As New ADODB.Connection

Public RSGAJI As ADODB.Recordset

Public RSGOL As ADODB.Recordset

Public RSJabatan As ADODB.Recordset

Public RSPegawai As ADODB.Recordset

Public RSMASTER As ADODB.Recordset

Public RSTEMPORER As ADODB.Recordset

Public RSABSEN As ADODB.Recordset

 

Public Sub BukaDB()

Set Conn = New ADODB.Connection

Set RSGAJI = New ADODB.Recordset

Set RSGOL = New ADODB.Recordset

Set RSJabatan = New ADODB.Recordset

Set RSPegawai = New ADODB.Recordset

Set RSMASTER = New ADODB.Recordset

Set RSTEMPORER = New ADODB.Recordset

Set RSABSEN = New ADODB.Recordset

Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBGaji.mdb"

End Sub

 

 

1.3 Data Pegawai

Setelah membuat module, buatlah form untuk mengolah tabel master pegawai dengan bentuk seperti gambar di bawah ini.

1.4 Data Jabatan

Kemudian buatlah form untuk mengolah tabel master jabatan dengan bentuk seperti gambar di bawah ini :

1.5 Data Golongan

Kemudian buatlah form untuk mengolah tabel golongan dengan bentuk seperti gambar di bawah ini:

1.6 Entri Data Kehadiran Karyawan

Setelah itu buatlah form untuk mengolah tabel master absen dengan bentuk seperti gambar di bawah ini :

 

Contoh form entri absen seperti ini diasumsikan datanya diambil dari absen amano yang telah diakumulasikan per karyawan pada bulantertentu, termasuk data lembur dan potongannya.

 

Koding :

 

Private Sub Combo1_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then Unload Me

End Sub

 

Private Sub Form_Activate()

Call BukaDB

Adodc1.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBGaji.mdb"

Adodc1.RecordSource = "select * from TEMPORER ORDER BY NIP"

Adodc1.Refresh

Set DataGrid1.DataSource = Adodc1

DataGrid1.Refresh

End Sub

 

Private Sub Form_Load()

Call BukaDB

Form_Activate

 

DTPicker1.Value = Date

 

RSTEMPORER.Open "TEMPORER", Conn

If RSTEMPORER.EOF Then

Dim RS As New ADODB.Recordset

RS.Open "SELECT PEGAWAI.NIP,PEGAWAI.NAMA,JABATAN.NMJABATAN FROM PEGAWAI,JABATAN WHERE PEGAWAI.KOJAB=JABATAN.KOJAB ORDER BY NIP ", Conn

RS.MoveFirst

Dim NO As Byte

NO = 0

Do While Not RS.EOF

NO = NO + 1

Adodc1.Recordset.AddNew

Adodc1.Recordset!NO = NO

Adodc1.Recordset!NIP = RS!NIP

Adodc1.Recordset!NAMA = RS!NAMA

Adodc1.Recordset!JABATAN = RS!NMJABATAN

Adodc1.Recordset!MASUK = 0

Adodc1.Recordset!SAKIT = 0

Adodc1.Recordset!IZIN = 0

Adodc1.Recordset!ALPA = 0

Adodc1.Recordset!LEMBUR = 0

Adodc1.Recordset!POTONGAN = 0

Adodc1.Recordset.UPDATE

RS.MoveNext

Loop

Adodc1.Refresh

DataGrid1.Refresh

'Form_Activate

Call TAMPILKAN

Else

RSTEMPORER.MoveFirst

Do While Not RSTEMPORER.EOF

Dim NOLKAN As String

NOLKAN = "UPDATE TEMPORER SET MASUK=0,SAKIT=0,IZIN=0,ALPA=0,LEMBUR=0,POTONGAN=0"

Conn.Execute NOLKAN

RSTEMPORER.MoveNext

Loop

Adodc1.Refresh

DataGrid1.Refresh

Call TAMPILKAN

End If

End Sub

 

Private Sub Combo1_Click()

Call BukaDB

RSMASTER.Open "SELECT * FROM MASTER WHERE MONTH(BULAN)='" & Month(COMBO1) & "' AND YEAR(BULAN)='" & Year(COMBO1) & "'", Conn

COMBO1 = RSMASTER!BULAN

If Not RSMASTER.EOF Then

RSMASTER.MoveFirst

Do While Not RSMASTER.EOF

Dim UPDATE As String

UPDATE = "UPDATE TEMPORER SET MASUK='" & RSMASTER!MASUK & "',SAKIT='" & RSMASTER!SAKIT & "',IZIN='" & RSMASTER!IZIN & "',ALPA='" & RSMASTER!ALPA & "',LEMBUR='" & RSMASTER!LEMBUR & "',POTONGAN='" & RSMASTER!POTONGAN & "' WHERE NIP='" & RSMASTER!NIP & "'" ' AND MONTH(BULAN)='" & Month(Combo1) & "' AND YEAR(BULAN)='" & Year(Combo1) & "'"

Conn.Execute UPDATE

RSMASTER.MoveNext

Loop

Call TAMPILKAN

MsgBox "DATA BULAN '" & Month(COMBO1) & "' TAHUN '" & Year(COMBO1) & "' SUDAH ADA, SILAKAN EDIT, KEMUDIAN SIMPAN..."

End If

End Sub

 

Sub TAMPILKAN()

Call BukaDB

Adodc1.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DBGaji.mdb"

Adodc1.RecordSource = "select * from TEMPORER ORDER BY NIP"

Adodc1.Refresh

Set DataGrid1.DataSource = Adodc1

DataGrid1.Refresh

 

Label3 = Adodc1.Recordset.RecordCount

DataGrid1.Col = 3

Adodc1.Refresh

DataGrid1.Refresh

End Sub

 

 

 

Private Sub Command1_Click()

Call BukaDB

RSMASTER.Open "SELECT * FROM MASTER WHERE MONTH(BULAN)='" & Month(DTPicker1) & "' AND YEAR(BULAN)='" & Year(DTPicker1) & "'", Conn

If Not RSMASTER.EOF Then

RSMASTER.MoveFirst

Do While Not RSMASTER.EOF

Dim UPDATE As String

UPDATE = "UPDATE TEMPORER SET MASUK='" & RSMASTER!MASUK & "',SAKIT='" & RSMASTER!SAKIT & "',IZIN='" & RSMASTER!IZIN & "',ALPA='" & RSMASTER!ALPA & "',LEMBUR='" & RSMASTER!LEMBUR & "',POTONGAN='" & RSMASTER!POTONGAN & "' " & _

"WHERE NIP='" & RSMASTER!NIP & "'" ' AND MONTH(BULAN)='" & Month(DTPicker1) & "' AND YEAR(BULAN)='" & Year(DTPicker1) & "' "

Conn.Execute UPDATE

RSMASTER.MoveNext

Loop

Call TAMPILKAN

MsgBox "DATA BULAN '" & Month(DTPicker1) & "' TAHUN '" & Year(DTPicker1) & "' SUDAH ADA, SILAKAN EDIT KEMUDIAN SIMPAN..."

Else

Call BukaDB

Dim RSTEMPORER As New ADODB.Recordset

RSTEMPORER.Open "TEMPORER", Conn

RSTEMPORER.MoveFirst

Do While Not RSTEMPORER.EOF

Dim Kosongkan As String

Kosongkan = "UPDATE TEMPORER SET MASUK=0,SAKIT=0,IZIN=0,ALPA=0,LEMBUR=0,POTONGAN=0 "

Conn.Execute Kosongkan

RSTEMPORER.MoveNext

Loop

Call TAMPILKAN

MsgBox "DATA BULAN '" & Month(DTPicker1) & "' TAHUN '" & Year(DTPicker1) & "' MASIH KOSONG, SILAKAN ENTRI..."

End If

End Sub

 

Private Sub Command1_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then Unload Me

End Sub

 

 

Private Sub Command2_Click()

Adodc1.Recordset.MoveFirst

Do While Not Adodc1.Recordset.EOF

Call BukaDB

RSMASTER.Open "SELECT * FROM MASTER WHERE NIP='" & Adodc1.Recordset!NIP & "' and MONTH(bulan)= '" & Month(DTPicker1) & "' AND YEAR(BULAN)='" & Year(DTPicker1) & "'", Conn

If Not RSMASTER.EOF Then

Dim UPDATE As String

UPDATE = "UPDATE MASTER SET MASUK='" & Adodc1.Recordset!MASUK & "',SAKIT='" & Adodc1.Recordset!SAKIT & "',IZIN='" & Adodc1.Recordset!IZIN & "',ALPA='" & Adodc1.Recordset!ALPA & "',LEMBUR='" & Adodc1.Recordset!LEMBUR & "',POTONGAN ='" & Adodc1.Recordset!POTONGAN & "' WHERE NIP='" & Adodc1.Recordset!NIP & "' AND MONTH(BULAN)='" & Month(DTPicker1) & "' AND YEAR(BULAN)='" & Year(DTPicker1) & "'"

Conn.Execute UPDATE

Adodc1.Recordset.MoveNext

Else

Dim SIMPAN As String

SIMPAN = "INSERT INTO MASTER (BULAN,NIP,MASUK,SAKIT,IZIN,ALPA,LEMBUR,POTONGAN) VALUES " & _

"('" & DTPicker1 & "','" & Adodc1.Recordset!NIP & "','" & Adodc1.Recordset!MASUK & "','" & Adodc1.Recordset!SAKIT & "','" & Adodc1.Recordset!IZIN & "','" & Adodc1.Recordset!ALPA & "','" & Adodc1.Recordset!LEMBUR & "','" & Adodc1.Recordset!POTONGAN & "')"

Conn.Execute SIMPAN

Adodc1.Recordset.MoveNext

End If

Loop

Form_Activate

End Sub

 

Private Sub DataGrid1_AfterColEdit(ByVal ColIndex As Integer)

On Error Resume Next

'MASUK

If DataGrid1.Col = 4 Then

Adodc1.Recordset.UPDATE

Adodc1.Recordset.MoveNext

DataGrid1.Col = 4

'SAKIT

ElseIf DataGrid1.Col = 5 Then

Adodc1.Recordset.UPDATE

Adodc1.Recordset.MoveNext

DataGrid1.Col = 5

'IZIN

ElseIf DataGrid1.Col = 6 Then

Adodc1.Recordset.UPDATE

Adodc1.Recordset.MoveNext

DataGrid1.Col = 6

'ALPA

ElseIf DataGrid1.Col = 7 Then

Adodc1.Recordset.UPDATE

Adodc1.Recordset.MoveNext

DataGrid1.Col = 7

'LEMBUR

ElseIf DataGrid1.Col = 8 Then

Adodc1.Recordset.UPDATE

Adodc1.Recordset.MoveNext

DataGrid1.Col = 8

'POTONGAN

ElseIf DataGrid1.Col = 9 Then

Adodc1.Recordset.UPDATE

Adodc1.Recordset.MoveNext

DataGrid1.Col = 9

End If

End Sub

 

1.7 Perhitungan Gaji

 

Sebagaimana yang telah dijelaskan sebelumnya, entri absen ini dapat dibuat sesuai kebutuhan sistem, anda dapat saja membuat bentuk form absen dengan bentuk yang berbeda.

Setelah itu buatlah sebuah form untuk menghitung gaji karyawan dengan bentuk seperti gambar di bawah ini:

 

Koding :

 

Private Sub Combo1_Click()

NOSLIP = Format(COMBO1, "YYMM") + "0000"

BULAN = Month(COMBO1)

TAHUN = Year(COMBO1)

End Sub

 

Private Sub Form_Load()

Call BukaDB

RSMASTER.Open "SELECT DISTINCT BULAN FROM MASTER", Conn

COMBO1.Clear

Do While Not RSMASTER.EOF

COMBO1.AddItem RSMASTER!BULAN

RSMASTER.MoveNext

Loop

End Sub

 

Private Sub Command1_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then Unload Me

End Sub

 

Private Sub Command1_Click()

If COMBO1 = "" Then

MsgBox "PILIH DULU BULAN DAN TAHUNNYA"

COMBO1.SetFocus

Exit Sub

End If

 

Call BukaDB

Dim RSHITUNG As New ADODB.Recordset

RSHITUNG.Open "SELECT PEGAWAI.NIP,NAMA,JABATAN.NMJABATAN AS JABATAN,PEGAWAI.GOL,STATUS,JMLANAK,GAPOK,JABATAN.TJJABATAN,IIF(PEGAWAI.STATUS='MENIKAH',TJSUAMIISTRI,0) AS TJKELUARGA,IIF (STATUS='MENIKAH',TJANAK*JMLANAK,0) AS TJANAK,UMAKAN*MASUK AS UANGMAKAN,MASTER.LEMBUR*GOLONGAN.LEMBUR AS UANGLEMBUR,ASKES, (GAPOK+TJJABATAN+TJKELUARGA+TJANAK+UANGMAKAN+ASKES+UANGLEMBUR) AS PENDAPATAN, POTONGAN,PENDAPATAN-POTONGAN AS TOTALGAJI FROM PEGAWAI,GOLONGAN,JABATAN,MASTER WHERE PEGAWAI.GOL=GOLONGAN.GOL AND PEGAWAI.KOJAB=JABATAN.KOJAB AND PEGAWAI.NIP=MASTER.NIP AND MONTH(BULAN)='" & Month(COMBO1) & "' AND YEAR(BULAN)='" & Year(COMBO1) & "'", Conn

If Not RSHITUNG.EOF Then

RSGAJI.Open "SELECT * FROM GAJI WHERE MONTH(BULAN)='" & BULAN & "' AND YEAR(BULAN)='" & TAHUN & "'", Conn

If RSGAJI.EOF Then

Do While Not RSHITUNG.EOF

NOSLIP = NOSLIP + 1

Dim SIMPAN As String

SIMPAN = "INSERT INTO GAJI(NOSLIP,BULAN,NIP,NAMA,JABATAN,GOL,STATUS,GAPOK,TJJABATAN,TJKELUARGA,TJANAK,UANGMAKAN,UANGLEMBUR,ASKES,PENDAPATAN,POTONGAN,TOTALGAJI) VALUES " & _

"('" & NOSLIP & "','" & COMBO1 & "','" & RSHITUNG!NIP & "','" & RSHITUNG!NAMA & "','" & RSHITUNG!JABATAN & "','" & RSHITUNG!GOL & "','" & RSHITUNG!Status & "','" & RSHITUNG!GAPOK & "','" & RSHITUNG!TJJABATAN & "', " & _

"'" & RSHITUNG!TJKELUARGA & "','" & RSHITUNG!TJANAK & "','" & RSHITUNG!UANGMAKAN & "','" & RSHITUNG!UANGLEMBUR & "','" & RSHITUNG!ASKES & "','" & RSHITUNG!PENDAPATAN & "','" & RSHITUNG!POTONGAN & "','" & RSHITUNG!TotalGAJI & "')"

Conn.Execute SIMPAN

RSHITUNG.MoveNext

Loop

Else

Do While Not RSHITUNG.EOF

Dim EDIT As String

EDIT = "UPDATE GAJI SET UANGMAKAN='" & RSHITUNG!UANGMAKAN & "',UANGLEMBUR='" & RSHITUNG!UANGLEMBUR & "',PENDAPATAN='" & RSHITUNG!PENDAPATAN & "',POTONGAN='" & RSHITUNG!POTONGAN & "',TOTALGAJI='" & RSHITUNG!TotalGAJI & "' WHERE NIP= '" & RSHITUNG!NIP & "' AND MONTH(BULAN)='" & Month(COMBO1) & "' AND YEAR(BULAN)='" & Year(COMBO1) & "'"

Conn.Execute EDIT

RSHITUNG.MoveNext

Loop

End If

MsgBox "PERHITUNGAN GAJI BULAN '" & Month(COMBO1) & "' TAHUN '" & Year(COMBO1) & "' SUKSES"

End If

End Sub

1.8 Pencetakan Slip Gaji

 

Dengan langkah-langkah di atas, sebenarnya proses program penggajian sudah selesai, langkah berikutnya adalah membuat laporan penggajian. Bentuk laporan yang pertama dibuat adalah slip gaji per karyawan. Buatlah form dengan bentuk seperti gambar di bawah ini :

 

 

Koding :

 

Private Sub COMBO2_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then Unload Me

End Sub

 

Private Sub Form_Load()

Call BukaDB

 

RSGAJI.Open "SELECT DISTINCT BULAN FROM GAJI", Conn

COMBO1.Clear

Do While Not RSGAJI.EOF

COMBO1.AddItem RSGAJI!BULAN

RSGAJI.MoveNext

Loop

 

RSPegawai.Open "SELECT * FROM PEGAWAI ORDER BY NIP", Conn

Combo2.Clear

Do While Not RSPegawai.EOF

Combo2.AddItem RSPegawai!NIP

RSPegawai.MoveNext

Loop

End Sub

 

Private Sub COMBO2_Click()

Call BukaDB

Dim RSSLIP As New ADODB.Recordset

RSSLIP.Open "SELECT PEGAWAI.NIP,NAMA,JABATAN.NMJABATAN AS JABATAN,PEGAWAI.GOL,STATUS,JMLANAK,MASUK,MASTER.LEMBUR,GAPOK,JABATAN.TJJABATAN,IIF(PEGAWAI.STATUS='MENIKAH',TJSUAMIISTRI,0) AS TJKELUARGA,IIF (STATUS='MENIKAH',TJANAK*JMLANAK,0) AS TJANAK,UMAKAN*MASUK AS UANGMAKAN,MASTER.LEMBUR*GOLONGAN.LEMBUR AS UANGLEMBUR,ASKES, (GAPOK+TJJABATAN+TJKELUARGA+TJANAK+UANGMAKAN+ASKES+UANGLEMBUR) AS PENDAPATAN, POTONGAN,PENDAPATAN-POTONGAN AS TOTALGAJI FROM PEGAWAI,GOLONGAN,JABATAN,MASTER WHERE PEGAWAI.GOL=GOLONGAN.GOL AND PEGAWAI.KOJAB=JABATAN.KOJAB AND PEGAWAI.NIP=MASTER.NIP AND PEGAWAI.NIP='" & Combo2 & "'", Conn

If RSSLIP.EOF Then

MsgBox "DATA TIDAK DITEMUKAN"

Else

Call CetakGAJI

End If

End Sub

 

Function CetakGAJI()

Call BukaDB

Dim RSGAJI As New ADODB.Recordset

RSGAJI.Open "SELECT PEGAWAI.NIP,NAMA,JABATAN.NMJABATAN AS JABATAN,PEGAWAI.GOL,STATUS,JMLANAK,MASUK,MASTER.LEMBUR,GAPOK,JABATAN.TJJABATAN,IIF(PEGAWAI.STATUS='MENIKAH',TJSUAMIISTRI,0) AS TJKELUARGA,IIF (STATUS='MENIKAH',TJANAK*JMLANAK,0) AS TJANAK,UMAKAN*MASUK AS UANGMAKAN,MASTER.LEMBUR*GOLONGAN.LEMBUR AS UANGLEMBUR,ASKES, (GAPOK+TJJABATAN+TJKELUARGA+TJANAK+UANGMAKAN+ASKES+UANGLEMBUR) AS PENDAPATAN, POTONGAN,PENDAPATAN-POTONGAN AS TOTALGAJI FROM PEGAWAI,GOLONGAN,JABATAN,MASTER WHERE PEGAWAI.GOL=GOLONGAN.GOL AND PEGAWAI.KOJAB=JABATAN.KOJAB AND PEGAWAI.NIP=MASTER.NIP AND PEGAWAI.NIP='" & Combo2 & "'", Conn

LAYAR.Show

Dim MGrs As String

MGrs = String$(40, "-")

LAYAR.Font = "Courier New"

LAYAR.Print

LAYAR.Print

'LAYAR.Print Tab(5); MGrs

LAYAR.Print Tab(5); "TANGGAL : "; Format(Date, "DD-MMM-YYYY")

LAYAR.Print

LAYAR.Print Tab(5); "NIP : "; RSGAJI!NIP

LAYAR.Print Tab(5); "NAMA PEGAWAI : "; RSGAJI!NAMA

LAYAR.Print Tab(5); "JABATAN : "; RSGAJI!JABATAN

LAYAR.Print Tab(5); "GOLONGAN : "; RSGAJI!GOL

LAYAR.Print Tab(5); "STATUS : "; RSGAJI!Status

LAYAR.Print Tab(5); "JUMLAH ANAK : "; RSGAJI!JMLANAK

LAYAR.Print Tab(5); "JUMLAH HARI KERJA : "; RSGAJI!MASUK

LAYAR.Print Tab(5); "JUMLAH JAM LEMBUR : "; RSGAJI!LEMBUR

LAYAR.Print Tab(5); MGrs

LAYAR.Print Tab(5); "GAJI POKOK : "; RKanan(RSGAJI!GAPOK, "##,###,###")

LAYAR.Print Tab(5); "TUNJANGAN JABATAN : "; RKanan(RSGAJI!TJJABATAN, "##,###,###")

LAYAR.Print Tab(5); "TUNJANGAN SUAMI/ISTRI : ";

 

If RSGAJI!TJKELUARGA = 0 Then

LAYAR.Print Tab(40); RSGAJI!TJKELUARGA

Else

LAYAR.Print Tab(32); RKanan(RSGAJI!TJKELUARGA, "##,###,###")

End If

 

LAYAR.Print Tab(5); "TUNJANGAN ANAK : ";

If RSGAJI!TJANAK = 0 Then

LAYAR.Print Tab(40); RSGAJI!TJANAK

Else

LAYAR.Print Tab(32); RKanan(RSGAJI!TJANAK, "##,###,###")

End If

 

LAYAR.Print Tab(5); "UANG MAKAN : "; RKanan(RSGAJI!UANGMAKAN, "##,###,###")

 

LAYAR.Print Tab(5); "UANG LEMBUR : ";

If RSGAJI!UANGLEMBUR = 0 Then

LAYAR.Print Tab(40); RSGAJI!UANGLEMBUR

Else

LAYAR.Print Tab(32); RKanan(RSGAJI!UANGLEMBUR, "##,###,###");

End If

 

LAYAR.Print Tab(5); "ASKES : "; RKanan(RSGAJI!ASKES, "##,###,###")

LAYAR.Print Tab(5); MGrs

LAYAR.Print Tab(5); "TOTAL PENDAPATAN : "; RKanan(RSGAJI!PENDAPATAN, "##,###,###")

LAYAR.Print Tab(5); MGrs

 

LAYAR.Print Tab(5); "POTONGAN : ";

If RSGAJI!POTONGAN = 0 Then

LAYAR.Print Tab(40); RSGAJI!POTONGAN

Else

LAYAR.Print Tab(32); RKanan(RSGAJI!POTONGAN, "##,###,###")

End If

 

LAYAR.Print Tab(5); MGrs

LAYAR.Print Tab(5); "TOTAL GAJI : "; RKanan(RSGAJI!TotalGAJI, "##,###,###")

LAYAR.Print Tab(5); MGrs

LAYAR.Print

LAYAR.Print

Conn.Close

End Function

 

Private Function RKanan(NData, CFormat) As String

RKanan = Format(NData, CFormat)

RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan

End Function

 

1.9 Pembuatan Laporan

Setelah proses transaksi selesai, langkah selanjutnya adalah membuat laporan dengan menggunakan Crystal report. Di bawah ini terlihat beberapa bentuk laporannya.

1.9.1 Laporan Data Pegawai.

 

 

1.9.2 Laporan Data Golongan

 

1.9.3 Laporan Data Jabatan.

 

1.9.4 Laporan Kehadiran Karyawan

 

1.9.5 Laporan Data Lembur

 

1.9.6 Laporan Data Potongan