Ada 7 query yang dirancang atau dibuat yaitu:
1. Karyawan_Qry
Karyawan_Qry adalah query untuk menggabungkan tabel-tabel Karyawan, Departemen, Cabang dan Jabatan. Perintah query pada Karyawan_Qry adalah sebagai berikut:
SELECT
Karyawan.NOMOR_INDUK,
Karyawan.NAMA,
Karyawan.TANGGAL_LAHIR,
Karyawan.JENIS_KELAMIN,
Karyawan.STATUS_PERNIKAHAN,
Karyawan.JUMLAH_ANAK,
Departemen.NAMA_DEPARTEMEN,
Jabatan.NAMA_JABATAN,
Jabatan.LEVEL_JABATAN,
Cabang.NAMA_CABANG,
Karyawan.PENDIDIKAN_TERAKHIR,
Karyawan.GAJI_POKOK,
Karyawan.TANGGAL_DIANGKAT,
(Date()-[TANGGAL_LAHIR])/365 AS UMUR,
(Date()-[TANGGAL_DIANGKAT])/365 AS LAMA_KERJA,
Karyawan.TANGGAL_KELUAR,
Jabatan.TUNJANGAN_JABATAN,
Karyawan.NAMA_BANK,
Karyawan.NOMOR_REKENING,
Karyawan.REKENING_ATAS_NAMA
FROM Departemen
INNER JOIN (
Jabatan INNER JOIN (
Cabang INNER JOIN
Karyawan ON Cabang.[KODE_CABANG] = Karyawan.[KODE_CABANG])
ON Jabatan.[KODE_JABATAN] = Karyawan.[KODE_JABATAN])
ON Departemen.KODE_DEPARTEMEN = Karyawan.KODE_DEPARTEMEN
WHERE (((Karyawan.TANGGAL_KELUAR) Is Null));
Umur karyawan diperoleh dari rumus pada query:
(Date()-[TANGGAL_LAHIR])/365 AS UMUR
Keterangan: rumus ini artinya menghitung selisih jumlah hari dari tanggal saat ini dengan data tanggal lahir karyawan dibagi 365
Masa kerja diperoleh dari rumus pada query:
(Date()-[TANGGAL_DIANGKAT])/365 AS LAMA_KERJA
Keterangan: rumus ini artinya
menghitung selisih jumlah hari dari tanggal saat ini dengan data tanggal
karyawan diangkat sebagai karyawan dibagi 365
2. Lembur_Qry
Query Lembur_Qry adalah query untuk menghitung jumlah uang lembur setiap karyawan yang melaksanakan kerja lembur dalam satu bulan periode kerja.
SELECT
Lembur.NOMOR_INDUK,
Std_Hari_Kerja.TAHUN,
Std_Hari_Kerja.BULAN,
Lembur.JUMLAH_JAM_LEMBUR,
Karyawan.GAJI_POKOK,
Round([Lembur].[JUMLAH_JAM_LEMBUR]/172*[Karyawan].[GAJI_POKOK],0) AS UANG_LEMBUR
FROM Karyawan
INNER JOIN (
Lembur INNER JOIN
Std_Hari_Kerja ON (Lembur.TAHUN = Std_Hari_Kerja.TAHUN)
AND (Lembur.BULAN = Std_Hari_Kerja.BULAN))
ON Karyawan.NOMOR_INDUK = Lembur.NOMOR_INDUK;
Nilai uang lembur diperoleh dari rumus paad query:
Round([Lembur].[JUMLAH_JAM_LEMBUR]/172*[Karyawan].[GAJI_POKOK],0) AS UANG_LEMBUR
Keterangan: Jumlah jam lembur dalam 1 bulan dibagi 172 dikali dengan gaji pokok.
Angka 172 ini adalah sebagai
salah satu contoh kebijakan perusahaan yang menganggap dalam 1 bulan
karyawan bekerja selama 172 jam.
3. Hari_Kerja_Qry
Query Hari_Kerja_Qry adalah query yang berisi data jumlah hari kerja karyawan. Jumlah hari kerja karyawan ada di kolom HAKER.
SELECT
Cuti.NOMOR_INDUK,
Std_Hari_Kerja.TAHUN,
Std_Hari_Kerja.BULAN,
Std_Hari_Kerja.JUMLAH_HARI_KERJA AS STD_HAKER,
Cuti.JUMLAH_CUTI AS CUTI,
[Std_Hari_Kerja].[JUMLAH_HARI_KERJA]-[Cuti].[JUMLAH_CUTI] AS HAKER,
Cabang.UANG_MAKAN,
[HAKER]*[Cabang].[UANG_MAKAN] AS UANG_MAKAN_TOTAL
FROM (Cabang
INNER JOIN Karyawan
ON Cabang.KODE_CABANG = Karyawan.KODE_CABANG)
INNER JOIN (Cuti INNER JOIN Std_Hari_Kerja
ON (Cuti.TAHUN = Std_Hari_Kerja.TAHUN)
AND (Cuti.BULAN = Std_Hari_Kerja.BULAN))
ON Karyawan.NOMOR_INDUK = Cuti.NOMOR_INDUK
ORDER BY Std_Hari_Kerja.TAHUN, Std_Hari_Kerja.BULAN;
Jumlah hari kerja karyawan dihitung dalam query dengan rumus:
[Std_Hari_Kerja].[JUMLAH_HARI_KERJA]-[Cuti].[JUMLAH_CUTI] AS HAKER
Artinya jumlah standard hari
kerja dikurangi jumlah cuti, itulah hari kerja pada bulan tersebut. Data
ini digunakan untuk menghitung jumlah uang makan yang harus dibayar
kepada karyawan.
Ini rumus perhitungan jumlah uang makan pada query tersebut:
[HAKER]*[Cabang].[UANG_MAKAN] AS UANG_MAKAN_TOTAL
4. Hitung_Gaji_Qry
Query Hitung_Gaji_Qry adalah query untuk perhitungan gaji karyawan.
SELECT
Gaji.NOMOR_INDUK,
Gaji.BULAN,
Gaji.TAHUN,
Gaji.GAJI_POKOK,
Gaji.TUNJANGAN_JABATAN,
Gaji.UANG_MAKAN,
Gaji.UANG_LEMBUR,
[GAJI_POKOK]+[TUNJANGAN_JABATAN]+[UANG_MAKAN]+[UANG_LEMBUR] AS GAJI_KOTOR,
Gaji.PERSEN_POT_PPH,
Gaji.PTKP,
Round(([GAJI_KOTOR]-[PTKP])*[PERSEN_POT_PPH]/100) AS POT_PPH,
Gaji.PERSEN_POT_JAMSOSTEK,
Gaji.POT_LAIN_LAIN,
[GAJI_POKOK]*[PERSEN_POT_JAMSOSTEK]/100 AS POT_JAMSOSTEK,
[GAJI_KOTOR]-[POT_PPH]-[POT_JAMSOSTEK]-[POT_LAIN_LAIN] AS GAJI_BERSIH
FROM Gaji;
Untuk menghitung gaji kotor dihitung dengan rumus:
[GAJI_POKOK]+[TUNJANGAN_JABATAN]+[UANG_MAKAN]+[UANG_LEMBUR] AS GAJI_KOTOR
Untuk menghitung potongan pajak penghasilan dihitung dengan rumus:
Round(([GAJI_KOTOR]-[PTKP])*[PERSEN_POT_PPH]/100) AS POT_PPH
Untuk menghitung potongan jamsostek dengan rumus:
[GAJI_POKOK]*[PERSEN_POT_JAMSOSTEK]/100 AS POT_JAMSOSTEK
Untuk menghitung gaji bersih dihitung dengan rumus:
[GAJI_KOTOR]-[POT_PPH]-[POT_JAMSOSTEK]-[POT_LAIN_LAIN] AS GAJI_BERSIH
5. Gaji_Prepare_Qry
Query Gaji_Prepare_Qry adalah query untuk persiapan perhitungan gaji karyawan. Query Gaji_Prepare_Query mengambil source dari query Karyawan_Qry, Hari_Kerja_Qry dan Lembur_Qry.
SELECT
Karyawan_Qry.*,
Hari_Kerja_Qry.BULAN,
Hari_Kerja_Qry.TAHUN,
Hari_Kerja_Qry.HAKER,
Hari_Kerja_Qry.UANG_MAKAN_TOTAL AS UANG_MAKAN,
Lembur_Qry.JUMLAH_JAM_LEMBUR AS JAM_LEMBUR,
Lembur_Qry.UANG_LEMBUR,
Potongan_Lain_Lain.JUMLAH AS POT_LAIN_LAIN
FROM ((Karyawan_Qry
LEFT JOIN Hari_Kerja_Qry
ON Karyawan_Qry.NOMOR_INDUK = Hari_Kerja_Qry.NOMOR_INDUK)
LEFT JOIN Lembur_Qry
ON Karyawan_Qry.NOMOR_INDUK = Lembur_Qry.NOMOR_INDUK)
LEFT JOIN Potongan_Lain_Lain
ON Karyawan_Qry.NOMOR_INDUK = Potongan_Lain_Lain.NOMOR_INDUK;
6. Periode_Gaji_Qry
Query Periode_Gaji_Qry adalah query untuk menampilkan data bulan dan tahun transaksi gaji yang sudah pernah diproses. Query ini berfungsi untuk mencegah pemrosesan gaji yang sudah ada. Aplikasi akan memberi tahu user bahwa bulan dan tahun periode gaji sudah pernah diproses atau belum.
SELECT
Gaji.TAHUN,
Gaji.BULAN,
Count(Gaji.NOMOR_INDUK) AS JML_KARYAWAN
FROM Gaji
GROUP BY Gaji.TAHUN, Gaji.BULAN;
7. Cetak_Slip_Gaji_Qry
Query Cetak_Slip_Gaji_Qry adalah query sumber data untuk mencetak slip gaji karyawan.
SELECT
Gaji.NOMOR_INDUK,
Karyawan.NAMA,
Gaji.BULAN,
Gaji.TAHUN,
Gaji.JABATAN,
Gaji.CABANG,
Gaji.DEPARTEMEN,
Gaji.GAJI_POKOK,
Gaji.TUNJANGAN_JABATAN,
Gaji.TUNJANGAN_KELUARGA,
Gaji.UANG_MAKAN,
Gaji.UANG_LEMBUR,
[Gaji].[GAJI_POKOK]+[TUNJANGAN_JABATAN]+[TUNJANGAN_KELUARGA]+[UANG_MAKAN]+[UANG_LEMBUR] AS GAJI_KOTOR,
Gaji.PTKP,
([GAJI_KOTOR]-[PTKP])*[PERSEN_POT_PPH]/100 AS POTONGAN_PPH,
[Gaji].[GAJI_POKOK]*[PERSEN_POT_JAMSOSTEK]/100 AS POTONGAN_JAMSOSTEK,
Gaji.POT_LAIN_LAIN,
[POTONGAN_PPH]+[POTONGAN_JAMSOSTEK]+[POT_LAIN_LAIN] AS TOTAL_POTONGAN,
Gaji.NAMA_BANK,
Gaji.NOMOR_REKENING,
Gaji.REKENING_ATAS_NAMA,
[GAJI_KOTOR]-[TOTAL_POTONGAN] AS GAJI_BERSIH
FROM Karyawan INNER JOIN Gaji
ON Karyawan.NOMOR_INDUK = Gaji.NOMOR_INDUK;
Maaf pak saya ada keluhan mengenai datasheet. pada table datasheet, contoh jika penomoran telah di lakukan maka setelah enter apakah bisa data yang lama menjadi no 2 sedangkan data baru menjadi 1.. terimah kasih sebelumnya
BalasHapus