sistem informasi penj ualan dan persediaan · pdf filec. diagram alir data (dad)/ data flow...
TRANSCRIPT
SISTEM INFORMASI PENJUALAN DAN PERSEDIAAN
BARANG MINIMARKET BERBASIS LINUX
S K R I P S I
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Sains
Program Studi Ilmu Komputer
Oleh:
Bernadus Rano Laksono
NIM: 033124006
PROGRAM STUDI ILMU KOMPUTER
JURUSAN MATEMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2008
i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
THE LINUX BASED SELLING AND INVENTORY
INFORMATION SYSTEM OF A MINIMARKET
T H E S I S
Presented As Partial Fulfillment Of The Requirements
To Obtain The Sarjana Sains Degree
Study Program Computer Sciences
By:
Bernadus Rano Laksono
NIM: 033124006
STUDY PROGRAM OF COMPUTER SCIENCES
MANAGEMENT OF MATHEMATICS
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2008
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PERSEMBAHAN
Yesus Kristus Penuntun langkahku yang setia
Bunda Maria yang selalu setia mendengarkan doa-doaku
Orang tuaku tercinta,
Matheus Kastono dan Eufrozina Soares Martins
Kakakku tersayang, Antanasia Rini Antari
Adik-adikku tersayang Kristina Martins, Delfina Kastono Martins,
Zelasio Suryo Nugroho, Antonia Kastono Martins, Maria Magdalena
Kastono Martins, Martinus Filipe Kastono Martins dan Euphemia
Jaimah Martins Kastono yang selalu mendukungku
Keluarga Bapak Adi Sutrisno di Jitar
yang telah bersedia menjadikanku anak angkat
Rosa Tani Susanti yang menjadi semangat bagiku
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak
memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam
kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 20 September 2008
Penulis,
Bernadus Rano Laksono
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK
Penulisan skripsi ini bertujuan untuk membuat Sistem Informasi Penjualan
dan Persediaan Barang Minimarket Berbasis Linux. Pengguna dari sistem ini
adalah kasir, operator pergudangan dan manager. Sistem Informasi Penjualan dan
Persediaan Barang Minimarket Berbasis Linux ini berhasil dibuat dengan
menggunakan Gambas dan database MySql di Linux. Dengan menggunakan
sistem ini pihak minimarket tidak harus membayar lisensi.
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
The aim of thesis is developing Linux Based Selling and Inventory
Information System of a Minimarket. The users of this system are cashiers,
storeroom staffs and the managers. This system was successfully developed by
Gambas and MySql in Linux. Using this system, the minimarket must not pay the
licency fee.
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LEMBAR PERNYATAAN PERSETUJUAN
PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN
AKADEMIS
Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : Bernardus Rano Laksono
NIM : 033124006
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
“Sistem Informasi Penjualan dan Persediaan Barang Minimarket Berbasis
Linux”
beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
kepada perpustakaan Universitas Sanata Dharma hak untuk menyimpan,
mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan
data, mendistribusikan secara terbatas, dan mempublikasikannya di internet atau
media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya
maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya
sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal 21 Oktober 2008
Yang menyatakan
Bernardus Rano Laksono
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
Puji syukur ke hadirat Tuhan Yang Maha Esa yang telah melimpahkan
rahmat-Nya sehingga penulis dapat menyelesaikan skripsi ini.
Skripsi ini ditulis untuk memenuhi salah satu syarat memperoleh gelar
sarjana sains Fakultas Sains dan Teknologi, Program Studi Ilmu Komputer
Universitas Sanata Dharma Yogyakarta.
Dalam penulisan skripsi ini banyak hal yang penulis alami, baik suka
maupun duka, dimana hal tersebut telah membantu penulis untuk menjadi pribadi
yang utuh. Penulis menyadari bahwa banyak peran dari pihak-pihak yang telah
membantu penulis dalam menyelesaikan skripsi ini, sehingga penulis ingin
mengucapkan banyak terima kasih kepada:
1. Romo Ir. Greg. Heliarko S.J., S.S, B.S.T., M.A., M.Sc selaku Dekan FST
Universitas Sanata Dharma
2. Iwan Binanto, S.Si. selaku dosen pembimbing I yang telah bersedia
memberikan bimbingan, arahan, dan ketelitiannya dalam penyusunan skripsi
ini.
3. Ibu P.H. Prima Rosa, S.Si., M.Sc. selaku KaProdi Ilmu Komputer.
4. Orangtua penulis Bapak Matheus Kastono dan Ibu Eufrozina Soares Martins
di Timor-Timur.
5. Bpk. Tukijo dan Bu Linda di sekretariat yang dengan ramah telah membantu
melayani penulis.
6. Kakakku dan ketujuh adikku.
7. Rosa Tani Susanti yang menjadi semangat bagi penulis.
8. Bpk. Adi Sutrisno dan Ibu Florentina Ngatiyem yang telah memberikan
tempat untuk mengerjakan skripsi.
9. Saudaraku sekaligus sahabatku Slamet Widodo yang telah mau mendengarkan
cerita-ceritaku dan telah mengajariku banyak hal.
10. Sahabatku Hardi, Marjuki dan Pintoko.
11. Sahabatku Arui dan sekeluarga yang telah meminjamkan laptop untuk bekerja.
12. Sahabatku Donny yang telah banyak membantu.
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13. Pihak-pihak yang belum disebutkan yang telah membantu dalam penyelesaian
skripsi ini.
Penulis menyadari bahwa skripsi ini masih terdapat banyak kekurangan,
sehingga kritik maupun saran sangat diharapkan penulis sehingga skripsi ini bisa
menjadi lebih baik lagi.
Yogyakarta, 20 September 2008
Bernadus Rano Laksono
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
HALAMAN JUDUL ...................................................................................... i
TITLE ............................................................................................................ ii
HALAMAN PERSETUJUAN PEMBIMBING ............................................. iii
HALAMAN PENGESAHAN ........................................................................ iv
HALAMAN PERSEMBAHAN ..................................................................... v
PERNYATAAN KEASLIAN KARYA ......................................................... vi
ABSTRAK .................................................................................................... vii
ABSTRACT .................................................................................................... viii
KATA PENGANTAR ................................................................................... ix
DAFTAR ISI ................................................................................................. xi
DAFTAR GAMBAR ..................................................................................... xvi
BAB I PENDAHULUAN ........................................................................ 1
A. Latar Belakang …………......................................................... 1
B. Rumusan Masalah …............................................................... 2
C. Batasan Masalah ..................................................................... 2
D. Tujuan ……............................................................................. 4
E. Metodologi .............................................................................. 4
F. Sistematika Penulisan ............................................................. 4
BAB II LANDASAN TEORI ................................................................... 6
A. Sistem Informasi Penjualan dan Persediaan Barang ............... 6
1. Konsep Dasar Sistem ........................................................ 6
2. Konsep Dasar Informasi .................................................... 6
3. Konsep Dasar Sistem Informasi ........................................ 6
4. Konsep Dasar Sistem Informasi Penjualan dan
Persediaan barang .............................................................. 7
B. Konsep Dasar Open Source ..................................................... 7
C. Diagram Alir Data (DAD)/Data Flow Diagram (DFD) …....... 10
D. Entity Relationship Diagram (ERD) ......................................... 10
1. One to one relationship 2 entitas ......................................... 11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
2. One to many relationship 2 entitas ...................................... 11
3. Many to many relationship 2 entitas .................................... 11
E. Basis Data .................................................................................. 12
F. Kamus Data ............................................................................... 12
G. Normalisasi ............................................................................... 13
H. MySQL ....................................................................................... 14
I. Gambas ...................................................................................... 16
BAB III ANALISA DAN PERANCANGAN SISTEM …........................... 18
A. ANALISA SISTEM .................................................................. 18
1. Latar Belakang Pengembangan Sistem ............................... 18
2. Gambaran Umum Sistem .................................................... 19
3. Analisa Kebutuhan .............................................................. 21
B. DESKRIPSI UMUM SISTEM ................................................ 22
C. DESAIN PROSES .................................................................... 22
1. Diagram konteks ................................................................. 23
2. Diagram alir data level 1 Sisi kasir ..................................... 25
3. Diagram alir data level 1 Sisi operator ............................... 25
4. Diagram alir data level 1 Sisi manager .............................. 26
5. Diagram alir data level 2 untuk proses Penjualan ............... 26
6. Diagram alir data level 2 untuk proses Pergudangan ......... 27
7. Diagram alir data level 2 untuk proses Admin .................... 29
8. Diagram alir data level 3 untuk proses rekam
data penjualan .................................................................... 30
9. Diagram alir data level 3 untuk proses
Update data barang ............................................................. 30
10. Diagram alir data Level 3 untuk proses
Update data Supplier .......................................................... 32
11. Diagram alir data level 3 untuk proses Update User .......... 32
12. Kamus data/Data dictionary ............................................... 33
D. DESAIN BASIS DATA …....................................................... 35
1. Entity Relationship Diagram (ERD) ................................... 35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
2. Mendefinisikan tabel dalam program
untuk sistem (mapping) ...................................................... 36
3. Relasi ternormalisasi ........................................................... 37
E. DESAIN INPUT DAN OUTPUT ............................................. 41
1. Input kepada sistem ............................................................ 41
2. Output dari sistem ............................................................... 42
F. DESAIN ANTARMUKA PEMAKAI ..................................... 43
1. Rancangan Struktur Menu .................................................. 43
A. Manager ........................................................................ 43
B. Operator Pergudangan .................................................. 44
C. Kasir .............................................................................. 44
2. Rancangan Halaman Antarmuka ........................................ 45
BAB IV IMPLEMENTASI SISTEM ........................................................... 51
A. Implementasi Basis Data …...................................................... 51
B. Implementasi Antarmuka Pengguna ........................................ 53
1. Halaman Utama Admin/Manager ....................................... 54
2. Halaman Lihat Data Barang (Manager) .............................. 55
3. Halaman Lihat Detail Data Barang (Manager) ................... 56
4. Halaman Lihat Data Supplier (Manager) ............................ 56
5. Halaman Lihat Laporan ...................................................... 57
6. Halaman Laporan Stok Barang ........................................... 57
7. Halaman Lihat Laporan Penjualan ...................................... 58
8. Halaman Lihat Laporan Penjualan Harian .......................... 58
9. Halaman Laporan Penjualan Harian ................................... 59
10. Halaman Lihat Laporan Penjualan Bulanan ........................ 59
11. Halaman Laporan Penjualan Bulanan ................................. 60
12. Halaman Lihat Laporan Penjualan Tahunan ....................... 60
13. Halaman Laporan Penjualan Tahunan ................................. 61
14. Halaman Lihat Data User..................................................... 61
15. Halaman Lihat Detail Data User ......................................... 62
16. Halaman Tambah User......................................................... 62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
17. Halaman Utama Kasir ......................................................... 63
18. Halaman Bantuan Kasir ...................................................... 65
19. Halaman Utama Operator pergudangan ............................. 66
20. Halaman Lihat Data Barang (Operator pergudangan) ....... 67
21. Halaman Lihat Detail Data
Barang (Operator pergudangan) ......................................... 67
22. Halaman Lihat Data Supplier (Operator pergudangan) ....... 68
23. Halaman Lihat Detail Data
Supplier (Operator pergudangan) ........................................ 69
24. Halaman Tambah Data Barang ............................................ 69
25. Halaman Tambah Data Supplier .......................................... 70
26. Halaman Ubah Password Operator/Kasir ........................... 71
27. Halaman Cetak Barcode....................................................... 71
C. Implementasi Proses ................................................................. 72
1. Implementasi Proses Koneksi ke Basis Data ...................... 72
2. Implementasi Proses Login ................................................. 74
3. Proses Lihat Data Barang ................................................... 75
4. Proses Cari Data Barang ..................................................... 76
5. Proses Lihat Data Supplier ................................................. 77
6. Proses Cari Data Supplier ................................................... 78
7. Proses Lihat Laporan .......................................................... 78
a. Proses Lihat Laporan Stok Barang ............................... 78
b. Proses Lihat Laporan Penjualan Harian ...................... 81
c. Proses Lihat Laporan Penjualan Bulanan .................... 84
d. Proses Lihat Laporan Penjualan Tahunan .................... 86
8. Proses Lihat Data User ....................................................... 89
9. Proses Tambah Data User .................................................. 90
10. Proses Edit Data User ........................................................ 91
11. Proses Hapus Data User ..................................................... 93
12. Proses Rekam Penjualan ..................................................... 94
13. Proses Cari Data Barang untuk Kasir ................................. 99
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
14. Proses Tambah Data Supplier ............................................ 101
15. Proses Edit Data Supplier ................................................... 102
16. Proses Hapus Data Supplier ............................................... 103
17. Proses Tambah Data Barang .............................................. 104
18. Proses Edit Data Barang ..................................................... 106
19. Proses Hapus Data Barang ................................................. 107
20. Proses Ubah Password Kasir dan Operator ........................ 108
21. Proses Cetak Barcode .......................................................... 108
D. Evaluasi Dari Pengguna ............................................................. 111
BAB V PENUTUP ....................................................................................... 114
A. Kesimpulan .......................................................................... 114
B. Saran .................................................................................... 114
DAFTAR PUSTAKA ........................................................................................ 116
LAMPIRAN ...................................................................................................... 117
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
Gambar 2.1 one to one relationship 2 entitas ……………………………. 11 Gambar 2.2 one to many relationship 2 entitas ………………………….. 11 Gambar 2.3 many to many relationship 2 entitas ……………………….. 11 Gambar 3.1 Struktur Organisasi …………………………………….…… 19 Gambar 3.2 Diagram Konteks ………………………………………….… 23 Gambar 3.3 DAD level 1 Sisi User ……………………………………..… 25 Gambar 3.4 DAD level 1 Sisi operator …………………………………… 25 Gambar 3.5 DAD level 1 Sisi Manager …………………………………… 26 Gambar 3.6 DAD level 2 Proses Penjualan (proses 1) …………………… 26 Gambar 3.7 DAD level 2 Proses Pergudangan (proses 2) ………..……… 27 Gambar 3.8 DAD level 2 Proses Admin (proses 3) …………………….… 29 Gambar 3.9 DAD level 3 Proses Update Data Barang (proses 1.2) …..… 30 Gambar 3.10 DAD level 3 Proses Update Data Barang (proses 2.2) …… 30 Gambar 3.11 DAD level 3 Proses Update Data Supplier (proses 2.5) ..… 32 Gambar 3.12 DAD level 3 Proses Update User (proses 3.3) ……………. 32 Gambar 3.13 Diagram Relasi Entitas …………………………………..… 35 Gambar 3.14 Rancangan Struktur Menu Manager …………………….… 43 Gambar 3.15 Rancangan Struktur Menu Operator Pergudangan …….…. 44 Gambar 3.16 Rancangan Struktur Menu Kasir ………………………..… 44 Gambar 3.17 Antarmuka Login ………………………………………..… 45 Gambar 3.18 Antarmuka Halaman Manager dan Operator Pergudangan …………………………………………………..… 45 Gambar 3.19 Antarmuka Halaman Kasir ………………………………… 46 Gambar 3.20 Antarmuka Halaman Lihat Data (Barang, Supplier, user) …………………………………………...… 46 Gambar 3.21 Antarmuka Halaman Detail/Ubah Data Barang ………..… 47 Gambar 3.22 Antarmuka Halaman Detail/Ubah Data Supplier/User …… 47 Gambar 3.23 Antarmuka Halaman Tambah Data (Barang, Supplier, User) …………………………………………..… 48 Gambar 3.24 Antarmuka Halaman Pilih Laporan ……………………..… 48 Gambar 3.25 Antarmuka Halaman Pilih Laporan Penjualan ……….…… 49 Gambar 3.26 Antarmuka Halaman Laporan Penjualan Harian ……….… 49 Gambar 3.27 Antarmuka Halaman Laporan Penjualan Bulanan ……..… 49 Gambar 3.28 Antarmuka Halaman Laporan Penjualan Tahunan …….… 50 Gambar 3.29 Antarmuka Halaman Ubah Password (user, Operator) …… 50 Gambar 4.1 Halaman Login …………………………………………….… 54 Gambar 4.2 Pesan Kesalahan Login Gagal …………………………….… 54 Gambar 4.3 Halaman Utama Admin/Manager …………………………… 55 Gambar 4.4 Halaman Lihat Data Barang (Manager) ………………….… 55 Gambar 4.5 Halaman Detail Data Barang (Manager) …………………… 56 Gambar 4.6 Halaman Lihat Data Supplier (Manager) …………………… 56 Gambar 4.7 Halaman Lihat Laporan …………………………………..… 57 Gambar 4.8 Halaman Laporan Stok Barang …………………………..… 57 Gambar 4.9 Halaman Lihat Laporan Penjualan ……………………….… 58
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.10 Halaman Lihat Laporan Penjualan Harian ………………… 58 Gambar 4.11 Halaman Laporan Penjualan Harian ……….……………… 59 Gambar 4.12 Halaman Lihat Laporan Penjualan Bulanan ………….…… 59 Gambar 4.13 Halaman Laporan Penjualan Bulanan …………………..… 60 Gambar 4.14 Halaman Lihat Laporan Penjualan Tahunan ……………… 60 Gambar 4.15 Halaman Laporan Penjualan Tahunan ………………….… 61 Gambar 4.16 Halaman Lihat Data User ………………………………..… 61 Gambar 4.17 Halaman Lihat Detail Data User …………………………… 62 Gambar 4.18 Halaman Tambah User …………………………………..… 62 Gambar 4.19 Halaman Utama Kasir …………………………………...… 63 Gambar 4.20 Pesan Memasukkan Kode Barang …………………..…..… 63 Gambar 4.21 Pesan Kesalahan Kode Barang ………………………….… 64 Gambar 4.22 Halaman Cari Barang Untuk Kasir ……………………..… 64 Gambar 4.23 Ubah Jumlah Jual Barang ……………………………….… 65 Gambar 4.24 Halaman Pembayaran ……………………………………… 65 Gambar 4.25 Halaman Bantuan Kasir …………………………………… 66 Gambar 4.26 Halaman Utama Operator pergudangan …………………… 66 Gambar 4.27 Halaman Lihat Data Barang (Operator pergudangan) ….… 67 Gambar 4.28 Halaman Lihat Detail Data Barang (Operator pergudangan) ………………………………………..… 68 Gambar 4.29 Halaman Lihat Data Supplier (Operator pergudangan) …… 68 Gambar 4.30 Halaman Lihat Detail Data Supplier (Operator pergudangan) ………………………………………… 69 Gambar 4.31 Halaman Tambah Data Barang ……………………….…… 70 Gambar 4.32 Halaman Tambah Data Supplier ………………………...… 70 Gambar 4.33 Halaman Ubah Password Operator/Kasir ………………… 71 Gambar 4.34 Halaman Cetak Barcode Barang ………………………...… 72
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
A. Latar Belakang
Minimarket merupakan suatu tempat di mana kita dapat membeli suatu
barang yang kita butuhkan sehari-hari, contohnya alat kantor, alat pribadi,
makanan ringan, atau yang lainnya. Di dalam minimarket terdapat beberapa
pegawai yang masing-masing memiliki pekerjaan yang berbeda. Salah satu
pegawai tersebut adalah kasir. Kasir bertugas dalam hal penjualan dalam
melayani pembeli pada saat melakukan pembayaran.
Data merupakan bagian yang sangat penting di dalam suatu peru-
sahaan. Oleh karena itu, maka data seharusnya diolah sebaik mungkin sehing-
ga dapat digunakan oleh pihak-pihak yang membutuhkan.
Cara yang efektif dan efisien dalam mengolah data salah satunya
dengan menggunakan sistem berbasis komputer. Dengan menggunakan sistem
berbasis komputer maka proses pengolahan data dapat dilakukan dengan lebih
cepat dan akurat serta dapat memperkecil kesalahan yang dilakukan oleh
manusia (human error). Berdasarkan uraian di atas dan melihat betapa
pentingnya sebuah sistem berbasis komputer, maka penulis ingin membuat
sebuah sistem berbasis komputer untuk meningkatkan kinerja kasir dalam
pelayanan di minimarket.
Sistem operasi Microsoft Windows sudah tidak asing lagi di kalangan
masyarakat pada zaman modern ini. Hampir setiap perusahaan besar di negara
kita menggunakan Microsoft Windows untuk membantu menyelesaikan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
pekerjaan mereka di tempat kerja mereka. Banyak perusahaan yang
mengeluarkan biaya yang cukup besar untuk mendapatkan sistem operasi
Microsoft windows dikarenakan tuntutan pekerjaan. Seiring dengan mahalnya
sistem operasi, maka dibutuhkan sebuah sistem operasi yang lebih murah agar
dapat membantu mengurangi pengeluaran dan menambah pemasukan bagi
suatu perusahaan.
Sistem operasi Linux adalah sistem operasi yang diberikan secara
gratis. Sehingga dapat membantu mengurangi pengeluaran dari suatu
perusahaan dan membantu menambah pemasukan bagi perusahaan. Oleh
karena itu, pembuatan sistem informasi penjualan minimarket yang akan
dibuat, akan berbasis Linux (open source) dengan menggunakan Gambas.
B. Rumusan Masalah
Bagaimana membuat Sistem Informasi Penjualan dan Persediaan
Barang Minimarket Berbasis Linux.
C. Batasan Masalah
Penulis membatasi kemampuan sistem dengan batasan sebagai berikut:
1. Sistem Informasi Penjualan dan Persediaan Barang Minimarket memiliki
dua proses yang utama, yaitu:
a. Proses pencatatan penjualan barang
b. Proses pengolahan data persediaan barang
2. Pemilik Toko/manager
Pemilik Toko/manager dapat melihat laporan. Laporan terbagi menjadi
dua bagian yaitu, laporan persediaan barang dan laporan penjualan (harian,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
bulanan, tahunan). Laporan yang dibuat untuk pihak manager dapat dilihat
di dalam sistem ataupun dapat disediakan dalam bentuk kertas. Manager
juga dapat menambah, mengubah, atau menghapus data user/pengguna
(kasir, operator pergudangan dan manager).
3. Operator penjualan barang/kasir
Tugas operator penjualan barang/kasir adalah mencatat setiap penjualan
barang pada saat terjadi transaksi penjualan. Kasir juga dapat mengubah
data password sesuai dengan keinginan kasir.
4. Operator pengolahan data persediaan barang/operator pergudangan
Operator memiliki tugas untuk menambah, mengubah atau menghapus
data barang sesuai dengan keadaan barang sebenarnya. Operator
pergudangan juga dapat menambah, mengubah atau menghapus data
supplier. Selain itu, operator pergudangan juga dapat mengubah data
password operator pergudangan sesuai dengan keinginannya.
Pengembangan Sistem Informasi Penjualan dan Persediaan Barang
Minimarket ini akan menggunakan Gambas dan didukung database Mysql
yang bekerja di Linux.
5. Sistem ini merupakan stand alone.
6. Untuk harga yang bernilai desimal dibulat menjadi bilangan bulat.
7. Sistem menggunakan resolusi monitor 1024 x 768 pixel.
8. Sistem belum dilengkapi dengan barcode reader.
9. Sistem belum memiliki menu untuk fasilitas perhitungan keuangan.
10. Belum memiliki fasilitas perhitungan gaji karyawan dalam manager.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
11. Sistem belum dapat menampilkan grafik urutan penjualan terlaris.
12. Sistem belum memiliki form retur penjualan.
13. Sistem belum memiliki fasilitas untuk mengubah profil toko.
D. Tujuan
Adapun tujuan dari penulisan tugas akhir ini adalah membuat Sistem
Informasi Penjualan dan Persediaan Barang Minimarket Berbasis Linux.
E. Metodologi
Metode yang digunakan dalam pembuatan tugas akhir ini adalah
metode Waterfall. Metode ini memiliki urutan atau langkah sebagai berikut:
1. Rekayasa sistem, menentukan seluruh kebutuhan ke dalam sistem.
2. Analisis, menentukan kebutuhan sistem secara khas.
3. Perancangan (design), membuat rancangan yang akan diimplementasikan
ke sistem.
4. Penulisan program (coding), menerjemahkan hasil rancangan ke dalam
bahasa sistem.
5. Pengujian, proses mencari segala kemungkinan kesalahan yang ada pada
sistem (tanpa mencari-cari kesalahan).
6. Perawatan, proses penambahan fungsi atau peningkatan performansi.
F. Sistematika Penulisan
Tahapan dalam penulisan ini terbagi dalam beberapa bagian, yaitu :
BAB I PENDAHULUAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
Bab ini berisi mengenai latar belakang pemilihan topik, rumusan
masalah, batasan masalah, metodologi, manfaat dan sistematika
penulisan.
BAB II LANDASAN TEORI
Bab ini akan membahas mengenai berbagai acuan dan bahan-bahan
yang dapat digunakan untuk menjawab permasalahan yang
dihadapi, diantaranya tentang suatu sistem informasi, sistem
operasi Linux dan keterangan mengenai software yang digunakan
penulis sebagai landasan/dasar dalam penulisan.
BAB III ANALISA DAN PERANCANGAN SISTEM
Bab ini berisi tentang analisa atas permasalahan yang dihadapi,
kebutuhan pengguna untuk dikembangkan dan menjadi referensi
dalam perancangan sistem yang meliputi perancangan proses yang
terjadi, sistem yang akan dibuat, basis data, struktur menu, input
output, user interface dan rancangan program.
BAB IV IMPLEMENTASI SISTEM
Bab ini akan menyajikan tahap-tahap implementasi program dari
aplikasi yang akan dibuat (implementasi program, basis data, antar
muka pengguna).
BAB V PENUTUP
Bab ini berisi mengenai kesimpulan dan saran dari implementasi
program secara keseluruhan yang telah dilakukan dalam penulisan
ini dan disertai saran-saran untuk pengembangan sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
BAB II
LANDASAN TEORI
A. Sistem Informasi Penjualan dan Persediaan Barang
1. Konsep Dasar Sistem
Menurut Oetomo (2002: 168) sistem merupakan kumpulan elemen
yang saling berhubungan satu sama lain yang membentuk satu kesatuan
dalam usaha mencapai suatu tujuan.
2. Konsep Dasar Informasi
Informasi adalah pemrosesan data yang diperoleh dari setiap elemen
sistem tersebut menjadi bentuk yang mudah dipahami dan merupakan
pengetahuan yang relevan yang dibutuhkan oleh orang untuk menambah
pemahamannya tentang fakta-fakta yang ada (Oetomo, 2002).
3. Konsep Dasar Sistem Informasi
Menurut Oetomo (2002: 11) sistem informasi dapat didefinisikan
sebagai kumpulan elemen yang saling berhubungan satu sama lain yang
membentuk satu kesatuan untuk mengintegrasikan data, memproses dan
menyimpan serta mendistribusikan informasi. Dengan kata lain, sistem
informasi merupakan kesatuan elemen-elemen yang saling berkaitan
secara sistematis dan teratur untuk menciptakan dan membentuk aliran
informasi yang akan mendukung pembuatan keputusan dan melakukan
kontrol terhadap jalannya perusahaan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
4. Konsep Dasar Sistem Informasi Penjualan dan Persediaan barang
a) Sistem informasi penjualan merupakan sistem yang menyediakan
informasi penjualan harian, bulanan, triwulan, semesteran dan tahunan
dari masing-masing jenis barang dan supplier secara rinci. Sistem
informasi ini terkait erat dengan sistem persediaan barang, karena
setiap penjualan akan mengurangi persediaan barang (Oetomo, 2002).
b) Sistem informasi persediaan barang. Menurut Oetomo (2002: 170)
dengan sistem informasi dapat diperoleh informasi yang rinci tentang
item-item barang yang tersedia, dari mana suppliernya, berapa barang
yang rusak, berapa yang harus diorder lagi dan berapa banyak yang
telah kadaluarsa.
B. Konsep Dasar Open Source
Seperti tertuang dalam OSD (Open Source Definition) yang terdapat pada
situs http://www.opensource.org/docs/definition.php dijelaskan bahwa Open
source tidak hanya berarti bebasnya akses terhadap kode sumber. Syarat-
syarat distribusi open source software harus memenuhi kriteria-kriteria
berikut:
1. Distribusi Ulang Gratis
Lisensi distribusi tidak melarang pihak manapun untuk menjual atau
memberikan software sebagai bagian dari distribusi software terpadu yang
memuat program-program dari beberapa sumber yang berbeda. Lisensi
seharusnya tidak mensyaratkan royalti atau biaya lain untuk hal tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
2. Kode Sumber
Program harus menyertakan kode sumber, dan harus mengizinkan distribusi
kode sumber sebagaimana distribusi bentuk terkompilasinya. Jika sebuah
produk tidak didistribusikan dengan kode sumbernya, harus ada sarana yang
terpublikasi baik untuk mendapatkan kode sumber dengan mudah. Kode
sumber harus dalam bentuk yang memudahkan programmer untuk
memodifikasi program tersebut. Bentuk intermediet, seperti output
preprosesor atau translator tidak diperbolehkan.
3. Kerja Turunan
Lisensi harus mengizinkan modifikasi dan penerusan hasil kerja oleh orang
lain, serta harus mengizinkannya untuk didistribusikan di bawah lisensi yang
sama dengan software aslinya.
4. Integritas Penulis Kode Sumber
Lisensi dapat melarang kode sumber untuk didistribusikan ulang dalam bentuk
termodifikasi hanya jika lisensi mengizinkan distribusi file-file tambahan
beserta kode sumber untuk tujuan memodifikasi progran pada masa
pembangunan. Lisensi harus secara eksplisit mengizinkan distribusi software
yang dibangun dari modifikasi kode sumber. Lisensi mungkin mensyaratkan
hasil kerja turunan untuk menggunakan nama atau versi yang berbeda dari
software aslinya.
5. Tak Ada Diskriminasi terhadap Pribadi atau Golongan
Lisensi tidak boleh mendiskriminasi pribadi atau golongan manapun.
6. Tak Ada Diskriminasi terhadap Bidang atau Usaha Tertentu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
Lisensi tidak boleh melarang siapapun untuk memanfaatkan program dalam
bidang atau usaha tertentu. Misalnya, tidak boleh melarang program untuk
digunakan di bidang bisnis, atau digunakan dalam riset genetika.
7. Distribusi Lisensi
Hak-hak yang dimiliki oleh program harus dapat diaplikasikan oleh semua
orang yang menerima distribusi program tersebut, tanpa perlu penambahan
lisensi oleh pihak-pihak yang bersangkutan.
8. Lisensi Tidak Spesifik untuk Satu Produk
Hak-hak yang dimiliki program bukan karena program tersebut menjadi
bagian distribusi software tertentu. Jika program tersebut dipisahkan dari
distribusi tersebut dan digunakan atau didistribusikan di bawah lisensi
program, semua pihak yang menerima distribusi tersebut mempunyai hak
yang sama sebagaimana hak yang dipunyai oleh distribusi software asal.
9. Lisensi Tidak Membatasi Software Lain
Lisensi tidak boleh melakukan pembatasan terhadap software lain yang
didistribusikan bersama dengan software yang diberi lisensi. Misanya, lisensi
tidak boleh memaksa agar semua program lain yang didistribusikan melalui
medium yang sama harus merupakan open source software.
10. Lisensi Harus Netral terhadap Teknologi
Tidak ada syarat lisensi yang merupakan predikat dari suatu teknologi atau
gaya antarmuka tertentu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
C. Diagram Alir Data (DAD)/Data Flow Diagram (DFD)
DFD adalah suatu model logika data atau proses yang dibuat untuk
menggambarkan darimana asal data dan kemana tujuan data yang keluar dari
sistem, di mana data disimpan, proses apa yang menghasilkan data tersebut
dan interaksi antara data yang tersimpan dan proses yang dikenakan pada data
tersebut (Kristanto, 2003).
Simbol-simbol pada DFD (Sugiarto, 2003):
= penghasil/pemakai informasi yang berada di luar batas
sistem (h/w; orang; program lain; sistem lain)
= trasformasi informasi yang berada di dalam sistem
= item data/kumpulan item data, arah anak panah
menunjukkan arah aliran data
= gudang data yang tersimpan untuk dipakai oleh satu
atau beberapa proses
Entitas Eksternal
proses
item data
Simpanan data
D. Entity Relationship Diagram (ERD)
Menurut Oetomo (2002: 130) E-R Diagram berfungsi untuk
menggambarkan relasi antar dua entitas atau dua tabel. Ada tiga bentuk relasi,
yaitu satu-satu, satu-banyak, dan banyak-banyak (Kristanto, 2003).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
1. One to one relationship 2 entitas
Hubungan antara entitas pertama dengan entitas kedua adalah satu banding
satu (hubungan 1 : 1). Contoh: satu penjual melayani satu pembeli.
Gambar 2.1 one to one relationship 2 entitas
2. One to many relationship 2 entitas
Hubungan antara entitas pertama dengan entitas kedua adalah satu banding
banyak (hubungan 1 : N). Contoh: satu dosen mengajar banyak mahasiswa
Gambar 2.2 one to many relationship 2 entitas
3. Many to many relationship 2 entitas
Hubungan antara entitas pertama dengan entitas kedua adalah banyak
banding banyak (hubungan M : N). Contoh: banyak mahasiswa
mengambil banyak matakuliah.
Gambar 2.3 many to many relationship 2 entitas
layani Pembeli 1 1 Penjual
ambil Mahasiswa Matakuliah M N
mengajar Mahasiswa 1 N Dosen
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
E. Basis Data
Kumpulan file-file yang mempunyai kaitan antara satu file dengan file
yang lain sehingga membentuk satu bangunan data untuk menginformasikan
satu perusahaan, instansi dalam batasan tertentu (Kristanto, 2004).
Database merupakan komponen terpenting dalam pembangunan SI,
karena menjadi tempat untuk menampung dan mengorganisasikan seluruh
data yang ada dalam sistem, sehingga dapat dieksplorasi untuk menyusun
informasi-informasi dalam berbagai bentuk. Database merupakan himpunan
data yang saling berkaitan. Data tersebut diorganisasikan sedemikian rupa
agar tidak terjadi duplikasi yang tidak perlu, sehingga dapat diolah secara
cepat dan mudah untuk menghasilkan informasi (Oetomo, 2002).
F. Kamus Data
Kamus data merupakan kumpulan elemen-elemen/simbol-simbol yang
digunakan untuk membantu dalam penggambaran atau pengidentifikasian
setiap field di dalam sistem (Sugiarto, 2003). Simbol-simbol dari kamus data
berupa:
= terdiri dari
+ dan
( ) pilihan
{ }* iterasi (perulangan) n
kali
** komentar
[ ] memilih salah satu
alternatif
| pemisah item pilihan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
G. Normalisasi
Menurut Wijono (2005) bentuk-bentuk normal adalah suatu aturan yang
dikenal pada tabel-tabel dalam basisdata dan harus dipenuhi oleh tabel-tabel
tersebut pada level-level normalisasi. Suatu tabel dikatakan berada dalam
bentuk tertentu jika memenuhi kondisi tertentu.
1. 1nf
Suatu tabel dikatakan dalam bentuk normal pertama atau 1nf jika dan
hanya jika setiap atribut bernilai tunggal untuk setiap baris
2. 2nf
Suatu tabel dikatakan dalam bentuk normal pertama atau 2nf jika dan
hanya jika
a) Berada pada bentuk 1nf
b) Semua atribut bukan kunci memiliki dependensi sepenuhnya terhadap
kunci primer.
3. 3nf
Suatu tabel dikatakan dalam bentuk normal pertama atau 3nf jika dan
hanya jika
a) Berada pada bentuk 2nf
b) Setiap atribut bukan kunci tidak memiliki dependensi transitif terhadap
kunci primer.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
H. MySQL
Menurut Sidik (2005: 1) MySQL merupakan software sistem
manajemen database (Database Management System – DBMS) yang sangat
populer di kalangan pemrograman web, terutama di lingkungan Linux.
Kepopuleran MySQL dimungkinkan karena kemudahannya untuk digunakan,
cepat secara kinerja query, dan mencukupi untuk kebutuhan database
perusahaan-perusahaan skala menengah kecil.
Software database MySQL kini dilepas sebagai software manajemen
database yang open source, sebelumnya merupakan software database yang
shareware. Shareware adalah suatu software yang dapat didistribusikan
secara bebas untuk keperluan penggunaan secara pribadi, tetapi jika
digunakan secara komersial maka pemakai harus mempunyai lisensi dari
pembuatnya.
Software open source menjadikan software dapat didistribusikan secara
bebas dan dapat dipergunakan untuk keperluan pribadi atau pun komersial,
termasuk di dalamnya source code dari software tersebut.
1. Jenis Perintah SQL
a) Data Definition Language (DDL)
Merupakan kelompok perintah yang digunakan untuk melakukan
pendefinisian database dan pendefinisian tabel. Perintah dalam DDL dapat
digunakan untuk membuat tabel, mengubah struktur tabel, menghapus
tabel, membuat indeks untuk tabel, dan lain-lain yang bermuara pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
pembentukan struktur database. Contoh perintah membuat database
mahasiswa: create database mahasiswa.
b) Data Manipulation Language (DML)
Merupakan perintah SQL yang digunakan untuk melakukan manipulasi
data dalam database, menambahkan (insert), mengubah (update),
menghapus (delete), mengambil dan mencari data (query).
c) Data Control Language (DCL)
Merupakan perintah untuk melakukan pendefinisian pemakai yang boleh
mengakses database, dan apa saja privelege-nya. Fasilitas ini tersedia pada
sistem manajemen database yang memiliki fasilitas daengan membatasi
pemakai dan wewenangnya. Perintah SQL DCL: commit, roolback, grant,
revoke. Secara umum DCL digunakan untuk melakukan pengelolaan akses
dan manipulasi database, terutama perintah grant dan revoke. Perintah
commit dan rollback merupakan kelengkapan fasilitas yang berfungsi
untuk menyimpan atau membatalkan transaksi.
2. Fungsi Agregat
Fungsi agregat merupakan fungsi yang disediakan oleh SQL untuk
melakukan ringkasan (summary) data, bukan menampilkan data secara
keseluruhan. Perintah di dalam fungsi agregat yang disediakan
a) sum()
Fungsi ini digunakan untuk menjumlahkan isi field yang bertype
numerik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
b) avg()
Fungsi ini digunakan untuk menemukan nilai rata-rata dari isi field
yang bertype numerik.
c) max()
Fungsi ini digunakan untuk menemukan nilai terbesar dari isi field
yang bertype numerik.
d) min()
Fungsi ini digunakan untuk menemukan nilai terkecil dari isi field
yang bertype numerik.
e) count()
Fungsi ini digunakan untuk mengetahui jumlah record dari suatu tabel.
Parameter pada count() dapat berupa dana field atau karakter.
I. Gambas
Gambas merupakan salah satu produk open source dan free (Ridho, 2006:1).
Gambas bersifat object oriented dan berjalan di lingkungan Linux. Gambas
memiliki banyak kesamaan dengan Visual Basic namun Gambas bukan
merupakan kloning dari Visual Basic tetapi murni proyek open source di
bawah naungan GPL (General Public Licence).
Komponen dalam Gambas
1. Menu
Jendela menu merupakan area kerja utama pembuatan aplikasi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
2. Toolbox
Jendela toolbox adalah tempat untuk memilih komponen objek yang akan
digunakan dalam aplikasi, seperti label, text, table, combo, radiobutton,
button, dll.
3. Properti
Properti merupakan jendela untuk menentukan nilai-nilan dari suatu objek.
4. Form
Form merupakan tempat untuk meletakkan objek seperti label, button,
text, combo, table, dan sebagainya.
5. Kode Editor
Jendela kode editor digunakan untuk menulis semua kode program seperti
class, module, dan objek.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
BAB III
ANALISA DAN PERANCANGAN SISTEM
A. ANALISA SISTEM
1. Latar Belakang Pengembangan Sistem
Dalam sebuah minimarket merekam data penjualan selalu dilakukan oleh
setiap user (user yang memiliki jabatan sebagai kasir) dalam minimarket
pada saat terjadi transaksi penjualan. Setiap transaksi harus dilakukan
dengan cepat dan benar. Oleh karena itu dibutuhkan sistem yang dapat
membantu kerja user agar pencatatan dapat berjalan dengan baik dan
benar. Selain merekam data penjualan, terdapat proses lain di dalam
sebuah minimarket yaitu pencatatan data barang yang dilakukan oleh user
yang memiliki jabatan sebagai operator pergudangan. Setiap terjadi
pengurangan, penambahan atau pengubahan, data barang harus selalu
dicatat agar data barang selalu konsisten antara data di sistem dan data
yang nyata di gudang. User yang memiliki jabatan sebagai admin dapat
melakukan proses lihat data barang atau supplier serta user tersebut dapat
mengupdate data user yang menggunakan sistem. Sistem yang digunakan
minimarket pada umumnya masih menggunakan sistem operasi yang
terbebankan oleh biaya lisensi.
Untuk itu sistem informasi penjualan dan persediaan barang minimarket
menggunakan Gambas dan database Mysql di Linux dibutuhkan untuk
membantu mengatasi permasalahan di atas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
2. Gambaran Umum Sistem
a) Sistem yang sudah ada
Pada umumnya, sistem informasi yang digunakan dalam minimarket
menggunakan sistem yang masih dibebani oleh biaya lisensi. Sehingga
sebagian keuntungan minimarket harus dialokasikan ke biaya lisensi.
b) Sistem yang akan dibuat
Sistem informasi yang akan dibuat menggunakan sistem operasi linux.
Dengan menggunakan sistem ini, pihak minimarket tidak dibebani oleh
biaya lisensi dari sistem informasi yang digunakan.
Struktur organisasi minimarket secara garis besarnya adalah sebagai
berikut:
Manager/Admin
Kasir Operator Pergudangan
Gambar 3.1 Struktur Organisasi
Minimarket dipimpin oleh manager dalam sistem ini berperan sebagai
admin yang memiliki bawahan sebagai berikut:
a) bagian penjualan/user
b) bagian pergudangan/operator pergudangan
Pengguna sistem informasi penjualan dan pergudangan minimarket
ini adalah user, operator pergudangan dan manager/admin. Untuk dapat
menjadi pengguna sistem ini, maka orang harus mendapat persetujuan dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
manager/admin minimarket yang berhak penuh terhadap sistem untuk
menjadi user. Data user dimasukkan ke sistem oleh admin. User dapat
menggunakan sistem ini jika data user telah tercatat di dalam sistem.
User betugas untuk mencatat setiap transaksi penjualan yang
terjadi. Orang yang dapat menjadi user adalah orang yang cepat dan lincah
dalam menggunakan keyboard. Dalam sistem ini user memasukkan data
ke sistem sebagian besar menggunakan keyboard. User tidak dapat
menambah, mengubah atau menghapus data barang. User dapat mengubah
data password dengan cara memasukkan password yang saat ini di
gunakan yang akan disesuaikan dengan password yang ada pada tempat
penyimpanan. Jika password sesuai, kemudian user memasukkan
password baru sesuai dengan keinginan user.
Operator pergudangan bertanggung jawab penuh terhadap
kebenaran data barang yang ada pada sistem. Artinya, jika ada
penambahan barang baru atau ada data barang yang berubah, maka data
yang ada pada sistem harus disesuaikan dengan kenyataan digudang.
Operator pergudangan harus teliti pada saat memasukkan, mengubah atau
menghapus data barang. Data barang yang ada pada sistem harus sesuai
dengan barang yang ada pada gudang. Hal ini dikarenakan data barang
berpengaruh pada sistem penjualan dan laporan persediaan barang.
Operator pergudangan juga dapat mengubah password dimana cara
mengubah password tidak berbeda dengan cara user mengubah password.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Manager dalam sistem ini berperan sebagai admin. Admin bertugas
sebagai pengendali utama sistem. Admin dapat melihat laporan penjualan
harian, bulanan, tahunan dan melihat laporan persediaan barang. Admin
juga dapat mengubah data manager/admin, user, operator pergudangan.
Admin memiliki hak penuh atas sistem.
3. Analisa Kebutuhan
Sistem yang akan dikembangkan ini diharapkan dapat digunakan untuk
membantu user dan operator pergudangan dalam merekam data penjualan
maupun kontrol sirkulasi barang agar dapat berjalan secara efektif dan
efisien. Rincian kebutuhan pemakai sistem adalah sebagai berikut:
Tabel 3.1 Kebutuhan Pemakai
No Pemakai Kebutuhan
1 Bagian kasir a) Mencatat transaksi penjualan
b) Mengubah data password
2 Bagian operator pergudangan a) Mencari data barang/supplier
b) Melihat detail data barang/supplier
c) Mencatat data barang baru
d) Mengubah/menghapus data barang
e) Menambah data supplier baru
f) Mengubah/menghapus data supplier
g) Mengubah data password
3 Bagian manager/admin a) Mencari data barang/supplier
b) Melihat detail data barang/supplier
c) Melihat laporan penjualan
d) Mencari data user
e) Menambah data user
f) Mengubah/menghapus data user
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Hardware dan software yang digunakan penulis dalam pembuatan sistem ini:
1) Software a. Bahasa pemrograman : Gambas 1.9.23
b. Database : MySql 5.0.18
c. Sistem operasi : SUSE Linux 10.1
2) Hardware a. Proccessor : Intel(R) Pentium(R) 4 CPU 2.80GHz
b. RAM : 1016 MB
c. VGA : 128 MB
d. Hard Disk : 80 GB
e. Resolusi monitor : 1024 x 768 pixel
B. DESKRIPSI UMUM SISTEM
Nama Sistem : Sistem Informasi Penjualan dan Persediaan Barang
Minimarket Berbasis Linux.
Tujuan sistem : membuat Sistem Informasi Penjualan dan Persediaan Barang
Minimarket Berbasis Linux agar kinerja user, manager dan operator
pergudangan lebih efektif dan efisien.
C. DESAIN PROSES
Proses jalannya sistem dapat dilihat dari proses aliran data yang terjadi
melalui diagram konteks yang dipandang dari 3 sisi pengguna (User), yaitu:
sisi User, Operator Pergudangan dan sisi manager seperti pada gambar
berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
1. Diagram konteks
Gambar 3.2 Diagram Konteks
0SI Penjualan dan
Pergudangankasir
manager
operator
data barang terupdatePesan interaksi
data supplier terupdate
Data login
password lamapassword baru
data supplier terupdate
data supplier barudata hapus supplier
data barang terupdate
data barang barudata hapus barang
data login
Data cari barangpassword baru
Data jumlah jual barangjumlah bayar
Password lama
Data transaksi
pesan interaksidata barang
data jumlah jual barangjumlah kembalian
data user terupdatedata
use
r ter
upda
teda
ta s
uppl
ier
data logindata cari laporandata cari barang
data
bar
ang
data cari supplier
data user barudata hapus user
data
lapo
ran
Pesa
n in
tera
ksi
Pada gambar diagram konteks di atas ada beberapa data menggunakan data
komposit. Maksudnya, dilakukan pengelompokan data dengan tujuan agar
gambar diagram konteks tidak terlalu kompleks dan mudah dimengerti.
Berikut penjelasan dari data-data komposit diagram konteks:
a) Data login meliputi id_User(kasir, operator, manager), password.
b) Data User menggantikan data kasir, operator pergudangan dan manager,
yaitu meliputi ID user, nama user, alamat, nomer telepon, jenis kelamin,
tempat lahir, tanggal lahir, password, jabatan, foto.
c) Password baru dan password lama merupakan data password yang
digunakan untuk mengganti password dari user kasir dan user operator
pergudangan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
d) Pesan interaksi merupakan segala bentuk pesan dari sistem ke User yang
bertujuan sebagai sarana komunikasi User dengan sistem.
e) Data barang meliputi ID barang, nama barang, jenis barang, warna, jumlah
barang, jumlah minimum, discount, harga beli, harga jual, tanggal
kadaluarsa, batas kadaluarsa, keterangan barang, ID supplier.
f) Data supplier meliputi ID supplier, nama supplier, alamat toko, nomer
telepon, status supplier, website/email.
g) Data laporan merupakan data yang sama dengan data jual meliputi ID jual
(ID nota penjualan), tanggal penjualan, jumlah barang yang dijual, total
harga, ID user, ID barang.
h) Data cari (barang, supplier, laporan) merupakan data yang digunakan
sebagai kata kunci untuk mencari data yang bersangkutan.
i) Data hapus berkaitan dengan data cari, dimana merupakan kata kunci
untuk mencari data yang bersangkutan yang akan dihapus.
j) Data transaksi merupakan ID barang, jumlah jual barang.
k) Jumlah bayar atau jumlah kembalian merupakan harga dalam satuan
rupiah yang harus dibayar atau dikembalikan.
Dari diagram konteks di atas terdapat proses besar yang dapat dipecah
menjadi beberapa level proses. Sehingga sistem yang digambarkan menjadi
mudah untuk dimengerti.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
2. Diagram alir data level 1 Sisi kasir
1PenjualanKasir
data login
pesan interaksiuser
barang
jualData cari barangpassword baru
Data jumlah jual barangjumlah bayar
data barangdata jumlah jual barangjumlah kembalian
password validpassword lama
data kasir
data barangData jumlah jual barang
data jual
Password lama
Data transaksi
Gambar 3.3 DAD level 1 Sisi kasir
Pada level 1 untuk sisi kasir terdapat tempat penyimpanan jual. Tempat
penyimpanan jual akan digunakan sebagai tempat penyimpanan laporan.
3. Diagram alir data level 1 Sisi operator
2Pergudangan
operatorData login
Pesan interaksi user
barang
data barang terupdate
supplierData supplierpassword lama
password baru
data barangdata barang valid
Data op_pergd
Password lamapassword valid
data supplier valid
data supplier terupdate
data supplier terupdate
data supplier barudata hapus supplier
data barang terupdate
data barang barudata hapus barang
Gambar 3.4 DAD level 1 Sisi operator
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
4. Diagram alir data level 1 Sisi manager
Gambar 3.5 DAD level 1 Sisi Manager
5. Diagram alir data level 2 untuk proses Penjualan
Gambar 3.6 DAD level 2 Proses Penjualan (proses 1)
Pada level 2 untuk proses penjualan terdapat 4 proses dan 3 tempat
penyimpanan yaitu proses validasi login, rekam data penjualan, ubah
password dan validasi password dan tempat penyimpanannya adalah jual,
barang, dan user(user dengan jabatan user). Proses rekam data penjualan
manager
data user terupdate
data user terupdatedata supplier
data logindata cari laporan
3Admin
user
jual
Data barang
data user
data user valid
data cari barang
data barang
barang
Data supplier supplier
data laporan
data cari supplier
data user barudata hapus user
data laporanPesan interaksi
kasir 1.1Validasi login
Data loginData login invalid
1.2Rekam data penjualan
1.3Ubah
password
Data login valid
Data login valid
userdata kasir
Password lama
password lamapassword baru
barang
Data cari barangjumlah jual barangjumlah bayar
jumlah kembalian
Data barangdata jumlah jual barang
data jumlah jual barang
Data barang
jualData jual
pass
wor
d va
lid
Pesan gagal
1.4Validasi
password
password barupassword tidak valid
data kasir
Data transaksi
Pesan interaksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
digunakan untuk mencatat setiap transaksi penjualan yang terjadi. Proses ini
menggunakan tempat penyimpanan barang untuk pengecekan kebenaran data
barang dan tempat penyimpanan jual untuk menyimpan hasil dari transaksi
penjualan. Proses validasi login merupakan proses pertama yang dilakukan
user sebelum proses yang lain dapat dilakukan. Proses ini berguna untuk
mengecek kebenaran data dari pengguna atau user dengan tempat
penyimpanan user. Proses ubah password digunakan oleh user pada saat ingin
mengubah password lama yang ada pada tempat penyimpanan user menjadi
password baru sesuai dengan yang diinginkan user. Proses validasi password
digunakan untuk mengecek kebenaran antara password yang dimasukkan
dengan password lama yang terdapat pada tempat penyimpanan.
6. Diagram alir data level 2 untuk proses Pergudangan
operator2.1
Validasi loginData login
Data login invalid
2.2Update data
barang
2.3Ubah
password
Data login valid
Data login valid
userData op_pergd
Password lama
Pass
wor
d va
lid
Password lamaPassword baru
barangData barang valid
Data barang
Data barang terupdate
Data barang terupdate
supplierData supplier
2.4Validasi
passwordPesan gagalpassword baru
password tidak valid
Pesan interaksi
2.5Update data
supplier
Data login valid
Data supplier
Data supplier valid
Pesan interaksiData supplier terupdate
Data supplier terupdate
Data hapus barang
Data barang baru
Data hapus supplierData supplier baru
Gambar 3.7 DAD level 2 Proses Pergudangan (proses 2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Pada level 2 untuk proses pergudangan terdapat 5 proses dan 3 tempat
penyimpanan yaitu proses validasi login, update data barang, ubah password,
validasi password, update data supplier dan tempat penyimpanannya adalah
barang, user (user dengan jabatan operator) dan supplier. Proses update data
barang digunakan operator pergundangan untuk menambah, mengubah atau
menghapus data barang dengan menggunakan tempat penyimpanan barang.
Proses validasi login merupakan proses pertama yang dilakukan operator
pergudangan sebelum proses yang lain dapat dilakukan. Proses ini berguna
untuk mengecek kebenaran data dari pengguna atau operator pergudangan
dengan tempat penyimpanan user. Proses ubah password digunakan oleh
operator pergudangan pada saat ingin mengubah password lama yang ada
pada tempat penyimpanan user menjadi password baru sesuai dengan yang
diinginkan operator pergudangan. Proses update data supplier digunakan
operator pergundangan untuk menambah, mengubah atau menghapus data
supplier dengan menggunakan tempat penyimpanan supplier. Proses validasi
password digunakan untuk mengecek kebenaran antara password yang
dimasukkan dengan password lama yang terdapat pada tempat penyimpanan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
7. Diagram alir data level 2 untuk proses Admin
Manager 3.2Validasi login
3.3Update User
Data loginData login invalid
Data login valid
user
data user
Data user terupdate
3.1Lihat laporan
jual
Data laporan
Data login valid
Data cari laporanData laporan
data userdata user valid
pesan gagal
pesan interaksi
Data user terupdate
3.4Lihat data
barang
Data login valid
barangData barang
Data cari barangData barangpesan gagal
Data hapus userData user baru
3.5Lihat data supplier
supplier
Data supplier
Data login valid
Data cari supplier
pesan gagalData supplier
Gambar 3.8 DAD level 2 Proses Admin (proses 3)
Pada level 2 proses admin terdapat 5 proses yaitu lihat laporan, lihat data
barang, lihat data supplier, validasi login, dan update User. Proses lihat data
barang, lihat data supplier dan lihat laporan digunakan manager untuk
menampilkan data supplier, persediaan barang atau laporan penjualan harian,
bulanan atau tahunan. Proses ini mengambil data dari tempat penyimpanan
jual, tempat penyimpanan supplier atau tempat penyimpanan barang. Proses
validasi login merupakan proses pertama yang dilakukan manager sebelum
proses yang lain dapat dilakukan. Proses ini berguna untuk mengecek
kebenaran data dari pengguna atau manager dengan tempat penyimpanan
manager. Proses update User digunakan untuk mengubah data User
(manager, user, operator pergudangan) jika terdapat data yang kurang benar.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Proses ini menggunakan tempat penyimpanan manager, user, dan operator
pergudangan.
8. Diagram alir data level 3 untuk proses rekam data penjualan
kasir
1.2.1Rekam
penjualan
login valid
user
barang
Data cari barang
jumlah jual barangjumlah bayar
jumlah kembalian
Data barangdata jumlah jual barang
data jumlah jual barang
Data barang
jualData jual
1.2.2Cari data barang
Data barang
login valid
Data transaksi
Data transaksi
Pesan interaksi
Data kasir
Gambar 3.9 DAD level 3 Proses Update Data Barang (proses 1.2)
9. Diagram alir data level 3 untuk proses Update data barang
operator2.2.2
Edit data barang
2.2.1Tambah data
barang
2.2.3Hapus data
barang
barang
Data barang baru Data barang baru
Data barang
Data hapus barang
Data barang terupdateData barang terupdate
Informasi hapus data
Pesan gagal
Pesan gagal
2.2.4Validasi data
barang
Data barang tidak valid
Data barang validData barang tidak valid
supplier
Data barang
Data supplier
login valid
login valid
login valid
Data barang terupdate
Gambar 3.10 DAD level 3 Proses Update Data Barang (proses 2.2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
Pada level 3 untuk proses update data barang terdapat 4 proses yaitu
proses tambah data barang, edit data barang, hapus data barang, validasi data
barang dan terdapat 2 tempat penyimpanan yaitu barang dan supplier. Proses
tambah data barang digunakan untuk menambah data barang baru. Proses ini
menggunakan tempat penyimpanan barang untuk mengecek data barang pada
proses validasi data barang apakah data barang valid atau tidak. Tempat
penyimpanan barang pada proses ini terutama digunakan untuk menyimpan
data barang yang baru. Sedangkan tempat penyimpanan supplier digunakan
untuk mengecek apakah ID supplier yang dimasukkan sama dengan ID yang
berada pada tempat penyimpanan supplier pada saat menyimpan data yang
baru. Proses edit data barang digunakan untuk mengedit data barang yang
sudah ada. Proses ini menggunakan tempat penyimpanan barang untuk
mengecek data barang apakah data barang valid atau tidak. Tempat
penyimpanan barang pada proses ini terutama digunakan untuk menyimpan
data barang yang telah terupdate. Proses hapus data digunakan untuk
menghapus data barang yang sudah tidak digunakan lagi. Proses ini
menggunakan tempat penyimpanan barang untuk mengecek kebenaran data
barang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
10. Diagram alir data Level 3 untuk proses Update data Supplier
operator2.5.2
Edit data supplier
2.5.1Tambah data
supplier
2.5.3Hapus data
supplier
supplier
Data supplier baru Data supplier baru
Data supplier
Data hapus supplier
Data supplier terupdateData supplier terupdate
pesan hapus data
Pesan gagal
Pesan gagal
2.5.4Validasi data
supplier
Data supplier tidak valid
Data supplier validData supplier tidak valid
Data supplier
login valid
login valid
login valid
Data supplier terupdate
Gambar 3.11 DAD level 3 Proses Update Data Supplier (proses 2.5)
11. Diagram alir data level 3 untuk proses Update User
manager 3.3.2Edit data user
3.3.1Tambah data
user
3.3.3Hapus data
user
Data user baru Data user baru
Data hapus user
Data user terupdateData user terupdate
Informasi hapus data
Pesan gagal
Pesan gagal
3.3.4Validasi data
user
Data user tidak valid
Data user tidak valid
login valid
login valid
login valid
Data user terupdate
user
Dat
a us
er v
alid
Data user
Dat
a us
er
Gambar 3.12 DAD level 3 Proses Update User (proses 3.3)
Pada DAD level 3 proses update data supplier dan DAD level 3 proses
update User terdapat proses validasi data supplier dan validasi data User.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Kedua proses ini memiliki fungsi yang sama yaitu mengecek apakah data
supplier atau data User yang ditambahkan atau diubah tersebut sudah sesuai
dan benar dengan data yang berada pada tempat penyimpanan supplier dan
User.
12. Kamus data/Data dictionary Data Penjelasan
Angka { 0-9 } Huruf { A-Z | a-z } data login { id_user + passwd } data login valid * keadaan login sudah valid atau benar * data login invalid * keadaan login belum benar ataubelum valid * data user id_user + nm_user + alamat + no_telp + jk +
tmp_lhr + tgl_lhr + passwd + status data user baru * data user yang terbaru dalam sistem * data user terupdate * data user yang telah terupdate * data user valid * data user sudah benar atau sudah valid * data user tidak valid * data user tidak benar atau tidak valid * id_user { angka }5
nm_user { huruf | | }20
Alamat { huruf | | }50
no_telp { angka }12
Jk { pria | wanita } tgl_lhr Tanggal tmp_lhr { huruf }10 Tanggal dd + / + mm + / + yyyy Dd { 01-31 } Mm { 01-12 } Yyyy { 19 | 20 }+{ angka }2
Passwd { huruf | angka }8
Status aktif | pasif
pesan gagal * salah satu pesan dari sistem yang menunjukkan bahwa proses yang dilewati gagal *
informasi hapus data * salah satu informasi bahwa data telah terhapus * data supplier baru * data supplier yang terbaru dalam sistem * data supplier id_supplier + nm_supp + alamat_toko + no_telp +
status + website id_supplier { angka }6
nm_supp { huruf | | }20
alamat_toko { huruf | | }50
data supplier terupdate * data supplier yang telah terupdate * data supplier tidak valid * data supplier tidak benar atau tidak valid *
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
data supplier valid * data supplier sudah benar atau sudah valid * data barang { id_brg + nm_brg + jenis + warna + jml_brg +
jml_min + discount + hrg_beli + harga + v_date + batas + ket + kd_supply }
id_brg { angka }5
nm_brg { huruf }20
Jenis { huruf }20
Warna { huruf }10
jml_brg { angka }3
jml_min { angka }3
Discount { angka }2 + % hrg_beli Rp + { angka }7
Harga Rp + { angka }7
v_date Tanggal Batas { angka }3 + hari Ket { huruf }60
kd_supply id_supplier data barang baru * data barang yang terbaru dalam sistem * data barang terupdate * data barang yang telah terupdate * data barang tidak valid * data barang yang tidak benar atau tidak valid * data barang valid * data barang yang sudah benar atau sudah valid * data cari barang { nm_brg | ket | supplier } data jual { id_jual | tgl_jual | jml_jual_brg | tot_harga |
kd_user | kd_brg } id_jual { angka }6
tgl_jual tanggal + jam Jam hh + : + mm + : + ss Hh { 00-23 } Mm { 00-59 } Ss { 00-59 } jml_jual_brg { angka }3
tot_harga Rp + { angka }7
kd_user id_user kd_brg id_brg data laporan data jual pesan interaksi * segala bentuk informasi dari sistem ke User
sebagai sarana komunikasi * password baru * password yang terbaru dalam sistem * password lama * password yang ada pada sistem sekarang * password valid * password sudah benar atau sudah valid * password tidak valid * password tidak benar atau tidak valid * jumlah kembalian Rp + { angka }7
data jumlah jual barang { angka }3
jumlah bayar Rp + { angka }7
jumlah jual barang { angka }3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
D. DESAIN BASIS DATA
1. Entity Relationship Diagram (ERD)
user jual
barang
M
id_user
nm_user
passwd
alamat
no_telp
jk tmp_lhr id_brg
nm_brg
jml_brg
jum_min
v_date
discount
id_jual waktu
jml_jual_brg
supplysupplier
id_supplier nm_supplier
statusno_telp
1N
alamat_toko
Ntgl_lhr
jabatan
status
website
jenis_brgwarna
hrg_beli
harga
ket
batas
id_jenis
Gambar 3.13 Diagram Relasi Entitas
Dari ERD di atas dapat dilihat banyak user dapat menjual banyak barang
sehingga menghasilkan sebuah tabel baru yaitu tabel jual. Dalam hal ini, user
yang berperan adalah user yang memiliki jabatan kasir. Tabel jual digunakan
untuk mencatat setiap transaksi penjualan. Key dari tebel jual adalah id_jual.
Di dalam barang akan terdapat atribut kd_supply, hal ini disebabkan oleh
relasi antara supplier dan barang one-to-many (1 to N). Kd_supply ini
digunakan untuk menemukan supplier dari barang tersebut. Satu supplier
dapat mensupply lebih dari satu barang tetapi satu barang dengan satu kode
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
hanya disupply oleh satu supplier. Ini dimaksudkan untuk mempermudah
dalam permintaan barang atau komplain mengenai barang.
2. Mendefinisikan tabel dalam program untuk sistem (mapping)
Sesuai dengan fungsi pertama yaitu penyimpanan data maka penyim-
panan data yang ada pada Sistem Informasi ini dibagi dalam suatu kumpulan
data yang disimpan dalam suatu file berbentuk tabel. Himpunan entitas
tersebut digambarkan pada tabel-tabel seperti di bawah ini:
1. Tabel entitas user
id_user nm_user Alamat no_telp jk
tmp_lhr tgl_lhr Passwd Jabatan status
Dalam tabel user terdapat 10 atribut. Key dari tabel user adalah id_user.
Status pada tabel user diatas bermaksud apakah user tersebut masih aktif atau
tidak. Untuk user yang berstatus kasir tidak dapat dihapus jika user tersebut
pernah melakukan transaksi penjualan. Data user yang dapat dihapus adalah
data user yang tidak memiliki hubungan dengan data-data yang ada pada
sistem.
2. Tabel entitas barang
id_brg nm_brg jenis_brg id_jenis warna jml_brg
jml_min discount hrg_beli harga v_date ket Batas
Key di dalam tabel barang adalah id_brg. Id_jenis pada tabel barang
digunakan untuk menentukan id barang baru yang akan dimasukkan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
selanjutnya. Id_brg ditentukan berdasarkan id_jenis pada jenis barang tertentu
dengan melihat acuan nilai id_brg yang paling terakhir. Yang dimaksud
dengan v_date pada tabel barang adalah tanggal kadaluarsa. Batas pada tabel
barang berarti batas untuk mengingatkan barang tersebut sudah mendekati
tanggal kadaluarsa.
3. Tabel entitas supplier
id_supplier nm_supplier no_telp alamat status website
Di dalam tabel supplier, id_supplier merupakan sebuah kunci (key).
Status pada tabel di atas berarti apakah supplier tersebut masih aktif
mensupply barang atau tidak.
4. Tabel entitas jual
id_jual waktu jml_jual_brg
Tabel jual merupakan tabel yang terbentuk karena adanya hubungan
many-to-many (M to N) antara tabel user dan tabel barang. Di dalam tabel
jual, id_jual merupakan kunci (key). Jika terjadi hubungan many-to-many,
setiap key dari tabel yang berhubungan akan masuk ke tabel yang baru
terbentuk. Kedua key tersebut disebut kunci tamu (foreign key).
3. Relasi ternormalisasi
Basis data dalam suatu sistem harus mengalami proses normalisasi.
Syarat normalisasi suatu basis data adalah sebagai berikut:
1. Bentuk normal pertama
Suatu tabel dikatakan dalam bentuk normal pertama (1nf) jika setiap
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
atribut bernilai tunggal untuk setiap baris.
user(id_user, nm_user, alamat, no_telp, jk, tmt_lhr, tgl_lhr, passwd, jabatan,
status)
id_user nm_user Alamat no_telp jk
tmp_lhr tgl_lhr Passwd Jabatan status
barang(id_brg, nm_brg, jenis_brg, id_jenis, warna, jml_brg, jml_min,
discount, hrg_beli, harga, v_date, ket, batas, kd_supply)
id_brg nm_brg jenis_brg id_jenis warna jml_brg jml_min
discount hrg_beli Harga v_date ket batas kd_supply
Kd_supply muncul disebabkan relasi antara tabel supplier dan barang one-to-
many (1 to M). kd_supply digunakan untuk mencari data supplier dari barang
tersebut.
supplier(id_supplier, nm_supp, alamat, no_telp, nm_toko)
id_supplier nm_supp alamat no_telp nm_toko
jual (id_jual, kd_brg, kd_user, waktu, jml_jual_brg)
id_jual kd_brg kd_user waktu jml_jual_brg
Pada tabel jual terdapat 3 key yaitu id_jual, kd_brg, kd_user. Kd_brg
merupakan atribut yang berasal dari tabel barang dan bernilai sama dengan
id_brg pada tabel barang. Sedangkan kd_user merupakan atribut yang berasal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
dari tabel user dengan jabatan kasir, kd_user bernilai sama dengan id_user.
Kedua atribut tersebut masuk ke dalam tabel jual karena hubungan antara tabel
user dan barang adalah many-to-many (M to N).
2. Bentuk normal kedua
Suatu tabel dikatakan dalam bentuk normal kedua (2nf) jika tabel berada
pada bentuk 1nf dan semua atribut bukan kunci memiliki dependensi
sepenuhnya terhadap kunci primer.
user(id_user, nm_user, alamat, no_telp, jk, tmt_lhr, tgl_lhr, passwd, jabatan,
status)
Dari setiap atribut pada tabel user sudah memiliki dependensi
sepenuhnya terhadap kunci primer
barang(id_brg, nm_brg, jenis_brg, id_jenis, warna, jml_brg, jml_min, discount,
hrg_beli, harga, v_date, ket, batas, kd_supply)
Pada tabel barang terdapat atribut id_jenis yang memiliki dependensi
terhadap atribut jenis_brg sehingga perlu dibuat tabel baru dengan nama
tabel jenis. Sehingga tabel barang dan tabel jenis akan menjadi:
barang(id_brg, nm_brg, jenis_brg, warna, jml_brg, jml_min, discount,
hrg_beli, harga, v_date, ket, batas, kd_supply)
jenis(id_jenis, jenis)
Dengan tabel jenis ini maka setiap atribut pada tabel barang memiliki
dependensi terhadap kunci primer. Begitu juga dengan tabel jenis, atribut
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
jenis memiliki dependensi terhadap id_jenis.
supplier(id_supplier, nm_supp, alamat, no_telp, nm_toko)
Pada tabel supplier setiap atribut sudah memiliki dependensi terhadap
kunci primer.
jual (id_jual, kd_brg, kd_user, waktu, jml_jual_brg)
Pada tabel jual setiap atribut sudah memiliki dependensi terhadap kunci
primer.
3. Bentuk normal ketiga
Suatu tabel dikatakan dalam bentuk normal ketiga (3nf) jika tabel berada
pada bentuk 2nf dan setiap atribut bukan kunci tidak memiliki dependensi
transitif terhadap kunci primer.
Dari tabel-tabel di bawah ini sudah berbentuk normal ketiga. Hal ini
disebabkan setiap tabel dibawah ini memiliki makna tunggal untuk setiap
atribut. Kemudian dari setiap tabel memiliki atribut-atribut yang
bergantung pada kunci primer. Kemudian setiap tabel memiliki atribut-
atribut yang bukan kunci tidak memiliki dependensi transitif terhadap
kunci primer.
user(id_user, nm_user, alamat, no_telp, jk, tmt_lhr, tgl_lhr, passwd, jabatan,
status)
barang(id_brg, nm_brg, jenis_brg, warna, jml_brg, jml_min, discount,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
hrg_beli, harga, v_date, ket, batas, kd_supply)
jenis(id_jenis, jenis)
supplier(id_supplier, nm_supp, alamat, no_telp, nm_toko)
jual (id_jual, kd_brg, kd_user, waktu, jml_jual_brg)
E. DESAIN INPUT DAN OUTPUT
1. Input kepada sistem
Agar sistem dapat berjalan sebagaimana mestinya, sebuah sistem
membutuhkan input yang memadai dengan ketentuan yang telah ditentukan.
Input tersebut dapat berupa data variabel, yaitu:
1. No Id
2. password
3. nama User
4. alamat
5. no telepon
6. jenis kelamin
7. tempat lahir
8. tanggal lahir
9. id barang
10. nama barang
11. jumlah barang
12. discount
13. harga barang
14. tanggal kadaluarsa
15. jumlah bayar
16. kode supplier
17. nama supplier
18. alamat toko
19. website/email
Dari keseluruhan input yang dibutuhkan sistem. Semua input tersebut
tidak dimasukkan secara serentak dan bersamaan, tetapi melalui jendela-
jendela yang berbeda.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
2. Output dari sistem
Sebuah sistem tentunya dibangun untuk memberikan kemudahan bagi
penggunanya dalam melakukan pekerjaan mulai dari proses hingga hasil
output yang dibutuhkan. Sistem Informasi Penjualan dan Persediaan Barang
Minimarket Berbasis Linux memiliki beberapa output sebagai berikut:
a) Informasi yang tentang penjualan barang:
a. Informasi total harga
b. Informasi harga barang
c. Informasi pembayaran
d. Informasi jumlah sisa pembayaran
b) Informasi yang terupdate mengenai persediaan barang
a. Informasi data barang
b. Informasi grafik barang
c. Informasi tanggal kadaluarsa barang
c) Laporan penjualan harian, bulanan dan tahunan
d) Laporan persediaan barang/stok barang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
F. DESAIN ANTARMUKA PEMAKAI
1. Rancangan Struktur Menu
a) Manager
Login
Lihat Data Laporan Menu User Keluar
Barang
Supplier
Detail Barang
Cetak Barcode
Lihat Data Supplier
Lihat Laporan
Stok Barang
Penjualan
Laporan Penjualan Harian
Laporan Penjualan Bulanan
Laporan Penjualan Tahunan
Lihat Data User
Detail Data User
Tambah User
Tambah User
Keluar
Gambar 3.14 Rancangan Struktur Menu Manager
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
b) Operator Pergudangan
Login
Lihat Data Tambah Data Menu Operator Keluar
Barang
Supplier
Detail Barang
Cetak Barcode
Lihat Data Supplier
Barang
Lihat Data Supplier
Supplier
Ubah Profil Keluar
Tambah Barang
Detail Barang
Tambah Barang
Lihat Data Supplier
Gambar 3.15 Rancangan Struktur Menu Operator Pergudangan
c) Kasir
Login
Menu Kasir Bantuan
KeluarBantuan
Keluar
Ubah Profil
Gambar 3.16 Rancangan Struktur Menu Kasir
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
2. Rancangan Halaman Antarmuka
LOGINID user
Password
Login Tutup
Gambar 3.17 Antarmuka Login
Petunjuk/bantuan menu Petunjuk hak akses
MENU MANAGER/OPERATOR
FOTO MANAGER/OPERATOR
Tentang penulis
Gambar 3.18 Antarmuka Halaman Manager dan Operator Pergudangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
MENU KASIR NAMA MINIMARKET
Tentang penulis
Petunjuk/bantuan kasir
Total Bayar
Tabel penjualan barang
Kode Nota
Kode barang
Gambar 3.19 Antarmuka Halaman Kasir
Tentang penulis
Keterangan tabel (Jika perlu)
Nama
Tabel data barang/supplier/user
Lihat Data Barang/Supplier/user
Tutup
Detail data barang/ supplier/user: Detail1: Detail2: Detail3: Detail4: Dst…
Cari Detail Kategori 1 Kategori 2
Gambar 3.20 Antarmuka Halaman Lihat Data (Barang, Supplier, user)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Detail data barang: Detail1: Detail2: Detail3: Detail4: Detail5: Detail6: Detail7: Detail8: Detail9: Dst…
Detil Data Barang
Tutup
Grafik penjualan barang bulanan untuk tiap tahun
Cetak barcode Ubah/Simpan Hapus
Gambar 3.21 Antarmuka Halaman Detail/Ubah Data Barang
Detail data supplier/user: Detail1: Detail2: Detail3: Detail4: Detail5: Detail6: Detail7: Detail8: Detail9: Dst…
Detil Data Supplier/User
Tutup
Petunjuk/ bantuan/ keterangan ubah data supplier/user
Ubah/Simpan Hapus
Gambar 3.22 Antarmuka Halaman Detail/Ubah Data Supplier/User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Detail data Barang/supplier/user: Detail1: Detail2: Detail3: Detail4: Dst…
Tambah Data Barang/Supplier/User
Tutup
Petunjuk/ bantuan/ keterangan tambah data barang/ supplier/user
Tambah Ulangi
Gambar 3.23 Antarmuka Halaman Tambah Data (Barang, Supplier,
User)
Tutup
Stok barang
Penjualan
LIHAT LAPORAN
Gambar 3.24 Antarmuka Halaman Pilih Laporan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Tutup
Harian
Pilih Kategori Penjulan
LAPORAN PENJUALAN
Tahunan Bulanan
Gambar 3.25 Antarmuka Halaman Pilih Laporan Penjualan
Tutup
Harian
LAPORAN PENJUALAN
Tahunan Bulanan
Pilih Tanggal dd mmm yyyy
OK
Gambar 3.26 Antarmuka Halaman Laporan Penjualan Harian
Tutup
Harian
LAPORAN PENJUALAN
Tahunan Bulanan
Pilih Tahun Pilih Bulan
OK
Gambar 3.27 Antarmuka Halaman Laporan Penjualan Bulanan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
Tutup
Harian
LAPORAN PENJUALAN
Tahunan Bulanan
Pilih Tahun OK
Gambar 3.28 Antarmuka Halaman Laporan Penjualan Tahunan
FOTO ID user
Nama user
Alamat user
Masukkan password
Password baru
Verifikasi Password baru
Gambar 3.29 Antarmuka Halaman Ubah Password (user, Operator)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
BAB IV
IMPLEMENTASI SISTEM
A. Implementasi Basis Data
Setelah membuat perancangan basis data dalam tahap perancangan,
maka tahap selanjutnya adalah tahap merealisasikan ke bentuk basis data
sebenarnya. Pada bagian awal telah disebutkan sistem ini menggunakan basis
data MySql dan menggunakan bahasa pemrograman Gambas pada sistem
operasi Linux, maka basis data sistem akan dibuat menggunakan Module pada
Gambas. Jika basis data pada MySql belum ada, maka basis data akan dibuat
secara otomatis oleh Module ini pada saat sistem dijalankan.
Module yang digunakan diberi nama Mdatabase, berikut adalah
programnya:
PROCEDURE CreateDatabase(hConn AS Connection, sDatabase AS String) DIM hTable AS Table ' membuat tabel barang hTable = hConn.Tables.Add("barang", "MyISAM") WITH hTable .Fields.Add("id_brg", gb.Integer) .Fields.Add("nm_brg", gb.String, 60) .Fields.Add("jenis_brg", gb.String, 40) .Fields.Add("warna", gb.String, 20) .Fields.Add("jml_brg", gb.Integer) .Fields.Add("jml_min", gb.Integer) .Fields.Add("discount", gb.Integer) .Fields.Add("hrg_beli", gb.Integer) .Fields.Add("harga", gb.Integer) .Fields.Add("v_date", gb.Date) .Fields.Add("kd_supply", gb.Integer) .Fields.Add("ket", gb.String, 100) .Fields.Add("batas", gb.Integer,, 0)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
.PrimaryKey = ["id_brg"] .Update END WITH ' membuat tabel jenis hTable = hConn.Tables.Add("jenis", "MyISAM") WITH hTable .Fields.Add("id_jenis", gb.Integer) .Fields.Add("jenis", gb.String, 40) .PrimaryKey = ["id_jenis"] .Update END WITH ' membuat tabel jual hTable = hConn.Tables.Add("jual", "MyISAM") WITH hTable .Fields.Add("id_jual", gb.Integer) .Fields.Add("kd_brg", gb.Integer) .Fields.Add("kd_kasir", gb.Integer) .Fields.Add("jml_jual_brg", gb.Integer) .Fields.Add("waktu", gb.String, 20) .PrimaryKey = ["id_jual", "kd_brg", "kd_kasir"] .Update END WITH ' membuat tabel log digunakan untuk melihat siapa dan kapan sistem digunakan hTable = hConn.Tables.Add("log", "MyISAM") WITH hTable .Fields.Add("nama_user", gb.String, 40) .Fields.Add("jabatan", gb.String, 10) .Fields.Add("waktu", gb.String, 20) .PrimaryKey = ["waktu"] .Update END WITH
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
' membuat tabel suppplier hTable = hConn.Tables.Add("supplier", "MyISAM") WITH hTable .Fields.Add("id_supplier", gb.Integer) .Fields.Add("nm_supplier", gb.String, 50) .Fields.Add("no_telp", gb.String, 14) .Fields.Add("alamat_toko", gb.String, 75) .Fields.Add("status", gb.String, 12) .Fields.Add("website", gb.String, 25) .PrimaryKey = ["id_supplier"] .Update END WITH ' membuat tabel user hTable = hConn.Tables.Add("user", "MyISAM") WITH hTable .Fields.Add("id_user", gb.Integer) .Fields.Add("nm_user", gb.String, 50) .Fields.Add("alamat", gb.String, 75) .Fields.Add("no_telp", gb.String, 14) .Fields.Add("jk", gb.String, 10) .Fields.Add("tmp_lhr", gb.String, 20) .Fields.Add("tgl_lhr", gb.Date) .Fields.Add("passwd", gb.String, 32) .Fields.Add("jabatan", gb.String, 10) .Fields.Add("foto", gb.String, 10) .PrimaryKey = ["id_user"] .Update END WITH
END
B. Implementasi Antarmuka Pengguna
Implementasi antarmuka pengguna dibuat berdasarkan acuan rancangan
yang telah dibuat pada bab sebelumnya. Antarmuka dibuat menggunakan
toolbox yang terdapat pada gambas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Pada saat awal memasuki sistem, akan muncul antarmuka Login yang
barfungsi sebagai validasi user yang ingin menggunakan sistem.
Gambar 4.1 Halaman Login
Halaman login ini akan meminta user untuk memasukkan id user dan
password user. Jika user salah dalam memasukkan id dan password, maka
sistem akan menampilkan pesan kesalahan bahwa login gagal.
Gambar 4.2 Pesan Kesalahan Login Gagal
Jika id dan password yang dimasukkan user sudah benar, maka user
akan masuk ke dalam sistem sesuai dengan jabatan yang dimiliki oleh user.
1. Halaman Utama Admin/Manager
Halaman ini digunakan oleh manager yang barlaku sebagai admin.
Di dalam halaman ini terdapat menu-menu yang dapat dilakukan oleh
admin. Kegunaan menu tersebut disebutkan dalam petunjuk singkat yang
terdapat pada halaman tersebut. Di dalam halaman tersebut juga terdapat
beberapa keterangan hak akses yang diberikan oleh sistem.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Gambar 4.3 Halaman Utama Admin/Manager
2. Halaman Lihat Data Barang (Manager)
Halaman ini digunakan manager untuk melihat data barang.
Informasi tambahan yang diberikan adalah, data stok barang yang sudah
kurang atau sudah habis, data barang yang hampir atau sudah kadaluarsa.
Informasi tambahan tersebut ditampilkan dalam bentuk warna.
Gambar 4.4 Halaman Lihat Data Barang (Manager)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
3. Halaman Lihat Detail Data Barang (Manager)
Pada halaman sebelumnya terdapat tombol detail barang, tombol
tersebut menuju ke halaman ini. Dalam halaman ini terdapat grafik
penjualan barang tiap bulan untuk tiap tahun. Untuk tombol cetak barcode
digunakan untuk mencetak barcode barang.
Gambar 4.5 Halaman Detail Data Barang (Manager)
4. Halaman Lihat Data Supplier (Manager)
Menu lihat data supplier pada halaman utama menuju ke sini.
Gambar 4.6 Halaman Lihat Data Supplier (Manager)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
5. Halaman Lihat Laporan
Pada halaman utama terdapat menu lihat laporan. Jika menu
tersebut ditekan, maka akan tampil halaman ini. Halaman ini terdapat 3
tombol, stok barang digunakan untuk melihat laporan stok barang,
penjualan digunakan untuk melihat laporan penjualan barang, tutup untuk
menutup halaman.
Gambar 4.7 Halaman Lihat Laporan
6. Halaman Laporan Stok Barang
Jika stok barang ditekan, maka akan muncul halaman ini.
Gambar 4.8 Halaman Laporan Stok Barang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
7. Halaman Lihat Laporan Penjualan
Jika tombol penjualan pada halaman lihat laporan ditekan, maka
akan muncul halaman ini. Dalam halaman ini terdapat 3 kategori utama
laporan yaitu, harian untuk laporan harian, bulanan untuk laporan
bulanan, tahunan untuk laporan tahunan.
Gambar 4.9 Halaman Lihat Laporan Penjualan
8. Halaman Lihat Laporan Penjualan Harian
Jika kategori harian dipilih, maka akan tampil seperti dibawah ini.
Gambar 4.10 Halaman Lihat Laporan Penjualan Harian
Setelah user memilih tanggal menggunakan tombol pilih tanggal,
user dapat melihat laporan dengan menekan tombol OK. Jika tombol OK
ditekan, maka akan tampil halaman laporan penjualan harian.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
9. Halaman Laporan Penjualan Harian
Gambar 4.11 Halaman Laporan Penjualan Harian
10. Halaman Lihat Laporan Penjualan Bulanan
Jika kategori bulanan dipilih, maka akan tampil seperti dibawah ini.
Gambar 4.12 Halaman Lihat Laporan Penjualan Bulanan
Setelah user memilih bulan dan tahun menggunakan combo pilih
bulan dan tahun, user dapat melihat laporan dengan menekan tombol OK.
Jika tombol OK ditekan, maka akan tampil halaman laporan penjualan
bulanan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
11. Halaman Laporan Penjualan Bulanan
Gambar 4.13 Halaman Laporan Penjualan Bulanan
12. Halaman Lihat Laporan Penjualan Tahunan
Jika kategori tahunan dipilih, maka akan tampil seperti dibawah ini.
Gambar 4.14 Halaman Lihat Laporan Penjualan Tahunan
Setelah user memilih tahun menggunakan combo pilih tahun, user
dapat melihat laporan dengan menekan tombol OK. Jika tombol OK
ditekan, maka akan tampil halaman laporan penjualan tahunan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
13. Halaman Laporan Penjualan Tahunan
Gambar 4.15 Halaman Laporan Penjualan Tahunan
14. Halaman Lihat Data User
Pada halaman utama terdapat menu lihat data user. Jika menu
tersebut ditekan, maka akan tampil halaman lihat data user.
Gambar 4.16 Halaman Lihat Data User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
15. Halaman Lihat Detail Data User
Tombol detail pada halaman lihat data user jika ditekan, maka akan
muncul halaman lihat detail data user. Halaman ini digunakan untuk
melihat atau mengubah data user.
Gambar 4.17 Halaman Lihat Detail Data User
16. Halaman Tambah User
Pada halaman utama atau halaman lihat data user terdapat menu
tambah user atau tombol tambah user. Menu dan tombol tersebut jika
dipilih akan menampilkan halaman seperti dibawah ini.
Gambar 4.18 Halaman Tambah User
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
17. Halaman Utama Kasir
Gambar 4.19 Halaman Utama Kasir
Jika user yang memiliki jabatan sebagai kasir, maka user akan
memasuki halaman utama kasir. Halaman ini digunakan kasir untuk
mencatat setiap proses penjualan. Dalam mencatat proses penjualan, kasir
akan diminta oleh sistem untuk memasukkan kode barang yang akan
dijual. Format kode yang diijinkan oleh sistem adalah [kode barang] atau
[jumlah jual barang] [*] [kode barang].
Jika kasir menekan tombol enter tanpa memasukkan kode terlebih
dahului, maka sistem akan menampilkan pesan memasukkan kode barang.
Gambar 4.20 Pesan Memasukkan Kode Barang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Jika kasir salah dalam memasukkan kode, maka sistem akan
menampilkan kesalahan memasukkan kode barang.
Gambar 4.21 Pesan Kesalahan Kode Barang
Bagi kasir yang tidak mengingat kode barang, maka sistem
menyediakan halaman mencari barang untuk kasir. Untuk menggunakan
halaman ini, kasir harus menekan tombol F3/PageDown.
Gambar 4.22 Halaman Cari Barang Untuk Kasir
Kasir dapat mencari data barang dengan memasukkan nama/kode/
jenis/keterangan barang lalu menekan tombol enter. Kemudian kasir
dapat memilih data barang yang akan dijual dengan menekan tombol
arah ke atas atau arah ke bawah lalu tekan enter.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
Kasir dapat mengubah data jumlah jual barang dengan menekan
tombol Delete.
Gambar 4.23 Ubah Jumlah Jual Barang
Jika barang yang akan dijual sudah selesai dimasukkan, maka kasir
harus melakukan proses pembayaran dengan menekan tombol Insert
maka akan muncul halaman seperti berikut.
Gambar 4.24 Halaman Pembayaran
18. Halaman Bantuan Kasir
Jika kasir mengalami kesulitan dalam menggunakan sistem, kasir
dapat melihat bantuan dengan menekan tombol F1 maka akan muncul
halaman bantuan kasir.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Gambar 4.25 Halaman Bantuan Kasir
19. Halaman Utama Operator pergudangan
Halaman utama untuk operator pergudangan seperti dibawah ini.
Gambar 4.26 Halaman Utama Operator pergudangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
Di dalam halaman utama operator pergudangan terdapat beberapa
menu yang disediakan. Menu-menu tersebut memiliki fungsi seperti di
bawah ini.
20. Halaman Lihat Data Barang (Operator pergudangan)
Jika menu lihat data barang ditekan, maka akan muncul halaman
lihat data barang untuk operator pergudangan. Dalam halaman ini
terdapat informasi tambahan yang diberikan adalah, data stok barang yang
sudah kurang atau sudah habis, data barang yang hampir atau sudah
kadaluarsa. Informasi tambahan tersebut ditampilkan dalam bentuk
warna.
Gambar 4.27 Halaman Lihat Data Barang (Operator pergudangan)
21. Halaman Lihat Detail Data Barang (Operator pergudangan)
Dalam halaman sebelumnya terdapat tombol detail/ubah, tombol
ini digunakan untuk melihat detail barang atau mengubah data barang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
Gambar 4.28 Halaman Lihat Detail Data Barang (Operator pergudangan)
22. Halaman Lihat Data Supplier (Operator pergudangan)
Menu lihat data supplier jika ditekan akan menampilkan halaman
seperti di bawah ini. Halaman ini digunakan untuk menampilkan data
supplier.
Gambar 4.29 Halaman Lihat Data Supplier (Operator pergudangan)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
23. Halaman Lihat Detail Data Supplier (Operator pergudangan)
Pada halaman sebelumnya terdapat tombol ubah, tombol ini
berfungsi untuk menampilkan halaman detail supplier. Halaman ini
digunakan untuk menampilkan detail supplier atau untuk mengubah data
supplier.
Gambar 4.30 Halaman Lihat Detail Data Supplier (Operator pergudangan)
24. Halaman Tambah Data Barang
Pada halaman utama terdapat menu tambah barang dan pada
halaman lihat data barang terdapat tombol tambah. Menu dan tombol ini
memiliki fungsi yang sama yaitu menampilkan halaman tambah data
barang. Halaman ini digunakan untuk menambah data barang baru. Di
dalam halaman ini terdapat bantuan-bantuan yang akan muncul jika user
melakukan kesalahan dalam pengisian data barang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
Gambar 4.31 Halaman Tambah Data Barang
25. Halaman Tambah Data Supplier
Pada halaman utama terdapat menu tambah supplier dan pada
halaman lihat data barang terdapat tombol tambah. Menu dan tombol ini
memiliki fungsi yang sama yaitu menampilkan halaman tambah data
supplier. Halaman ini digunakan untuk menambah data supplier baru. Di
dalam halaman ini terdapat bantuan-bantuan yang akan muncul jika user
melakukan kesalahan dalam pengisian data supplier.
Gambar 4.32 Halaman Tambah Data Supplier
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
26. Halaman Ubah Password Operator/Kasir
Halaman ini digunakan oleh kasir dan operator pergudangan untuk
mengubah data password. Pada halaman ini terdapat 3 kolom yang harus
diisi yaitu, kolom pertama masukkan password yang sekarang digunakan,
kolom kedua digunakan untuk memasukkan password yang baru, kolom
ketiga digunakan untuk memasukkan ulang password baru yang telah
dimasukkan sebelumnya.
Gambar 4.33 Halaman Ubah Password Operator/Kasir
27. Halaman Cetak Barcode
Halaman ini digunakan oleh manager dan operator pergudangan
untuk mencetak barcode barang. Untuk menampilkan halaman ini,
manager atau operator pergudangan terlebih dahulu harus melihat dengan
detail data barang yang kode barcode-nya akan dicetak. Karena tombol
cetak barcode terdapat pada halaman lihat detail data barang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
Gambar 4.34 Halaman Cetak Barcode Barang
C. Implementasi Proses
1. Implementasi Proses Koneksi ke Basis Data
Proses koneksi ke basis data diperlukan pada saat setiap kali
mengakses basis data. Oleh karena itu proses ini dibuat terpisah agar tidak
perlu dibuat berulang-ulang. Proses ini disimpan dalam module dengan
nama MdlVal. Berikut kode programnya.
PUBLIC SUB conn() db.type = "mysql" db.Host = "localhost" db.Login = "root" db.Password = "" db.Name = "" END PUBLIC SUB openconn() TRY db.Close conn() ' memanggil conn() db.Open IF NOT db.Databases.Exist("mnmk") THEN db.Databases.Add("mnmk") ENDIF db.Close db.Name = "mnmk"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
db.Open sl = db.Exec("use mnmk") IF ERROR THEN message.Error("koneksi gagal", "&OK") ENDIF END
Selain kode program di atas, berikut adalah kode yang akan
digunakan untuk beberapa proses selanjutnya.
'untuk menampilkan data ke dalam tabel PUBLIC SUB fill_view(tbv AS TableView, qry AS String) rs = db.exec(qry) WITH rs tbv.rows.count = 0 IF .count <> 0 THEN tbv.columns.count = .fields.count tbv.rows.count = .count END IF END WITH END
'untuk mematikan fungsi tombol PUBLIC SUB no_number_id() IF NOT (key.Code >= Asc("0") AND key.code <= Asc("9") OR
key.Code = key.Esc OR key.Code = key.BackSpace OR key.code = key.left OR key.code = key.right OR key.code = key.tab OR key.code = key.enter OR key.code = key.home OR key.code = key.end OR key.code = key.delete) THEN
STOP EVENT ENDIF END PUBLIC SUB no_number_phone() IF NOT (key.Code >= Asc("0") AND key.code <= Asc("9") OR
key.Code = key.BackSpace OR key.code = key.left OR key.code = key.right OR key.code = key.tab OR key.code = key.enter OR key.code = key.home OR key.code = key.end OR key.code = key.delete OR key.Code = key.Space OR key.Code = Asc("(") OR key.Code = Asc(")") OR key.Code = Asc("-")) THEN
STOP EVENT ENDIF END PUBLIC SUB noevent() IF key.Code = key.Tab THEN STOP EVENT END PUBLIC SUB tanpa_kutip() IF key.Code = key["'"] THEN STOP EVENT END PUBLIC SUB no_number() IF key.Code >= Asc("0") AND key.code <= Asc("9") THEN STOP EVENT END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
2. Implementasi Proses Login
Proses login digunakan untuk memastikan user yang menggunakan
sistem adalah user yang valid. Agar data password user aman, maka data
password dari user akan dienkripsi dengan md5. Proses ini mencatat
setiap user yang berhasil login ke dalam sistem. Proses pencatatan ini
disimpan dalam class spy().
TRY MdlVal.db.Close MdlVal.openconn() ' message.Info("koneksi berhasil") query = "use mnmk" 'menggunakan database mnmk sl = MdlVal.db.Exec(query) 'mencari data valid query = "select nm_user, jabatan from user where id_user
='" & TxtNo.Text & "' and passwd= md5('" & TxtPass.Text & "') "
sl = MdlVal.db.Exec(query) 'mengeksekusi query IF sl.Count = 1 THEN IF sl!jabatan = "manager" THEN FrmManager.Show ME.Hide ELSE IF sl!jabatan = "kasir" THEN FrmKasir.Show ME.Hide ELSE IF sl!jabatan = "operator" THEN FrmOperatorPergudangan.Show ENDIF ENDIF ENDIF spy() ELSE message.Error("Login gagal.", "&OK") lug = lug + 1 IF lug = 3 THEN message.Error("Maaf silahkan coba lagi.") ME.Close ENDIF ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) PUBLIC SUB spy() query2 = "insert into log values('" & sl!nm_user & "' , '" & sl!jabatan & "' ,Now())" sl2 = MdlVal.db.Exec(query2) END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
3. Proses Lihat Data Barang
Proses ini digunakan untuk menampilkan seluruh data barang yang
tesimpan dalam entitas barang. Berikut adalah kodenya programnya.
'untuk memberi nama pada baris kop tabel PUBLIC SUB show_data() WITH Tbv1 .Rows.Count = 0 .Columns.Count = 8 .Columns[0].Text = "ID Barang" .Columns[0].Width = 75 .Columns[1].Text = "Keterangan" .Columns[1].Width = 250 .Columns[2].Text = "Jumlah" .Columns[2].Width = 60 .Columns[3].Text = "Harga (Rp)" .Columns[3].Width = 80 .Columns[4].Text = "Disc (%)" .Columns[4].Width = 60 .Columns[5].Text = "Tgl Kadaluarsa" .Columns[5].Width = 100 .Columns[6].Width = 0 .Columns[7].Width = 0 END WITH END PUBLIC SUB Tbv1_Data(baris AS Integer, kolom AS Integer) DIM tgl AS Date DIM tgl2 AS String DIM a AS String DIM b AS String DIM d AS String DIM brg[8] AS String brg[0] = "id_brg" brg[1] = "keter" brg[2] = "jml_brg" brg[3] = "harga" brg[4] = "discount" brg[5] = "v_date" brg[6] = "jml_min" brg[7] = "batas" WITH MdlVal .rs.MoveTo(baris) Tbv1.Data.Text = Str(.rs[brg[kolom]]) '------atur kolom------- IF kolom = 2 OR kolom = 4 THEN Tbv1.Data.Alignment = align.Center ENDIF IF kolom = 3 THEN a = Right(Str(.rs[brg[kolom]]), 3) b = Right(Left(Str(.rs[brg[kolom]]), -3), 3) d = Left(Str(.rs[brg[kolom]]), -6) IF b <> NULL THEN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
Tbv1.Data.Text = b & "." & a ELSE IF d <> NULL THEN Tbv1.Data.Text = d & "." & b & "." & a ENDIF ENDIF Tbv1.Data.Alignment = align.Right ENDIF IF kolom = 5 THEN IF .rs[brg[5]] = "00:00:00" THEN Tbv1.Data.Text = NULL ELSE Tbv1.Data.Text = Format$(CDate(.rs[brg[5]]), "dd mmm yyyy") ENDIF Tbv1.Data.Alignment = align.Center ENDIF '====UNTUK WARNA BARANG YANG BERMASALAH DENGAN STOK===== IF .rs[brg[2]] <= .rs[brg[6]] THEN Tbv1.Data.Foreground = Color.Orange ENDIF '-------------stok habis------------------- IF .rs[brg[2]] = 0 THEN Tbv1.Data.Foreground = Color.Red ENDIF '------------kadaluarsa-------------- IF .rs[brg[5]] <> "00:00:00" THEN tgl = .rs[brg[5]] tgl2 = Format$(tgl, "'yy-mm-dd'") sl11 = MdlVal.db.Exec("SELECT DATEDIFF(" & tgl2 & ",now()) as intrvl") IF sl11!intrvl < .rs[brg[7]] THEN Tbv1.Data.BackColor = color.RGB(197, 223, 221) ENDIF '=======================END============================= END WITH TLblItems.Text = "Jml Macam Brg: " & Tbv1.Rows.Count CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
MdlVal.fill_view(Tbv1, "select id_brg, concat(nm_brg, '" & " " & "', ket) as keter, jml_brg, harga, discount, v_date, jml_min, batas from barang order by id_brg asc")
4. Proses Cari Data Barang
Proses ini digunakan untuk mencari data barang berdasarkan
kategori yang diberikan. Berikut adalah kode programnya.
PUBLIC SUB BCari_Click() IF CmbJnsBrg.Text = "Pilih Jenis Barang" THEN IF CmbSupp.Text <> "Pilih Supplier" THEN MdlVal.fill_view(Tbv1, "select id_brg, concat(nm_brg, '" &
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
" " & "', ket) as keter, jml_brg, harga, discount, v_date, jml_min, batas from barang, supplier where concat(nm_brg, '" & " " & "', ket) like '" & "%" & TxtNmBrg.Text & "%" & "' and nm_supplier='" & CmbSupp.Text & "' and kd_supply=id_supplier")
ELSE MdlVal.fill_view(Tbv1, "select id_brg, concat(nm_brg, '" &
" " & "', ket) as keter, jml_brg, harga, discount, v_date, jml_min, batas from barang where concat(nm_brg, '" & " " & "', ket) like '" & "%" & TxtNmBrg.Text & "%" & "'")
ENDIF ELSE IF CmbSupp.Text <> "Pilih Supplier" THEN MdlVal.fill_view(Tbv1, "select id_brg, concat(nm_brg, '" &
" " & "', ket) as keter, jml_brg, harga, discount, v_date, jml_min, batas from barang, supplier where jenis_brg='" & CmbJnsBrg.Text & "' and nm_supplier ='" & CmbSupp.Text & "' and kd_supply=id_supplier and concat(nm_brg, '" & " " & "', ket) like '" & "%" & TxtNmBrg.Text & "%" & "'")
ELSE MdlVal.fill_view(Tbv1, "select id_brg, concat(nm_brg, '" &
" " & "', ket) as keter, jml_brg, harga, discount, v_date, jml_min, batas from barang where jenis_brg='" & CmbJnsBrg.Text & "' and concat(nm_brg, '" & " " & "', ket) like '" & "%" & TxtNmBrg.Text & "%" & "'")
ENDIF ENDIF TxtKdBrg.Clear BDetail.Enabled = FALSE item Form_Show() END
5. Proses Lihat Data Supplier
Proses ini digunakan untuk menampilkan seluruh data Supplier
yang tesimpan dalam entitas Supplier. Berikut adalah kodenya
programnya.
PUBLIC SUB show_data() WITH Tbv1 .Rows.Count = 0 .Columns.Count = 3 .Columns[0].Text = "ID Supplier" .Columns[0].Width = 100 .Columns[1].Text = "Nama Supplier" .Columns[1].Width = 300 .Columns[2].Text = "No Telepon" .Columns[2].Width = 225 END WITH MdlVal.fill_view(Tbv1, "select id_supplier, nm_supplier, no_telp from supplier") END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
PUBLIC SUB Tbv1_Data(baris AS Integer, kolom AS Integer) DIM arr1[3] AS Variant arr1[0] = "id_supplier" arr1[1] = "nm_supplier" arr1[2] = "no_telp" WITH MdlVal .rs.MoveTo(baris) Tbv1.Data.Text = Str(.rs[arr1[kolom]]) END WITH TLblItems.Text = "Jml Supplier: " & Tbv1.Rows.Count CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n"
& error.Text & " " & error.Where) END
6. Proses Cari Data Supplier
Proses ini digunakan untuk mencari data supplier berdasarkan
kategori yang diberikan. Berikut adalah kode programnya.
PUBLIC SUB BCari_Click() MdlVal.fill_view(Tbv1, "select id_supplier, nm_supplier,
no_telp from supplier where nm_supplier like '" & "%" & TxtNmSupp.Text & "%" & "'")
IF Tbv1.Rows.Count = 0 THEN TLblItems.Text = "Jml Supplier: " & 0 ENDIF TxtIdSupp.Clear BDetail.Enabled = FALSE Form_Show() END
7. Proses Lihat Laporan
a) Proses Lihat Laporan Stok Barang
Proses ini digunakan untuk melihat laporan stok barang yang
tercatat di sistem. Pemanggilan program jika hanya untuk melihat
laporan menggunakan printit(FALSE). Tetapi untuk pemanggilan
program untuk mencetak laporan menggunakan printit(TRUE).
Berikut kode programnya.
PUBLIC SUB header(prn AS Boolean) PRINT #hFile, "<html>" PRINT #hFile, " <tr><td colspan='8'> </td></tr>" PRINT #hFile, "<head><title>Laporan Stok
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
Barang</title></head>" PRINT #hFile, "<body topmargin='0' leftmargin='0'" IF prn = TRUE THEN PRINT #hFile, " onload='window.print()'" PRINT #hFile, ">" PRINT #hFile, "<table border='1' width='1000'
cellpadding='1' cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td colspan='8' align='center'>" PRINT #hFile, " <h3>Laporan Stok Barang</h3>" PRINT #hFile, " </td>" PRINT #hFile, " </tr>" PRINT #hFile, " <tr><td colspan='8'> </td></tr>" PRINT #hFile, " <tr>" PRINT #hFile, " <td width='7%' align='center'>Id
Barang</td>" PRINT #hFile, " <td width='15%' align='center'>Nama
barang</td>" PRINT #hFile, " <td width='18%'
align='center'>Keterangan</td>" PRINT #hFile, " <td width='5%' align='center'>Warna</td>" PRINT #hFile, " <td width='5%' align='center'>Harga</td>" PRINT #hFile, " <td width='10%'
align='center'>Kadaluarsa</td>" PRINT #hFile, " <td width='5%'
align='center'>Jumlah</td>" PRINT #hFile, " <td width='10%' align='center'>Supplier</td>"
PRINT #hFile, " </tr>" END PUBLIC SUB content(p1 AS String, p2 AS String, p3 AS String,
p4 AS String, p5 AS String, p6 AS String, p7 AS String, p8 AS String)
DIM a AS String DIM b AS String DIM d AS String a = Right(p5, 3) b = Right(Left(p5, -3), 3) d = Left(p5, -6) PRINT #hFile, " <tr>" PRINT #hFile, " <td align='center'>" & p1 & "</td>" PRINT #hFile, " <td>" & p2 & "</td>" PRINT #hFile, " <td>" & p3 & "</td>" PRINT #hFile, " <td align='center'>" & p4 & "</td>" IF d <> NULL THEN PRINT #hFile, " <td align='right'>" & d & "." & b & "."
& a & "</td>" ELSE IF b <> NULL THEN PRINT #hFile, " <td align='right'>" & b & "." & a &
"</td>" ELSE PRINT #hFile, " <td align='right'>" & a & "</td>" ENDIF ENDIF IF p6 <> "00:00:00" THEN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
PRINT #hFile, " <td align='center'>" &Format(CDate(p6), "dd mmm yyyy") & "</td>"
ELSE PRINT #hFile, " <td align='center'>" & p6 & "</td>" ENDIF PRINT #hFile, " <td align='center'>" & p7 & "</td>" PRINT #hFile, " <td>" & p8 & "</td>" PRINT #hFile, " </tr>" END PUBLIC SUB footer() PRINT #hFile, "</table>" sl = MdlVal.db.Exec("select * from user where id_user='" &
FrmPasswd.TxtNo.Text & "'") PRINT #hFile, "<br><br>" PRINT #hFile, "<table border='0' width='1000'
cellpadding='1' cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td><font size='2'>Dicetak oleh: <i>" &
sl!nm_user & "<i/></font></td>" PRINT #hFile, " <td align='right'><font size='2'>Tanggal: <i>" & Format$(Date(Now), "dd mmm yyyy") & "<i/></font></td>" PRINT #hFile, " </tr>" PRINT #hFile, "</table>" PRINT #hFile, "</body>" PRINT #hFile, "</html>" END PUBLIC SUB printit(prn AS Boolean) DIM i AS Float WITH MdlVal.rs2 = .db.exec("select id_brg, nm_brg, ket, warna,
harga, v_date, jml_brg, nm_supplier from barang, supplier where kd_supply=id_supplier order by nm_brg asc") IF .rs2.count <> 0 THEN IF Exist(flname0) THEN KILL flname0 OPEN flname0 FOR WRITE CREATE AS #hFile 'print headers here header(prn) i = 0 WHILE i < .rs2.count 'print all data here content(CStr(.rs2!id_brg), CStr(.rs2!nm_brg), CStr(.rs2!ket),
CStr(.rs2!warna), CStr(.rs2!harga), CStr(.rs2!v_date), CStr(.rs2!jml_brg), CStr(.rs2!nm_supplier))
i = i + 1 .rs2.MoveNext WEND 'print footer here footer CLOSE #hFile 'show the report ! FrmLaporan.SetPath(flname0) FrmLaporan.ShowModal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
FrmLaporan.nil = 0 ENDIF END WITH END
b) Proses Lihat Laporan Penjualan Harian
Proses ini digunakan untuk melihat laporan penjualan harian.
Pemanggilan program jika hanya untuk melihat laporan menggunakan
printit(FALSE). Tetapi untuk pemanggilan program untuk
mencetak laporan menggunakan printit(TRUE). Berikut kode
programnya.
PUBLIC SUB header(prn AS Boolean) PRINT #hFile, "<html>" PRINT #hFile, " <tr><td colspan='7'> </td></tr>" PRINT #hFile, "<head><title>Laporan Penjualan</title>
</head>" PRINT #hFile, "<body topmargin='0' leftmargin='0'" IF prn = TRUE THEN PRINT #hFile, "
onload='window.print()'" PRINT #hFile, ">" PRINT #hFile, "<table border='1' width='800' cellpadding='1'
cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td colspan='7' align='center'>" PRINT #hFile, " <font size='4'><b>Laporan Penjualan</b>
</font>" PRINT #hFile, " </td>" PRINT #hFile, " </tr>" PRINT #hFile, " <tr><td colspan='7' align='center'><b>
Tanggal: " & TxtTgl.Text & "</b></td></tr>" PRINT #hFile, " <tr>" PRINT #hFile, " <td width='10%' align='center'>
<b>Waktu</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>ID
barang</b></td>" PRINT #hFile, " <td width='20%' align='center'><b>Nama
barang</b></td>" PRINT #hFile, " <td width='30%' align='center'>
<b>Keterangan</b></td>" PRINT #hFile, " <td width='10%' align='center'>
<b>Kasir</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>Jml
jual</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>Tot
harga</b></td>" PRINT #hFile, " </tr>" END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
PUBLIC SUB content(p0 AS String, p1 AS String, p2 AS String, p3 AS String, p4 AS String, p5 AS String, p6 AS String) DIM a AS String DIM b AS String DIM d AS String a = Right(p6, 3) b = Right(Left(p6, -3), 3) d = Left(p6, -6) PRINT #hFile, " <tr>" PRINT #hFile, " <td align='center'>" & p0 & "</td>"
PRINT #hFile, " <td align='center'>" & p1 & "</td>" PRINT #hFile, " <td>" & p2 & "</td>" 'Nm brg
PRINT #hFile, " <td>" & p3 & "</td>" 'Ket PRINT #hFile, " <td>" & p4 & "</td>" 'Kasir PRINT #hFile, " <td align='center'>" & p5 & "</td>" IF
d <> NULL THEN PRINT #hFile, " <td align='right'>" & d & "." & b & "." &
a & "</td>" ELSE IF b <> NULL THEN PRINT #hFile, " <td align='right'>" & b & "." & a &
"</td>" 'tot harga ELSE PRINT #hFile, " <td align='right'>" & a & "</td>" ENDIF ENDIF PRINT #hFile, " </tr>" END PUBLIC SUB footer() PRINT #hFile, "</table>" sl = MdlVal.db.Exec("select * from user where id_user='" & FrmPasswd.TxtNo.Text & "'") PRINT #hFile, "<br><br>" PRINT #hFile, "<table border='0' width='800' cellpadding='1'
cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td><font size='2'>Dicetak oleh: <i>" &
sl!nm_user & "<i/></font></td>" PRINT #hFile, " <td align='right'><font size='2'>Tanggal:
<i>" & Format$(Date(Now), "dd mmm yyyy") & "<i/></font></td>"
PRINT #hFile, " </tr>" PRINT #hFile, "</table>" PRINT #hFile, "</body>" PRINT #hFile, "</html>" END PUBLIC SUB printit(prn AS Boolean) DIM i AS Float DIM tot AS Long DIM a AS String DIM b AS String DIM c AS String DIM d AS String tot = 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
WITH MdlVal.rs2 = .db.exec("select waktu, id_brg, nm_brg, ket, nm_user, jml_jual_brg, harga, ((jml_jual_brg*harga)-((jml_jual_brg*harga)*(discount/100))) total from jual, barang, user where id_user=kd_kasir and kd_brg=id_brg and waktu like '" & "%" & tgl1 & "%" & "' order by waktu asc")
IF .rs2.count <> 0 THEN IF Exist(flname) THEN KILL flname OPEN flname FOR WRITE CREATE AS #hFile 'print headers here header(prn) i = 0 WHILE i < .rs2.count 'print all data here content(Right(CStr(.rs2!waktu), -10), CStr(.rs2!id_brg),
CStr(.rs2!nm_brg), CStr(.rs2!ket), CStr(.rs2!nm_user), CStr(.rs2!jml_jual_brg), Left(CStr(.rs2!total), -5))
i = i + 1 tot = tot + .rs2!total .rs2.MoveNext WEND c = tot a = Right(c, 3) b = Right(Left(c, -3), 3) d = Left(c, -6) IF d <> NULL THEN PRINT #hFile, " <tr><td colspan='7' align='right'><b>Total
Harga Keseluruhan Penjualan: Rp. " & d & "." & b & "." & a & " </td></tr>"
ELSE IF b <> NULL THEN PRINT #hFile, " <tr><td colspan='7' align='right'><b>Total
Harga Keseluruhan Penjualan: Rp. " & b & "." & a & " </td></tr>"
ELSE PRINT #hFile, " <tr><td colspan='7' align='right'><b>Total
Harga Keseluruhan Penjualan: Rp. " & a & " </td></tr>"
ENDIF ENDIF footer CLOSE #hFile FrmLaporan.SetPath(flname) FrmLaporan.ShowModal FrmLaporan.nil = 1 ELSE message.Info("Data Penjualan Kosong!") ENDIF END WITH CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
c) Proses Lihat Laporan Penjualan Bulanan
Proses ini digunakan untuk melihat laporan penjualan harian.
Pemanggilan program jika hanya untuk melihat laporan
menggunakan printit1(FALSE). Tetapi untuk pemanggilan
program untuk mencetak laporan menggunakan printit1(TRUE).
Berikut kode programnya.
PUBLIC SUB header1(prn AS Boolean) PRINT #hFile, "<html>" PRINT #hFile, " <tr><td colspan='5'> </td></tr>" PRINT #hFile, "<head><title>Laporan Penjualan</title>
</head>" PRINT #hFile, "<body topmargin='0' leftmargin='0'" IF prn = TRUE THEN PRINT #hFile, " onload=
'window.print()'" PRINT #hFile, ">" PRINT #hFile, "<table border='1' width='800' cellpadding='1'
cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td colspan='5' align='center'>" PRINT #hFile, " <font size='4'><b>Laporan Penjualan</b>
</font>" PRINT #hFile, " </td>" PRINT #hFile, " </tr>" PRINT #hFile, " <tr><td colspan='5' align='center'>
<b>Bulan: " & CmbBln.Text & " Tahun: " & CmbThBln.Text & "</b></td></tr>"
PRINT #hFile, " <tr>" PRINT #hFile, " <td width='10%' align='center'><b>ID
barang</b></td>" PRINT #hFile, " <td width='20%' align='center'><b>Nama
barang</b></td>" PRINT #hFile, " <td width='30%' align='center'>
<b>Keterangan</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>Jumlah
jual</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>Total
harga</b></td>" PRINT #hFile, " </tr>" END PUBLIC SUB content1(p1 AS String, p2 AS String, p3 AS String,
p4 AS String, p5 AS String) DIM a AS String DIM b AS String DIM d AS String a = Right(p5, 3) b = Right(Left(p5, -3), 3) d = Left(p5, -6)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
PRINT #hFile, " <tr>" PRINT #hFile, " <td align='center'>" & p1 & "</td>" 'id brg PRINT #hFile, " <td>" & p2 & "</td>" 'Nm brg PRINT #hFile, " <td>" & p3 & "</td>" 'Ket PRINT #hFile, " <td align='center'>" & p4 & "</td>" IF
d <> NULL THEN PRINT #hFile, " <td align='right'>" & d & "." & b & "." & a
& "</td>" 'tot harga ELSE IF b <> NULL THEN PRINT #hFile, " <td align='right'>" & b & "." & a & "</td>" ELSE PRINT #hFile, " <td align='right'>" & a & "</td>" 'tot harga ENDIF ENDIF PRINT #hFile, " </tr>" END PUBLIC SUB footer1() PRINT #hFile, "</table>" sl = MdlVal.db.Exec("select * from user where id_user='" &
FrmPasswd.TxtNo.Text & "'") PRINT #hFile, "<br><br>" PRINT #hFile, "<table border='0' width='800' cellpadding='1'
cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td><font size='2'>Dicetak oleh: <i>" &
sl!nm_user & "<i/></font></td>" PRINT #hFile, " <td align='right'><font size='2'>Tanggal:
<i>" & Format$(Date(Now), "dd mmm yyyy") & "<i/></font></td>"
PRINT #hFile, " </tr>" PRINT #hFile, "</table>" PRINT #hFile, "</body>" PRINT #hFile, "</html>" END PUBLIC SUB printit1(prn AS Boolean) DIM i AS Float DIM tot AS Long DIM a AS String DIM b AS String DIM c AS String DIM d AS String tot = 0 WITH MdlVal.rs2 = .db.exec("select id_brg, nm_brg, ket,
sum(jml_jual_brg) jumlah, harga*sum(jml_jual_brg) total_harga from jual, barang, user where id_user=kd_kasir and kd_brg=id_brg and waktu like '" & "%" & CmbBln.ToolTip & "/" & "%%" & "/" & CmbThBln.Text & "%" & "' group by nm_brg order by nm_brg asc")
IF .rs2.count <> 0 THEN IF Exist(flname1) THEN KILL flname1 OPEN flname1 FOR WRITE CREATE AS #hFile 'print headers here
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
header1(prn) i = 0 WHILE i < .rs2.count 'print all data here content1(CStr(.rs2!id_brg), CStr(.rs2!nm_brg), CStr(.rs2!ket),
CStr(.rs2!jumlah), CStr(.rs2!total_harga)) i = i + 1 tot = tot + .rs2!total_harga .rs2.MoveNext WEND c = tot a = Right(c, 3) b = Right(Left(c, -3), 3) d = Left(c, -6) PRINT b IF d <> NULL THEN PRINT #hFile, " <tr><td colspan='5' align='right'><b>Total Harga Keseluruhan Penjualan: Rp. " & d & "." & b & "." & a & " </td></tr>" ELSE PRINT #hFile, " <tr><td colspan='5' align='right'><b>Total Harga Keseluruhan Penjualan: Rp. " & b & "." & a & " </td></tr>" ENDIF 'print footer here footer1 CLOSE #hFile 'show the report ! FrmLaporan.SetPath(flname1) FrmLaporan.ShowModal ELSE message.Info("Data Penjualan Kosong!") ENDIF END WITH CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
d) Proses Lihat Laporan Penjualan Tahunan
Proses ini digunakan untuk melihat laporan penjualan harian.
Pemanggilan program jika hanya untuk melihat laporan
menggunakan printit2(FALSE). Tetapi untuk pemanggilan
program untuk mencetak laporan menggunakan printit2(TRUE).
Berikut kode programnya.
PUBLIC SUB header2(prn AS Boolean) PRINT #hFile, "<html>" PRINT #hFile, " <tr><td colspan='5'> </td></tr>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
PRINT #hFile, "<head><title>Laporan Penjualan</title> </head>"
PRINT #hFile, "<body topmargin='0' leftmargin='0'" IF prn = TRUE THEN PRINT #hFile, " onload='window.print()'" PRINT #hFile, ">" PRINT #hFile, "<table border='1' width='800' cellpadding='1'
cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td colspan='5' align='center'>" PRINT #hFile, " <font size='4'><b>Laporan
Penjualan</b></font>" PRINT #hFile, " </td>" PRINT #hFile, " </tr>" PRINT #hFile, " <tr><td colspan='5' align='center'>
<b>Tahun: " & CmbThn.Text & "</b></td></tr>"
PRINT #hFile, " <tr>" PRINT #hFile, " <td width='10%' align='center'><b>ID
barang</b></td>" PRINT #hFile, " <td width='20%' align='center'><b>Nama
barang</b></td>" PRINT #hFile, " <td width='30%' align='center'>
<b>Keterangan</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>Jumlah
jual</b></td>" PRINT #hFile, " <td width='10%' align='center'><b>Total
harga</b></td>" PRINT #hFile, " </tr>" END PUBLIC SUB content2(p1 AS String, p2 AS String, p3 AS String,
p4 AS String, p5 AS String) DIM a AS String DIM b AS String DIM d AS String a = Right(p5, 3) b = Right(Left(p5, -3), 3) d = Left(p5, -6) PRINT #hFile, " <tr>" PRINT #hFile, " <td align='center'>" & p1 & "</td>" PRINT #hFile, " <td>" & p2 & "</td>" 'Nm brg PRINT #hFile, " <td>" & p3 & "</td>" 'Ket PRINT #hFile, " <td align='center'>" & p4 & "</td>" IF d <> NULL THEN PRINT #hFile, " <td align='right'>" & d & "." & b & "." & a
& "</td>" 'tot harga ELSE PRINT #hFile, " <td align='right'>" & b & "." & a & "</td>" ENDIF PRINT #hFile, " </tr>" END PUBLIC SUB footer2() PRINT #hFile, "</table>" sl = MdlVal.db.Exec("select * from user where id_user='" &
FrmPasswd.TxtNo.Text & "'")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
PRINT #hFile, "<br><br>" PRINT #hFile, "<table border='0' width='800' cellpadding='1'
cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td><font size='2'>Dicetak oleh: <i>" &
sl!nm_user & "<i/></font></td>" PRINT #hFile, " <td align='right'><font size='2'>Tanggal:
<i>" & Format$(Date(Now), "dd mmm yyyy") & "<i/></font></td>"
PRINT #hFile, " </tr>" PRINT #hFile, "</table>" PRINT #hFile, "</body>" PRINT #hFile, "</html>" END PUBLIC SUB printit2(prn AS Boolean) DIM i AS Float DIM tot AS Long DIM a AS String DIM b AS String DIM c AS String DIM d AS String WITH MdlVal.rs2 = .db.exec("select id_brg, nm_brg, ket,
sum(jml_jual_brg) jumlah, harga*sum(jml_jual_brg) total_harga from jual, barang, user where id_user=kd_kasir and kd_brg=id_brg and waktu like '" & "%" & CmbThn.Text & "%" & "' group by nm_brg order by nm_brg asc")
IF .rs2.count <> 0 THEN IF Exist(flname2) THEN KILL flname2 OPEN flname2 FOR WRITE CREATE AS #hFile 'print headers here header2(prn) i = 0 WHILE i < .rs2.count 'print all data here content2(CStr(.rs2!id_brg), CStr(.rs2!nm_brg), CStr(.rs2!ket),
CStr(.rs2!jumlah), CStr(.rs2!total_harga)) i = i + 1 tot = tot + .rs2!total_harga .rs2.MoveNext WEND c = tot a = Right(c, 3) b = Right(Left(c, -3), 3) d = Left(c, -6) IF d <> NULL THEN PRINT #hFile, " <tr><td colspan='5' align='right'><b>Total Harga Keseluruhan Penjualan: Rp. " & d & "." & b & "." & a & " </td></tr>" ELSE PRINT #hFile, " <tr><td colspan='5' align='right'><b>Total Harga Keseluruhan Penjualan: Rp. " & b & "." & a & " </td></tr>" ENDIF 'print footer here footer1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
CLOSE #hFile 'show the report ! FrmLaporan.SetPath(flname2) FrmLaporan.ShowModal FrmLaporan.nil = 3 FrmLaporan.Refresh FrmLaporan.nil = 3 ELSE message.Info("Data Penjualan Kosong!") ENDIF END WITH CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
8. Proses Lihat Data User
Proses ini digunakan untuk melihat data user yang tersimpan di
dalam entitas user. Berikut adalah kode programnya.
PUBLIC SUB show_data() WITH Tbv1 .Rows.Count = 0 .Columns.Count = 4 .Columns[0].Text = "ID User" .Columns[0].Width = 80 .Columns[1].Text = "Nama User" .Columns[1].Width = 180 .Columns[2].Text = "Alamat" .Columns[2].Width = 240 .Columns[3].Text = "Telepon" .Columns[3].Width = 130 END WITH MdlVal.fill_view(Tbv1, "select id_user, nm_user, alamat,
no_telp from user") END PUBLIC SUB Tbv1_data(baris AS Integer, kolom AS Integer) DIM arr[4] AS String arr[0] = "id_user" arr[1] = "nm_user" arr[2] = "alamat" arr[3] = "no_telp" WITH MdlVal .rs.MoveTo(baris) Tbv1.Data.Text = Str(.rs[arr[kolom]]) END WITH TLblItems.Text = "Jml User: " & Tbv1.Rows.Count CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
9. Proses Tambah Data User
Proses ini digunakan untuk menambah data user baru ke dalam
sistem. Berikut adalah kode programnya.
PUBLIC SUB BTambah_Click() IF TxtId.Text = NULL OR TxtNama.Text = NULL OR TxtAlmt.Text =
NULL OR TxtTlp.Text = NULL OR CmbJk.Text = "Pilih Jenis Kelamin" OR TxtTmp.Text = NULL OR TxtTgl.Text = NULL OR TxtPass.Text = NULL OR CmbJbtn.Text = "Pilih Jabatan" THEN
message.Warning("Input data gagal\nData user harus diisi") TL1.SetFocus '------------------------------ IF TxtId.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "ID user harus diisi." ELSE IF TxtNama.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Nama user harus diisi." ELSE IF TxtAlmt.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Alamat user harus diisi." ELSE IF TxtTlp.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Nomer Telepon user harus diisi." ELSE IF CmbJk.Text = "Pilih Jenis Kelamin" THEN TL1.Foreground = color.Red TL1.Text = "Tentukan jenis kelamin user." ELSE IF TxtTmp.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Tempat lahir user harus diisi." ELSE IF TxtTgl.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Tanggal lahir user harus diisi." ELSE IF TxtPass.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Password/kata sandi user harus diisi." ELSE IF CmbJbtn.Text = "Pilih Jabatan" THEN TL1.Foreground = color.Red TL1.Text = "Tentukan jabatan user." ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
ENDIF ENDIF ENDIF '------------ TL1.SetFocus ELSE IF CmbJbtn.Text = "Manager" THEN query = "insert into user values('" & TxtId.Text & "', '" &
TxtNama.Text & "', '" & TxtAlmt.Text & "','" & TxtTlp.Text & "', '" & CmbJk.Text & "', '" & TxtTmp.Text & "', '" &
Format$(DPick.Value, "yyyy/mm/dd") & "', md5('" & TxtPass.Text & "'), 'manager')"
sl = MdlVal.db.Exec(query) PictureBox1.Picture.Save("pic/FotoUser/" & TxtId.Text &
".jpg") clear()
ELSE IF CmbJbtn.Text = "Kasir" THEN query = "insert into user values('" & TxtId.Text & "', '" &
TxtNama.Text & "', '" & TxtAlmt.Text & "','" & TxtTlp.Text & "', '" & CmbJk.Text & "', '" & TxtTmp.Text & "', '" &
Format$(DPick.Value, "yyyy/mm/dd") & "', md5('" & TxtPass.Text & "'), 'kasir')"
sl = MdlVal.db.Exec(query) PictureBox1.Picture.Save("pic/FotoUser/" & TxtId.Text &
".jpg") clear() ELSE IF CmbJbtn.Text = "Operator" THEN query = "insert into user values('" & TxtId.Text & "', '" &
TxtNama.Text & "', '" & TxtAlmt.Text & "','" & TxtTlp.Text & "', '" & CmbJk.Text & "', '" & TxtTmp.Text & "', '" &
Format$(DPick.Value, "yyyy/mm/dd") & "', md5('" & TxtPass.Text & "'), 'operator')"
sl = MdlVal.db.Exec(query) PictureBox1.Picture.Save("pic/FotoUser/" & TxtId.Text &
".jpg") clear() ENDIF ENDIF ENDIF message.Info("Tambah data berhasil.") FrmLihatDataUsr.CmbJbtn_click() FrmLihatDataUsr.clir() ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
10. Proses Edit Data User
Proses ini digunakan untuk mengubah data user yang tersimpan
dalam entitas user. Berikut adalah kode programnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
PUBLIC SUB BSave_Click() BSave.Visible = FALSE BEdit.Visible = TRUE BHapus.Visible = TRUE BDPick.Visible = FALSE BNext.Enabled = TRUE BPrevious.Enabled = TRUE TL2.Visible = FALSE TL1.Text = NULL '========================= TxtNama.ReadOnly = TRUE TxtAlmt.ReadOnly = TRUE TxtTlp.ReadOnly = TRUE CmbJk.Enabled = FALSE TxtTmp.ReadOnly = TRUE TxtTgl.ReadOnly = TRUE TxtPass.ReadOnly = TRUE CmbJbtn.Enabled = FALSE BBrowse.Enabled = FALSE '========================= IF TxtId.Text = NULL OR TxtNama.Text = NULL OR TxtAlmt.Text =
NULL OR TxtTlp.Text = NULL OR TxtTmp.Text = NULL OR TxtTgl.Text = NULL OR TxtPass.Text = NULL THEN
message.Warning("Input data gagal\nData user harus diisi") '------------------------------ IF TxtId.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "ID user harus diisi." ELSE IF TxtNama.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Nama user harus diisi." ELSE IF TxtAlmt.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Alamat user harus diisi." ELSE IF TxtTlp.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Nomer Telepon user harus diisi." ELSE IF CmbJk.Text = "Pilih Jenis Kelamin" THEN TL1.Foreground = color.Red TL1.Text = "Tentukan jenis kelamin user." ELSE IF TxtTmp.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Tempat lahir user harus diisi." ELSE IF TxtTgl.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Tanggal lahir user harus diisi." ELSE IF TxtPass.Text = NULL THEN TL1.Foreground = color.Red TL1.Text = "Password/kata sandi user harus diisi."
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
ELSE IF CmbJbtn.Text = "Pilih Jabatan" THEN TL1.Foreground = color.Red TL1.Text = "Tentukan jabatan user." ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF '------------ TL1.SetFocus ELSE p2 = TxtPass.Text IF p1 <> p2 THEN query = "update user set nm_user= '" & TxtNama.Text &
"',alamat= '" & TxtAlmt.Text & "',no_telp='" & TxtTlp.Text & "',jk= '" & CmbJk.Text & "',tmp_lhr= '" & TxtTmp.Text & "',tgl_lhr= '" & Format$(CDate(tglku), "yyyy/mm/dd") & "',passwd= md5('" & TxtPass.Text & "'), jabatan='" & Lower$(CmbJbtn.Text) & "' where id_user='" & TxtId.Text &"'"
sl = MdlVal.db.Exec(query) PictureBox1.Picture.Save("pic/FotoUser/" & TxtId.Text &".jpg") ELSE query = "update user set nm_user= '" & TxtNama.Text &
"',alamat= '" & TxtAlmt.Text & "',no_telp='" &TxtTlp.Text & "',jk= '" & CmbJk.Text & "',tmp_lhr= '" & TxtTmp.Text & "',tgl_lhr= '" & Format$(CDate(tglku), "yyyy/mm/dd") & "', jabatan='" & Lower$(CmbJbtn.Text) & "' where id_user='" & TxtId.Text & "'"
sl = MdlVal.db.Exec(query) PictureBox1.Picture.Save("pic/FotoUser/" & TxtId.Text &".jpg") ENDIF FrmManager.fluz() message.Info("Data telah diubah.") ENDIF FrmLihatDataUsr.fluz() CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
11. Proses Hapus Data User
Proses ini digunakan untuk menghapus data user yang terdapat
dalam entitas user. Berikut kode programnya.
PUBLIC SUB BHapus_Click() SELECT message.Question("Hapus '" & TxtNama.Text & "' ?",
"OK", "CANCEL") CASE 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
sl2 = MdlVal.db.Exec("select * from jual where kd_kasir='" & TxtId.Text & "'")
sl3 = MdlVal.db.Exec("select * from user where id_user='" & TxtId.Text & "'")
sl4 = MdlVal.db.Exec("select * from user where jabatan='" & sl3!jabatan & "'")
IF sl2.Count <> 0 OR sl4.Count = 1 THEN message.Warning("Data user masih digunakan\nData user tidak
dapat dihapus.") ELSE MdlVal.db.Exec("delete from user where id_user='" & TxtId.Text
& "'") ME.Close FrmLihatDataUsr.Show FrmLihatDataUsr.Tbv1.Refresh ENDIF CASE 2 ME.Show END SELECT END
12. Proses Rekam Penjualan
Proses ini digunakan untuk merekan penjualan yang terjadi pada
saat terjadi proses jual-beli barang. Berikut adalah kode programnya.
PUBLIC SUB show_data() WITH Tbv .Rows.Count = 0 .Columns.Count = 6 .Columns[0].Text = "ID Barang" .Columns[0].Width = 100 .Columns[1].Text = "Keterangan" .Columns[1].Width = 310 .Columns[2].Text = "Qty" .Columns[2].Width = 80 .Columns[3].Text = "Disc (%)" .Columns[3].Width = 80 .Columns[4].Text = "Harga Barang" .Columns[4].Width = 150 .Columns[5].Text = "Total Harga" .Columns[5].Width = 150 END WITH END PUBLIC SUB Tbv_Data(baris AS Integer, kolom AS Integer) DIM a AS String DIM b AS String DIM d AS String DIM arr[6] AS String arr[0] = "id_brg" arr[1] = "keter" arr[2] = "jml_jual_brg" arr[3] = "discount"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
arr[4] = "harga" arr[5] = "tot_harga" WITH MdlVal .rs.MoveTo(baris) IF kolom = 0 THEN Tbv.Data.Alignment = align.Center IF kolom = 5 THEN a = Right(Left(Str(.rs[arr[kolom]]), -5), 3) b = Right(Left(Left(Str(.rs[arr[kolom]]), -5), -3), 3) d = Left(Left(Str(.rs[arr[kolom]]), -5), -6) IF b <> NULL THEN Tbv.Data.Text = b & "." & a ELSE IF d <> NULL THEN Tbv.Data.Text = d & "." & b & "." & a ELSE Tbv.Data.Text = a ENDIF ENDIF Tbv.Data.Alignment = align.Right ELSE IF kolom = 4 THEN a = Right(Str(.rs[arr[kolom]]), 3) b = Right(Left(Str(.rs[arr[kolom]]), -3), 3) d = Left(Str(.rs[arr[kolom]]), -6) IF b <> NULL THEN Tbv.Data.Text = b & "." & a ELSE IF d <> NULL THEN Tbv.Data.Text = d & "." & b & "." & a ELSE Tbv.Data.Text = a ENDIF ENDIF Tbv.Data.Alignment = align.Right ELSE IF kolom = 3 THEN Tbv.Data.Text = Str(.rs[arr[kolom]]) Tbv.Data.Alignment = align.Center ELSE IF kolom = 2 THEN Tbv.Data.Text = Str(.rs[arr[kolom]]) Tbv.Data.Alignment = align.Center ELSE Tbv.Data.Text = Str(.rs[arr[kolom]]) ENDIF ENDIF ENDIF ENDIF END WITH CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" &
error.Text & " " & error.Where) END PUBLIC SUB input_data() DIM a AS Integer
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
a = InStr(Txtkode.Text, "*") IF a <> 0 THEN IF a > 3 OR Len(TxtKode.Text) < 9 OR (a < 3 AND
Len(TxtKode.Text) > 9) OR (a < 3 AND Len(TxtKode.Text) < 6) THEN
message.Warning("ID barang salah\n\nFormat masukan:\n[Kode barang]\natau\n[jumlah jual brg][*][Kode barang]")
ELSE kdbrg = Right$(TxtKode.Text, 7) kli = Left$(TxtKode.Text, -8) sl10 = MdlVal.db.Exec("select jml_brg from barang where
id_brg='" & kdbrg & "'") IF sl10.Count <> 0 THEN sl = MdlVal.db.Exec("select count(*) hasil from brg_list where
kd_brg='" & kdbrg & "'") IF sl!hasil > 0 THEN sl = MdlVal.db.Exec("update brg_list set jml_jual_brg =
jml_jual_brg + '" & kli & "' where kd_brg='" & kdbrg & "'") ELSE sl2 = MdlVal.db.Exec("insert into brg_list values('" & kdbrg &
"', '" & FrmPasswd.TxtNo.Text & "', '" & kli & "')") ENDIF MdlVal.fill_view(Tbv, "select id_brg, concat(nm_brg, '" & " "
& "', ket) as keter, jml_jual_brg, discount, harga, (jml_jual_brg * harga)-(jml_jual_brg * harga)*(discount/100) as tot_harga from barang, brg_list where id_brg=kd_brg")
'------pesan jika jml brg tidak cocok dengan riilnya ^_^ ----- IF Tbv.Rows.Count <> 0 THEN sl12 = MdlVal.db.Exec("select jml_brg from barang where
id_brg='" & kdbrg & "' or id_brg='" & TxtKode.Text & "'") IF Val(Tbv[Tbv.Rows.Count - 1, 2].Text) > sl12!jml_brg THEN message.Warning("Jumlah barang kurang\nHarap hubungi
operator.") ENDIF '------------------------------------------------------------- ELSE message.Info("Data barang tidak ada") ENDIF ENDIF ELSE sl9 = MdlVal.db.Exec("select * from barang where id_brg='" &
TxtKode.Text & "'") IF sl9.Count <> 0 THEN sl6 = MdlVal.db.Exec("select count(*) hasil from brg_list
where kd_brg='" & TxtKode.Text & "'") IF sl6!hasil > 0 THEN sl7 = MdlVal.db.Exec("update brg_list set jml_jual_brg =
jml_jual_brg + 1 where kd_brg='" & TxtKode.Text & "'") ELSE IF sl6!hasil = 0 THEN sl8 = MdlVal.db.Exec("insert into brg_list values('" &
TxtKode.Text & "', '" & FrmPasswd.TxtNo.Text & "', 1)") ENDIF ENDIF MdlVal.fill_view(Tbv, "select id_brg, concat(nm_brg, '" & " "
& "', ket) as keter, jml_jual_brg, discount, harga,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
(jml_jual_brg * harga)-(jml_jual_brg * harga)*(discount/100) as tot_harga from barang, brg_list where id_brg=kd_brg")
'----pesan jika jml brg tidak cocok dengan riilnya ^_^ --- IF Tbv.Rows.Count <> 0 THEN sl12 = MdlVal.db.Exec("select jml_brg from barang where
id_brg='" & kdbrg & "' or id_brg='" & TxtKode.Text & "'") IF Val(Tbv[Tbv.Rows.Count - 1, 2].Text) > sl12!jml_brg THEN message.Warning("Jumlah barang kurang\nHarap hubungi
operator.") ENDIF '------------------------------------------------------- ELSE message.Info("Data barang tidak ada") ENDIF ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
'----------untuk buat kode nota------------
PUBLIC SUB kd_nota() sl4 = MdlVal.db.Exec("select * from jual") IF sl4.Count > 0 THEN sl5 = MdlVal.db.Exec("select max(id_jual) maks from jual") TxtIdJual.Text = sl5!maks + 1 TxtIdJual.Refresh ELSE TxtIdJual.Text = 600000001 ENDIF END
'----------------------
PUBLIC SUB Form_Open() ME.SkipTaskbar = TRUE LblEnter.Visible = FALSE Panel2.X = 20 Panel2.Y = 20 TxtKode.SetFocus sl = MdlVal.db.Exec("select * from user where id_user ='" &
FrmPasswd.TxtNo.Text & "'") TLblKasir.Text = "Kasir: " & sl!nm_user
IF MdlVal.db.Tables.Exist("brg_list") THEN MdlVal.db.Tables.Remove("brg_list")
sl2 = MdlVal.db.Exec("CREATE TABLE brg_list (kd_brg int(11), kd_kasir int(11), jml_jual_brg int(11), PRIMARY KEY (kd_brg,kd_kasir))")
kd_nota() show_data() CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
'----------------------
PUBLIC SUB TxtKode_KeyPress() DIM i AS Integer no_number_id() IF TxtKode.Text <> NULL THEN LblEnter.Visible = TRUE LblEnter.Text = "TEKAN ENTER" ELSE LblEnter.Visible = FALSE ENDIF IF key.Code = key.Delete THEN IF Tbv.Rows.Count <> 0 THEN Tbv.SetFocus Tbv.Row = 0 ELSE message.Info("Data barang tidak ada.\nF3/PageDown untuk
mencari data barang") ENDIF ENDIF IF key.Code = key.F5 THEN MdlVal.db.Exec("delete from brg_list") LCDNmbr.Value = 0 show_data() ENDIF IF key.Code = key.Enter OR key.Code = key.Return THEN IF TxtKode.Text <> NULL THEN input_data() LCDNmbr.Value = 0 sl13 = MdlVal.db.Exec("select (jml_jual_brg * harga)-
(jml_jual_brg * harga)*(discount/100) total from brg_list, barang where id_brg=kd_brg")
sl14 = MdlVal.db.Exec("select * from brg_list") sl13.MoveFirst FOR i = 1 TO sl14.Count LCDNmbr.Value = LCDNmbr.Value + sl13!total sl13.MoveNext NEXT LblEnter.Visible = FALSE ELSE message.Info("Masukkan kode barang.") ENDIF TxtKode.Clear TxtKode.SetFocus ENDIF IF key.Code = key.Insert THEN IF LCDNmbr.Value = 0 THEN message.Info("Data barang tidak ada.\nF3/PageDown untuk
mencari data barang") ELSE FrmBayar.jkode = TxtIdJual.Text FrmBayar.ShowModal ENDIF ENDIF IF key.Code = key["Esc"] THEN IF TxtKode.Text <> NULL THEN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99
TxtKode.Clear ENDIF ENDIF IF key.Code = key.F3 OR key.Code = key.PageDown THEN FrmCariBrgKasir.ShowModal CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
13. Proses Cari Data Barang
Proses ini digunakan kasir untuk mencari data kode barang dari
barang yang akan dijual. Berikut adalah kode programnya.
PUBLIC SUB show_data() WITH Tbv1 .Rows.Count = 0 .Columns.Count = 6 .Columns[0].Text = "Id Barang" .Columns[0].Width = 120 .Columns[1].Text = "Keterangan" .Columns[1].Width = 320 .Columns[2].Text = "Harga (Rp)" .Columns[2].Width = 140 .Columns[3].Text = "Disc(%)" .Columns[3].Width = 95 .Columns[4].Text = "Valid Date" .Columns[4].Width = 120 .Columns[5].Width = 0 END WITH END PUBLIC SUB Tbv1_data(baris AS Integer, kolom AS Integer) DIM a AS String DIM b AS String DIM d AS String DIM brg[6] AS String brg[0] = "id_brg" brg[1] = "keter" brg[2] = "harga" brg[3] = "discount" brg[4] = "v_date" brg[5] = "jenis_brg" WITH MdlVal .rs1.MoveTo(baris) Tbv1.Data.Text = Str(.rs1[brg[kolom]]) IF kolom = 0 THEN Tbv1.Data.Alignment = align.Center IF kolom = 3 THEN Tbv1.Data.Alignment = align.Center IF kolom = 2 THEN a = Right(Str(.rs1[brg[kolom]]), 3) b = Right(Left(Str(.rs1[brg[kolom]]), -3), 3) d = Left(Str(.rs1[brg[kolom]]), -6) IF b <> NULL THEN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100
Tbv1.Data.Text = b & "." & a ELSE IF d <> NULL THEN Tbv1.Data.Text = d & "." & b & "." & a ENDIF ENDIF Tbv1.Data.Alignment = align.Right ENDIF IF kolom = 4 THEN IF .rs1[brg[kolom]] <> "00:00:00" THEN Tbv1.Data.Text = Format(CDate(.rs1[brg[kolom]]), "dd/mm/yyyy") Tbv1.Data.Alignment = align.Center ENDIF END WITH CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) MdlVal.db.Rollback END PUBLIC SUB TxtNmBrg_KeyPress() IF key.Code = key.Tab THEN STOP EVENT MdlVal.tanpa_kutip() TxtNmBrg.Foreground = color.Black IF TxtNmBrg.Text = "Masukkan ID / nama / jenis / keterangan barang" THEN IF key.Code = key.Enter OR key.Code = key.Return THEN show_data() MdlVal.fill_view1(Tbv1, "select id_brg, concat(nm_brg, '" & " " & "', ket) as keter, harga, discount, v_date, jenis_brg from barang order by id_brg asc") TxtNmBrg.Visible = FALSE Tbv1.SetFocus Tbv1.Row = 0 TxtNmBrg.Clear ELSE TxtNmBrg.Clear ENDIF ELSE IF key.Code = key.Enter OR key.Code = key.Return THEN sl = MdlVal.db.Exec("select id_brg, jenis_brg, concat(nm_brg,
'" & " " & "', ket) as keter, harga, discount, v_date from barang where jenis_brg like '" & "%" & TxtNmBrg.Text & "%" & "' or id_brg like '" & "%" & TxtNmBrg.Text & "%" & "' or concat(nm_brg, '" & " " & "', ket) like '" & "%" & TxtNmBrg.Text & "%" & "'")
IF sl.Count = 0 THEN message.Info("Data barang tidak cocok.") TxtNmBrg.Clear TxtNmBrg.SetFocus ELSE show_data() MdlVal.fill_view1(Tbv1, "select id_brg, concat(nm_brg, '" & "
" & "', ket) as keter, harga, discount, v_date, jenis_brg from barang where jenis_brg like '" & "%" & TxtNmBrg.Text & "%" & "' or id_brg like '" & "%" & TxtNmBrg.Text & "%" & "'
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101
or concat(nm_brg, '" & " " & "', ket) like '" & "%" & TxtNmBrg.Text & "%" & "' order by id_brg asc")
TxtNmBrg.Visible = FALSE Tbv1.SetFocus Tbv1.Row = 0 TxtNmBrg.Clear ENDIF ENDIF IF key.Code = key.Esc THEN IF TxtNmBrg.Text = NULL THEN ME.Close ELSE TxtNmBrg.Clear ENDIF ENDIF ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
14. Proses Tambah Data Supplier
Proses ini digunakan untuk menambah data supplier baru ke
dalam sistem. Berikut adalah kode programnya.
PUBLIC SUB BTambah_Click() IF TxtIdSupp.Text = NULL OR TxtNamaSupp.Text = NULL OR
TxtTlp.Text = NULL OR TxtAlmt.Text = NULL OR CmbStatus.Text = "Pilih Status" THEN
message.Warning("Input data gagal\nData supplier harus diisi") TL1.Foreground = color.Red IF TxtIdSupp.Text = NULL THEN TL1.Text = "ID supplier harus diisi" ELSE IF TxtNamaSupp.Text = NULL THEN TL1.Text = "Nama supplier harus diisi" ELSE IF TxtTlp.Text = NULL THEN TL1.Text = "No telepon supplier harus diisi" ELSE IF TxtAlmt.Text = NULL THEN TL1.Text = "Alamat supplier harus diisi" ELSE IF CmbStatus.Text = "Pilih Status" THEN TL1.Text = "Tentukan status supplier" ENDIF ENDIF ENDIF ENDIF ENDIF TL1.SetFocus
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
102
ELSE query = "insert into supplier values('" & TxtIdSupp.Text & "',
'" & TxtNamaSupp.Text & "', '" & TxtTlp.Text & "','" & TxtAlmt.Text & "','" & CmbStatus.Text & "','" & TxtWeb.Text & "')"
sl = MdlVal.db.Exec(query) PB.Picture.Save("pic/supp/" & TxtIdSupp.Text & ".jpg") message.Info("Tambah data berhasil.") TxtIdSupp.Text = NULL sl = MdlVal.db.Exec("select max(id_supplier) as maks from
supplier") TxtIdSupp.Text = sl!maks + 1 TxtIdSupp.Refresh TxtNamaSupp.SetFocus clear() Form_open() FrmLihatDataSupplierOpPergd.Form_open() ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
15. Proses Edit Data Supplier
Proses ini digunakan untuk mengubah data supplier. Berikut kode
programnya.
PUBLIC SUB BSave_Click() IF TxtNmSupp.Text = NULL OR TxtAlmtSupp.Text = NULL OR
CmbStatus.Text = ("Pilih Status") OR TxtTlpSupp.Text = NULL THEN
message.Warning("Ubah data gagal.") TL1.Foreground = color.Red IF TxtIdSupp.Text = NULL THEN TL1.Text = "ID supplier harus diisi" ELSE IF TxtNmSupp.Text = NULL THEN TL1.Text = "Nama supplier harus diisi" ELSE IF TxtTlpSupp.Text = NULL THEN TL1.Text = "No telepon supplier harus diisi" ELSE IF TxtAlmtSupp.Text = NULL THEN TL1.Text = "Alamat supplier harus diisi" ELSE IF CmbStatus.Text = "Pilih Status" THEN TL1.Text = "Tentukan status supplier" ENDIF ENDIF ENDIF ENDIF ENDIF TL1.SetFocus
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
103
ELSE query = "update supplier set nm_supplier='" & TxtNmSupp.Text &
"', no_telp='" & TxtTlpSupp.Text & "', alamat_toko='" & TxtAlmtSupp.Text & "', status='" & CmbStatus.Text & "', website='" & TxtWeb.Text & "' where id_supplier = '" & TxtIdSupp.Text & "'"
sl = MdlVal.db.Exec(query) PB.Picture.Save("pic/supp/" & TxtIdSupp.Text & ".jpg") message.Info("Data telah diubah.") BSave.Visible = FALSE BEdit.Visible = TRUE BHapus.Visible = TRUE BNext.Enabled = TRUE BPrevious.Enabled = TRUE '========================== TxtNmSupp.ReadOnly = TRUE TxtTlpSupp.ReadOnly = TRUE TxtAlmtSupp.ReadOnly = TRUE TxtWeb.ReadOnly = TRUE CmbStatus.Enabled = FALSE '========================== ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
16. Proses Hapus Data Supplier
Proses ini digunakan untuk menghapus data supplier. Berikut kode
programnya.
PUBLIC SUB BHapus_Click() SELECT message.Question("Hapus '" & TxtNmSupp.Text & "' ?",
"OK", "CANCEL") CASE 1 sl1 = MdlVal.db.Exec("select * from barang where kd_supply='"
& TxtIdSupp.Text & "'") IF sl1.Count <> 0 THEN message.Warning("Data supplier masih digunakan\nData supplier
tidak dapat dihapus.") ELSE sl = MdlVal.db.Exec("delete from supplier where id_supplier='"
& TxtIdSupp.Text & "'") message.Info("Data supplier terhapus") ME.Close FrmLihatDataSupplierOpPergd.Form_Open() FrmLihatDataSupplierOpPergd.Show FrmLihatDataSupplierOpPergd.clir() ENDIF CASE 2 message.Info("Batal hapus data supplier") ME.Show END SELECT
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
END
17. Proses Tambah Data Barang
Proses ini digunakan untuk menambah data barang baru ke dalam
sistem. Berikut kode programnya.
PUBLIC SUB BTambahBrg_Click() IF TxtIdBrg.Text = NULL OR TxtNmBrg.Text = NULL OR CmbJns.Text
= "Pilih Jenis Barang" OR TxtWarna.Text = NULL OR TxtJum.Text = NULL OR TxtJumMin.Text = NULL OR TxtHrgBeli.Text = NULL OR TxtHrg.Text = NULL OR CmbKdSupp.Text = "Pilih Supplier" THEN
message.Warning("Input data gagal\nData barang harus diisi") TL1.Foreground = color.Red TL2.Text = NULL IF TxtIdBrg.Text = NULL THEN TL1.Text = "ID barang harus diisi." ELSE IF TxtNmBrg.Text = NULL THEN TL1.Text = "Nama barang harus diisi." ELSE IF CmbJns.Text = "Pilih Jenis Barang" THEN TL1.Text = "Tentukan jenis barang." ELSE IF TxtWarna.Text = NULL THEN TL1.Text = "Warna barang harus diisi." ELSE IF TxtJum.Text = NULL THEN TL1.Text = "Jumlah barang harus diisi." ELSE IF TxtJumMin.Text = NULL THEN TL1.Text = "Jumlah minimum barang harus diisi." ELSE IF TxtHrg.Text = NULL THEN TL1.Text = "Harga barang harus diisi." ELSE IF CmbKdSupp.Text = "Pilih Supplier" THEN TL1.Text = "Tentukan supplier barang." ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF TL1.SetFocus ELSE IF TxtJns.Text = NULL THEN IF NOT (TxtVDate.Text = NULL) THEN sl = MdlVal.db.Exec("insert into barang values('" &
TxtIdBrg.Text & "', '" & TxtNmBrg.Text & "', '" & CmbJns.Text & "', '" & TxtWarna.Text & "', '" & TxtJum.Text
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
105
& "', '" & TxtJumMin.Text & "', '" & TxtDisc.Text & "', '" & TxtHrgBeli.Text & "', '" & TxtHrg.Text & "', '" & Format$(DPick.Value, "yyyy/mm/dd") & "', '" & supli & "', '" & TxtKet.Text & "', '" & CBBatas.Text & "')")
ELSE sl = MdlVal.db.Exec("insert into barang values('" &
TxtIdBrg.Text & "', '" & TxtNmBrg.Text & "', '" & CmbJns.Text & "', '" & TxtWarna.Text & "', '" & TxtJum.Text & "', '" & TxtJumMin.Text & "', '" & TxtDisc.Text & "', '" & TxtHrgBeli.Text & "', '" & TxtHrg.Text & "', '" & TxtVDate.Text & "', '" & supli & "', '" & TxtKet.Text & "', '" & CBBatas.Text & "')")
ENDIF ELSE IF NOT (TxtVDate.Text = NULL) THEN sl = MdlVal.db.Exec("insert into barang values('" &
TxtIdBrg.Text & "', '" & TxtNmBrg.Text & "', '" & TxtJns.Text & "', '" & TxtWarna.Text & "', '" & TxtJum.Text & "', '" & TxtJumMin.Text & "', '" & TxtDisc.Text & "', '" & TxtHrgBeli.Text & "', '" & TxtHrg.Text & "', '" & Format$(DPick.Value, "yyyy/mm/dd") & "', '" & supli & "', '" & TxtKet.Text & "', '" & CBBatas.Text & "')")
sl4 = MdlVal.db.Exec("select count(distinct(jenis)) mam from jenis")
IF sl4!mam = 0 THEN sl3 = MdlVal.db.Exec("insert into jenis values('" & 1000 & "',
'" & TxtJns.Text & "')") ELSE sl2 = MdlVal.db.Exec("select max(id_jenis) mam from jenis") mami = sl2!mam + 1000 sl3 = MdlVal.db.Exec("insert into jenis values('" & mami & "',
'" & TxtJns.Text & "')") ENDIF ELSE sl = MdlVal.db.Exec("insert into barang values('" &
TxtIdBrg.Text & "', '" & TxtNmBrg.Text & "', '" & TxtJns.Text & "', '" & TxtWarna.Text & "', '" & TxtJum.Text & "', '" & TxtJumMin.Text & "', '" & TxtDisc.Text & "', '" & TxtHrgBeli.Text & "', '" & TxtHrg.Text & "', '" & TxtVDate.Text & "', '" & supli & "', '" & TxtKet.Text & "', '" & CBBatas.Text & "')")
sl4 = MdlVal.db.Exec("select count(distinct(jenis)) mam from jenis")
IF sl4!mam = 0 THEN sl3 = MdlVal.db.Exec("insert into jenis values('" & 1000 & "',
'" & TxtJns.Text & "')") ELSE sl2 = MdlVal.db.Exec("select max(id_jenis) mam from jenis") mami = sl2!mam + 1000 sl3 = MdlVal.db.Exec("insert into jenis values('" & mami & "',
'" & TxtJns.Text & "')") ENDIF ENDIF ENDIF PB.Picture.Save("pic/brg/" & TxtIdBrg.Text & ".jpg") message.Info("Tambah data berhasil.")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
106
FrmLihatDataBrgOpPergd.Form_open() Form_Open() clir() TxtNmBrg.SetFocus ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
18. Proses Edit Data Barang
Proses ini digunakan untuk mengubah data barang yang tersimpan
di dalam entitas barang. Berikut kode programnya.
PUBLIC SUB BSave_Click() DIM tgl4 AS String IF TxtIdBrg.Text = NULL OR TxtNmBrg.Text = NULL OR
CmbJnsBrg.Text = "Pilih Jenis Barang" OR TxtWarna.Text = NULL OR TxtJml.Text = NULL OR TxtJumMin.Text = NULL OR TxtHrgBeli.Text = NULL OR TxtHrg.Text = NULL OR CmbKdSupp.Text = "Pilih Supplier" THEN
message.Warning("Ubah data gagal\nData barang harus diisi") ELSE IF Val(TxtHrg.Text) < Val(TxtHrgBeli.Text) THEN message.Info("Harga jual tidak boleh kurang dari harga beli.") TxtHrg.SetFocus TxtHrg.Text = hrg ELSE BSave.Visible = FALSE BEdit.Visible = TRUE BHapus.Visible = TRUE BBarcode.Visible = TRUE BDpick.Visible = FALSE BHpsTgl.Visible = FALSE BSave.Enabled = FALSE BNext.Enabled = TRUE BPrevious.Enabled = TRUE CBBatas.Enabled = FALSE kiwo = Left(TxtVDate.Text, 2) 'tgl tengah = Mid(TxtVDate.Text, 4, 2) 'bln tengen = Right(TxtVDate.Text, 4) 'thn tgl4 = tengen & "/" & tengah & "/" & kiwo '====================== sl = MdlVal.db.Exec("select * from supplier where nm_supplier='" & CmbKdSupp.Text & "'") sl1 = MdlVal.db.Exec("update barang set nm_brg='" &
TxtNmBrg.Text & "', ket='" & TxtKet.Text & "', jenis_brg='" & CmbJnsBrg.Text & "', warna='" & TxtWarna.Text & "', jml_brg='" & TxtJml.Text & "', jml_min='" & TxtJumMin.Text & "', discount='" & TxtDiscount.Text & "', hrg_beli='" & TxtHrgBeli.Text & "', harga='" & TxtHrg.Text & "', v_date='" & tgl4 & "', kd_supply='" & sl!id_supplier & "', batas='" & CBBatas.Text & "' where id_brg='" & TxtIdBrg.Text & "'")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
107
'==================================== PB.Picture.Save("pic/brg/" & TxtIdBrg.Text & ".jpg") message.Info("Data telah diubah.") TxtNmBrg.ReadOnly = TRUE TxtKet.ReadOnly = TRUE TxtWarna.ReadOnly = TRUE TxtJml.ReadOnly = TRUE TxtJumMin.ReadOnly = TRUE TxtDiscount.ReadOnly = TRUE TxtHrgBeli.ReadOnly = TRUE TxtHrg.ReadOnly = TRUE TxtLaba.ReadOnly = TRUE TxtVDate.ReadOnly = TRUE CmbKdSupp.Enabled = FALSE BDetailSupply.Enabled = FALSE ENDIF ENDIF CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
19. Proses Hapus Data Barang
Proses ini digunakan untuk menghapus data barang. Data-data yang
akan dihapus harus dipastikan tidak digunakan oleh entitas yang lain atau
sudah benar-benar tidak digunakan. Berikut adalah kode programnya.
PUBLIC SUB BHapus_Click() SELECT message.Question("Hapus data barang '" & TxtNmBrg.Text
& "'?", "Ya", "Tidak") CASE 1 sl15 = MdlVal.db.Exec("select * from jual where kd_brg='" &
TxtIdBrg.Text & "'") IF sl15.Count <> 0 THEN message.Warning("Data barang masih digunakan\nData barang
tidak dapat dihapus.") ELSE sl14 = MdlVal.db.Exec("delete from barang where id_brg='" &
TxtidBrg.Text & "'") message.Info("Data barang terhapus") ME.Close FrmLihatDataBrgOpPergd.clir() ENDIF CASE 2 message.Info("Batal hapus data barang") END SELECT CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
108
20. Proses Ubah Password Kasir dan Operator
Proses ini digunakan kasir dan operator pergudangan untuk
mengubah password. Berikut adalah kode programnya.
PUBLIC SUB BOk_Click() IF TxtCurr.Text = NULL OR TxtNew.Text = NULL OR
TxtVerify.Text = NULL THEN message.Warning("Masukkan Password") ELSE IF TxtCurr.Text <> FrmPasswd.TxtPass.Text THEN message.Warning("password salah") clear() ELSE IF TxtCurr.Text = FrmPasswd.TxtPass.Text THEN IF TxtNew.Text <> TxtVerify.Text THEN message.Warning("update password gagal") ELSE IF TxtNew.Text = TxtVerify.Text THEN sl = MdlVal.db.Exec("select * from user where id_user='" &
FrmPasswd.TxtNo.Text & "'") IF sl.Count = 1 THEN IF TxtAlmt.Text = NULL OR TxtTlp.Text = NULL THEN message.Warning("Masukkan alamat dan no telepon") ELSE query = "update user set alamat='" & TxtAlmt.Text &
"',no_telp='" & TxtTlp.Text & "', passwd=md5('" & TxtVerify.Text & "') where id_user='" & FrmPasswd.TxtNo.Text & "'"
sl = MdlVal.db.Exec(query) message.Info("Ubah data user berhasil") clear() ENDIF END IF END IF END IF END IF END IF END IF END
21. Proses Cetak Barcode
Proses ini digunakan untuk mencetak barcode kode barang.
Pemanggilan program jika hanya untuk melihat barcode yang akan
dicetak menggunakan printit(FALSE). Tetapi untuk pemanggilan
program untuk mencetak barcode menggunakan printit(TRUE).
Berikut kode programnya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
109
PUBLIC SUB header(prn AS Boolean) PRINT #hFile, "<html>" PRINT #hFile, " <tr><td colspan='8'> </td></tr>" PRINT #hFile, "<head><title>Cetak Barcode</title></head>" PRINT #hFile, "<body topmargin='0' leftmargin='0'" IF prn = TRUE THEN PRINT #hFile, " onload='window.print()'" PRINT #hFile, ">" PRINT #hFile, "<table border='1' width='100' cellpadding='5' cellspacing='0' align='center'>" PRINT #hFile, " <tr>" PRINT #hFile, " <td colspan='5' align='center'>" PRINT #hFile, " <h3>" & TxtNmBrg.Text & "</h3>" PRINT #hFile, " </td>" PRINT #hFile, " </tr>" PRINT #hFile, " <tr>" PRINT #hFile, " <td colspan='5' align='center'>" PRINT #hFile, " <h3>" & "Kode: " & TxtIdBrg.Text & "</h3>" PRINT #hFile, " </td>" PRINT #hFile, " </tr>" END PUBLIC SUB content(p1 AS String) IF TxtDiscount.Text = 0 THEN PRINT #hFile, " <td><span style='font-size: 2pt '>" & TxtNmBrg.Text & "</span>" ELSE PRINT #hFile, " <td><span style='font-size: 2pt '>" & TxtNmBrg.Text & " Disc: " & TxtDiscount.Text & " %</span>" ENDIF PRINT #hFile, " <span style='font-family: barcod39; font-size: 25pt '>" & p1 & " </span>" PRINT #hFile, " <span style='font-size: 2pt '>" & p1 & " Rp." & TxtHrg.Text & "</span>" PRINT #hFile, " </td>" END PUBLIC SUB footer() PRINT #hFile, "</table>" PRINT #hFile, "</body>" PRINT #hFile, "</html>" END PUBLIC SUB printit(prn AS Boolean) DIM i AS Integer IF Exist(flname0) THEN KILL flname0 OPEN flname0 FOR WRITE CREATE AS #hFile 'print headers here header(prn) FOR i = 1 TO bnyk content(TxtIdBrg.Text) IF i MOD 5 = 0 THEN PRINT #hFile, " <tr>" ENDIF NEXT footer
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
110
CLOSE #hFile 'show the report ! FrmCetakBrcd.SetPath(flname0) FrmCetakBrcd.ShowModal END PUBLIC SUB Form_Open() Panel2.X = 20 Panel2.Y = 20 BSave.Visible = FALSE ME.SkipTaskbar = TRUE cmb1() '========================================== CBBatas.Clear CBBatas.Add("Pilih Batas") CBBatas.Add("-------------------------------------") CBBatas.Add("30") CBBatas.Add("60") CBBatas.Add("90") CBBatas.Add("120") '========================================== readdata() hrg = TxtHrg.Text laba = TxtHrg.Text IF TxtVDate.Text <> NULL THEN kiwo = Left(TxtVDate.Text, 2) 'tgl tengah = Mid(TxtVDate.Text, 4, 2) 'bln tengen = Right(TxtVDate.Text, 4) 'thn TxtVDate.Text = tengah & "/" & kiwo & "/" & tengen ENDIF draw_chart() LblGrfkBrg.Text = TxtNmBrg.Text flname0 = User.Home & "/Barcode.htm" CATCH message.Error("Kesalahan sistem. Harap hubungi programer\n" & error.Text & " " & error.Where) END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
D. Evaluasi Dari Pengguna
Telah dilakukan kuisioner terhadap pengguna yang diberikan kepada 20
responden dengan kriteria jawaban:
5. Sangat setuju (nilai 4)
4. Setuju (nilai 3)
3. Ragu-ragu (nilai 2)
2. Tidak setuju (nilai 1)
1. Sangat Tidak Setuju (nilai 0)
111
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
112
Hasil Kuisioner
Responden 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Rata-rata
Aspek Rata-rata Kriteria
1 3 3 3 4 3 4 2 1 3 0 2 3 4 3 2 4 3 2 4 1 2,70 2 2 2 1 0 0 1 0 3 0 0 2 2 0 1 2 3 2 1 2 3 1,35 I 3 1 1 1 0 0 0 0 2 0 0 1 0 0 1 1 3 2 1 0 2 0,80
1,62
4 3 2 3 3 2 2 2 2 2 3 3 3 2 2 2 2 2 2 4 4 2,50 II
5 4 2 3 4 3 4 4 3 3 3 4 3 3 2 3 3 2 2 3 3 3,05 2,78
6 3 2 4 3 4 3 4 2 4 3 3 4 4 3 4 3 3 2 4 1 3,15 III
7 3 4 3 4 3 4 2 3 4 3 4 2 3 4 4 4 2 4 3 2 3,25 3,20
8 3 3 2 4 3 4 2 2 4 3 3 4 4 3 3 3 4 4 4 3 3,25 IV
9 2 4 3 3 2 3 3 2 3 2 2 3 3 2 2 3 3 4 3 4 2,80 3,03
Krite
ria
V 10 3 4 4 4 4 4 3 3 4 2 3 4 3 4 3 4 4 3 4 3 3,50 3,50
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
113
Penulis memberikan kriteria baik apabila indeks nilai jawaban lebih dari
atau sama dengan 3. Berikut adalah hasil rata-rata kriteria jawaban dari
kuisioner tersebut.
1. Pengamalan pengguna.
Dari hasil kuisioner, diperoleh nilai rata-rata untuk kriteria pertama
adalah 1,67. Dengan demikian dapat disimpulkan bahwa pengalaman
pengguna masih kurang baik.
2. Mempelajari aplikasi
Dari hasil kuisioner, diperoleh nilai rata-rata untuk kriteria kedua adalah
2,78. Dengan demikian dapat disimpulkan bahwa aplikasi ini susah
untuk dipelajari.
3. Navigasi aplikasi
Dari hasil kuisioner, diperoleh nilai rata-rata untuk kriteria ketiga adalah
3,20. Dengan demikian dapat disimpulkan bahwa navigasi aplikasi
mudah untuk dimengerti atau digunakan.
4. Reaksi keseluruhan
Dari hasil kuisioner, diperoleh nilai rata-rata untuk kriteria keempat
adalah 3,03. Dengan demikian dapat disimpulkan bahwa reaksi
keseluruhan dari sistem sudah baik.
5. Manfaat aplikasi
Dari hasil kuisioner, diperoleh nilai rata-rata untuk kriteria kelima adalah
3,50. Dengan demikian dapat disimpulkan bahwa manfaat aplikasi sudah
sesuai.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114
BAB V
PENUTUP
A. Kesimpulan
Sistem Informasi Penjualan dan Persediaan Barang Minimarket Berbasis
Linux ini berhasil dibuat dengan menggunakan Gambas dan database MySql
di Linux. Gambas dan MySql merupakan software open source yang dapat
berjalan dalam sistem operasi linux yang merupakan sistem operasi open
source. Sehingga dengan keadaan seperti itu, pihak minimarket yang
menggunakan sistem ini tidak dibebani biaya lisensi.
Dari data hasil olah kuisioner, didapat kesimpulan bahwa Sistem
Informasi Penjualan dan Persediaan Barang Minimarket Berbasis Linux layak
untuk digunakan.
B. Saran
Untuk pengembangan lebih lanjut, saran yang dapat diberikan penulis
adalah:
1. Sistem diharapkan dapat dilengkapi dengan barcode reader.
2. Tampilan sistem dan warna sistem dibuat lebih menarik.
3. Sistem diharapkan memiliki menu untuk fasilitas perhitungan keuangan
sehingga dapat dibuat laporan rugi-laba.
4. Diharapkan ada fasilitas perhitungan gaji karyawan dalam manager.
5. Diharapkan memiliki menu untuk menampilkan grafik urutan penjualan
terlaris.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
115
6. Diharapkan dapat menggunakan resolusi monitor selain 1024 x 768 pixel.
7. Diharapkan sistem memiliki form retur penjualan.
8. Diharapkan memiliki fasilitas untuk mengubah profil toko.
9. Sistem yang akan dikembangkan diharapkan dapat berbasis client-server.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
116
DAFTAR PUSTAKA
Coar, K. (2006). The Open Source Definition (Annotated). [online] (http://www.opensource.org/docs/definition.php, diakses pada tanggal 25 Agustus 2008)
Kristanto, A. 2003. Perancangan Sistem Informasi dan Aplikasinya. Yogyakarta: Gava Media.
Kristanto, H. 2004. Konsep dan Perancangan Database. Yogyakarta: Andi
Oetomo, B S D. 2002. Perencanaan Dan Pembangunan Sistem Informasi. Yogyakarta: Andi
Ridho, M. 2006. Panduan Aplikatif Pemrograman Gambas. Yogyakarta: Andi
Sidik, B. 2005. MySQL Untuk Pengguna, Administrator, dan Pengembangan Aplikasi Web. Bandung: Informatika
Sugiarto, T. 2003. Materi Kuliah: Rekayasa Perangkat Lunak I. Yogyakarta: Universitas Sanata Dharma.
Suhendar, A., Gunadi, H. 2002. Visual Modeling Menggunakan UML dan Rational Rose. Bandung: Informatika
Wijono, S H., Widiarti, A. R. 2005. Handout: Sistem Basis Data Terdistribusi.Yogyakarta
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI