Disusun oleh
FIKRI UMARDANI
5180311031
DEWAN PENGUJI
Nama & Gelar Jabatan Tanda tangan tanggal
Yogyakarta, ……………………
Ketua Program Studi Sistem Informasi
…………………………………..
NIK.
ii
KATA PENGANTAR
Puji dan syukur penulis persembahkan kepada Allah SWT, karena atas
segala kehendak-Nya penulis dapat menyelesaikan penyusunan laporan Tugas
Akhir ini dengan judul “Analisis dan perancanan sistem penggajian pada kedai kopi
KopiDan”. Sholawat serta salam semoga selalu tercurah limpahkan kepada Nabi
Muhammad SAW, yang telah membawa kita menjadi manusia dengan akhlak yang
mulia.
Laporan Tugas Akhir ini disusun guna memenuhi persyaratan memperoleh
gelar Sarjana Sistem Informasi pada Fakultas Sains & Teknologi Universitas
Teknologi Yogyakarta. Pada kesempatan ini penulis sampaikan banyak terimakasih
kepada semua pihak yang telah memberi dukungan, dorongan, kemudahan, serta
bantuan selama penyusunan Laporan Tugas Akhir sehingga laporan ini dapat
terselesaikan dengan baik. Rasa terimakasih sebesar-besarnya penulis sampaikan
kepada :
iii
berharga membantu dan memperlancar proses penyelesaian Laporan
Tugas Akhir ini.
6. Instansi KopiDan & seluruh pegawai yang bekerja disana dikarenakan
telah mengijinkan untuk melakukan penelitian pada instasinya.
7. Bapak Ikrimach, S.kom.,M.Cs. Selaku dosen pembimbing yang telah
membimbing untuk menyelesaikan laporan Tugas Akhir ini.
8. Kedua orang tua yang selalu memberikan dukungan yang tidak ternilai.
8. Seluruh teman-teman serta sahabat yang selalu memberikan doa dan
dukungan yang berlimpah.
Penulis
iv
ABSTRAK
Penelitian ini bertujuan untuk membuatkan sistem penggajian untuk instansi kedai
kopi KopiDan dikarenakan proses penggajian pada instansi tersebut masih
menggunakan alat ceklok absen dan kertas slip absen tersebut akan diserahkan pada
HRD untuk dicatat sebagai absen harian, proses penggajian dilakukan dengan
mengumpulkan data absen, data izin, dan lainnya yang akan dicatat dalam
microsoft excel dan direkap kemudian akan menghasilkan slip gaji dan laporan
penggajian, hal tersebut membuat pengelolaan penggajian berjalan lama dan
mempersulit HRD dalam menangani setiap penggajian, hal itu juga menyebabkan
kemungkinan besar kalkulasi yang dilakukan mengalami kesalahan. Dari hasil
permasalahan yang sudah dijelaskan, pada penelitian implementasi sistem
penggajian pada kedai KopiDan berbasis web agar proses penggajian dapat
dipersingkat dengan adanya sistem yang dibuat dan meminimalisir terjadinya
kesalahan dalam kalkulasi. Perancangan sistem informasi ini menggunakan Entity
Relationsip Diagram (ERD), dan Data Flow Diagram (DFD) perancangan ini juga
menggunakana perancangan UML, dan DDL. Pada perancangan ini metode yang
digunakan adalah metode waterfall. Sistem yang telah dibuat telah diuji dan dapat
menangani proses penggajian pada kedai KopiDan. Implementasi program dari
perancangan yang telah dibuat menggunakan bahasa pemrograman web.
v
ABSTRACT
This study aims to develop a payroll system for the KopiDan coffee shop agency,
because the payroll process at that agency still uses an absence check tool and the
attendance slip paper will be submitted to HRD to be recorded as daily absences,
the payroll process is carried out by collecting absent data, permit data, and others
that will be recorded in Microsoft Excel and recapitulated will then produce
payslips and payroll reports, this makes payroll management take a long time and
makes it difficult for HRD to handle each payroll, it also causes a high probability
that the calculations made will experience errors. From the results of the problems
that have been described, in research the implementation of a payroll system at a
web-based KopiDan shop so that the payroll process can be shortened by having a
system created and minimizing errors in calculations. The design of this
information system uses Entity Relationship Diagrams (ERD) and Data Flow
Diagrams (DFD). This design also uses UML and DDL designs. In this design the
method used is the waterfall method. The system that has been created has been
tested and can handle the payroll process at KopiDan shops. Program
implementation of designs that have been made using web programming languages.
vi
DAFTAR ISI
vii
3.3 Produk ......................................................................................... 19
BAB IV ANALISIS DAN PERANCANGAN .................................... 21
4.1 Analisis Sistem ............................................................................ 21
4.1.1 Analisis Sistem Yang Berjalan .............................................. 21
4.1.2 Analisis Sistem Yang Akan Dibuat ....................................... 22
4.2 Analisa Kebutuhan ...................................................................... 24
4.2.1 Analisis Kebutuhan fungsional ............................................. 24
4.2.2 Analisis Kebutuhan non fungsional. ..................................... 25
4.3 Perancangan Sistem..................................................................... 26
4.3.1 Perancangan Model Proses.................................................... 26
4.3.2 Perancangan Model Data ...................................................... 30
4.3.3 Perancangan Fisik Basis Data ............................................... 30
4.3.4 Perancangan Relasi Antar Tabel ........................................... 35
4.3.5 Perancangan Antarmuka ....................................................... 36
4.4 Rancangan Anggaran Pengembangan Sistem ............................. 50
BAB V IMPLEMENTASI DAN PEMBAHASAN SISTEM .......... 51
5.1 Implementasi sistem .................................................................... 51
5.1.1 Implementasi basis data ........................................................ 51
5.1.2 Inplementasi sistem ............................................................... 59
5.2 Pembahasan ................................................................................. 80
5.2.1 Pembahasan basis data .......................................................... 80
5.2.2 Pembahasan sistem ................................................................ 84
5.2.3 Pengujian ............................................................................. 104
5.3 Inovasi sistem ............................................................................ 109
BAB VI PENUTUP ............................................................................ 110
6.1 Simpulan.................................................................................... 110
6.2 Saran .......................................................................................... 110
DAFTAR PUSTAKA ............................................................................ 111
LAMPIRAN ........................................................................................... 114
viii
DAFTAR TABEL
ix
DAFTAR GAMBAR
xiii
BAB I
PENDAHULUAN
1
2
BAB I : PENDAHULUAN
Bab ini menjelaskan tentang latar belakang penulisan, perumusan
masalah, batasan masalah yang dibahas, tujuan dari penelitian,
manfaat penelitian, dan sistematika penulisan.
BAB VI : PENUTUP
Bab ini merupakan simpulan dan rangkuman dari seluruh rangkaian
penelitian yang telah dilakukan. Bab penutup juga berisi tentang
saran-saran guna untuk mengembangkan sistem dikemudian hari
ataupun bagi instansi yang dijadikan objek penelitian.
DAFTAR PUSTAKA
LAMPIRA
BAB II
KAJIAN HASIL PENELITIAN DAN LANDASAN TEORI
4
5
Seperti terlihat pada tabel 2.1 perbedaan dari keempat referensi dengan
judul yang diangkat oleh penulis terletak pada hasil dari penelitian, pada hasil dari
setiap penelitian dapat menghasilkan output yang berbeda beda tergantung
keperluan dari instansi yang diteliti, metode yang digunakan pada keempat
penelitian tersebut menggunakan metode yang sudah paten untuk mendukung
keakuratan sistem yang dibuat sehingga hasil yang dihasilkan dari penelitian
tersebut dapat dipertanggung jawabkan
.
2.2 Landasan Teori
2.2.1 Sistem
Menurut Santi, I.H. (2020), Sistem adalah suatu jaringan kerja dari prosedur-
prosedur yang saling berhubungan, berkumpul bersama-sama untuk melakukan
suatu kegiatan atau untuk menyelesaikan suatu sasaran tertentu.
Menurut Maniah dan Hamidin, D. (2017), sistem adalah sekumpulan elemen-
elemen berupa data, jaringan kerja dari prosedur-prosedur yang saling
berhubungan, sumberdaya manusia, teknoligi baik hardware maupun software
yang saling berinteraksi sebagai satu kesatuan untuk mencapai tujuan atau sasaran
tertentu yang sama.
Menurut Santi, I.H. (2020), sistem adalah suatu jaringan kerja dari prosedur-
prosedur yang saling berhubungan, berkumpul bersama-sama untuk melakukan
suatu kegiatan atau untuk menyelesaikan suatu sasaran tertentu.
2.2.2 Penggajian
Menurut Achmad S. Ruky (2006), imbalan atau gaji ini mencakup semua
pengeluaran yang dikeluarkan oleh perusahaan untuk pekerja dan diterima serta
dinikmati oleh pekerja, baik diterima langsung maupun tidak langsung.
Menurut Nilasari S. (2016), gaji atau yang dalam bahasa inggris dikenal
denngan istilah salary merupakan sebuah bentuk pembayaran secara periodik dari
sebuah perusahaan kepada seorang karyawan yang mungkin didasarkan pada
kontrak kerja.
9
a. One to One Satu anggota entitas dapat berelasi dengan satu anggota
entitas lain. Untuk keterangan One to One dapat dilihat pada gambar 2.1.
Gambar 2. 1 ERD
Gambar 2. 2 ERD
Gambar 2. 3 ERD
Adapun beberapa simbol dalam ERD dapat dilihat pada tabel 2.2 dibawah ini:
Menurut Kristanto (2018), Data Flow Diagram (DFD) adalah suatu model
logika data atau proses yang dibuat untuk menggambarkan darimana asal data atau
kemana tujuan data yang keluar dari sistem, dimana data disimpan, proses apa yang
dihasilkan data tersebut, dan interaksi antara data yang disimpan dan diproses yang
dikenakan pada data tersebut.
DFD ini sering disebut juga dengan nama bubble chart, bubble diagram,
model proses, diagram alur kerja, atau model fungsi dari sebuah sistem. Pada tabel
2.3 dapat dilihat simbol yang digunakan dalam DFD.
3. Proses
4. Data store
2.2.5 Database
Database adalah susunan record data operasional lengkap dari suatu
organisasi atau perusahaan, yang diorganisir dan disimpan secara terintegrasi
dengan menggunakan metode tertentu dalam komputer sehingga mampu memenuhi
informasi yang optimal yang dibutuhkan oleh para pengguna (Setiyowati, dan Sri
Siswanti., 2021).
Basis data (Database) istilah ini berawal dari ilmu komputer, walaupun
kemudian artinya semakin luas memasukkan hal-hal diluar bidang elektronika.
Untuk kesamaan pada basis data ini sebenarnya sudah ada sebelum revolusi industri
yakni dalam bentuk buku besar, kuitansi dan kumpulan data yang berhubungan
dengan bisnis (Yuliansyah et al., 2014).
13
2.2.6 Query
Query adalah syntax atau perintah yang digunakan untuk mengakses dan
menampilkan data pada sistem database. Query memiliki kemampuan untuk
mengatur data mana yang perlu ditampilkan sesuai dengan yang Anda inginkan.
Selain itu, query dapat dipakai untuk membuat data dapat saling berinteraksi. Query
juga biasanya sering disebut dengan query language atau bahasa query. Saat ini
bahasa query yang paling populer dikalangan Database Administrator adalah SQL.
(Dewson, 2015).
Menurut Fitri R. (2020), SQL merupakan bahasa pemrograman khusus yang
digunakan untuk manajemen data dalam RDBMS. SQL biasanya berupa perintah
sederhana yang berisi instruksi-instruksi untuk memanipulasi dan pengambilan data
pada relational database yang terstruktur. Perintah SQL ini sering juga disingkat
query.
Menurut Budi H.,S (2021), SQL (Structure Query Language) adalah sebuah
bahasa yang digunakan untuk mengakses data dalam basis data relasional. Bahasa
ini secara facto merupakan bahasa standart ANSI (American Nasional Standard
Institute) yang digunakan dalam manajemen basis data relasional yang juga sering
disebut dengan istilah query.
2.2.7 Web
Menurut Ani Oktarini Sari A.,O, dan kawan-kawan (2019), Website
merupakan kumpulan halaman digital yang berisi informasi berupa teks, animasi,
gambar, suara dan video atau gabungan dari semuanya yang terkoneksi oleh
14
internet, sehingga dapat dilihat oleh seluruh siapapun yang terkoneksi jaringan
internet.
Menurut Siradhi T.,L (2021), web adalah jaringan komputer yang terdiri dari
kumpulan sistus internet yang menawarkan teks, grafik, suara, dan sumberdaya
animasi melalui protokol transfer hypertexs. Orang-orang sering menyebut web
dengan istilah WWW(World Wide Web). World Wide Web adalah layanan internet
yang paling populer saat ini dan dikenal juga sebagai halaman-halaman website
yang saling terkoneksi satu dengan yang lainnya (hyperlink) yang membentuk
samudra informasi.
Menurut Permana P.,I, dan Purnomo A.,N (2013), WWW atau yang biasa
disebut Web merupakan kumpulan web server dari seluruh dunia yang mempunyai
kegunaan untuk menyediakan data dan informasi untuk dapat digunakan bersama.
Www adalah sekelompok dokumen multimedeia yang saling bertautan dengan
menggunakan tautan hypert.
BAB III
METODE PENELITIAN
2. Observasi
Observasi adalah metode pengumpulan data dengan cara mengamati
secara langsung dilapangan. Pengamatan sistem yang dilakukan pada
instasni terpaku pada sistem penggajian yang sedang berjalan disana serta
mencari kelemahan yang ada pada prosesnya.
3. Dokumen
Dokumen yang diamati pada instansi adalah dokumen yang berkaitan
pada sistem penggajian yang berjalan seperti data kehadiran, data gaji, dan
lainnya.
15
16
KopiDan adalah kedai kopi yang menjual aneka kopi dan makanan. Kedai
Kopi KopiDan adalah sebuah kedai yang di naungi oleh PT. Cipta Rasa Jawara. PT.
Cipta Rasa Jawara menaungi beberapa outlet seperti Rocket Chicken, Istanbul
Kebab Turki, Ben gerr, Salad Cuscis, Berikan dan KopiDan. Kedai KopiDan
memiliki 3 cabang yang tersebar didaerah Yogyakarta, untuk pusat berada di Jl.
HOS Cokroaminoto 64 Yogyakarta dan 2 cabang lainnya terletak di Jl. Glagahsari
93 Yogyakarta dan Jl. Mayor Kusmanto 110, Gergunung Klaten. Untuk keterangan
peta tempat Kedai dapat dilihat pada gambar 3.1 dan gambar 3.2.
kontrol kualitas terhadap barang yang masuk, sedang disimpan, atau keluar dari
gudang.
d) Head Bar
Head bar bertanggung jawab atas proses operasional dan produksi di bar serta
mengawasi, melatih, memonitor kinerja dan operasional tim bawahannya.
e) Barista
Barista menyajikan kopi yang enak dengan menggunakan metode manual maupun
mesin serta mengoperasikan dan merawat alat seduh, seperti gelas, pour over cone,
mesin espresso, dan bertanggjung jawab atas kebersihan.
3.3 Produk
Kedai kopi KopiDan adalah kedai yang menjual makanan dan minuman
yang inovatif diantaranya adalah :
Minuman ;
1. Ice KopiDan Hitam. 15. Sanbru.
2. Hot KopiDan Hitam. 16. Bruli.
3. Ice KopiDan Susu. 17. Sprankling Orange.
4. Ice KopiDan Cheese. 18. Sprankling Melon.
5. Hot KopiDan Susu. 19. Sprankling Strawberry.
6. Ice KopiDan Coconut 20. Hot Matcha Millk.
Delight. 21. Hot Chocolate.
7. Ice KopiDan Matcha. 22. Ice Red Velvet Cheese.
8. Ice KopiDan Matcha 23. Ice Tiramisu Bland.
Cheese. 24. Regal Ndugal.
9. Ice KopiDan Tiramisu. 25. Tremor.
10. Ice KopiDan Avocado 26. Remis.
Vanila.
11. Ice KopiDan Avocado
Choco.
12. Ice KopiDan Rum Rege.
13. Ice KopiDan Sruvut.
14. Ice KopiDan Hazelnut.
20
Makanan :
1. Burger Ben Gerr.
2. Cheese Ben Gerr.
3. Bouble Cheese Ben Gerr.
4. Double Patty Ban Gerr.
5. Ben Gerr Lur.
6. Ben Gerr Original Beef.
7. Ben Gerr Karo Calon.
8. Ben Gerr Karo Temon.
9. Cheese Ben Gerr French Fries.
10. French Fries.
11. Chiken Wings.
12. Sampler.
13. Nasi Nelur.
14. Nasi Katsu.
15. Nasi Burger.
16. Nasi Blur.
17. Nasi Beef.
18. Salad Cuscis Original.
19. Salad Cuscis Kurma.
20. Salad Cuscis Oreo.
21. Salad Cuscis Charcoal.
22. Salad Cuscis Extra large
BAB IV
ANALISIS DAN PERANCANGAN
21
22
Pada gambar 4.1 dapat dilihat alur kerja penggajian dan perangkat yang
digunakan dalam sistem yang berjalan.
alur sistem yang akan dibangun adalah sebagai berikut; sistem akan dikendalikan
oleh dua orang yang dimana satu orang sebagai kendali pusat dan orang ke dua
sebagai operator yang mengatur kehadiran dan menilai aktifitas sedangkan pegawai
hanya bisa melakukan absensi dan melihat data absen mereka pada sistem. Sistem
akan mengkalkulasi data kehadiran pegawai dengan jumlah gaji yang telah
ditentukan, jumlah gaji harian di hitung dari pembagian gaji pokok dengan jumlah
hari yang telah ditentukan dari tanggal mulai absen sampai tanggal penggajian, gaji
lembur dihitung dari jumlah jam kerja pegawai terhitung dari setelah absen keluar,
serta gaji bonus harian dihitung dari sikap dan perilaku pegawai pada saat mulai
abesn hingga keluar kerja. Jumlah gaji dapat di edit oleh pengelola sistem, total gaji
dihitung dari total data yang diperoleh karyawan, sistem dapat mencetak laporan
dan slip gaji secara otomatis. Untuk lebih detailnya adalah sebagai berikut:
1. Operator menyalakan alat scan serta memantau kerja karyawan untuk
memberikan point kedisiplinan dan sebagainya.
2. Karyawan melakukan absen pada alat scan yang terhubung pada aplikasi
saat masuk kerja.
3. Karyawan melakukan absen lagi pada alat scan lagi saat pulang kerja.
4. Data kehadiran nanti akan dikalkulasi dengan jumlah gaji harian yang
ditentukan dari jumlah pembagian hari setingan tanggal penggajian dan
gaji pokok.
5. Jika karyawan ingin melakukan lembur karyawan harus melapor pada
operator untuk di catat mulai lembur dan pulang.
6. Admin melakukan pengelolaan data karyawan, izin, dan laporan.
7. Admin dapat mematikan akun karyawan agar tidak bisa absen
8. Direktur dapat menerima laporan lewat aplikasi.
9. Data yang direkap dapat dicetak dengan printer yang sudah terkoneksi.
Pada gambar 4.2 dapat dilihat kebutuhan perangkat komputer yang
digunakan oleh direktur, admin, dan Operator. Selain komputer direktur dan admin
juga memerlukan printer untuk mencetak slip gaji, laporan penggajian dan lainnya.
24
a. Diagram Konteks
Pada gambar 4.3 dijelaskan bahwa pada proses penggajian instansi KopiDan
mempunyai empat Entitas yaitu karyawan,operator, Admin, dan Direktur. Empat
entitas tersebut mempunyai hak akses masing-masing. Admin dapat mengakses
data master seperti mendaftarkan data karyawan, mengelola absen, merekap data
gaji, dan merekap data lembur. Operator dapat membuka scan untuk absen
karyawan, memantau data kehadiran karyawan, serta mencatat aktifitas karyawan
untuk menentukan nilai bonus dan mencatat jam lembur. Untuk Karyawan dapat
melihat jam masuk kerja, menerima slip gaji, serta melihat daftar kehadiran.
Direktur dapat menerima laporan data karyawan dan laporan data penggajian pada
pada tiap bulannya.
27
Tabel jam_masuk adalah tabel yang digunakan untuk menyeting jam masuk
kerja dan jam jam keluar. Keterangan tabel login dapat dilhat pada tabel 4.2.
Tabel 4. 2 Jam
NO Nama atribut Tipe data Lebar keterangan
1 id_jam Int 11 Primary key
2 jam_masuk date
3 Jam_keluar date
2. Tabel karyawan
Nama tabel : karyawan
Tabel karyawan adalah tabel yang digunakan untuk menyimpan data
karyawan. Keterangan tabel karyawan dapat dilihat pada tabel 4.3.
Tabel 4. 3 Karyawan
NO Nama atribut Tipe data Lebar Keterangan
1 NIP Int 11 Primary key
2 nama Varchar 50
3 alamat Varchar 50
4 Jenis_kelamin Enum ‘L’,’P’
5 Jabatan Enum ‘admin’,’operator’,’direk
tur’,’karyawan’
6 Gaji pokok Int 11
7 Status Enum ‘pegawai
magang’,’pegawai tetap’
8 Username Varchar 50
9 Password Varchar 50
10 Akun Enum ‘aktif’,’tidak aktif’
11 Sif Int 2
12 Id_jam Int 11
13 Kode_gaji Int 12
32
5. Tabel absen
Nama tabel : absen
Tabel absen digunakan untuk mendata absen para karyawan. Keterangan tabel
absendapat dilihat pada tabel 4.6.
Tabel 4. 7 Absen
NO Nama atribut Tipe data Lebar Keterangan
1 Kode_absen Varchar 25 Primary key
2 NIP Int 11 Foreign key
3 Tanggal_masuk Date
4 Jam_masuk Time
5 Tanggal_keluar Date
6 Jam_keluar Time
7 Tanggal_lembur Date
8 Jam_lembur Time
9 Izin Varchar 50
10 Ststus_absen Enum ‘telat’,’tepat
waktu’
11 Id_gaji Int 12 Foreign key
34
b. Tampilan absen
Halaman absen pada karyawan digunakan untuk melihat apakah
karyawan tersebut sudah melakukan absen. Perancangan halaman absen
bisa dilihat pada gambar 4.12.
c. Tampilan Qrcode
Halaman Qrcode pada karyawan digunakan untuk menampilkan kode Qr
milik karyawan yang natinya digunakan untuk absen pada scanning.
Perancangan halaman Qrcode bisa dilihat pada gambar 4.13.
d. Tampilan Profil
Halaman Profil pada karyawan digunakan untuk menampilkan Profil
akun karyawan yang berupa username dan paswword setiap karyawan yang
bisa di ubah. Perancangan halaman Profil bisa dilihat pada gambar 4.14.
Halaman laporan data gaji digunakan direktur untuk mengetahui jumlah gaji
karyawan perbulan maupun tahunan. Perancangan halaman laporan data penggajian
dapat dilihat pada gambar 4.26.
47
B Kebutuhan Server
1 Domain dan 12 1 300.000 3.600.000
Hosting
Total biaya 18.600.000
BAB V
IMPLEMENTASI DAN PEMBAHASAN SISTEM
Pada gambar 5.1 dapat dilihat bahwa query dapat dibaca dengan waktu
0.002 dan kecepatan transfer file 2.024, total dari kecepatan proses query adalah
2.026 seshingga query ini sangat efektif dalam sistem yang dibuat.
51
52
• Tabel Karyawan
Tabel karyawan adalah tabel yang berisikan data setiap karyawan
diantaranya adalah NIP, nama, alamat, jenis kelamin, jabatan, gaji pokok,
status, username, password, akun, sif, id jam, dan kode gaji. Berikut adalah
query pembuatan tabel karyawan.
Pada gambar 5.2 dapat dilihat bahwa query dapat dibaca dengan waktu
0.808 dan kecepatan transfer file 2.030, total dari kecepatan proses query adalah
2.838 seshingga query ini sangat efektif dalam sistem yang dibuat.
Pada gambar 5.3 dapat dilihat bahwa query dapat dibaca dengan waktu
0.622 dan kecepatan transfer file 2.074, total dari kecepatan proses query adalah
2.696 seshingga query ini sangat efektif dalam sistem yang dibuat.
Pada gambar 5.4 dapat dilihat bahwa query dapat dibaca dengan waktu
0.574 dan kecepatan transfer file 2.009, total dari kecepatan proses query adalah
2.583 seshingga query ini sangat efektif dalam sistem yang dibuat.
Pada gambar 5.5 dapat dilihat bahwa query dapat dibaca dengan waktu
0.877 dan kecepatan transfer file 2.076, total dari kecepatan proses query adalah
2.954 seshingga query ini sangat efektif dalam sistem yang dibuat.
• Tabel absen
Tabel absen adalah tabel yang berisikan data absen setiap karyawan,
data pada tabel absen diantaranya adalah kode absen, NIP, tanggal masuk,
jam masuk, tanggal keluar, jam keluar, tanggal lembur, jam lembur, izin,
status absen, dan id gaji. Berikut adalah query pembuatan tabel absen.
Pada gambar 5.6 dapat dilihat bahwa query dapat dibaca dengan waktu
0.702 dan kecepatan transfer file 2.054, total dari kecepatan proses query adalah
2.757 seshingga query ini sangat efektif dalam sistem yang dibuat.
Pada gambar 5.7 dapat dilihat bahwa query dapat dibaca dengan waktu
0.530 dan kecepatan transfer file 1.986, total dari kecepatan proses query adalah
2.516 seshingga query ini sangat efektif dalam sistem yang dibuat.
58
Pada gambar 5.8 dapat dilihat bahwa query dapat dibaca dengan waktu
0.562 dan kecepatan transfer file 2.009, total dari kecepatan proses query adalah
2.572 seshingga query ini sangat efektif dalam sistem yang dibuat.
Relasi antar tabel digunakan untuk menghubungkan tabel satu dengan yang lainnya
reli antar tabel ini digunakan untuk mencegah duplikat data atau data yang sama
dalam satu database, penghubung anatara tabel satu dengan yang lainnya yaitu
menggunakan primary key dan foreign key yang saling terhubung. Implementasi
relasi antar tabel pada database penggajian dapat dilihat pada gambar 5.9.
59
</button>
<div class="collapse navbar-collapse"
id="navbarSupportedContent">
<ul class="navbar-nav ms-auto me-4">
<li class="nav-item">
<a class="nav-link active" aria-
current="page" href="akun.php">kelola akun</a>
</li>
<li class="nav-item">
<a class="nav-link"
href="admin.php">kelola data</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle"
href="#" id="navbarDropdown" role="button" data-bs-
toggle="dropdown" aria-expanded="false">
kontak kami
</a>
<ul class="dropdown-menu" aria-
labelledby="navbarDropdown">
<li><a class="dropdown-item"
href="https://www.instagram.com/cirenglegend1/"><i class="bi
bi-instagram m-2"></i>instagram</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div class="row">
<div class="col-md-2 bg-light mt-3">
<div class="list-group">
<button type="button" class="list-group-item
list-group-item-action active" aria-current="true">
PILIHAN
</button>
<a type="button" class="list-group-item list-
group-item-action" href="admin.php">Absen</a>
<div class="accordion-item">
<h2 class="accordion-header" id="flush-
headingOne">
<button class="accordion-button collapsed"
type="button" data-bs-toggle="collapse" data-bs-target="#flush-
collapseOne" aria-expanded="false" aria-controls="flush-
collapseOne">
Data karyawan
</button>
</h2>
<div id="flush-collapseOne" class="accordion-
collapse collapse" aria-labelledby="flush-headingOne" data-bs-
parent="#accordionFlushExample">
<a type="button" class="list-group-item
list-group-item-action" href="data/datakaryawanT.php">Data
karyawan tetap</a>
<a type="button" class="list-group-item
list-group-item-action" href="data/datakaryawanM.php">Data
karyawan magang</a>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="flush-
headingTwo">
62
</div>
</div>
</div>
</div>
<?php
include('../koneksi/conet.php');
$data = mysqli_query($connet, "SELECT * FROM absen");
$no = 1;
?>
<div class="col">
<div class="mas-md-5 mt-2">
<br>
<div class="col-md-5">
<H4 class="tab fs-2 fw-bold ">ABSEN</H4>
</div>
<hr class="garis fw-bold">
<div>
<button type="submit" class="btn btn-primary"
data-bs-target="#absen" data-bs-toggle="modal">Input
data</button>
</div>
<div class="row">
<div class="col-md-2 bg-light">
<div class="list-group">
<button type="button" class="list-group-item
list-group-item-action active" aria-current="true">
PILIHAN
</button>
65
<?php
include('../koneksi/conet.php');
$data = mysqli_query($connet, "SELECT * FROM karyawan");
$cee = mysqli_num_rows($data);
$no = 1;
if (isset($_GET['cari'])) {
$min = $_GET['cari'];
if ($min == '') {
$data = mysqli_query($connet, "SELECT * FROM
karyawan");
} else {
$data = mysqli_query($connet, "SELECT * FROM
karyawan where NIP='$min' or nama like '%$min%' or jabatan like
'%$min%' or status like'%$min%' or akun like '%$min%'");
} } ?>
66
2. Tampilan operator
a. Kode program Info
<?php
session_start();
$NIP = $_SESSION['nip'];
include('../koneksi/conet.php');
$data = mysqli_query($connet, "SELECT * FROM absen INNER
JOIN karyawan
ON absen.`NIP`=karyawan.`NIP` where jabatan in
('karyawan','operator')");
if (isset($_GET['cari'])) {
$min = $_GET['cari'];
if ($min == '') {
$data = mysqli_query($connet, "SELECT * FROM absen
INNER JOIN karyawan
ON absen.`NIP`=karyawan.`NIP` where jabatan in
('karyawan','operator')");
} else {
$data = mysqli_query($connet, "SELECT * FROM absen
INNER JOIN karyawan
ON absen.`NIP`=karyawan.`NIP` where jabatan in
('karyawan','operator') and id_gaji='$min' or tanggal_masuk like
'%$min%'");
}
}
?>
<div class="row">
<div class="col-md-2 bg-light">
<div class="list-group">
67
<script>
var music = document.getElementById('sound');
});
scanner.addListener('scan', function(content) {
$("#text").val(content)
$("#text").trigger('blur')
autofill()
70
music.play()
navigator.geolocation.getCurrentPosition((
data, err) => {
if (err) {
console.log(err)
} else {
console.log(data)
}
})
// $.ajax({
// url: '',
// type: 'get',
// data: '',
// success: function(res) {
// alert('success absen')
// },
// error: function(xhr, option, error)
{
// alert('error')
// }
// })
});
Instascan.Camera.getCameras().then(function(ca
meras) {
if (cameras.length > 0) {
scanner.start(cameras[0]);
$('[name="options"]').on('change',
function() {
if ($(this).val() == 1) {
if (cameras[0] != "") {
scanner.start(cameras[0]);
} else {
alert('No Front camera
found!');
}
} else if ($(this).val() == 2) {
if (cameras[1] != "") {
71
scanner.start(cameras[1]);
} else {
alert('No Back camera
found!');
}
}
});
} else {
console.error('No cameras found.');
alert('No cameras found.');
}
}).catch(function(e) {
console.error(e);
alert(e);
});
function autofill() {
var nip = $("#text").val();
$.ajax({
url: 'inputabsen.php',
data: 'NIP=' + nip
});
}
</script>
</div>
<?php } ?>
3. Tampilan direktur
a. Kode program data
<div class="col-md-10">
<div class="mas-md-5 mt-2">
<br>
<div class="col-md-5">
<H4 class="tab fs-2 fw-bold ">Data
Karyawan</H4>
72
</div>
<hr class="garis fw-bold">
<?php
if (isset($_GET['cari'])) {
$min = $_GET['cari'];
if ($min == '') {
$data = mysqli_query($connet, "SELECT *
FROM karyawan");
} else {
$data = mysqli_query($connet, "SELECT *
FROM karyawan where status like '%$min%' or NIP='$min' OR nama
like'%$min%' or jabatan like'%$min%' or alamat like'%$min%'");
}
}
?>
while ($ulang =
mysqli_fetch_array($data)) {
?>
<tr>
<td><?= $no++; ?></td>
<td><?= $ulang['NIP'];
?></td>
<td><?= $ulang['nama'];
?></td>
<td><?= $ulang['alamat'];
?></td>
<td><?=
$ulang['jenis_kelamin']; ?></td>
<td><?= $ulang['jabatan'];
?></td>
<td><?= $ulang['gaji_pokok'];
?></td>
<td><?= $ulang['status'];
?></td>
<td><?= $ulang['kode_gaji'];
?></td>
<td> <a class="btn btn-
primary" href="aksi/cetakdata.php?NIP=<?php
echo $ulang['NIP']
?>">Cetak</a></td>
</tr>
</div>
<?php
}
?>
</tbody>
</table>
</div>
</div>
74
<div class="col-md-10">
<div class="mas-md-5 mt-2">
<br>
<div class="col-md-5">
<H4 class="tab fs-3 fw-bold ">Gaji Karyawan
Tetap</H4>
</div>
<hr class="garis fw-bold">
<?php
if (isset($_GET['cari'])) {
$min = $_GET['cari'];
if ($min == '') {
$data = mysqli_query($connet, "SELECT *
FROM gaji_karyawan_tetap");
} else {
$data = mysqli_query($connet, "SELECT *
FROM gaji_karyawan_tetap where no_slipT='$min'");
}
}
?>
<th scope="col">Potongan</th>
<th scope="col">Info pajak</th>
<th scope="col">Kedisiplinan</th>
<th scope="col">Kerapian</th>
<th scope="col">Toleransi</th>
<th scope="col">Attitude</th>
<th scope="col">Total gaji</th>
<th scope="col">Cetak Slip</th>
</tr>
</thead>
<tbody>
<?php
while ($ulang =
mysqli_fetch_array($data)) {
?>
<tr>
<td><?= $no++; ?></td>
<td><?= $ulang['no_slipT'];
?></td>
<td><?= $ulang['gaji'];
?></td>
<td><?= $ulang['uang_makan'];
?></td>
<td><?= $ulang['tunjangan'];
?></td>
<td><?= $ulang['upah_lembur'];
?></td>
<td><?= $ulang['potongan'];
?></td>
<td><?= $ulang['pajak'];
?></td>
<td><?= $ulang['kedisiplinan'];
?></td>
<td><?= $ulang['kerapian'];
?></td>
<td><?= $ulang['toleransi'];
?></td>
76
<td><?= $ulang['attitude'];
?></td>
<td><?= $ulang['total_gaji'];
?></td>
<td> <a class="btn btn-
primary" href="../admin/data/aksi/pdfT.php?no_slip=<?php
echo
$ulang['no_slipT'] ?>">Cetak Slip</a></td>
</tr>
</div>
</div>
<?php
}
?>
</tbody>
</table>
</div>
</div>
4. Tampilan karyawan
a. Kode program info
<div class="col">
<div class="mas-md-5 mt-2">
<div class="col-md-5">
<H4 class="tab fs-2 fw-bold ">ABSEN</H4>
</div>
<hr class="garis fw-bold">
<a type="text" class="btn btn-primary "
style="width: 280px; height:60px;">
<h4 style="position:absolute ; left:260px;
top:160px;">Jam masuk =<?= $ulang1['jam_masuk']; ?></h4>
</a>
77
<td><?= $ulang['jam_masuk'];
?></td>
<td><?= $ulang['jam_keluar'];
?></td>
<td><?= $ulang['jam_lembur'];
?></td>
<td><?= $ulang['izin'];
?></td>
<td><?= $ulang['status_absen'];
?></td>
</tr>
</div>
<?php
}
?>
</tbody>
</table>
</div>
</div>
<?php
$NIP = $_GET["NIP"];
include('../koneksi/conet.php');
$data = mysqli_query($connet, "SELECT * FROM
gaji_karyawan_tetap where no_slipT='$NIP'");
$data1 = mysqli_query($connet, "SELECT * FROM karyawan where
NIP='$NIP'");
$ulang1 = mysqli_fetch_array($data1);
$no = 1;
?>
<div class="row">
<div class="col-md-2 bg-light">
<div class="list-group">
79
</div>
</div>
</div>
5.2 Pembahasan
5.2.1 Pembahasan basis data
Pada tahapan pebahasan basis data query pembuatan tabel di uraikan dan
dibahasa berdasarkan kegunaan dari setiap tabel yang telah dibuat. Dalam
pembuatan basis data terdapat 7 tabel yang digunakan untuk menjalankan sistem
diantaranya adalah tabel absen, tabel gaji harian, tabel gaji karyawan magang, tabel
gaji karyawan tetap, tabel jam masuk, tabel karyawan, dan tabel set gaji untuk lebih
jelasnya dapat dilihat pada pembahasan berikut.
1. Tabel absen
Tabel absen digunakan untuk menyimpan data absen karyawan setiap harinya,
tabel absen mencatat tanggal dan waktu absen setiap karyawan yang masuk dan
keluar kerja, untuk lebih detailnya dapat dilihat pada gambar 5.10.
6. Tabel karyawan
Tabel karyawan digunakan untuk menyimpan data karyawan, untuk detail tabel
karyawan dapat dilihat pada gambar 5.15.
7. Perhitungan gaji lembur dihitung dengan mengkalikan jumlah jam lembur yang
dilakukan oleh karyawan dengan gaji lembur yang telah di setting admin.
8. Untuk perhitungan gaji bonus dilakukan dengan mengkalikan data gaji binus
dengan jumlah poin yang telah diterima karyawan dari tanggal mulai kerja
hingga tanggal penggajian.
Pada halamn data karyawan terdapat halaman input data yang digunakan untuk
memasukan data karyawan yang belum terdaftar pada aplikasi. Untuk lebih jelasnya
dapat dilihat pada gambar 5.18.
86
pada halamn data karyawan juga terdapat halaman untuk mengedit data karyawan
yang sudah terdaftar pada aplikasi. Halaman untuk mengedit data karyawan dapat
dilihat pada gambar 5.19.
87
Pada halaman setting data gaji harian terdapat halaman masukan data dan ubah
data untuk memasukan data maupun mengeditnya halaman masukan data dan ubah
data dapat dilihat pada gambar 5.21 dan gambar 5.22.
Halaman setting jam masuk memiliki halaman unput data dan ubah data yang
digunakan untuk memasukan settingan jam masuk baru ataupun mengubah data
yang telah ada. Halaman input data dan ubah data dapat dilihat pada gambar 5.24
dan gambar 5.25.
4. Halaman absen
Pada halaman absen berisikan data karyawan yang telah malukan absen pada
aplikasi melalui scan qrcode, halaman absen dapat dilihat pada gambar 2.26.
Pada halaman absen juga terdapat halaman masukan data untuk memasukan data
absen secata manual dan halaman ubah data untuk mengubah data absen karyawan.
Halaman masukan data dan ubah data dapat dilihat pada gambar 5.27 dan gambar
5.28.
Pada halaman gaji harian juga terdapat halaman untuk memasukan data bonus gaji
secara manual dan halaman ubah data untuk mengubah data bonus yang didapat.
Halaman masukan data dan ubah data dapat dilihat pada gambar 5.30 dan gambar
5.31.
Pada halaman akun pegawai terdapat halaman ubah data untuk menubah data
karyawan agar aktif maupun tidak aktif dan juga bisa mengubah data username
maupun passeord beserta sif dan id jamnya. Halaman ubah data akun karyawan
dapat dilihat pada gambar 5.33.
Pada halaman gaji karyawan terdapat halaman masukan data untuk menginputkan
data baru pada tabel penggajian dan halaman ubah untuk merubah data pada tabel
gaji karyawan. Halaman masukan data dana ubah data dapat dilihat pada gambar
5.35 dan gambar 5.36.
96
Pada halaman penggajian juga terdapat halaman untuk mencetak hasil dari
penggajian karyawan halaman tersebut berisikan dentitas karyawan beserta detail
data penggajian dari setiap karyawan. Halaman cetak data penggajian dapat dilihat
pada gambar 5.37.
97
8. Halaman karyawan
Pada halaman info absen karyawan terdapat dapat tabel info absen yang
berisikan data absen karyawan tersebut dengan jadwal jam masuk dan keluar
kerja. Halaman info absen karyawan dapat dilihat pada gambar 5.38.
Halaman info gaji terdapat info detail gaji yang diteriman karyawan, pada halaman
ini juga terdapat halaman cetak slip gaji yang bisa digunakan untuk mencetak slip
gaji untuk mengetehui detail gaji yang diterima. Halaman detail info detail gaiji dan
cetak slip dapat dilihat pada gamba 5.39 dan gambar 5.40.
98
Halaman profil digunakan untuk mengetahui akun karyawan dan juga bisa untuk
mengubah username dan password karyawan. Halaman profil dapat dilihat pada
gambar 5.41.
99
9. Halaman Operator
Halaman operator terdapat info absen pegawai yang digunakan untuk
memantau karyawn apakah mereka sudah melakukan absen pada aplikasi.
Halaman info karyawan dapat dilihat pada gambar 5.42.
pada halaman tabel karyawan terdapat button untuk pindah pada halaman ubah
lembur dan izin yang digunakan untuk engubah data lembur dan izin karyawan.
Halaman ubah lembur dan izin dapat dilihat pada gambar 5.43.
100
Halaman scan qrcode adalah halaman yang terhubung dengan kamera yang
digunakan untuk mescan kode QR agar karyawan dapat melakukan absen pada
aplikasi. Halaman scan qrcode dapat dilihat pada gambar 5.44.
Halaman nilai sikap digunakan untuk memberikan nilai sikap pada karyawan yang
nantinya akan dikalikan dengan gaji bonus sesuai kreteria penggajian. Halaman
nilai sikap dapat dilihat pada gambar 5.45.
Halaman ubah nilai sikap adalah halaman yang digunakan untuk mengisi nilai sikap
pada setiap karyawan yang terdaftar dan absen pada aplikasi. Halaman nilai sikap
dapat dilihat pada gambar 5.46.
Halaman cetak berisikan detail data karyawan yang telah terdaftar pada aplikasi dan
siap di cetak ataupun di download. Halaman cetak bisa dilihat pada gambar 5.48.
Halaman gaji karyawan pada direktur berisikan data yang sama dengan halaman
gaji karyawan yang sebelumnya. Halaman gaji karyawn dapat dilihat pada gambar
5.49.
Halaman cetak slip pada direktur juga sama pada cetak slip gaji sebelumnya yaitu
berisikan detail gaji dan performa kera karyawan. Halaman cetak slip dapat dilihat
pada gambar 5.50.
5.2.3 Pengujian
Pada penelitian ini pengujian aplikasi menggunakan metode black box yaitu
dengan mengecek setiap fungsi pada aplikasi apakah berfungsi sesuai dengan yang
semestinya. untuk lebih detailnya dapat dilihat pada pengujian berikut ini:
1. Halaman admin
pada halaman admin dilakukan berbagai pengujian untuk mengetes apakah
fungsi dari setiap fitur sudah sesuai dengan apa yang dinginkan. Dari berbagai
pengujian hasil yang diperoleh adalah sebagai berikut:
Tabel 5. 1 Pengujian
Hasil yang Hasil
NO Sekenario Tes Case Kesimpulan
diharapkan pengujian
Data dapat
dimasukan,
NIP tertriger
Tombol
pada tabel
tambah Sesuai
Memasukan gaji
data pada dengan apa
1 data pada data karyawan, Valid
halaman yang di
karyawan dan data
data inginkan
karyawan
karyawan
otomatis akan
dibuatkan
kode Qr nya
Tombol
Sesuia
Mengedit data edit pada
Data dapat di dengan apa
2 yang sudah halaman Valid
edit yang di
ada data
inginkan
karyawan
105
2. Halaman operator
Pada halaman operator dilakukan serangkaian tes untuk menguji fungsi fitur
dan sistem yang ada pada halaman operator. Hari serangkaian tes yang telah
dilakukan didapat hasil sebagai berikut:
Tabel 5. 5 Pengujian
Hasil yang Hasil Kesimpulan
NO Sekenario Tes case
diharapkan pengujian
Kamera dapat
mendeteksi kode
Qr dan
melakukan
absen
berdasarkan data
jam masuk yang
telah disetting
Scan kamera di pada halaman
hadapkan set jam masuk Hasil dari
dengan kode qr Scan kamera dengan data pengujian
apakah kamera pada karyawan yang sesuai Valid
1
scanner dapat halaman melakukan scan dengan apa
mendeteksi kode scan qrcode serta yang
qr tersebut atau memberikan diharapkan
tidak nilai telat atau
tepat waktu juga
memberikan
data triger absen
pada gaji harian
dan jika telat
tidak akan
mendapat uang
makan
108
Dapat
Button Edit memasukan data Sesuai
Menisi data
pada lembur dengan apa Valid
3 lembur
halaman karyawan yang
karyawan
data absen kedalam diinginkan
database
3. Halaman karyawan
Pada halaman karyawan dilakukan werangkainan pengujian untuk mengetes
apakah fungsi dari fitur seperti apa yang diinginkan. Dari hasil pengujian
didapat hasil sebagai berikut:
Tabel 5. 7 Pengujian
Hasil yang Hasil Kesimpulan
NO Sekenario Tes case
diharapkan pengujian
Button ubah Sesuai
Mengubah Data username
pada dengan apa Valid
1 username atau atau password
halaman yang
password dapat di ubah
profil diinginkan
4. Halaman direktur
Dari hasil rangkaian pengujian yang dilakukan terhadap fitur yang ada pada
halaman direktur didapat hasil sebagai berikut:
Tabel 5. 8 Pengujian
Hasil yang Hasil Kesimpulan
NO Sekenario Tes case
diharapkan pengujian
Button cetak Sesuia
Mencetak atau Data dapat di
pada dengan apa Valid
1 di mendownload cetak ataupun di
halaman yang
data karyawan download
karyawan diinginkan
6.1 Simpulan
Dari hasil laporan penelitian kerja praktik ini dapat diambil beberapa kesimpulan
diantaranya adalah sebagai berikut:
1. Analisis yang dibuat dengan menggunakan data yang diperoleh pada instansi
kedai KopiDan. Cara memperoleh data adalah dengan wawancara dan
observasi yang telah dilakukan pada instansi kedai Kopidan.
2. Perancangan sistem dilakukan seteah melakukan pengumpulan data yang
diperlukan. Perancangan ini terdiri dari perancangan logis dan perancangan
fisik. Perancangan logis terdiri dari perancangan Entity Relationship Diagram
(ERD), dan perancangan Data Flow Diagram (DFD) dari sistem yang dibuat.
Perancangan fisik terdiri dari darabase, struktur tabel yang digunakan, dan
desain tampilan web sistem penggajian.
3. Perancangan ini dapat membantu proses penggajian dengan cara
mempersingkatnya dengan manggunakan sistem yang telah dirancang
berdasarkan sistem penggajian yang ada dalam instansi.
4. Dari hasil perancangan yang telah dibuat diimplementasikan dalam sebuah
program sistem penggajian berbasis web yang kemudian akan mempermudah
dalam menjalankan penggajian pada instansi.
6.2 Saran
Setelah melakukan penelitian, maka dalam laporan ini penulis menyantumkan
saran yang mungkin dapat digunakan dalam pengembangan sisrem kedepannya.
Saran-saran tersebut antara lain:
1. Belum ada fitur untuk menambahkan aktifitas pada gaji bonus.
2. Penyimpanan kode qr yang berupa jpg masih berada di folder program.
3. Sistem ini diharapkan dapat dikembangkan agar program yang dibuat dapat
lebih menunjang tidak hanya di instansi KopiDan saja
110
DAFTAR PUSTAKA
Afiifah, K., Azzahra, Z. F., & Anggoro, A. D. (2022). Analisis Teknik Entity-
Relationship Diagram dalam Perancangan Database: Sebuah Literature
Review. INFORMATIKA DAN TEKNOLOGI (INTECH).
Andriani, A. D., Mulyana, A., Widarnandana, I. D., Armunanto, A., Sumiati, I.,
Susanti, L., . . . Dewi, I. C. (2022). Manajemen Sumber daya Manusia.
Makasar: CV.Tohar Media.
111
112
Hamizan, A., Mayasari, Saputri, R., & Pohan, R. N. (2020). Sistem Informasi
Penggajian di PT. Perkebunan Nusantara IV. Jurnal Manajemen
Informatika.
Mania, M., Purnama, B. E., & Sukadi. (2016). Sistem Informasi Penggajian
Karyawan Mitra Karya Prima Di Pembangkit Listrik Tenaga Uap 1 Pacitan.
Indonesian Journal on Software Engineering.
Romindo, Niar, H., Sipayung, R., Yendrianof, J. D., Faisal, M. A., Febrianty, . . .
Purba, B. (2020). Sistem Informasi Bisnis. Yayasan Kita Menulis.
Sari , A. O., Abdilah , A., & Sunarti . (2019). WEB PROGRAMMING. Yogyakarta:
GRAHA ILMU.
Soyusiawaty, D., Winiarti, S., Rosyda, M., & Fahana, J. (2020). BUKU AJAR
MATA KULIAH BASIS DATA. Yogyakarta: Program Studi Teknik
Informatika Fakultas Teknologi Industri Universitas Ahmad Dahlan.
Admin
a. Penggajian
<?php
include('../../../koneksi/conet.php');
$data = [];
$gaji = '';
$query = mysqli_query($connet, "SELECT * FROM karyawan INNER
JOIN set_gaji
ON karyawan.`kode_gaji` = set_gaji.`kode_gaji` where
status='pegawai magang'");
while ($row = mysqli_fetch_array($query)) {
114
115
//=================================================
$dis = $row['uang_kedisiplinan'];
$ra = $row['uang_kerapian'];
$to = $row['uang_toleransi'];
$at = $row['uang_attitude'];
//=======================================================
=======================
$query2 = mysqli_query($connet, "select * from absen where
tanggal_masuk between '$tanggalM' and '$tanggalS' and NIP=
'$hari1'");
$row2 = mysqli_num_rows($query2);
$lembur = strtotime($row3['jam_lembur']);
$ubah = ($lembur - $keluar) / 3600;
$totallembur = (int)$ubah;
$semua += $totallembur;
}
$gaji = $row['gaji_pokok'];
$hasil = (int)($gaji / $hari * $row2);
$hasil2 = (int)($uanglembur * $semua);
// array_push($data, [
// 'nip' => $row['NIP'],
// 'jumlah_absen' => $row2,
// 'gaji' => (int)($row['gaji_pokok'] / 30 * $row2)
// ]);
}
header("location: ../gajikaryawanM.php");
// var_dump($data);
b. Cetak slip
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript"
src="https://rawgit.com/schmich/instascan-
builds/master/instascan.min.js"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min
.js"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/webrtc-
adapter/3.3.3/adapter.min.js"></script>
<meta charset="UTF-8">
118
<body>
<?php
include('../../../koneksi/conet.php');
$kode = $_GET["no_slip"];
// var_dump($kode);
$data = mysqli_query($connet, "SELECT * FROM
gaji_karyawan_tetap WHERE no_slipT='$kode'");
$datakar = mysqli_query($connet, "SELECT * FROM karyawan
WHERE NIP='$kode'");
?>
<div class="col-md-10">
<div class="mas-md-5 mt-2">
<div class="col-md-5">
<center>
<H2 style="margin-top: 50px;">Gaji Karyawan
Tetap <br> tanggal <?= $cek['tanggal_akhir']; ?></H2>
</center>
</div>
<hr class="garis fw-bold">
<div>
<center>
<H3>Kedai KopiDan</H3>
</center>
</div>
<div style="margin-top:10px ;">
<center>
<h4>Jl. HOS Cokroaminoto No.64, Pakuncen,
Wirobrajan,
<br> Kota Yogyakarta, Daerah Istimewa
Yogyakarta 55253
</h4>
</center>
</div>
<br>
<hr class="garis fw-bold">
120
<h4></h4>
<h4> NIP : <?= $ulang1['NIP']; ?></h4>
<h4>Nama : <?= $ulang1['nama']; ?></h4>
<h4>Jabatan : <?= $ulang1['jabatan']; ?></h4>
<h4>Status : <?= $ulang1['status']; ?></h4>
<hr class="garis fw-bold">
<h4>PENGHASILAN </h4>
<h4>gaji pokok : Rp.<?= $ulang['gaji']; ?></h4>
<h4>Uang makan : Rp.<?= $ulang['uang_makan'];
?></h4>
<h4>Tunjangan : Rp.<?= $ulang['tunjangan'];
?></h4>
<h4>Upah lembur : Rp.<?= $ulang['upah_lembur'];
?></h4>
<h4>Potongan : Rp.<?= $ulang['potongan']; ?></h4>
<h4>Pajak : Rp.<?= $ulang['pajak']; ?></h4>
<h4>Kedisiplinan : Rp.<?= $ulang['kedisiplinan'];
?></h4>
<h4>Kerapian : Rp.<?= $ulang['kerapian']; ?></h4>
<h4>Toleransi : Rp.<?= $ulang['toleransi'];
?></h4>
<h4>Attitude : Rp.<?= $ulang['attitude']; ?></h4>
<hr class="garis fw-bold">
<h4>Total gaji : Rp.<?= $ulang['total_gaji'];
?></h4>
</div>
<div class="baru" style="position:absolute; right:
50px;">
<h4>PERSEN DATA AKTIFITAS</h4>
121
<script>
window.print();
</script>
<?php
// require_once('../../../dompdf/dompdf_config.inc.php');
// $data2 = "pdfM.php";
// $dompdf = new DOMPDF();
// $dompdf->load_html($data2);
// $dompdf->render();
// $dompdf->stream($nama . '.pdf', array("attachment" =>
0));
?>
</body>
</html>
c. Qrcode
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-
scale=1">
122
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-warning
fixed-top">
<div class="container">
<h3><i class="bi bi-cart-plus text-success m-
3"></i></h3>
<a class="navbar-brand fw-bold" href="#">Admin</a>
<button class="navbar-toggler" type="button" data-
bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse"
id="navbarSupportedContent">
<ul class="navbar-nav ms-auto me-4">
<li class="nav-item">
<a class="nav-link active" aria-
current="page" href="../akun.php">kelola akun</a>
</li>
<li class="nav-item">
<a class="nav-link"
href="../admin.php">kelola data</a>
</li>
<li class="nav-item dropdown">
123
<div class="row">
<div class="col-md-2 bg-light">
<div class="list-group">
<button type="button" class="list-group-item
list-group-item-action active" aria-current="true">
PILIHAN
</button>
<a type="button" class="list-group-item list-
group-item-action" href="../akun.php">Akun</a>
124
<?php
include('../../koneksi/conet.php');
$data = mysqli_query($connet, "SELECT * FROM karyawan");
$no = 1;
if (isset($_GET['cari'])) {
$min = $_GET['cari'];
if ($min == '') {
$data = mysqli_query($connet, "SELECT * FROM
karyawan");
} else {
$data = mysqli_query($connet, "SELECT * FROM
karyawan where NIP='$min' or nama like '%$min%'");
}
}
?>
<div class="col-md-10">
<div class="mas-md-5">
<div class="col-md-2">
<H4 class="ju mt-3 text-
center"><strong>Qrcode</strong></H4>
</div>
<hr class="garis fw-bold">
<br>
<hr class="garis fw-bold">
<table class="table">
<thead>
<tr>
<th scope="col">NO</th>
125
<th scope="col">NIP</th>
<th scope="col">Nama</th>
<th scope="col">Alamat</th>
<th scope="col">Jenis kelamin</th>
<th scope="col">Jabatan</th>
<th scope="col">Qrcode</th>
</tr>
</thead>
<tbody>
<?php
while ($ulang = mysqli_fetch_array($data))
{
?>
<tr>
<td><?= $no++; ?></td>
<td><?= $ulang['NIP']; ?></td>
<td><?= $ulang['nama']; ?></td>
<td><?= $ulang['alamat']; ?></td>
<td><?= $ulang['jenis_kelamin'];
?></td>
<td><?= $ulang['jabatan'];
?></td>
<td>
<button href="?NIP=<?php
echo $ulang['NIP'] ?>" type="button" class="btn btn-primary bg-
success ms-3" data-bs-target="#beli<?= $no ?>" data-bs-
toggle="modal">Qrcode</button>
</td>
</tr>
<form action="aksi/editabsen.php"
method="post" target="_blank">
<div class="modal fade"
id="beli<?= $no ?>" tabindex="-1" aria-
labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog
modal-lg">
126
<div class="modal-
content">
<div class="modal-
header">
<h5 class="modal-
title" id="exampleModalLabel">Qrcode :<?= $ulang['nama'];
?></h5>
<button
type="button" class="btn-close" data-bs-dismiss="modal" aria-
label="Close"></button>
</div>
<div class="modal-
body">
<div class="">
<div class="">
<div
class="">
<?php
$kode
= $ulang['NIP'];
re
quire_once('../../phpqrcode/qrlib.php');
QR
code::png("$kode", "kode" . $kode . ".png", "M", 20, 20);
?>
<img
src="kode<?= $kode ?>.png" alt="" style="position:absoplute;
width:700px;">
</div>
</div>
</div>
</div>
<div class="modal-
footer">
<button
type="sumbit" name="submit" class="btn btn-primary bg-primary
ms-3">Cetak</button>
127
</div>
</div>
</div>
</div>
</form>
<?php
}
?>
</tbody>
</table>
</div>
</div>
</div>
<!-- Optional JavaScript; choose one of the two! -->
Operator
a. Masukan absen
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min
.js"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/webrtc-
adapter/3.3.3/adapter.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-
o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ="
crossorigin="anonymous"></script>
<?php
include('../../koneksi/conet.php');
$_NIP = $_GET['kod'];
date_default_timezone_set('asia/jakarta');
$tgl = date('Y-m-d');
$jm = date('H:i:s');
$C = date('H');
$D = date('s');
//echo ($jm);
// perhitungan jam
$dif1 = strtotime($jm);
$dif2 = strtotime($keluar);
if ($_NIP == $np) {
if ($akn == "aktif") {
if ($stat == "pegawai tetap") {
if ($qr == 0) {
if ($st == "tepat waktu") {
if ($timediff <= 0) {
mysqli_query($connet, "UPDATE absen SET
tanggal_keluar='$tgl',jam_keluar='$keluar' WHERE NIP='$_NIP' &&
tanggal_masuk='$tgl'");
130
Cari data
<nav class="navbar navbar-expand-lg navbar-light bg-warning
fixed-top">
<div class="container">
<h3><i class="bi bi-cart-plus text-success m-
3"></i></h3>
132
if (isset($_GET['cari'])) {
$min = $_GET['cari'];
if ($min == '') {
$data = mysqli_query($connet, "SELECT * FROM absen
INNER JOIN karyawan
ON absen.`NIP`=karyawan.`NIP` where jabatan in
('karyawan','operator')");
} else {
$data = mysqli_query($connet, "SELECT * FROM absen
INNER JOIN karyawan
ON absen.`NIP`=karyawan.`NIP` where jabatan in
('karyawan','operator') and id_gaji='$min' or tanggal_masuk like
'%$min%'");
}
}
?>
134
Direktur
a. Cetak data karyawan
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript"
src="https://rawgit.com/schmich/instascan-
builds/master/instascan.min.js"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min
.js"></script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/webrtc-
adapter/3.3.3/adapter.min.js"></script>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Document</title>
</head>
<body>
<?php
include('../../koneksi/conet.php');
$kode = $_GET["NIP"];
// var_dump($kode);
$datakar = mysqli_query($connet, "SELECT * FROM karyawan
WHERE NIP='$kode'");
$ulang = mysqli_fetch_array($datakar);
$status = $ulang['status'];
135
?>
<div class="col-md-10">
<div class="mas-md-5 mt-2">
<div class="col-md-5">
<center>
<H2 style="margin-top: 50px;">Data <?=
$status; ?></H2>
</center>
</div>
<hr class="garis fw-bold">
<div>
<center>
<H3>Kedai KopiDan</H3>
</center>
</div>
<div style="margin-top:10px ;">
<center>
<h4>Jl. HOS Cokroaminoto No.64, Pakuncen,
Wirobrajan,
<br> Kota Yogyakarta, Daerah Istimewa
Yogyakarta 55253
</h4>
</center>
</div>
<hr class="garis fw-bold">
<div class="tab " style="position:absolute; left:
50px;">
<h3>Data pegawai</h3>
<h4> NIP : <?= $ulang['NIP']; ?></h4>
<h4>Nama : <?= $ulang['nama']; ?></h4>
<h4>Jabatan : <?= $ulang['jabatan']; ?></h4>
<h4>Status : <?= $ulang['status']; ?></h4>
<h4>Alamat : <?= $ulang['alamat']; ?></h4>
<h4>Jenis kelamin : <?= $ulang['jenis_kelamin'];
?></h4>
136
<script>
window.print();
</script>
<?php
// require_once('../../../dompdf/dompdf_config.inc.php');
// $data2 = "pdfM.php";
// $dompdf = new DOMPDF();
// $dompdf->load_html($data2);
// $dompdf->render();
// $dompdf->stream($nama . '.pdf', array("attachment" =>
0));
?>
</body>
</html>
Login
a. Masuk
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-
scale=1">
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bo
otstrap.min.css" rel="stylesheet" integrity="sha384-
EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLAS
jC" crossorigin="anonymous">
<link rel="stylesheet" href="style.css">
<title>login</title>
</head>
<body>
<?php
if (isset($_GET['kode']) == 1) {
echo '<script>
window.alert("username atau password salah");
window.location.href="login.php";
</script>';
} else {
?>
<div class="cont">
<h4 class="text-center">MASUK</h4>
<hr>
<form class="login" action="aksi/ceklogin.php"
method="POST">
<div class="login">
<label>Username</label>
<input type="text" name="username"
class="form-control" placeholder="Masukan Username">
</div>
<div class="login">
<label>Password</label>
<input type="password" name="password"
class="form-control" placeholder="Masukan password anda">
</div> <br>
<button type="submit" class="btn btn-
primary">Masuk</button>
138
</html>
b. Cek login
<?php
include("../koneksi/conet.php");
$user = $_POST['username'];
139
$pasw = $_POST['password'];
c. Level
<?php
session_start();
if ($_SESSION['level'] == "admin") {
140
header('location: ../admin/admin.php');
} elseif ($_SESSION['level'] == "direktur") {
header('location: ../direktur/direktur.php');
} elseif ($_SESSION['level'] == "operator") {
header('location: ../operator/operator.php');
} elseif ($_SESSION['level'] == "karyawan") {
header('location: ../karyawan/karyawan.php');
} else {
echo ("akun tidak terdaftar");
}