BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan · d. Membuat catatan pembukuan kas masuk dan keluar....
Transcript of BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan · d. Membuat catatan pembukuan kas masuk dan keluar....
30
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Toko bangunan Lugay Jaya adalah sebuah perusahaan yang bergerak dalam
bidang penjualan alat-alat bahan bangunan yang beralamat di Kp. Cinta Karya
Rt12/05 Desa Cikopo Kec.Bungursari Kab.Purwakarta , toko buka setiap hari Senin
– Minggu dengan jam kerja dari 07:00 WIB hingga 16:00 WIB. Tinjauan
perusahaan pada TB. Lugay Jaya berisi sejarah TB. Lugay Jaya, struktur organisasi
dan fungsi TB. Lugay Jaya.
3.1.1. Sejarah Perusahaan
Toko Bangunan Lugay Jaya didirikan pada 20 November 2015 atas gagasan
ide dari Bapak Muslim yang ingin memiliki sebuah usaha, pada awalnya bapak
Muslim belum tahu akan membuat usaha apa, tapi setelah melihat peluang di
daerahnya yang saat itu hanya untuk mencari bahan bangunan saja harus menempuh
jarak yang cukup jauh, akhirnya bapak Muslim mempunyai ide atau gagasan untuk
membuat usaha toko penyedia bahan bangunan, pada awalnya bapak Muslim
menjual bahan bangunan di rumahnya saja karena belum memiliki sebuah gedung
usaha sendiri dan kesulitan untuk mendapatkan supplier, karena usahanya masih
kecil-kecilan. Berkat keuletannya setelah beberapa bulan akhirnya usaha bapak
Muslim maju begitu pesat. Hingga akhirnya bapak muslim mendapatkan banyak
supplier dan mempunyai dua orang karyawan yang membantu mengurus toko .
Setelah usahanya makin maju dan berkembang, dan Bapak Muslim ingin
memperbesar usahanya lagi, karena tempat dirumahnya sudah tidak cukup untuk
31
menampung bahan-bahan bangunan lagi dan ada sebuah bangunan bekas warnet
yang kosong di depan rumahnya itu, akhinya bapak Muslim menyewa bangunan itu
untuk dijadikan toko utamanya.
Setelah satu tahun, perkembangan usahanya itu semakin cepat dan pesat,
tidak begitu lama Bapak Muslim langsung membeli bangunan yang ditempati untuk
usaha itu yang tadinya hanya menyewa. Setelah mempunyai gedung sendiri Bapak
Muslim langsung merenovasinya dan memperbesar gedung tersebut hingga menjadi
sebuah toko bangunan yang begitu besar dengan menyediakan semua jenis bahan
bangunan. Setelah memperbesar tokonya itu Bapak Muslim menambah lagi
karyawan untuk membantunya mengurus toko menjadi 8 (delapan) orang karyawan.n
2 orang yang mengurus toko dan gudang serta 5 orang bagian yang melakukan
pengiriman barang.
Bapak muslim selalu mengecek setiap hari tokonya itu, mulai dari persediaan
barang sampai semua keuangan toko wajib dilaporkan kepada Bapak Muslim.
Setelah 2 tahun usahanya menjadi begitu besar sehingga toko bangunan itu menjadi
lebih diperbesar lagi serta mendapatkan supplier yang begitu banyak dan customer
yang selalu setia karena kualitas nya begitu baik.
3.1.2. Struktur Organisasi dan Fungsi
Stuktur organisasi adalah susunan sub sistem dan sub bagian dengan
wewenang dan tanggung jawab masing-masing. Dimana pengorgaisasian merupakan
proses penyusunan stuktur organisasi yang sesuai dengan tujuan. Stuktur organisasi
memungkinkan adanya pembagian tugas yang jelas dan tepat. Adapun stuktur
organisasi yang ada ada TB. Lugay Jaya adalah sebagai berikut :
31
Sumber : TB. Lugay Jaya
Gambar III.9. Stuktur Organisasi&Fungsi
Berdasarkan bagian struktur organisasi yang telah digambarkan sebelumnya,
masing-masing jabatan memiliki fungsi, yaitu:
1. Pemilik
Pemilik adalah orang yang memiliki usaha Toko bangunan Lugay Jaya dan
mengelola semua kebutuhan toko, tugasnya sebagai berikut:
a. Mengatur program kerja.
b. Melakukan pengecekan ketersediaan barang.
c. Mengontrol setiap semua kegiatan.
2. Bagian Kasir
Bagian Kasir adalah orang yang melayani saat transaksi penjualan, dan
pembelian tugasnya sebagai berikut:
a. Melayani transaksi Custamer.
32
b. Membuatkan Nota penjualan.
c. Melakukan pembayaran.
d. Membuat catatan pembukuan kas masuk dan keluar.
3. Bagian Gudang
Bagian Gudang adalah orang yang bertanggung jawab atas persediaan barang
tugasnya sebagai berikut:
a. Melakukan pengecekan barang, mengecek kesesuaian antara buku pesanan
pembelian dengan fakturnya.
b. Membuatan laporan persediaan barang.
c. Melaporkan secara periodik persediaan barang kepada pemilik toko.
d. Bertanggung jawab sepenuhnya terhadap gudang.
2. Karyawan
Karyawan adalah orang yang melakukan pengiriman barang ke berbagai tempat ,
tugasnya sebagai berikut :
a. Melayani customer.
b. Merapihkan barang dagang.
c. Mengirim barang mengirim barang sesuai alamat custamer.
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Suatu prosedur atau tahap-tahap yang dilakukan sebelum memulai suatu
kegiatan untuk meyelesaikan suatu pekerjaan di sebut prosedur sistem. Sesuai
dengan ruang lingkup yang dibahas dalam penyusunan Tugas Akhir ini, maka
prosedur bisnis sistem berjalan adalah sebagai berikut:
33
1. Prosedur Pengecekan Persediaan Barang
Bagian gudang mengecek persediaan barang yang masih tersedia di gudang,
dari pengecekan tersebut dapat diketahui barang yang harus dibeli untuk persediaan
barang di gudang. Setelah melakukan pengecekan, bagian gudang membuat laporan
persediaan barang yang akan di ajukan kepada pemilik toko. Jika tidak disetujui
laporan persediaan tersebut akan di kembali kan ke bagian gudang untuk diperbaiki
tapi jika kepala toko menyetujui laporan persediaan barang, pemilik toko akan
membubuhkan tanda tangannya di laporan persediaan barang.
2. Prosedur Pemesanan Barang
Setelah laporan persediaan barang di setujui selanjutnya pemilik akan
menyerahkan daftar barang yang akan di pesan kepada supplier yang sudah bekerja
sama dengan TB. Lugay Jaya. Selanjutnya supplier akan mengirimkan barang yang
sudah dipesan beserta nota pembelian kebagian gudang. Setelah barang di terima
bagian gudang akan meerima dan memeriksa barang yang sudah di kirim oleh
supplier, jika barang tersebut sesuai maka akan di simpan di gudang tetapi jika
barang tidak sesuai barang akan di kembalikan kesupplier (retur pembelian).
3. Prosedur Pembayaran
Setelah melakukan pengecekan barang, bagian gudang akan menyerahkan nota
pembelian kepada bagian kasir. Setelah bagian kasir menerima nota pembelian
maka bagian kasir akan melakukan pembayaran secara tunai ataupun non tunai
dengan sejumlah nominal yang tertera di nota pembelian jika kasir melakukan
pembayaran secara non tunai maka pihak supplier akan memberikan bukti transaksi
atau nota sementara berwarna putih tanpa di stempel, sampai pada batas waktu yang
di tentukan kasir diwajibkan langsung melunasinya. Tapi jika kasir melakukan
pembayaran secara tunai maka pihak supplier akan memberikan bukti transaksi
34
berwarna putih yang sudah di stempel kepada kasir dan kasir akan langsung
melakukan pencatatan kas keluar.
3.2.2. Activity Diagram
1. Activuty Diagram Prosedur Pengecekan Persediaan Barang
Sumber: Hasil Penelitian (2019)
Gambar III.10. Activity Diagram
Prosedur Pengecekan Persediaan Barang
35
2. Activity Diagram Prosedur Pemesanan Barang
Sumber: Hasil Penelitian (2019)
Gambar III.11.
Activity Diagram Prosedur Pengecekan Pemesanan Barang
36
3. Activity Diagram Prosedur Pembayaran
Sumber: Hasil Penelitian (2019)
Gambar III.12.
Activity Diagram Prosedur Pembayaran
37
3.2.3. Dokumen Masukan
Dokumen masukan adalah semua dokumen yang digunakan sebagai dasar
memperoleh data-data yang nantinya akan diproses untuk menghasilkan suatu
keluaran yang disebut output. Dokumen masukan yang digunakan sebagai berikut :
1. Nama Dokumen : Nota Pembelian
Fungsi : Bukti Pembelian dan Pembayaran Barang
Sumber : Supplier
Tujuan : Sebagai bukti Penerimaan barang dan pelunasan
pembayaran
Media : Kertas
Jumlah : 1
Frekuensi : Setiap melakukan transaksi pembelian
Bentuk : Lampiran A-1
2. Nama Dokumen : Faktur Pembelian
Fungsi : Bukti Pembelian Barang
Sumber : Supplier
Tujuan : Sebagai Bukti Atas Pembelian Suatu Barang
Media : Kertas
Jumlah : 1
Frekuensi : Setiap melakukan transaksi
Bentuk : Lampiran A-1
38
3.2.4. Dokumen Keluaran
Dokumen keluaran adalah segala bentuk dokumen yang akan mendukung
kegiatan manajemen serta merupakan dokumen dari hasil catatan laporan. Dokumen
keluaran yang digunakan sebagai berikut :
1. Nama Dokumen : Pemesanan Barang
Fungsi : Untuk memesan barang
Sumber : Bagian Gudang
Tujuan : Sebagai bukti permintaan barang kepada supplier
Media : Kertas
Jumlah : 1
Frekuensi : Setiap adanya stok barang yang kosong
Bentuk : Lampiran B-1
2. Nama Dokumen : Laporan Persediaan
Fungsi : Mengetahui Laporan Persediaan Perbulan
Sumber : Bagian Gudang
Tujuan : Mengetahui hasil persediaan gudang setiap
bulan
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap melakukan pembeliaan
Bentuk : Lampiran B-2
39
3.2.5. Permasalahan Pokok
Pada TB. Lugay Jaya yang masih manual dalam berjalannya perusahaan
tersebut masih terdapat kendala seperti:
1. Pada penyimpanan dokumen yang diterima sering kali hilang karena tidak
teraturnya dalam penyimpanan dokumen.
2. Saat pencatatan data barang masuk dan data barang keluar yang memungkinkan
terdapat masalah karena masih di lakukanya secara manual yang memungkinkan
kesalahan dalam pencatatan dan perhitungan.
3. Serta saat pencatatan laporan persediaan barang yang memungkinkan akan
memperlambat jalannya perusahaan karna perhitungan jumlah dan kondisi
barang yang ada pada gudang.
4. Banyak dokumen-dokumen yang tidak di ketahui keberadaanya sehingga
menyebabkan tidak diketahuinya stok barang yang ada pada gudang, dari barang
masuk maupun keluar.
3.2.6. Pemecahan Masalah
Dengan melihat dan menganalisa permasalahan yang terjadi pada TB. Lugay
Jaya maka alternative permasalahan yang dapat dilakukan yaitu merancang sebuah
aplikasi untuk :
1. Mengarsipkan dokumen-dokumen/ menyimpan data-data yang diterima sehingga
dokumen-dokumen tersebut aman.
2. Serta pencatatan data barang masuk dan juga barang keluar dengan lebih efektif
dan mengurangi resiko kesalahan pencatatan data barang masukk dan barang
keluar.
40
3. Dengan adanya aplikasi maka akan mempermudah dalam pembuatan laporan
persediaan barang karna secara otomatis data akan di ketahui barang masuk dan
barang keluar dan juga stok awal dan stok akhir.
4. Dengan adanya aplikasi tersebut maka akan membatu kita untuk mengetahui
barang masuk dan barang keluar.
3.3. Analisis Kebutuhan Software
Analisa kebutuhan merupakan (requirement analysis) merupakan langkah
awal untuk menentukan gambaran perangkat yang akan di hasilkan ketika
pengembang melaksanakan sebuah proyek pembuatan perangkat lunak. Perangkat
lunak yang baik dan sesuai dengan kebutuhan pengguna sangat tergantung pada
keberhasilan dalam melakukan analisis kebutuhan. Untuk proyek-proyek perangkat
lunak yang besar, analisis kebutuhan dilaksanakan setelah aktivitas sistem informasi
engineering dan software project dilakukan.
3.3.1. Analisis Kebutuhan
1. Admin
A. 1. Mengakses Login
A. 2. Mengelola Data Akun
A. 3. Mengelola Data Jurnal
A. 4. Mengelola Data Barang Keluar
A. 5. Mengelola Data Supplier
A. 6. Mengelola Data Pelanggan
A. 7. Mengelola Data Pegawai
41
2. Bagian Gudang
B. 1. Mengakses Login
B. 2. Mengelola Data Barang
B. 3. Mengelola Data Pegawai
B. 4. Mengelola Data Barang Masuk
3.3.2. Use Case Diagram
1. Admin
A. 1. Use Case Mengakses Login
Gambar III.13. Use Case Diagram Mengakses Login
A. 2. Use Case Data Akun
Gambar III.14. Use Case Diagram Mengakses Data Akun
42
A. 3. Use Case Data Jurnal
Gambar III.15. Use Case Diagram Mengakses Data Jurnal
A. 4. Use Case Data Barang Keluar
Gambar III.16. Use Case Diagram Mengakses Data Barang Keluar
A. 5. Use Case Data Supplier
Gambar III.17. Use Case Diagram Mengakses Data Supplier
43
A. 6. Use Case Data Pelanggan
Gambar III.18. Use Case Diagram Mengakses Data Pelanggan
A. 7. Use Case Data Pegawai
Gambar III.19. Use Case Diagram Mengakses Data Pegawai
44
Tabel III.1
Deskripsi use case Halaman Admin
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam sistem
halaman admin
Deskripsi Sistem ni memungkinkan aktor untuk masuk ke
halamannya ada menu login, data akun, data jurnal,
barang keluar, supplier, pelanggan dan pegawai.
Skenario Utama
Aktor Admin
Kondisi Awal Aktor membuka aplikasi halaman
Admin
Aksi Aktor Reaksi Sistem
1. 1. Aktor memilih menu login
2.
3. 2. Aktor memilih menu data akun
3. Aktor memilih menu data jurnal
4. Aktor memilih menu data barang
keluar
5. Aktor memilih menu data suplier
Sistem akan menampilkan informasi
login.
Sistem akan menampilkan informasi
data akun.
Sistem akan menampilkan informasi
data jurnal.
Sistem akan menampilkan informasi
data barang keluar.
Sistem akan menampilkan informasi
data supplier.
45
6. Aktor memilih menu data pelanggan
7. Aktor memilih menu data pegawai
Sistem akan menampilkan informasi
data pelanggan.
Sistem akan menampilkan informasi
data pegawai.
Kondisi akhir Jika perintah sesuai maka sistem akan
menampilkan sesuai keinginan
2. Bagian Gudang
B. 1. Use Case Login
Gambar III.20. Use Case Diagram Mengakses Data Login
B. 2. Use Case Data Barang
Gambar III.21. Use Case Diagram Mengakses Data Barang
46
B. 3. Use Case Data Pegawai
Gambar III.22. Use Case Diagram Mengakses Data Pegawai
B. 4. Use Case Data Barang Masuk
Gambar III.23. Use Case Diagram Mengakses Data Barang Masuk
47
Tabel III.2
Deskripsi use case Halaman Bagian Gudang
Use Case Narative Halaman Bagian Gudang
Tujuan Bagian gudang dapat melihat data yang ada di dalam
sistem halaman bagian gudang
Deskripsi Sistem ni memungkinkan aktor untuk masuk ke
halamannya ada menu menu login, data barang, data
pegawai dan data barang masuk.
Skenario Utama
Aktor Bagian Gudang
Kondisi Awal Aktor membuka aplikasi halaman
Bagian Gudang
Aksi Aktor Reaksi Sistem
4. 1. Aktor memilih menu login
5.
6. 2. Aktor memilih menu data barang
3. Aktor memilih menu data pegawai
4. Aktor memilih menu data barang
keluar.
Sistem akan menampilkan informasi
login.
Sistem akan menampilkan informasi
data barang.
Sistem akan menampilkan informasi
data pegawai.
Sistem akan menampilkan informasi
data barang keluar.
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan sesuai keinginan
48
3.3.3. Activity Diagram
1. Admin
A. 1. Activity Diagram Mengakses Login
Gambar III.22. Activyti Diagram Mengakses Login
49
A. 2. Activity Diagram Mengelola Data Akun
Gambar III.25. Activyti Diagram Data Akun
A. 3. Activity Diagram Mengelola Data Jurnal
50
Gambar III.26. Activyti Diagram Data Jurnal
A. 4. Activity Diagram Mengelola Data Barang Keluar
51
Gambar III.27. Activyti Diagram Data Barang Keluar
52
A. 5. Activity Diagram Mengelola Data Supplier
Gambar III.28. Activyti Diagram Data Supplier
53
A. 6. Activity Diagram Mengelola Data Pelanggan
Gambar III.29. Activyti Diagram Data Pelanggan
54
A. 7. Activity Diagram Mengelola Data Pegawai
Gambar III.30. Activyti Diagram Data Pegawai
55
2. Bagian Gudang
B. 1. Activity Diagram Mengakses Login
Gambar III.31. Activyti Diagram Mengakses Login
56
B. 2. Activity Diagram Mengelola Data Barang
Gambar III.32. Activyti Diagram Data Barang
57
B. 3. Activity Diagram Mengelola Data Pegawai
Gambar III.33. Activyti Diagram Data Pegawai
58
B. 4. Activity Diagram Mengelola Data Barang Masuk
Gambar III.34. Activyti Diagram Data Barang Masuk
59
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.35. ERD Persedian Barang
60
3.4.2. Logical Record Structure (LRS)
Gambar III.36. LRS Persedian Barang
61
3.4.3. Spesifikasi File
Spesifikasi file yang digunakan dalam perancangan program aplikasi
persediaan barang dagang pada TB. Lugay Jaya adalah sebagai berikut:
1. Spesifikasi File Data Akun
Nama Database : inventori
Nama file : Data Akun
Tipe file : Jurnal
Akses file : Random
Panjang Record : 24 karakter
Field Key : data_akun
Software : My SQL
Tabel III.3
Spesifikasi File Data Akun
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Akun kode_akun Varchar 12
2 Nama Akun nama_akun Varchar 12
2. Spesifikasi File Data Jurnal
Nama Database : inventori
Nama file : Data Jurnal
Tipe file : Jurnal
Akses file : Random
Panjang Record : 120 karakter
Field Key : Jurnal
Software : My SQL
62
Tabel III.4
Spesifikasi File Data Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomor Jurnal no_jurnal Varchar 14 Primary Key
2 Kode Jurnal kode_jurnal Varchar 14
3 Tanggal Tanggal Varchar 14
4 Debit Debit Varchar 14
5 Kredit Kredit Varchar 14
6 Keterangan Keterangan Varchar 50
3. Spesifikasi File Data Barang Keluar
Nama Database : inventori
Nama file : Data Barang Keluar
Tipe file : Transaksi
Akses file : Random
Panjang Record : 74 karakter
Field Key : tr_barang_keluar
Software : My SQL
Tabel III.5
Spesifikasi File Data Barang Keluar
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Barang
Keluar
id_barang
keluar
Int 11 Primary Key
2 Id Barang id_barang Int 11
3 Jumlah Jumlah Char 15
4 Detail Idbk_detail Varchar 11
5 Harga Harga Char 15
6 Total Total Char 11
63
4. Spesifikasi File Data Barang Keluar Detail
Nama Database : inventori
Nama file : Data Barang Keluar Detail
Tipe file : Transaksi
Akses file : Random
Panjang Record : 114 karakter
Field Key : tr_barang_keluar
Software : My SQL
Tabel III.6
Spesifikasi File Data Barang Keluar Detail
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Barang
Keluar
id_barang
keluar
Int 11 Primary Key
2 Id Barang id_barang Int 11
3 Jumlah Jumlah Char 14
4 Detail Idbk_detail Varchar 50
5 Harga Harga Char 14
6 Total Total Char 14
5 Spesifikasi File Data Suplier
Nama Database : inventori
Nama file : Data Suplier
Tipe file : Master
Akses file : Random
Panjang Record : 326 karakter
Field Key : tmsupplier
Software : My SQL
64
Tabel III.7
Spesifikasi File Data Supplier
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Supplier id_supplier Int 11 Primary Key
2 Nama Nama Varchar 100
3 Alamat Alamat Varchar 200
4 No Telepon no_telp Varchar 15
6. Spesifikasi File Data Pelanggan
Nama Database : inventori
Nama file : Data Pelanggan
Tipe file : Master
Akses file : Random
Panjang Record : 276 karakter
Field Key : tmpelanggan
Software : My SQL
Tabel III.8
Spesifikasi File Data Pelanggan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Pelanggan id_pelanggan Int 11 Primary Key
2 Nama Nama Varchar 50
3 Alamat Alamat Varchar 200
4 No Telepon no_telp Varchar 15
7. Spesifikasi File Data Petugas
Nama Database : inventori
Nama file : Data Pegawai
Tipe file : Master
65
Akses file : Random
Panjang Record : 261 karakter
Field Key : petugas
Software : My SQL
Tabel III.9
Spesifikasi File Data petugas
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Petugas id_petugas Int 11 Primary Key
2 Nama Nama Varchar 50
3 User Name use_nama Varchar 100
4 Password Password Varchar 100
8. Spesifikasi File Data Barang
Nama Database : inventori
Nama file : Data Barang
Tipe file : Master
Akses file : Random
Panjang Record : 118 karakter
Field Key : tmbarang
Software : My SQL
Tabel III.10
Spesifikasi File Data Barang
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Barang id_barang Int 11 Primary Key
2 Nama Nama Varchar 50
3 No Rak no_rak Varchar 11
4 Stok stok Int 11
66
5 Satuan Satuan Varchar 20
6 Harga Harga Varchar 15
9. Spesifikasi File Data Barang Masuk
Nama Database : inventori
Nama file : Data Barang Masuk
Tipe file : Transaksi
Akses file : Random
Panjang Record : 108 karakter
Field Key : tr_barang_masukdetaill
Software : My SQL
Tabel III.11
Spesifikasi File Data Barang Masuk
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Barang
Masuk
id-
_barang_masuk
Int 11 Primary Key
2 Id Barang id_barang Int 50
3 Jumlah Jumlah Varchar 11
4 Stok stok Int 11
5 Satuan Satuan Varchar 20
6 Harga Harga Varchar 15
10. Spesifikasi File Data Barang Masuk Detail
Nama Database : inventori
Nama file : Data Barang Masuk
Tipe file : Transaksi
Akses file : Random
Panjang Record : 44 karakter
Field Key : tr_barang_masukdetaill
Software : My SQL
67
Tabel III.12
Spesifikasi File Data Barang Masuk Detail
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Barang
Masuk
id-
_barang_masuk
Int 11 Primary Key
2 Id Petugas id_petugas Int 11
3 Tanggal Tanggal Int 11
4 Id Supplier Id_supplier Int 11
3.4.4. Sequence Diagram
1. Sequence Diagram Barang Masuk
Gambar III.37. Sequence Diagram Barang Masuk
68
2. Sequence Diagram Barang Keluar
Gambar III.38. Sequence Diagram Barang Keluar
69
3.4.4. Deployment Diagram
Gambar III.39. Deployment Diagram
3.4.6. User Interface
1. Rancangan Login
Gambar III.40. Login
70
2. Rancangan Menu Utama
Gambar III.41. Menu Utama
4. Rancangan Menu Akun
Gambar III.42. Menu Akun
71
5. Rancangan Menu Master
Gambar III.43. Menu Master
6. Rancangan Menu Sipplier
Gambar III.44. Menu Supplier
72
7. Rancangan Menu Pelanggan
Gambar III.45. Menu Pelanggan
8. Rancangan Menu Pegawai
Gambar III.46. Menu Pegawai
73
9. Rancangan Menu Data Barang
Gambar III.47. Menu Data Barang
10. Rancangan Menu Transaksi
Gambar III.48. Menu Transaksi
74
11. Rancangan Menu Barang Masuk
Gambar III.49. Menu Barang Masuk
12. Rancangan Menu Barang Keluar
Gambar III.50 Menu Barang Keluar
75
13. Rancangan Menu Cetak Laporan
Gambar III.51. Menu Cetak Laporan
14. Rancangan Menu Jurnal
Gambar III.52. Menu Jurnal
76
15. Rancangan Menu Data Akun
Gambar III.53. Menu Data Akun
16. Rancangan Menu Data Jurnal
Gambar III.54. Mnu Data Jurnal
77
3.5. Implementasi
Implementasi merupakan perealisasian dari perancangan sistem informasi
akuntansi persediaan barang dagang pada TB. Lugay Jaya purwakarta. Implentasi itu
menjelaskan tentang code generation untuk transaksi bisnis program, pengujian
menggunakan black box testing, spesifikasi hardware dan software.
3.5.1. Code Generation
1. Login
package inventori_barang;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.security.MessageDigest;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import javax.swing.ImageIcon;
import javax.swing.JMenu;
/**
*
78
* @author muhamadyusuf
*/
public final class FrmloginPetugas extends javax.swing.JFrame {
/**
* Creates new form FrmloginPetugas
*/
inventori_barang.koneksi konek = new inventori_barang.koneksi();
inventori_barang.PetugasSession PetugasSession = new
inventori_barang.PetugasSession();
public FrmloginPetugas() {
ImageIcon img = new ImageIcon("src/inventori_barang/img/icon.png");
this.setIconImage(img.getImage());
initComponents();
initUI();
}
private void initUI(){
getContentPane().setBackground(new Color(245, 245, 245));
Dimension windowSize = getSize();
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
Point centerPoint = ge.getCenterPoint();
int dx = centerPoint.x - windowSize.width / 2;
int dy = centerPoint.y - windowSize.height / 2;
79
setLocation(dx, dy);
}
private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String row_txtusername = txtusername.getText();
String row_txtpassword = null;
try {
row_txtpassword = sha1(Arrays.toString(txtpassword.getPassword()));
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(FrmloginPetugas.class.getName()).log(Level.SEVERE,
null, ex);
}
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
java.sql.ResultSet rsLogin = stm.executeQuery("SELECT * FROM
tmpetugas WHERE username = '" + row_txtusername + "' AND password = '" +
row_txtpassword + "' and status = 'aktif'");
rsLogin.next();
rsLogin.last();
if (rsLogin.getRow()==1){
PetugasSession.setU_id(rsLogin.getInt("id"));
PetugasSession.setU_username(rsLogin.getString("username"));
PetugasSession.setU_password(row_txtpassword);
PetugasSession.setU_nama(rsLogin.getString("nama"));
new Frmmain().setVisible(true);
80
this.dispose();
}
else{
JOptionPane.showMessageDialog(null, "Maaf, Username atau password
belum terdaftar.");
txtusername.setText("");
txtpassword.setText("");
txtusername.requestFocus();
}
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(FrmloginPetugas.class.getName()).log(Level.SEVERE,
null, ex);
}
}
static String sha1(String input) throws NoSuchAlgorithmException {
MessageDigest mDigest = MessageDigest.getInstance("SHA1");
byte[] result = mDigest.digest(input.getBytes());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.length; i++) {
sb.append(Integer.toString((result[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString(); }
81
2. Data Barang Masuk
package inventori_barang;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
82
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author muhamadyusuf
*/
public class FrmtransaksiMasuk extends javax.swing.JDialog {
/**
* Creates new form Frmmaster_barang
* @param parent
* @param modal
*/
inventori_barang.PetugasSession PetugasSession = new
inventori_barang.PetugasSession();
inventori_barang.koneksi konek = new inventori_barang.koneksi();
public FrmtransaksiMasuk(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
initUI();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
txttgl.setText(dateFormat.format(cal.getTime()));
83
txtnm_petugas.setText(PetugasSession.getU_nama());
txtid_petugas.setText(Integer.toString(PetugasSession.getU_id()));
SelectPelanggan();
TxtEmpty();
}
private void initUI(){
getContentPane().setBackground(new Color(245, 245, 245));
Dimension windowSize = getSize();
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
Point centerPoint = ge.getCenterPoint();
int dx = centerPoint.x - windowSize.width / 2;
int dy = centerPoint.y - windowSize.height / 2;
setLocation(dx, dy);
}
private void SelectPelanggan(){
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
java.sql.ResultSet rs = stm.executeQuery("SELECT * FROM tmsupplier");
cmbid_pelanggan.addItem("Pilih");
while(rs.next()){
84
cmbid_pelanggan.addItem(rs.getString("kode") + " " +
rs.getString("nama"));
}
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Frmbarang.class.getName()).log(Level.SEVERE, null,
ex);
}
}
private void TxtEmpty(){
TableEmpty();
BtnEnabled(false);
lblnama_barang.setText("-");
txtid_selected.setText("");
txtid_pelanggan.hide();
txtid_petugas.hide();
txtid_barang.hide();
txtjumlah_barang_max.hide();
txtotal.hide();
txtharga.hide();
cmbid_pelanggan.setSelectedItem("Pilih");
cmbid_pelanggan.requestFocus();
}
85
private void TableEmpty(){
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
int rowCount = model.getRowCount();
for (int i = rowCount - 1; i >= 0; i--) {
model.removeRow(i);
}
}
private void BtnEnabled(boolean x){
btnDelRow.setEnabled(x);
}
public final void auto_sum(){
int total =0;
for (int i =0; i< datatable.getRowCount(); i++){
int amount = Integer.parseInt((String)datatable.getValueAt(i, 5));
total += amount;
}
txtsubtotal.setText(""+total);
}
private void GetData_View(){
String row = Integer.toString(datatable.getSelectedRow());
txtid_selected.setText(row);
86
BtnEnabled(true);
}
int nilai1;
int nilai2;
int nilai3;
String Hasil;
nilai1=Integer.valueOf(txtharga.getText());
nilai2=Integer.valueOf(txtjumlah_barang.getText());
nilai3=nilai1*nilai2;
Hasil=String.valueOf(nilai3);
txtotal.setText(Hasil);
String data1 = txtid_barang.getText();
String data2 = txtkode_barang.getText();
String data3 = lblnama_barang.getText();
String data4 = txtjumlah_barang.getText();
String data5 = txtharga.getText();
String data6 = txtotal.getText();
if(!(data1.equals("")) && !(data2.equals("")) && !(data3.equals("")) &&
!(data4.equals(""))&& !(data5.equals("")) && !(data6.equals(""))){
int jumlah = Integer.parseInt(data4);
int jumlah_max = Integer.parseInt(txtjumlah_barang_max.getText());
//if(jumlah <= jumlah_max){
87
Object[] row = { data1, data2, data3, data4 , data5 , data6 };
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
model.addRow(row);
txtid_barang.setText("");
txtkode_barang.setText("");
lblnama_barang.setText("-");
txtjumlah_barang.setText("");
txtjumlah_barang_max.setText("");
txtharga.setText("");
txtotal.setText("");
txtkode_barang.requestFocus();
// }else{
// JOptionPane.showMessageDialog(null, "Jumlah melebihi stok barang.");
//}
}else{
JOptionPane.showMessageDialog(null, "Terdapat inputan yang kosong.");
}
auto_sum();
}
private void cmbid_pelangganItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
String[] nama_kategori =
cmbid_pelanggan.getSelectedItem().toString().split("\\s+");
88
String kode = nama_kategori[0];
if(!kode.equals("Pilih")){
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
java.sql.ResultSet sql = stm.executeQuery("SELECT id FROM
tmsupplier WHERE kode='"+kode+"'");
if(sql.next()){
txtid_pelanggan.setText(sql.getString("id"));
}
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(FrmtransaksiMasuk.class.getName()).log(Level.SEVERE, null,
ex);
}
}else{
txtid_pelanggan.setText("");
}
}
private void txtkode_barangFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
89
String kode = txtkode_barang.getText();
if(!kode.equals("")){
//--------- Cek In jtable
Integer same_kode = 0;
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
int rowCount = model.getRowCount();
for (int i = 0; i < rowCount; i++) {
if(kode.equals(datatable.getModel().getValueAt(i, 1).toString())){
same_kode = 1;
}
}
if(same_kode == 0){
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
java.sql.ResultSet sql = stm.executeQuery("SELECT * FROM tmbarang
WHERE kode='"+kode+"'");
if(sql.next()){
txtid_barang.setText(sql.getString("id"));
lblnama_barang.setText(sql.getString("nama"));
txtjumlah_barang_max.setText(sql.getString("stok"));
txtharga.setText(sql.getString("harga"));
}else{
90
JOptionPane.showMessageDialog(null, "Kode barang tidak
ditemukan.");
txtid_barang.setText("");
lblnama_barang.setText("-");
txtkode_barang.setText("");
txtjumlah_barang_max.setText("");
txtharga.setText("");
txtotal.setText("");
}
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(FrmtransaksiMasuk.class.getName()).log(Level.SEVERE, null,
ex);
}
}else{
JOptionPane.showMessageDialog(null, "Kode barang sudah pernah
ditambah.");
txtkode_barang.setText("");
}
}else{
txtid_barang.setText("");
lblnama_barang.setText("-");
txtjumlah_barang_max.setText("");
}
}
91
private void btnsaveActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String row_tgl = txttgl.getText();
String row_idpelanggan = txtid_pelanggan.getText();
String row_idpetugas = txtid_petugas.getText();
String id, kode;
Integer id_barang_masuk = 0, jumlah, harga, total, stok, not_found, empty = 0;
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
int rowCount = model.getRowCount();
if(rowCount > 0 && !"".equals(row_tgl) && !"".equals(row_idpelanggan) &&
!"".equals(row_idpetugas)){
//------- Memasukan pada tabel transaksi lihat [trbarang_] dan
mengeluarkan id terakhir
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
stm.executeUpdate("INSERT INTO trbarang_masuk(tgl, id_petugas,
id_supplier) VALUES ('" + row_tgl + "', '" + row_idpetugas + "', '" +
row_idpelanggan + "')");
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
92
Logger.getLogger(Frmbarang.class.getName()).log(Level.SEVERE, null,
ex);
}
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
java.sql.ResultSet sql = stm.executeQuery("SELECT MAX(id) as max
FROM trbarang_masuk");
sql.next();
id_barang_masuk = sql.getInt("max");
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Frmbarang.class.getName()).log(Level.SEVERE, null,
ex);
}
for (int i = 0; i < rowCount; i++) {
not_found = 0;
stok = 0;
id = (datatable.getModel().getValueAt(i, 0).toString());
kode = (datatable.getModel().getValueAt(i, 1).toString());
jumlah = Integer.parseInt((String) datatable.getModel().getValueAt(i, 3));
harga = Integer.parseInt((String) datatable.getModel().getValueAt(i, 4));
total = Integer.parseInt((String) datatable.getModel().getValueAt(i, 5));
93
//------- Menjumlahkan stok dengan data jumlah
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
java.sql.ResultSet sql = stm.executeQuery("SELECT stok FROM
tmbarang WHERE id = '" + id + "'");
sql.next();
sql.last();
if (sql.getRow() == 1){
stok = jumlah + sql.getInt("stok");
} else {
not_found = 1;
}
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(FrmloginPetugas.class.getName()).log(Level.SEVERE, null, ex);
}
if(not_found == 0){
//------- Mengupdate jumlah stok barang
94
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
stm.executeUpdate("UPDATE tmbarang SET stok='" + stok + "'
WHERE id = '" + id + "'");
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Frmbarang.class.getName()).log(Level.SEVERE,
null, ex);
}
//------- Memasukan pada table transaksi detail
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
stm.executeUpdate("INSERT INTO
trbarang_masuk_detail(id_barang_masuk, id_barang, jumlah, harga, total) VALUES
('" + id_barang_masuk + "', '" + id + "', '" + jumlah + "', '" + harga + "', '" + total +
"')");
empty = 1;
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Frmbarang.class.getName()).log(Level.SEVERE,
null, ex);
}
95
}else{
JOptionPane.showMessageDialog(null, "Sistem tidak menemukan
barang dengan kode = " + kode , "Barang " + kode + " Gagal Disimpan",
JOptionPane.ERROR_MESSAGE);
}
//------- Opsi jika terdapat barang yang belum satupun di masukan
if(empty == 0){
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
stm.executeUpdate("DELETE FROM trbarang_masuk WHERE id =
'" + id_barang_masuk + "'");
konek.closekoneksi();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Frmbarang.class.getName()).log(Level.SEVERE,
null, ex);
}
}else{
}
}
JOptionPane.showMessageDialog(null, "Berhasil menyimpan data
transaksi");
96
try {
HashMap hash = new HashMap();
hash.put("nm_supplier", cmbid_pelanggan.getSelectedItem().toString());
hash.put("id", id_barang_masuk);
File file = new File("src/report/report_transaksiMasuk.jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(file);
JasperReport jasperReport =
JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hash,
konek.openkoneksi());
JasperViewer.viewReport(jasperPrint, false);
}catch (ClassNotFoundException | JRException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
}
this.hide();
}else{
JOptionPane.showMessageDialog(null, "Terdapat inputan yang kosong.");
}
}
private void jLabel7MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
TxtEmpty();
}
private void btnTableEmptyActionPerformed(java.awt.event.ActionEvent evt) {
97
// TODO add your handling code here:
int ok = JOptionPane.showConfirmDialog(null, "Anda yakin ingin menghapus
semua baris ini?", "Konfirmasi", JOptionPane.OK_CANCEL_OPTION);
if(ok==0) {
TableEmpty();
}
}
private void datatableMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
GetData_View();
}
private void btnDelRowActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int ok = JOptionPane.showConfirmDialog(null, "Anda yakin ingin menghapus
baris ini?", "Konfirmasi", JOptionPane.OK_CANCEL_OPTION);
if(ok==0) {
int row = Integer.parseInt(txtid_selected.getText());
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
model.removeRow(row);
BtnEnabled(false);
}
}
private void datatableMouseReleased(java.awt.event.MouseEvent evt) {
98
// TODO add your handling code here:
GetData_View();
}
private void datatableKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
GetData_View();
}
private void txtjumlah_barangKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
char c = evt.getKeyChar();
if(!(Character.isDigit(c)) && !(c == KeyEvent.VK_BACK_SPACE)){
JOptionPane.showMessageDialog(null, "Inputan hanya boleh angka", "Ilegal
Input", JOptionPane.ERROR_MESSAGE);
evt.consume();
}
}
99
3.5.2. Blackbox Testing
Tabel III.13
Blackbox Testing
No Nama pengujiaan Kondisi pengujian Hasil pengujian
1. Form login 1. jika username
dipassword disini,
kemudian user
mengklik tombol
login.
2. jika username
password diisi
tetap salah
1. muncul pesan
kesalahan
“silahkan isi
semua data”
2. muncul pesan
kesalahan
“username atau
password salah”
2. Input data barang
masuk
1. pada kolom
jumlah barang
diisi dengan huruf
2. pada kolom
jumlah barang
diisi dengan
angka
1. muncul pesan
kesalahan “diisi
dengan angka”
2. muncul pesan
“perintah berhasil
dilakukan”
3. Input penambahan
pelanggan
1. jika salah satu
kolom tidak diisi
lalu user mengklik
tombol simpan
2. jika pada kolom
penambahan
suplier diisi
dengan lengkap
1. muncul pesan
kesalahan “
terdapat inputan
yang kosong”
2. data berhasil
diinput dan masuk
pada menu data
suplier.
4. Laporan barang
masuk
1. pada saat
penarikan laporan
tidak sesuai
dengan data yang
telah diinput
2. pada saat
penarikan laporan
sesuai dengan
data yang telah di
input
1. data tidak dapat
diproses karena
inputan data
barang dimulai
dari tangga;
13/06/2018
2. data dapat di
proses dengan
benar dan
menghasilkan
laporan
100
3.5.3. Spesifikasi Hardware dan Software
1. Spesifikasi Hardware
Processor : Intel Dual-Core N3060, up to 2.48GHz
Installed memory (RAM) : 2.00 GB
System type : 64-bit Operating System, x64-based processor
Monitor : 14 inch
Printer : Deskjet
Keyboard : Standard
Mouse : Standard
2. Spesifikasi Software
System Oprasi : Windows 10
Bahasa Pemograman : Java.net
Aplikasi Pendukung : Neatbeans IDE 8.1
DBMS : My SQL