Anda di halaman 1dari 166

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
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

xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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
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
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

xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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
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

xv
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xvi

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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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

perusahaan. Oleh karena itu, maka data seharusnya diolah sebaik mungkin

sehingga 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

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


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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,

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


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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.


11. Sistem belum dapat menampilkan grafik urutan penjualan terlaris.

BAB I PENDAHULUAN
Bab ini berisi mengenai latar belakang pemilihan topik, rumusan

ini dan disertai saran-saran untuk pengembangan sistem.

BAB II LANDASAN TEORI


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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.

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


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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. Syaratsyarat

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.
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


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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


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.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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.

C. Diagram Alir Data (DAD)/Data Flow Diagram (DFD)

yaitu satu-satu, satu-banyak, dan banyak-banyak (Kristanto, 2003).

E. Basis Data

G. Normalisasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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

pembentukan struktur database. Contoh perintah membuat database

mahasiswa: create database mahasiswa.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

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.

b) avg()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

10

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 dapat berupa dana field atau karakter.


count()

I. Gambas

Gambasmerupakan salah satu produk


open source
danfree(Ridho, 2006:1).

Gambasbersifatobject oriented
dan berjalan di lingkungan
Linux. Gambas

memiliki banyak kesamaan dengan Visual Basic namun


Gambasbukan

merupakan kloning dari Visual Basic tetapi murni open


proyek
sourcedi

bawah naungan GPL


General
( Public Licence
).

Komponen dalam
Gambas

1. Menu

Jendela menu merupakan area kerja utama pembuatan aplikasi.

2. Toolbox
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

11

Jendelatoolboxadalah 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 objeklabel


seperti
, button
,

text, combo
, table, dan sebagainya.

5. Kode Editor

Jendela kode editor digunakan untuk menulis semua kode program seperti

class, module
, danobjek.

BAB III ANALISA DAN PERANCANGAN SISTEM


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

12

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

13

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 sistemlinux


operasi
.

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

Operator
Kasir
Pergudangan

Gambar 3.1 Struktur Organisasi

Minimarket dipimpin oleh


managerdalam sistem ini berperan sebagai

admin yang memiliki bawahan sebagai berikut:

a) bagian penjualan/
user

b) bagian pergudangan/
operatorpergudangan

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

manager/admin minimarket yang berhak penuh terhadap sistem untuk


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

14

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.

Manager dalam sistem ini berperan sebagai admin. Admin bertugas


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

15

sebagai pengendali utama sistem.


Admindapat melihat laporan penjualan

harian, bulanan, tahunan dan melihat laporan persediaanAdmin


barang.

juga dapat mengubah data


manager
/admin, user, operatorpergudangan.

Adminmemiliki hak penuh atas sistem.

3. Analisa Kebutuhan

Sistem yang akan dikembangkan ini diharapkan dapat digunakan untuk

membantu
userdanoperatorpergudangan 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 Bagianoperatorpergudangana) Mencari data barang/
supplier
b) Melihat detail data barang/
supplier
c) Mencatat data barang baru
d) Mengubah/menghapus data barang
e) Menambah data
supplierbaru
f) Mengubah/menghapussupplier
data
g) Mengubah data
password
3 Bagianmanager
/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/menghapususer
data
Hardware dan software yang digunakan penulis dalam pembuatan sistem ini:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

16

1) Software
a. Bahasa pemrograman
: Gambas 1.9.23
b. Database : MySql 5.0.18
c. Sistem operasi : SUSELinux10.1
2) Hardware
a. Proccessor : Intel(R) Pentium(R) 4 CPU 2.80GHz
b. RAM : 1016 MB
c. VGA : 128 MB
d. HardDisk : 80 GB
e. Resolusi monitor : 1024 x 768
pixel

B. DESKRIPSI UMUM SISTEM

Nama Sistem : Sistem


Informasi Penjualan dan PersediaanBarang

Minimarket Berbasis
Linux.

Tujuan sistem : membuat Sistem Informasi Penjualan dan Persediaan Barang

Minimarket Berbasis
Linux agar kinerjauser, 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 User


pengguna
), yaitu:(

sisi User, Operator


Pergudangan dan sisi
manager
seperti pada gambar

berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

17

d) Pesan interaksi merupakan segala bentuk pesan dari sistem ke User yang

bertujuan sebagai sarana komunikasi User dengan sistem.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

18

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

19
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

20

password dan validasi password dan tempat penyimpanannya adalah jual,

barang, dan user(user dengan jabatan user). Proses rekam data penjualan

digunakan untuk mencatat setiap transaksi penjualan yang terjadi. Proses ini
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

21

Gambar 3.7 DAD level 2 Proses Pergudangan (proses 2)


Pada level 2 untuk proses pergudangan terdapat 5 proses dan 3 tempat

penyimpanan yaitu proses validasi login, update data barang, ubah password,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

22

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

23

7. Diagram alir data level 2 untuk proses Admin

manager. Proses update User digunakan untuk mengubah data User

(manager, user, operator pergudangan) jika terdapat data yang kurang benar.
Proses ini menggunakan tempat penyimpanan manager, user, dan operator
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

24

Gambar 3.10 DAD level 3 Proses Update Data Barang (proses 2.2)

Pada level 3 untuk proses update data barang terdapat 4 proses yaitu

proses tambah data barang, edit data barang, hapus data barang, validasi data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

25

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

26

10. Diagram alir data Level 3 untuk proses Update data Supplier

update User terdapat proses validasi data supplier dan validasi data User.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

27

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 *
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

28

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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

29

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 *

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 *
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

30

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 }
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

31

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

32

digunakan untuk menemukan supplier dari barang tersebut. Satu supplier

dapat mensupply lebih dari satu barang tetapi satu barang dengan satu kode

hanya disupply oleh satu supplier. Ini dimaksudkan untuk mempermudah


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

33

digunakan untuk menentukan id barang baru yang akan dimasukkan


selanjutnya. Id_brg ditentukan berdasarkan id_jenis pada jenis barang tertentu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

34

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_supplie
r nm_supplier no_telp alamat status website

Di dalam tabelsupplier
, id_suppliermerupakan sebuah kunci
key.
)(

Status pada tabel di atas berarti apakah


suppliertersebut masih aktif

mensupplybarang 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
userdan tabel barang. Di dalam tabel

jual, id_jual merupakan kunci


key).(Jika terjadi hubungan
many-to-many
,

setiapkeydari tabel yang berhubungan akan masuk ke tabel yang baru

terbentuk. Kedua
keytersebut 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

35

id_brg pada tabel barang. Sedangkan kd_user merupakan atribut yang berasal
dari tabel user dengan jabatan kasir, kd_user bernilai sama dengan id_user.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

36

Kedua atribut tersebut masuk ke dalam tabel jual karena hubungan antara tabel

userdan 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 tabelusersudah memiliki dependensi

sepenuhnya terhadap kunci primer

barang(
id_brg, nm_brg, jenis_brg, id_jenis, warna, jml_brg,
discount
jml_min,
,

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(i
d_brg,nm_brg, jenis_brg, warna, jml_brg, jml_min,
discount
,

hrg_beli, harga, v_date, ket, batas,


d_supply
k)

jenis(i
d_jenis
, jenis)

Dengan tabel jenis ini maka setiap atribut pada tabel barang memiliki

dependensi terhadap kunci primer. Begitu juga dengan tabel jenis, atribut

jenis memiliki dependensi terhadap id_jenis.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

37

supplie
r(id_suppli
er, nm_supp, alamat, no_telp, nm_toko)

Pada tabel
suppliersetiap atribut sudah memiliki dependensi terhadap

kunci primer.

jual i(d_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,

hrg_beli, harga, v_date, ket, batas, kd_supply)


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

38

jenis(i
d_jenis
, jenis)

supplier
(id_supplier
, nm_supp, alamat, no_telp, nm_toko)

jual i(d_jual
, kd_brg
, kd_user, waktu, jml_jual_brg)

E. DESAIN
INPUTDANOUTPUT

1. Inputkepada sistem

Agar sistem dapat berjalan sebagaimana mestinya, sebuah sistem

membutuhkan
inputyang memadai dengan ketentuan yang telah ditentukan.

Inputtersebut dapat berupa data variabel, yaitu:

1. No Id 11.jumlah barang

2. password 12.discount

3. namaUser 13.harga barang

4. alamat 14.tanggal kadaluarsa

5. no telepon 15.jumlah bayar

6. jenis kelamin 16.kodesupplier

7. tempat lahir 17.namasupplier

8. tanggal lahir 18.alamat toko

9. id barang 19.website/email

10.nama barang

Dari keseluruhan
inputyang dibutuhkan sistem. Semua
inputtersebut

tidak dimasukkan secara serentak dan bersamaan, tetapi melalui jendela-

jendela yang berbeda.

2. Output dari sistem


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

39

Sebuah sistem tentunya dibangun untuk memberikan kemudahan bagi

penggunanya dalam melakukan pekerjaan mulai dari proses hingga hasil

outputyang dibutuhkan. Sistem Informasi Penjualan dan Persediaan Barang

Minimarket Berbasis
Linuxmemiliki beberapa
outputsebagai 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 yangupdate
ter 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

40

F. DESAIN ANTARMUKA PEMAKAI

1. Rancangan Struktur Menu

a) Manager

Login

Lihat Data Laporan Menu User Keluar

Barang Lihat Laporan Lihat Data User Keluar

Detail Barang Stok Barang Detail Data User

Cetak Barcode Penjualan Tambah User

Lihat Data Supplier Laporan Penjualan Harian Tambah User

Supplier Laporan Penjualan Bulanan

Laporan Penjualan Tahunan

Gambar 3.14 Rancangan Struktur Menu Manager


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

42

2. Rancangan Halaman Antarmuka

LOGIN
ID user

Password

Login Tutup

Gambar 3.17 Antarmuka Login

MENU MANAGER/OPERATOR

FOTO
MANAGER/OPERATOR

Petunjuk hak akses Petunjuk/bantuan menu

Tentang penulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

43

Gambar 3.18 Antarmuka Halaman Manager dan Operator Pergudangan

MENU KASIR
NAMA MINIMARKET
Kode Nota Total Bayar

Tabel penjualan barang

Kode barang

Petunjuk/bantuan kasir
Tentang penulis

Gambar 3.19 Antarmuka Halaman Kasir

Lihat Data Barang/Supplier/user

Nama Kategori 1 Kategori 2 Cari Detail

Tabel data barang/supplier/user Detail data barang/


supplier/user:
Detail1:
Detail2:
Detail3:
Detail4:
Dst…

Tutup

Keterangan tabel (Jika perlu)


Tentang penulis
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

44

Gambar 3.20 Antarmuka Halaman Lihat Data (Barang, Supplier, user)

Detil Data Barang

Detail data barang: Grafik penjualan barang bulanan


Detail1: untuk tiap tahun
Detail2:
Detail3:
Detail4:
Detail5:
Detail6:
Detail7:
Detail8:
Detail9:
Dst…

Cetak barcode Ubah/Simpan Tutup Hapus

Gambar 3.21 Antarmuka HalamanDetail/Ubah Data Barang

Detil Data Supplier/User

Detail data supplier/user: Petunjuk/ bantuan/


Detail1: keterangan ubah
Detail2: data supplier/user
Detail3:
Detail4:
Detail5:
Detail6:
Detail7:
Detail8:
Detail9:
Dst…

Ubah/Simpan Tutup Hapus


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

45

Gambar 3.22 Antarmuka Halaman Detail/Ubah Data Supplier/User

Tambah Data Barang/Supplier/User

Detail data Barang/supplier/user: Petunjuk/ bantuan/


Detail1: keterangan tambah
Detail2: data barang/
Detail3: supplier/user
Detail4:
Dst…

Tambah Tutup Ulangi

Gambar 3.23 Antarmuka Halaman Tambah Data (Barang,


Supplier,

User)

LIHAT LAPORAN

Stok barang

Penjualan

Tutup

Gambar 3.24 Antarmuka Halaman Pilih Laporan


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

46

LAPORAN PENJUALAN

Harian Bulanan Tahunan

Pilih Kategori Penjulan

Tutup

Gambar 3.25 Antarmuka Halaman Pilih Laporan Penjualan

LAPORAN PENJUALAN

Harian Bulanan Tahunan

Pilih Tanggal dd mmmyyyy

OK

Tutup

Gambar 3.26 Antarmuka Halaman Laporan Penjualan Harian

LAPORAN PENJUALAN

Harian Bulanan Tahunan

Pilih Tahu
n Pilih Bulan

OK

Tutup

Gambar 3.27 Antarmuka Halaman Laporan Penjualan Bulanan


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

47

LAPORAN PENJUALAN

Harian Bulanan Tahunan

Pilih Tahu
n OK

Tutup

Gambar 3.28 Antarmuka Halaman Laporan Penjualan Tahunan

FOTO IDuser

Nama user

Alamatuser

Masukkanpassword

Passwordbaru

VerifikasiPasswordbaru

Gambar 3.29 Antarmuka Halaman Password


Ubah (user, Operator
)

BAB IV IMPLEMENTASI SISTEM


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

48

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)
.PrimaryKey = ["id_brg"]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

49

END WITH

' 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


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.Update

END WITH 50

' membuat tabel jenis

hTable = hConn.Tables.Add("jenis", "MyISAM")


toolbox yang terdapat pada gambas.
WITH hTable
Pada saat awal memasuki sistem, akan muncul antarmuka Login yang
.Fields.Add("
id_jenis", gb.Integer)
barfungsi sebagai validasi
.Fields.Add("jenis",useryang ingin menggunakan
gb.String, 40) sistem.
.PrimaryKey id
= _jenis"]
["

.Update

END WITH

' membuat tabel jual

hTable = hConn.Tables.Add("jual", "MyISAM")

WITH hTable

.Fields.Add("
id_jual", gb.Integer)
Gambar 4.1
.Fields.Add("kd_brg", Halaman
Login
gb.Integer)
.Fields.Add("kd_kasir", gb.Integer)
.Fields.Add("jml_jual_brg", usergb.Integer)
Halaman login ini akan memintauntuk memasukkan
id userdan
.Fields.Add("waktu", gb.String, 20)
password
user. Jika
.PrimaryKey =user
id ["salah dalam
_jual", memasukkan
"kd_brg", id dan password
"kd_kasir"] , maka

sistem akan menampilkan pesan kesalahan bahwa login gagal.


.Update

END WITH

' membuat tabel log digunakan untuk melihat siapa dan kapan sistem
digunakan

hTable = hConn.Tables.Add("log", "MyISAM")

Gambar 4.2
WITH hTable Pesan Kesalahan
LoginGagal
.Fields.Add("nama_
user
",yang
Jikaid dan password gb.String, 40)sudah
dimasukkan
user benar, maka
user
.Fields.Add("jabatan", gb.String, 10)
.Fields.Add("waktu", gb.String, 20)
akan masuk ke dalam sistem sesuai dengan jabatan yanguser
dimiliki
. oleh
.PrimaryKey = ["waktu"]
1. Halaman Utama
Admin
/Manager
.Update

Halaman ini digunakan manager


oleh 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

51

Gambar 4.3 Halaman Utama


Admin
/Manager

2. Halaman Lihat Data Barang


Manager
( )

Halaman ini digunakan


manageruntuk 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.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

52

Gambar 4.4 Halaman Lihat Data Barang (Manager)

3. Halaman Lihat Detail Data Barang (Manager)

Pada halaman sebelumnya terdapat tombol


detailbarang, tombol

tersebut menuju ke halaman ini. Dalam halaman ini terdapat grafik

penjualan barang tiap bulan untuk tiap tahun. Untuk tombol


barcodecetak

digunakan untuk mencetak


barcodebarang.

Gambar 4.5 Halaman


DetailData Barang
Manager
( )

4. Halaman Lihat Data


Supplier(Manager
)

Menu lihat data


supplierpada halaman utama menuju ke sini.

Gambar 4.6 Halaman Lihat Data Supplier (Manager)


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

53

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

54

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

Setelahusermemilih 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

55

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

Setelahusermemilih 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

56

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

Setelahusermemilih 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

57

13. Halaman Laporan Penjualan Tahunan

Gambar 4.15 Halaman Laporan Penjualan Tahunan

14. Halaman Lihat DataUser

Pada halaman utama terdapat menu lihat data user. Jika menu

tersebut ditekan, maka akan tampil halaman lihat data


user.

Gambar 4.16 Halaman Lihat DataUser


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

58

15. Halaman Lihat Detail Data User

Tomboldetailpada 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


DetailDataUser

16. Halaman TambahUser

Pada halaman utama atau halaman lihat data


user terdapat menu

tambah user atau tombol tambahuser. Menu dan tombol tersebut jika

dipilih akan menampilkan halaman seperti dibawah ini.

Gambar 4.18 Halaman Tambah User


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

59

17. Halaman Utama Kasir

Gambar 4.19 Halaman Utama Kasir

Jika useryang memiliki jabatan sebagai kasir, maka


userakan

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


Jika kasir salah dalam memasukkan kode, maka sistem akan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

60

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.

Kasir dapat mengubah data jumlah jual barang dengan menekan


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

61

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

62

Gambar 4.25 Halaman Bantuan Kasir

19. Halaman UtamaOperatorpergudangan

Halaman utama untukoperatorpergudangan seperti dibawah ini.

Gambar 4.26 Halaman Utama Operator pergudangan Di dalam


halaman utama operator pergudangan terdapat beberapa
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

63

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 untukoperatorpergudangan. 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 Operator


Barang pergudangan)
(

21.Halaman Lihat
DetailData 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

64

Gambar 4.28 Halaman Lihat


DetailData Barang
Operator
( pergudangan)

22.Halaman Lihat Data


Supplier(Operator
pergudangan)

Menu lihat data


supplierjika 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

65

23. Halaman Lihat Detail Data Supplier (Operator pergudangan)

Pada halaman sebelumnya terdapat tombol ubah, tombol ini

berfungsi untuk menampilkan halaman


detailsupplier. Halaman ini

digunakan untuk menampilkan


detailsupplieratau untuk mengubah data

supplier
.

Gambar 4.30 Halaman Lihat


DetailDataSupplier(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


user jika

melakukan kesalahan dalam pengisian data barang.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

66

Gambar 4.31 Halaman Tambah Data Barang

25.Halaman Tambah Data


Supplier

Pada halaman utama terdapat menu tambah


supplierdan 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
supplier
databaru. Di

dalam halaman ini terdapat bantuan-bantuan yang akan muncul


user jika

melakukan kesalahan dalam pengisian


supplier
data
.

Gambar 4.32 Halaman Tambah Data Supplier

26. Halaman Ubah Password Operator/Kasir


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

67

Halaman ini digunakan oleh


kasirdanoperatorpergudangan untuk

mengubah data
password
. Pada halaman ini terdapat 3 kolom yang harus

diisi yaitu, kolom pertama masukkan


passwordyang sekarang digunakan,

kolom kedua digunakan untuk memasukkan


passwordyang baru, kolom

ketiga digunakan untuk memasukkan ulang


passwordbaru yang telah

dimasukkan sebelumnya.

Gambar 4.33 Halaman Ubah


PasswordOperator
/Kasir

27. Halaman Cetak


Barcode

Halaman ini digunakan oleh


managerdan operatorpergudangan

untuk mencetak barcodebarang. Untuk menampilkan halaman ini,

manageratauoperatorpergudangan terlebih dahulu harus melihat dengan

detaildata barang yang kode


barcode-nya akan dicetak. Karena tombol

cetakbarcodeterdapat pada halaman lihat


detaildata barang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

68

Gambar 4.34 Halaman Cetak


BarcodeBarang

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


module
dalam
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"
db.Open
sl = db.Exec("use mnmk")
IF ERROR THEN
message.Error("koneksi gagal", "&OK")
ENDIF
END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

69

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

70

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
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"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

71

.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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

72

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, '" &
" " & "', 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='" &
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

73

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

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.


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

74

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'>&nbsp;</td></tr>"
PRINT #hFile, "<head><title>Laporan Stok
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'>&nbsp;</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>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

75

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

76

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
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'>&nbsp;</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'>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

77

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

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>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

78

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
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 &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
ELSE
IF b <> NULL THEN
PRINT #hFile, " <tr><td colspan='7' align='right'><b>Total
Harga Keseluruhan Penjualan: Rp. " & b & "." & a &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
ELSE
PRINT #hFile, " <tr><td colspan='7' align='right'><b>Total
Harga Keseluruhan Penjualan: Rp. " & a &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

79

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

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'>&nbsp;</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>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

80

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)
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

81

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
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 &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
ELSE
PRINT #hFile, " <tr><td colspan='5' align='right'><b>Total
Harga Keseluruhan Penjualan: Rp. " & b & "." & a &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

82

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'>&nbsp;</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>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>"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

83

ENDIF
PRINT #hFile, " </tr>"
END

PUBLIC SUB footer2()


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 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 &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
ELSE
PRINT #hFile, " <tr><td colspan='5' align='right'><b>Total
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

84

Harga Keseluruhan Penjualan: Rp. " & b & "." & a &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>"
ENDIF
'print footer here
footer1
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

85

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
ENDIF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

86

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.

PUBLIC SUB BSave_Click()


BSave.Visible = FALSE
BEdit.Visible = TRUE
BHapus.Visible = TRUE
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

87

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."
ELSE
IF CmbJbtn.Text = "Pilih Jabatan" THEN
TL1.Foreground = color.Red
TL1.Text = "Tentukan jabatan user."
ENDIF
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

88

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

89

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" 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

90

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

91

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,
(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)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

92

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
'----------------------
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")
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

93

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

94

.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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

95

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 & "%" & "'
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

96

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

97

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

98

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

99

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
& "', '" & 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

100

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.")
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

101

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 & "'")
'====================================
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()


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

102

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
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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

103

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.


PUBLIC SUB header(prn AS Boolean)
PRINT #hFile, "<html>"
PRINT #hFile, " <tr><td colspan='8'>&nbsp;</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 & "&nbsp;&nbsp;&nbsp;&nbsp;Disc: " &
TxtDiscount.Text & " %</span>"
ENDIF
PRINT #hFile, " <span style='font-family: barcod39; font-
size: 25pt '>" & p1 & "&nbsp;&nbsp;&nbsp;</span>" PRINT
#hFile, " <span style='font-size: 2pt '>" & p1 &
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rp." & TxtHrg.Text & "</span>"
PRINT #hFile, " </td>"
END

PUBLIC SUB footer()


PRINT #hFile, "</table>"
PRINT #hFile, "</body>"
PRINT #hFile, "</html>"
END
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

104

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 CLOSE
#hFile 'show
the report !
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

105

FrmCetakBrcd.SetPath(flname0)

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

FrmCetakBrcd.ShowModal
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

106
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

107

D. Evaluasi Dari Pengguna

Telah dilakukan kuisioner terhadap pengguna yang diberikan kepada 20

responden dengan kriteria jawaban:

1. Sangat Tidak Setuju (nilai 0)

2. Tidak setuju (nilai 1)

3. Ragu-ragu (nilai 2)

4. Setuju (nilai 3)

5. Sangat setuju (nilai 4)


PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

112
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

111

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

112

BAB V
PENUTUP

A. Kesimpulan

Sistem Informasi Penjualan dan Persediaan Barang Minimarket Berbasis

Linuxini berhasil dibuat dengan menggunakan Gambas dan


MySql
database

di Linux. Gambas dan MySql merupakan


software open source
yang dapat

berjalan dalam sistem operasi


linuxyang 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


Linux
Berbasis
layak

untuk digunakan.

B. Saran

Untuk pengembangan lebih lanjut, saran yang dapat diberikan penulis

adalah:

1. Sistem diharapkan dapat dilengkapibarcode


dengan 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

113

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

114

DAFTAR PUSTAKA

Coar, K. (2006). The Open Source Definition (Annotated ). [online]


(http://www.opensource.org/docs/definition.php,
diakses pada tanggal
25 Agustus2008)

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
. Yogyakarta:
I
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

Anda mungkin juga menyukai