30
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Dalam tinjauan perusahaan ini merupakan penelitian tentang sejarah, Struktur
Organisasi, serta tugas dan fungsi dari masing-masing bagian yang ada pada
perusahaan yang akan menjadi tempat penelitian.
Perusahaan yang diteliti adalah CV Asta Prima Cikampek yang bergerak
dalam bidang distributor alat kesehatan. Kegiatan utama CV Asta Prima Cikampek
adalah melakukan distribusi alat kesehatan. Berikut ini hal-hal yang akan diuraikan
pada tinjauan perusahaan adalah sejarah berdirinya perusahaan, struktur organisasi
serta tugas dan fungsi masing-masing bagian yang ada pada CV Asta Prima
Cikampek.
3.1.1. Sejarah Perusahaan
CV Asta Prima Cikampek didirikan pada tahun 2009 dengan Surat Izin Usaha
Perdagangan (SIUP) Kecil Nomor : 503.09/1-848/BPPT/PK-02/V/2009. CV Asta
Prima Cikampek terdaftar sebagai Wajib Pajak (WP) di kantor pelayanan pajak yang
tersedia dengan NPWP NO.01.851.422.4-435.000.
Perusahaan yang bertempat di Gg. Jalan Merdeka, RT 08/RW 02 Kampung
Rawasari, Desa Jomin Timur, Kota Baru, Karawang, Jawa Barat 41377. Perusahaan
ini dipimpin oleh Bapak Ir. Yoga Mardiyanto sebagai direktur. Perusahaan ini
merupakan anak cabang dari CV Asta Prima Bekasi sebagai kantor pusat yang
sebelumnya didirikan pada tahun 2008. Kantor pusat CV Asta Prima Bekasi
beralamat di perumahan Bekasi Regensi I Blok D1/22 RT 001/005, Cibitung, Bekasi,
Jawa Barat .
31
CV Asta Prima Cikampek merupakan perusahaan yang bergerak di bidang
distributor alat kesehatan. Jumlah karyawan di CV Asta Prima Cikampek sekarang
ini berjumlah sebanyak 5 orang karyawan, mereka bekerja sebagai administrasi 2
orang, marketing 2 orang dan 1 orang sebagai koordinator/bagian gudang. Cakupan
perusahaan CV Asta Prima Cikampek meliputi wilayah Cikampek, Karawang dan
purwakarta. Ada beberapa Rumah sakit, Apotek dan masyarakat umum yang telah
menjadi pelanggan di CV Asta Prima Cikampek. Adapun Rumah Sakit yang telah
bekerja sama dengan CV Asta Prima Cikampek diantaranya sebagai berikut:
1. Rumah Sakit Umum Saraswati
2. Rumah Sakit Lira Medika
3. Rumah Sakit Fikri Medika
4. Rumah Sakit Siloam
5. Rumah Sakit Helsa Cikampek
Sementara itu peralatan kesehatan yang tersedia pada CV Asta Prima
Cikampek itu bermacam-macam salah satunya adalah topi operasi, masker, jarum
suntik, tsarung tangan dan alat kesehatan lainnya. Tidak hanya itu saja melainkan
banyak sekali barang-barang yang tersedia, namun hanya beberapa barang tersebut
yang sering dibutuhkan masyarakat atau pelanggan.
3.1.2. Struktur Organisasi dan Fungsi
Pada setiap instansi unit usaha memiliki struktur organiasi untuk
mengendalikan jalannya instansi dengan baik agar segala wewenang dan tanggung
jawab bagi setiap induvidu yang terlibat dalam instansi dapat dipertanggung
jawabkan. Dengan adanya struktur organisasi, maka setiap individu mendapatkan
ruang lingkup pekerjaan yang jelas, sehingga dengan demikian terjalinlah suatu
kerjasama yang baik dalam pencapaian tujuan instansi.
32
Berikut ini adalah bagian – bagian yang terdapat dalam struktur organisasi
pada CV Asta Prima Cikampek dengan menggunakan masing- masing fungsinya.
Sumber : CV Asta Prima Cikampek (2019)
Gambar III.1.
Struktur Organisasi CV Asta Prima Cikampek
Adapun fungsi dari masing-masing bagan Struktur Organisasi sesuai dengan
tugasnya adalah sebagai berikut:
1. Direktur Pusat CV Asta Prima Cikampek:
a. Menyediakan pengadaan persediaan alat kesehatan
b. Memantau jalannya proses kegiatan CV Asta Prima Cikampek
c. Mengecek data piutang
33
2. Wakil Direktur Pusat CV Asta Prima Cikampek
a. Memantau kondisi pembayaran konsumen
b. Mencacat laporan kas harian
c. Mencatat pembayaran konsumen
d. Mencacat keuntungan penjualan bulanan
3. Bagian koordinator atau gudang CV Asta Prima Cikampek
a. Mengeluarkan barang
b. Memantau pengiriman barang
c. Memegang uang kas harian dari hasil penjualan yang kemudian disetor ke
wakil direktur
4. Administrasi keuangan CV Asta Prima Cikampek
a. Mencacat pemesanan alat kesehatan
b. Membuat faktur
c. Membuat laporan persediaan per bulan
d. Mencatat laporan kas harian
e. Membuat data pembayaran
5. Bagian marketing CV Asta Prima Cikampek
a. Menawarkan alat kesehatan pada konsumen
b. Melakukan pengiriman barang pada konsumen
c. Memberikan data pembayaran kepada konsumen
3.2. Tinjauan Kasus
Pada tinjauan kasus ini, penulis akan menjelaskan tentang hasil penelitian
pada CV Asta Prima Cikampek mengenai sistem berjalan, serta beberapa
Permalasahan yang terdapat pada CV Asta Prima Cikampek, dan pemecahan
masalah atau solusi yang dapat penulis sarankan pada CV Asta Prima Cikampek.
34
3.2.1. Proses Bisnis Sistem Berjalan
Proses bisnis sistem berjalan yang ada pada CV Asta Prima Cikampek saat
ini adalah sebagai berikut:
1. Prosedur pemesan dari konsumen
Marketing menawarkan barang ke konsumen dengan menggunakan daftar harga,
kemudian konsumen mempertimbangkan harga apabila harga sesuai konsumen
akan membuat data pesanan barang yang diserahkan ke marketing.
2. Prosedur pengecekan barang
Admin menerima data pesanan, kemudian mencatatnya dibuku pesanan barang
setelah itu admin melakukan pengecekan persediaan barang, jika ada barang
yang kosong admin akan menginformasikan kepada konsumen dan mencatat
barang yang kosong dibuku kekurangan barang, apabila barangnya ada admin
akan menyerahkan buku pesanan kepada bagian gudang untuk menyiapkan
barang.
3. Prosedur pencatatan dan pemesanan barang
Admin mencatat barang yang keluar dibuku keluar, setelah itu dmin mencatat
persedian barang dibuku persediaan sesuai dengan barang yang keluar.
Kemudian admin memesan barang sesuai dengan kekurangan barang yang sudah
dicatat.
4. Prosedur datang barang
Setelah pemesanan barang, bagian ekspedisi menyerahkan 2 faktur rangkap
kepada bagian gudang, kemudian bagian udang mengecek barang yang datang
sesuai dngan faktur, apabila barang yang datang sudah sesuai dengan faktur lalu
bagian gudang menandatangani faktur tersebut dan faktur yang berwarna kuning
35
diserahkan kebagian ekspedisi dan yang berwarna merah muda diserahkan ke
bagian admin.
5. Prosedur stok barang dan laporan
Setelah barang disimpan digudang bagian admin mencatat barang yang datang
sesuai faktur berwarna merah muda dibuku persediaan barang. Kemudian admin
membuat laporan seluruh barang sesuai dengan buku persediaan barang
kemudian diserahkan kepada pemilik.
3.2.2. Activity Diagram Proses Bisnis Sistem Berjalan
1. Activity Diagram Proses Pemesanan Barang dari konsumen
Sumber:Hasil Penelitian
Gambar III.2.
Activity Diagram Proses Pemesanan Barang dari konsumen
36
2. Activity Diagram Prosedur Pengecekan Barang
Sumber:Hasil Penelitian
Gambar III.3.
Activity Diagram Prosedur Pengecekan Barang
3. Activity Diagram Prosedur Pencatatan dan Pemesanan barang
Sumber:Hasil Penelitian
Gambar III.4.
Activity Diagram Prosedur Pencatatan dan Pemesanan barang
37
4. Activity Diagram Prosedur Datang Barang
Sumber:Hasil Penelitian
Gambar III.5.
Activity Diagram Prosedur Datang Barang
5. Activity Diagram Prosedur Stok Barang dan Laporan
Sumber:Hasil Penelitian
Gambar III.6.
Activity Diagram Prosedur Stok Barang dan Laporan
38
3.2.3. Dokumen Masukan
Dokumen masukan adalah segala bentuk dokumen yang berasal dari
lingkungan luar sistem yang berupa dokumen-dokumen yang akan diolah dalam
suatu proses agar dapat menghasilkan keluaran yang diinginkan. Adapun spesifikasi
bentuk dokumen-dokumen masukan yang terdapat pada CV Asta Prima Cikampek
adalah sebagai berikut :
Spesifikasi Bentuk Dokumen Masukan
1. Data Pesanan
Nama Dokumen : Data Pesanan
Fungsi : Untuk Pemesanan Barang
Sumber : Konsumen
Tujuan : Administrasi
Media : Kertas
Frekuensi : Setiap ada pesanan barang
Jumlah Rangkap : 2 Lembar
Bentuk : Lampiran A-1
2. Faktur
Nama Dokumen : Faktur
Fungsi : Untuk bukti pengiriman barang
Sumber : Kantor Pusat
Tujuan : Administrasi
Media : Kertas
Frekuensi : Setiap ada pengiriman barang
Jumlah Rangkap : 2 Lembar
Bentuk : Lampiran A-2
39
3. Buku Pesanan
Nama Dokumen : Buku Pesanan
Fungsi : Untuk mencatat pesanan
Sumber : Admin
Tujuan : Administrasi
Media : Kertas
Frekuensi : Setiap pesanan barang
Jumlah Rangkap : Tak terhingga
Bentuk : Lampiran A-3
4. Buku Keluar
Nama Dokumen : Buku Keluar
Fungsi : Untuk mencatat pengeluaran barang
Sumber : Admin
Tujuan : Administrasi
Media : Kertas
Frekuensi : Setiap ada pengeluaran barang
Jumlah Rangkap : Tak terhingga
Bentuk : Lampiran A-4
5. Buku Persediaan
Nama Dokumen : Buku Persediaan
Fungsi : Untuk mencatat persediaan barang yang keluar
Sumber : Admin
Tujuan : Administrasi
Media : Kertas
Frekuensi : Setiap ada barang yang keluar
40
Jumlah Rangkap : 2 Lembar
Bentuk : Lampiran A-5
3.2.4. Dokumen Keluaran
Dokumen-dokumen keluaran adalah segala bentuk dokumen yang dihasilkan
dari proses pengolahan dokumen masukan pada CV. Asta Prima Cikampek. Dibawah
ini uraian dari dokumen yang dihasilkan adalah sebagai berikut :
Spesifikasi Bentuk Dokumen Keluaran
1. Daftar Harga
Nama Dokumen : Daftar Harga
Fungsi : Untuk Penawaran Barang
Sumber : Administrasi
Tujuan : Konsumen
Media : Kertas
Frekuensi : Setiap menawarkan barang
Jumlah Rangkap : 3-5 Lembar
Bentuk : Lampiran B-1
2. Faktur
Nama Dokumen : Faktur
Fungsi : Untuk bukti pengiriman barang
Sumber : Administrasi
Tujuan : Konsumen
Media : Kertas
Frekuensi : Setiap ada pengiriman barang
Jumlah Rangkap : 2 Lembar
Bentuk : Lampiran B-2
41
3. Laporan
Nama Dokumen : Laporan
Fungsi : Untuk laporan persediaan barang
Sumber : Admin
Tujuan : Pemilik
Media : Kertas
Frekuensi : Setiap bulan
Jumlah Rangkap : Tak terhingga
Bentuk : Lampiran B-3
3.2.5. Permasalahan Pokok
Dari hasil analisa dan pengamatan di CV. Asta Prima Cikampek maka penulis
dapat mengemukakan beberapa permasalahan pokok yang terdapat pada sistem
berjalan pada CV. Asta Prima Cikampek, khususnya terjadi pada sistem persediaan
barang, berikut permasalahan tersebut yaitu:
1. Dalam pencatatan barang keluar masih terjadi pengulangan pencatatan, ketika
barang keluar dari gudang di catat di buku keluar dan setelah dicatat dibuku
keluar kemudian di catat lagi per item barang yang keluar di buku persediaan
barang. Hal itu pun berlaku pada saat ada barang yang masuk dan hrus dicatat
lagi di buku persediaan, sehingga menghabiskan waktu yang cukup lama.
2. Dalam pencatatan persediaan dibuku persediaan juga sering terjadi selisih,
antara stok barang yang ada dibuku persediaan dan stok fisik yang ada di
gudang.
3. Dalam pembuatan laporan masih terpaku pada buku persediaan barang sehingga
dalam pembuatan laporan membutuhkan waktu yang lama karena harus
membuka buku persediaan barang yang jumlahnya banyak.
42
3.2.6. Pemecahan Masalah
Dari permasalahan-permasalahan tersebut maka penulis menyarankan bahwa
lebih efektik jika dibuat suatu sistem persediaan barang yang sudah tersistem dengan
baik dengan harapan permasalahan tersebut dapat dikurangi dan diatasi dengan baik.
Maka penulis mengusulkan alternatif pemecahan masalah sistem Persediaan barang
pada CV Asta Prima Cikampek adalah sebagai berikut:
1. Merancang sebuah program aplikasi untuk memudahkan dalam input data
barang yang masuk maupun barang yang keluar, untuk memimalisir waktu kerja.
2. Merancang sebuah program yang dilengkapi dengan sistem pembuatan laporan
sehingga dalam membuat laporan persediaan, semua transaksi barang keluar dan
barang masuk bisa direkap secara otomatis.
3.3. Analisis Kebutuhan Software
Untuk mengetahui kebutuhan apa saja yang diperlukan oleh CV Asta Prima
Cikampek. Berikut adalah analisis kebutuhan yang peenulis simpulkan setelah
melakukan penelitian pada CV Asta Prima Cikampek.
3.3.1. Analisis Kebutuhan
A. Analisis Kebutuhan Admin
A.1. Admin dapat mengelola login
A.2. Admin dapat menglola data pelanggan
A.3. Admin dapat menglola data supplier
A.4. Admin dapat menglola datta petugas
A.5. Admin dapat menglola data barang
A.6. Admin dapat menglola data barang masuk
A.7. Admin dapat menglola data barang keluar
A.8. Admin dapat mengelola laporan barang masuk
43
A.9. Admin dapat mengelola laporan barang keluar
A.10. Admin dapat mengelola laopran persediaan
A.11. Admin dapat mengelola jurnal
B. Analisis Kebutuhan Pemilik
B.1. Pemilik dapat mengakses login
B.2. Pemilik dapat mengakses data pelanggan
B.3. Pemilik dapat mengakses data petugas
B.4. Pemilik dapat mengakses data supplier
B.5. Pemilik dapat mengakses data barang
B.6. Pemilik dapat megakses laporan barang masuk
B.7. Pemilik dapat mengakes laporan barang keluar
B.8. Pemilik dapat mengakses laporan persediaaan
3.3.2. Use Case Diagram Usulan
Berikut adalah use case diagram yang diusulkan penulis:
Sumber: Penulis (2019)
Gambar III.7.
Use Case Diagram Usulan
44
1. Deskripsi Use Case Diagram Login
Tabel III.1
Deskripsi Use Case Diagram Login
Use Case Name Login
Requirment Admin dapat melakukan login
Goal Admin dapat login dan masuk ke halaman
menu utama
Pre-Conditions Admin dapat melakukan login
Post-Conditions Admin berhasil login
Failed end Conditions Admin Gagal login
Actors Admin
Main Flow/Basic Path 1. Admin memasukkan username dan
password
2. Admin dapat masuk ke halaman menu utama
Alternate Flow/Invariant 1 1. Admin memasukkan username dan
password
2. Admin dapat melakukan login
3. Admin dapat melakukan logout
Invariant 2 1. Admin memasukkan username dan
password yang salah
2. Admin tidak dapat login
2. Deskripsi Use Case Diagram Admin Mengelola Data Pelanggan
Tabel III.2.
Deskripsi Use Case Diagram Admin Mengelola Data Pelanggan
UseCase Name Data Pelanggan
Requirment Admin dapat mengelola data Pelanggan
Goal Untuk mengelola data pelanggan
Pre-Conditions Admin dapat mengelola data pelanggan
Post-Conditions Data pelanggan dapat dikelola
Failed end Conditions Gagal mengelola data pelanggan
Actors Admin
Main Flow/Basic Path 1. Admin menambah data pelanggan
2. Admin menyimpan data pelanggan
3. Admin menghapus data pelanggan
4. Admin mengedit data pelanggan
5. Admin memproses data pelanggan
6. Admin mencari data pelanggan
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola data pelanggan
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola data pelanggan pada
menu data master
45
3. Deskripsi Use Case Diagram Admin Mengelola Data Barang
Tabel III.3.
Deskripsi Use Case Diagram Admin Mengelola Data Barang
UseCase Name Mengelola Data Barang
Requirment Admin dapat mengelola data barang
Goal Untuk mengelola data barang
Pre-Conditions Admin dapat mengelola data barang
Post-Conditions Data barang dapat dikelola
Failed end Conditions Gagal mengelola data barang
Actors Admin
Main Flow/Basic Path 1. Admin menambah data barang
2. Admin menyimpan data barang
3. Admin menghapus data barang
4. Admin mengedit data barang
5. Admin memproses data barang
6. Admin mencari data barang
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola data barang
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola data barang pada menu
data master
4. Deskripsi Use Case Diagram Admin mengelola data petugas
Tabel III.4.
Deskripsi Use Case Diagram Admin Mengelola Data Petugas
UseCase Name Data Petugas
Requirment Admin dapat mengelola data petugas
Goal Untuk mengelola data petugas
Pre-Conditions Admin dapat mengelola data petugas
Post-Conditions Data petugas dapat dikelola
Failed end Conditions Gagal mengelola data petugas
Actors Admin
Main Flow/Basic Path 1. Admin menambah data petugas
2. Admin menyimpan data petugas
3. Admin menghapus data petugas
4. Admin mengedit data petugas
5. Admin memproses data petugas
6. Admin mencari data petugas
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola data petugas
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola data petugas pada menu
data master
46
5. Deskripsi Use Case Diagram Admin mengelola data Suplier
Tabel III.5.
Deskripsi Use Case Diagram Admin Mengelola Data Suplier
UseCase Name Data Suplier
Requirment Admin dapat mengelola data Suplier
Goal Untuk mengelola data Suplier
Pre-Conditions Admin dapat mengelola data Suplier
Post-Conditions Data Suplier dapat dikelola
Failed end Conditions Gagal mengelola data Suplier
Actors Admin
Main Flow/Basic Path 1. Admin menambah data Suplier
2. Admin menyimpan data Suplier
3. Admin menghapus data Suplier
4. Admin mengedit data Suplier
5. Admin memproses data Suplier
6. Admin mencari data Suplier
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola data Suplier
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola data Suplier pada menu
data master
6. Deskripsi Use Case Diagram Admin mengelola barang keluar
Tabel III.6.
Deskripsi Use Case Diagram Admin Mengelola Barang Keluar
UseCase Name Barang Keluar
Requirment Admin dapat mengelola barang keluar
Goal Untuk mengelola barang keluar
Pre-Conditions Admin dapat mengelola barang keluar
Post-Conditions Barang keluar dapat dikelola
Failed end Conditions Gagal mengelola barang keluar
Actors Admin
Main Flow/Basic Path 1. Admin menambah barang keluar
2. Admin menyimpan barang keluar
3. Admin menghapus barang keluar
4. Admin mengedit barang keluar
5. Admin memproses barang keluar
6. Admin mencari barang keluar
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola barang keluar
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola transaksi kemudian
mengelola barang keluar pada menu transaksi
47
7. Deskripsi Use Case Diagram Admin mengelola barang masuk
Tabel III.7.
Deskripsi Use Case Diagram Admin Mengelola Barang Masuk
UseCase Name Barang masuk
Requirment Admin dapat mengelola barang masuk
Goal Untuk mengelola barang masuk
Pre-Conditions Admin dapat mengelola barang masuk
Post-Conditions Barang masuk dapat dikelola
Failed end Conditions Gagal mengelola barang masuk
Actors Admin
Main Flow/Basic Path 1. Admin menambah barang masuk
2. Admin menyimpan barang masuk
3. Admin menghapus barang masuk
4. Admin mengedit barang masuk
5. Admin memproses barang masuk
6. Admin mencari barang masuk
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola barang masuk
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola transaksi kemudian
megelola barang masuk pada menu transaksi
8. Deskripsi Use Case Diagram Admin mengelola laporan
Tabel III.8.
Deskripsi Use Case Diagram Admin Mengelola Laporan
UseCase Name Laporan
Requirment Admin dapat mengelola laporan
Goal Admin dapat mengelola persediaan
Pre-Conditions Admin dapat mengelola laporan
Post-Conditions Admin dapat mengelola laporan
Failed end Conditions Admin gagal mengelola laporan
Actors Admin
Main Flow/Basic Path 1. Admin melakukan login terlebih dahulu
2. Admin mengelola menu data master
3. Admin mengelola data barang
4. Admin mengelola data pesanan barang
6. Admin mengelola data transaksi barang
7. Admin mengelola laporan barang masuk
8. Admin mengelola laporan barang keluar
9. Admin mengelola laporan persediaan
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola transaksi barang
keluar sesuai dengan penjualan
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola laporan
48
9. Deskripsi Use Case Diagram Admin mengelola jurnal
Tabel III.9.
Deskripsi Use Case Diagram Admin Mengelola Jurnal
UseCase Name Jurnal
Requirment Admin dapat mengelola jurnal
Goal Admin dapat mengelola jurnal
Pre-Conditions Admin dapat mengelola jurnal
Post-Conditions Admin dapat mengelola jurnal
Failed end Conditions Admin gagal mengelola jurnal
Actors Admin
Main Flow/Basic Path 1. Admin melakukan login terlebih dahulu
2. Admin mengelola menu transaksi
3. Admin mengelola barang keluar
4. Admin mengelola barang masuk
5. Admin mengelola menu jurnal
Alternate Flow/Invariant 1 A.1. Admin dapat mengelola jurnal
Invariant 2 B.1. Admin dapat membuka menu utama
kemudian mengelola jurnal
10. Deskripsi Use Case Diagram Pemilik Login
Tabel III.10.
Deskripsi Use Case Diagram Pemilik Login
Use Case Name Login
Requirment Pemilik dapat melakukan login
Goal Pemilik dapat login dan masuk ke halaman menu
utama
Pre-Conditions Pemilik dapat melakukan login
Post-Conditions Pemilik berhasil login
Failed end Conditions Pemilik Gagal login
Actors Pemilik
Main Flow/Basic Path 1. Pemilik memasukkan username dan password
2. Pemilik dapat masuk ke halaman menu utama
Alternate Flow/Invariant
1
1. Pemilik memasukkan username dan password
2. Pemilik dapat melakukan login
3. Pemilik dapat melakukan logout
Invariant 2 1. Pemilik memasukkan username dan password
yang salah
2. Pemilik tidak dapat login
49
11. Deskripsi Use Case Diagram pemilik mengakses data pelanggan
Tabel III.11.
Deskripsi Use Case Diagram Pemilik mengakses Data Pelanggan
Use Case Name Data pelanggan
Requirment Pemilik dapat mengakses data pelanggan
Goal Untuk mengakses data pelanggan
Pre-Conditions Pemilik dapat mengakses data pelanggan
Post-Conditions Data pelanggan dapat diakses
Failed end Conditions Gagal mengakses data pelanggan
Actors Pemilik
Main Flow/Basic Path 1. Pemilik mencari data pelanggan
2. Pemilik mencetak data pelanggan
Alternate Flow/Invariant 1 A.1. Pemilik dapat mengakses data
pelanggan
Invariant 2 B.1. Pemilik dapat membuka menu utama
kemudian mengakses data pelanggan pada
menu data master
12. Deskripsi Use Case Diagram pemilik mengakses data barang
Tabel III.12.
Deskripsi Use Case Diagram Pemilik Mengakses Data Barang
UseCase Name Data Barang
Requirment Pemilik dapat mengakses data barang
Goal Untuk mengakses data barang
Pre-Conditions Pemilik dapat mengakses data barang
Post-Conditions Data barang dapat diakses
Failed end Conditions Gagal mengakses data barang
Actors Pemilik
Main Flow/Basic Path 1. Pemilik mencari data barang
2. Pemilik mencetak data barang
Alternate Flow/Invariant 1 A.1. Pemilik dapat mengakses data barang
Invariant 2 B.1. Pemilik dapat membuka menu utama
kemudian mengakses data barang pada menu
data master
50
13. Deskripsi Use Case Diagram pemilik mengakses data karyawan
Tabel III.13.
Deskripsi Use Case Diagram Pemilik Mengakses Data petugas
UseCase Name Data petugas
Requirment Pemilik dapat mengakses data petugas
Goal Untuk mengakses data petugas
Pre-Conditions Pemilik dapat mengakses data petugas
Post-Conditions Data petugas dapat diakses
Failed end Conditions Gagal mengakses data petugas
Actors Pemilik
Main Flow/Basic Path 1. Pemilik mencari data petugas
2. Pemilik mencetak data petugas
Alternate Flow/Invariant 1 A.1. Pemilik dapat mengakses data petugas
Invariant 2 B.1. Pemilik dapat membuka menu utama
kemudian mengakses data petugas pada
menu data master
14. Deskripsi Use Case Diagram pemilik mengakses data suplier
Tabel III.14.
Deskripsi Use Case Diagram Pemilik Mengakses Data Suplier
UseCase Name Data Suplier
Requirment Pemilik dapat mengakses data Suplier
Goal Untuk mengakses data Suplier
Pre-Conditions Pemilik dapat mengakses data Suplier
Post-Conditions Data Suplier dapat diakses
Failed end Conditions Gagal mengakses data Suplier
Actors Pemilik
Main Flow/Basic Path 1. Pemilik mencari data Suplier
2. Pemilik mencetak data Suplier
Alternate Flow/Invariant 1 A.1. Pemilik dapat mengakses data suplier
Invariant 2 B.1. Pemilik dapat membuka menu utama
kemudian mengakses data suplier pada menu
data master
51
3.3.3. Activity Diagram
A. Kebutuhan Admin
A.1. Activity Diagram Admin Login
Sumber:Hasil Penelitian
Gambar.III.8
Activity Diagram Admin Login
A.2.Activity Diagram Mengelola Data Pelanggan
Sumber:Hasil Penelitian
Gambar.III.9.
Activity Diagram Mengelola Data Pelanggan
52
A.3. Activity Diagram mengelola Data Barang Masuk
Sumber:Hasil penelitian
Gambar.III.10
Activity Diagram mengelola Data Barang Masuk
A.4. Activity Diagram mengelola Laporan Persediaan
Sumber:Hasil penelitian
Gambar.III.11
Activity Diagram mengelola Laporan Persediaan
53
B. analisis Kebutuhan Pemilik
B.1. Activity diagram pemilik login
Sumber:Hasil penelitian
Gambar.III.12
Activity diagram pemilik login
B.2. Activity diagram Mengakses Data barang
Sumber:Hasil Penelitian
Gambar.III.13
Activity diagram Mengakses Data barang
54
B.3. Activity diagram Mengakses Laporan Barang Masuk
Sumber:Hasil Penelitian
Gambar.III.14.
Activity diagram Mengakses Laporan Barang Masuk
3.4. Desain
Pada tahap desain sistem ini penulis menggambarkan bagaiman sistem yang
akan dibuat yaitu beruba penggambaran basis data atau database untuk
mempersiapkan rancang bangun sistem yang akan di terapkan di perusahaan. Berikut
adalah rancangan database yang akan diterapkan pada CV Asta Prima Cikampek.
55
3.4.1. Entity Relationship Diagram (ERD)
Sumber:Hasil Penelitian
Gambar.III.15.
Entity Relationship Diagram (ERD)
56
3.4.2. Logical Record Structure (LRS)
Sumber:Hasil Penelitian
Gambar.III.16.
Logical Record Structure (LRS)
3.4.3. Spesifikasi File
Spesifikasi file mempermudah pemahaman terhadap spesifikasi data maka
sebelumnya diuraikan kamus data yang merupakan elemen atau field yang
digunakan. Adapun file-file yang akan digunaka dalam sistem komputerisasi dengan
nama database inventori dapat dijelaskan sebagai berikut:
1. Spesifikasi File Data Barang
Nama File : Tabel tmbarang
Akronim : Data Barang
Fungsi : Untuk menyimpan data barang
57
Tipe File : File Master
Akses File : Random
Media : Harddisk
Kunci Field : id
Panjang Record : 128 Karakter
Nama Database : inventori
Software : MySQL
Tabel III.15.
Spesifikasi File Data Barang
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id Int 11 Primary Key
2 Kode Kode Varchar 10 -
3 Nama Nama Varchar 50
4 No_rak No Rak Varchar 11
5 Satuan Satuan Varchar 20
6 Stok Stok Varchar 11
7 Harga Harga Int 15
2. Spesifikasi File Data Akun
Nama File : Tabel tmdataakun
Akronim : Data Akun
Fungsi : Untuk menyimpan data akun
Tipe File : File Jurnal
Akses File : Random
Media : Harddisk
Kunci Field : Kode_Akun
Ukuran Record : 24 Karakter
Nama Database : inventori
Software : MySQL
58
Table III.16.
Spesifikasi File Data Akun
No Elemen data Akronim Tipe Data Size Keterangan
1 Kode_Akun Kode akun Varchar 12 Primary Key
2 Nama_Akun Nama akun Varchar 12 -
3. Spesifikasi File Jurnal
Nama File : Tabel tmjurnal
Akronim : Jurnal
Fungsi : Untuk menyimpan data transaksi
Tipe File : File laporan
Akses File : Random
Media : Harddisk
Kunci Field : no_jurnal
Ukuran Record : 120 Karakter
Nama Database : inventori
Software : MySQL
Table I11.17.
Spesifikasi File Jurnal
No Elemen data Akronim Tipe Data Size Keterangan
1 No_jurnal No jurnal Varchar 14 Primary Key
2 Kode_akun Kode akun Varchar 14 -
3 Tanggal Tanggal jurnal Varchar 14 -
4 Debit Debit Varchar 14 -
5 Kredit Kredit Varchar 14 -
6 Keterangan Keterangan Varchar 50 -
59
4. Spesifikasi File data Petugas
Nama File : Tabel tmpetugas
Akronim : Data Petugas
Fungsi : Untuk menyimpan data petugas
Tipe File : File master data
Akses File : Random
Media : Harddisk
Kunci Field : id
Ukuran Record : 211 Karakter
Nama Database : inventori
Software : MySQL
Table III.18.
Spesifikasi File data petugas
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id Int 11 Primary Key
2 Nama Nama Varchar 50 -
3 Username Username Varchar 50 -
4 Password Password varchar 100 -
5 Status Status enumt - -
5. Spesifikasi File Data supplier
Nama File : Tabel tmsupplier
Akronim : Data Supplier
Fungsi : Untuk menyimpan data supplier
Tipe File : File Data Master
Akses File : Random
Media : Harddisk
60
Kunci Field : id
Ukuran Record : 336 Karakter
Nama Database : inventori
Software : MySQL
Table III.19.
Spesifikasi File Data Supplier
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id Int 11 Primary key
2 Kode Kode supplier Varchar 10 -
3 Nama Nama Varchar 100
4 Alamat Alamat Varchar 200
5 No_telp No. Telp Varchar 15
6. Spesifikasi File Data Barang keluar
Nama File : Tabel trbarang_keluar
Akronim : Data Barang Keluar
Fungsi : Untuk menampilkan data barang yang barang keluar
Tipe File : File persediaan
Akses File : Random
Media : Harddisk
Kunci Field : id
Ukuran Record : 33 Karakter
Nama Database : inventori
Software : MySQL
61
Table III.20.
Spesifikasi File Data Barang Keluar
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id barang keluar Int 11 Primary Key
2 Tgl Tanggal keluar Date - -
3 Id_barang_keluar Id Int 11 -
4 Id_pelanggan Id pelanggan Int 11
7. Spesifikasi File Detail Data Barang Masuk
Nama File : Tabel trbarang_masuk
Akronim : Data Barang Masuk
Fungsi : Untuk menampilkan data barang yang masuk
Tipe File : File Master
Akses File : Random
Media : Harddisk
Kunci Field : Id
Ukuran Record : 33 Karakter
Nama Database : inventori
Software : MySQL
Table III.21.
Spesifikasi File Data barang masuk
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id barang masuk Int 11 Primary Key
2 Tgl Tanggal masuk Date - -
3 Id_petugas Id petugas Int 11 -
4 Id_supplier Id supplier Int 11
62
8. Spesifikasi File Barang Keluar Detail
Nama File : Tabel trbarang_keluar_detail
Akronim : transaksi penjualan
Fungsi : Untuk menyimpan data barang yang keluar
Tipe File : File Laporan
Akses File : Random
Media : Harddisk
Kunci Field : id
Ukuran Record : 74 Karakter
Nama Database : inventori
Software : MySQL
Tabel III.22.
Spesifikasi File Detail barang Keluar
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id Int 11 Primary
2 Id_barang_keluar Id barang keluar Int 11 -
3 Id_barang Id barang Int 11
4 Jumlah Jumlah Int 11
5 Harga Harga Varchar 15
6 Total Total Varchar 15
9. Spesifikasi File Barang Keluar Detail
Nama File : Tabel trbarang_masuk_detail
Akronim : transaksi penjualan
Fungsi : Untuk menyimpan data barang yang masuk
Tipe File : File Laporan
Akses File : Random
Media : Harddisk
63
Kunci Field : id
Ukuran Record : 74 Karakter
Nama Database : inventori
Software : MySQL
Tabel III.23.
Spesifikasi File Detail barang Masuk
No Elemen data Akronim Tipe Data Size Keterangan
1 Id Id Int 11 Primary
2 Id_barang_masuk Id barang masuk Int 11 -
3 Id_barang Id barang Int 11
4 Jumlah Jumlah Int 11
5 Harga Harga Varchar 15
6 Total Total Varchar 15
3.4.4. Sequence Diagram
1. Sequence Diagram Transaksi Barang Masuk
Sumber: Hasil Penelitian
Gambar.III.17.
Sequence Diagram Transaksi Barang Masuk
2. Sequence Diagram Transaksi Barang Keluar
64
Sumber: Hasil Penelitian
Gambar.III.18.
Sequence Diagram Transaksi Barang Keluar
3.4.5. Deployment Diagram
Sumber:Hasil Penelitian
Gambar.III.19.
Deployment Diagram
3.4.6. User Interface
65
1. Form Login
Sumber:Penelitian
Gambar.III.20.
Tampilan Form Login
2. Tampilan Menu Utama
Sumber:Penelitian
Gambar.III.21.
Tampilan Form Menu Utama
3. Form Data Barang
66
Sumber:Penelitian
Gambar.III.22.
Tampilan Form Data Barang
4. Form Transaksi Barang Keluar
Sumber:Penelitian
Gambar.III.23.
Tampilan Form Transaksi Barang Keluar
3.5. Implementasi
67
Pada bab ini menjelaskan tentang implementasi dan pengujian sistem.
Tahap terakhir dari rancangan sistem, yaitu sistem persediaan barang terdapat pada
CV. Asta Prima Cikampek. Pengujian ini menghasilkan atau menerapkan sistem
yang telah dirancang untuk diterapkan pada keadaan sebenarnya pada CV Asta Prima
Cikampek. Kemudian untuk itu ada penyusunan jadwal implementasi dalam
mewujudkan sistem yang baru dirancang tersebut sebagai berikut:
1. Analisis Sistem
Analisis sistem yaitu suatu kegiatan untuk mempelajari sistem yang berjalan
serta masalah yang ada, yang bertujuan untuk mendapatkan gambaran tentang
permasalahan yang terdapat pada CV Asta Prima Cikampek, sehingga
mengurangi kesalahan antara sistem yang diusulkan dengan sistem yang sudah
berjalan.
2. Pengumpulan Data
Data-data yang ada di CV Asta Prima Cikampek dikumpulkan serta
dikelompokan untuk mempersingkat waktu dan untuk memudahkan alam
pembuatan program yang dibutuhkan.
3. Pembuatan Program dan Pengetesan Program
Dari data-data yang telah dikelompokan dapat dibuat sesuai dengan data-data
yang ada. Kemudin dilakukan pengetesan program agar program yang telah
dibuat ataupun yang dirancang dapat diketahui kekurangannya.
4. Tes Sistem
kegiatan ini bertujuan untuk melaksanakan uji coba terhadap sistem secara
langsung keseluruhan dan sampai dimana sistem ini dapat dipahami dengan
baik dan benar.
3.5.1. Code Generation
68
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
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;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author Suciase iruwanti
*/
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()));
txtnm_petugas.setText(PetugasSession.getU_nama());
txtid_petugas.setText(Integer.toString(PetugasSession.getU_id()));
ket.hide();
69
debit.hide();
akun.hide();
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())
{
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();
}
private void TableEmpty()
{
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
70
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);
BtnEnabled(true);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel5 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jLabel8 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
txtjumlah_barang = new javax.swing.JTextField();
btnok = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
datatable = new javax.swing.JTable()
{
public boolean isCellEditable(int rowIndex, int colIndex)
{
return false;
}};
btnTableEmpty = new javax.swing.JButton();
lblnama_barang = new javax.swing.JLabel();
txtkode_barang = new javax.swing.JTextField();
txtid_barang = new javax.swing.JTextField();
txtjumlah_barang_max = new javax.swing.JTextField();
btnDelRow = new javax.swing.JButton();
txtid_selected = new javax.swing.JTextField();
txtharga = new javax.swing.JTextField();
71
txtotal = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
txttgl = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
txtnm_petugas = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
btnsave = new javax.swing.JButton();
txtid_pelanggan = new javax.swing.JTextField();
txtid_petugas = new javax.swing.JTextField();
cmbid_pelanggan = new javax.swing.JComboBox<String>();
Label7 = new javax.swing.JLabel();
txtsubtotal = new javax.swing.JTextField();
jLabel9 = new javax.swing.JLabel();
debit = new javax.swing.JTextField();
akun = new javax.swing.JTextField();
ket = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Inventori Barang :: Transaksi Barang Masuk");
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel5.setFont(new java.awt.Font("Lucida Grande", 0, 24)); // NOI18N
getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 530, -1, -1));
jPanel1.setBackground(new java.awt.Color(43, 152, 240));
jLabel8.setFont(new java.awt.Font("Lucida Grande", 0, 22)); // NOI18N
jLabel8.setForeground(new java.awt.Color(182, 229, 251));
jLabel8.setText("Transaksi Barang Masuk");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 285,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(437, Short.MAX_VALUE)));
jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel8)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) );
getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 740, -1));
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(""));
jPanel3.setForeground(new java.awt.Color(245, 245, 245));
jLabel4.setText("Kode Barang");
jLabel6.setText("Jumlah");
txtjumlah_barang.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt)
{
txtjumlah_barangKeyTyped(evt);
}});
btnok.setText("OK");
btnok.addActionListener(new java.awt.event.ActionListener() {
72
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnokActionPerformed(evt);
}});
datatable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][]
{},
new String []
{
"ID", "Kode", "Nama Barang", "Jumlah", "Harga", "Total"
}
)); datatable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
datatable.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent evt)
{
datatableMouseClicked(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt)
{
datatableMouseReleased(evt);
}});
datatable.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
datatableKeyReleased(evt);
}});
jScrollPane1.setViewportView(datatable);
btnTableEmpty.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N
btnTableEmpty.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTableEmptyActionPerformed(evt);
}});
lblnama_barang.setText("Nama Barang");
txtkode_barang.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusLost(java.awt.event.FocusEvent evt) {
txtkode_barangFocusLost(evt);
}});
txtkode_barang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtkode_barangActionPerformed(evt);
}});
btnDelRow.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N
btnDelRow.setText("Hapus Yang Terpilih");
btnDelRow.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDelRowActionPerformed(evt);
}});
txtid_selected.setFont(new java.awt.Font("Lucida Grande", 0, 12)); // NOI18N
txtid_selected.setEnabled(false);
txtharga.setText("jTextField1");
txtotal.setText("jTextField1");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(14, 14, 14)
73
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,
false)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(btnTableEmpty)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnDelRow)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(txtid_selected, javax.swing.GroupLayout.PREFERRED_SIZE, 50,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel4)
.addGap(41, 41, 41)
.addComponent(txtkode_barang, javax.swing.GroupLayout.PREFERRED_SIZE, 137,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblnama_barang, javax.swing.GroupLayout.PREFERRED_SIZE, 145,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(txtotal, javax.swing.GroupLayout.PREFERRED_SIZE, 22,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(2, 2, 2)
.addComponent(txtharga, javax.swing.GroupLayout.PREFERRED_SIZE, 21,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtid_barang, javax.swing.GroupLayout.PREFERRED_SIZE, 24,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(2, 2, 2)
.addComponent(txtjumlah_barang_max, javax.swing.GroupLayout.PREFERRED_SIZE, 21,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtjumlah_barang, javax.swing.GroupLayout.PREFERRED_SIZE, 58,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnok, javax.swing.GroupLayout.PREFERRED_SIZE, 58,
javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap()) );
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jLabel6)
.addComponent(txtjumlah_barang, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnok)
.addComponent(lblnama_barang)
.addComponent(txtkode_barang, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtid_barang, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
74
.addComponent(txtjumlah_barang_max, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtharga, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtotal, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 258,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnTableEmpty)
.addComponent(btnDelRow)
.addComponent(txtid_selected, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) );
getContentPane().add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 133, -1, -1));
jLabel1.setText("Tanggal");
getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(470, 90, -1, -1));
txttgl.setEnabled(false);
getContentPane().add(txttgl, new org.netbeans.lib.awtextra.AbsoluteConstraints(530, 90, 160, -1));
jLabel2.setText("Nama Petugas");
getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, -1, -1));
txtnm_petugas.setEnabled(false);
getContentPane().add(txtnm_petugas, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 70,
154, -1));
jLabel3.setText("Nama Supplier");
getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 90, -1, 30));
btnsave.setBackground(new java.awt.Color(43, 152, 240));
btnsave.setFont(new java.awt.Font("Lucida Grande", 0, 15)); // NOI18N
btnsave.setForeground(new java.awt.Color(255, 255, 255));
btnsave.setText("Simpan & Cetak Transaksi");
btnsave.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnsaveActionPerformed(evt);
}});
getContentPane().add(btnsave, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 570, 220,
50));
getContentPane().add(txtid_pelanggan, new org.netbeans.lib.awtextra.AbsoluteConstraints(280, 100,
22, -1));
getContentPane().add(txtid_petugas, new org.netbeans.lib.awtextra.AbsoluteConstraints(280, 70, 22, -
1));
cmbid_pelanggan.addItemListener(new java.awt.event.ItemListener()
{
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmbid_pelangganItemStateChanged(evt);
}});
getContentPane().add(cmbid_pelanggan, new org.netbeans.lib.awtextra.AbsoluteConstraints(120,
100, 154, -1));
jLabel7.setText("Bersihkan inputan transaksi");
jLabel7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
75
jLabel7MouseClicked(evt);
}});
getContentPane().add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(26, 551, -1, -1));
txtsubtotal.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
getContentPane().add(txtsubtotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 500, 301,
36));
jLabel9.setText("Total Bayar :");
getContentPane().add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 510, 69, 20));
debit.setText("0");
getContentPane().add(debit, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 100, -1, -1));
akun.setText("AKN0002");
getContentPane().add(akun, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 70, -1, -1));
ket.setText("Penjualan");
getContentPane().add(ket, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 100, -1, -1));
pack();
}// </editor-fold>
private void btnokActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
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){
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();
76
// }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+");
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:
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{
JOptionPane.showMessageDialog(null, "Kode barang tidak ditemukan.");
txtid_barang.setText("");
lblnama_barang.setText("-");
txtkode_barang.setText("");
txtjumlah_barang_max.setText("");
txtharga.setText("");
77
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("");
}}
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) {
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);
}
try {
Connection conn = konek.openkoneksi();
java.sql.Statement stm = conn.createStatement();
stm.executeUpdate("INSERT INTO tmjurnal(id_transaksi, kode_akun, tanggal, debit, kredit,
keterangan) VALUES ('" + id_barang_masuk + "','" + akun.getText() + "','" + row_tgl + "', '" +
debit.getText() + "','" + txtsubtotal.getText() + "','" + ket.getText() + "')");
konek.closekoneksi();
} catch (SQLException e) {
78
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));
//------- 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");
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
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);
}}else{
JOptionPane.showMessageDialog(null, "Sistem tidak menemukan barang dengan kode = " + kode ,
"Barang " + kode + " Gagal Disimpan", JOptionPane.ERROR_MESSAGE);
}
79
//------- 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");
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");
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) {
// 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());
80
DefaultTableModel model = (DefaultTableModel) datatable.getModel();
model.removeRow(row);
BtnEnabled(false);
}}
private void datatableMouseReleased(java.awt.event.MouseEvent evt) {
// 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();
}}
private void txtkode_barangActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}}}
catch (ClassNotFoundException ex)
{
java.util.logging.Logger.getLogger(FrmtransaksiMasuk.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FrmtransaksiMasuk.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FrmtransaksiMasuk.class.getName()).log(java.utilogging.Level.S
EVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex)
{
java.util.logging.Logger.getLogger(FrmtransaksiMasuk.class.getName()).log(java.util.logging.Level.
SEVERE, null, ex);
81
}
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
/* Create and display the dialog */
java.awt.EventQueue.invokeLater(() -> {
FrmtransaksiMasuk dialog = new FrmtransaksiMasuk(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}});
dialog.setVisible(true);
});
}
// Variables declaration - do not modify
private javax.swing.JTextField akun;
private javax.swing.JButton btnDelRow;
private javax.swing.JButton btnTableEmpty;
private javax.swing.JButton btnok;
private javax.swing.JButton btnsave;
private javax.swing.JComboBox<String> cmbid_pelanggan;
private javax.swing.JTable datatable;
private javax.swing.JTextField debit;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField ket;
private javax.swing.JLabel lblnama_barang;
private javax.swing.JTextField txtharga;
private javax.swing.JTextField txtid_barang;
private javax.swing.JTextField txtid_pelanggan;
private javax.swing.JTextField txtid_petugas;
private javax.swing.JTextField txtid_selected;
private javax.swing.JTextField txtjumlah_barang;
private javax.swing.JTextField txtjumlah_barang_max;
private javax.swing.JTextField txtkode_barang;
private javax.swing.JTextField txtnm_petugas;
private javax.swing.JTextField txtotal;
private javax.swing.JTextField txtsubtotal;
private javax.swing.JTextField txttgl;
// End of variables declaration
}
3.5.2. Blackbox Testing
1. Pengujian terhadap form Input barang
82
Tabel III.24.
Pengujian terhadap form Input barang
No Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
kesimpulan
1 Klik tombol
simpan
Kode Barang
sama Sistem akan
menolak dan
akan muncul
pemberitahuan
“kode barang
sudah pernah
di simpan”
Sesuai
harapan
Valid
2. Klik tombol
simpan
Input text
ada yang
kosong
Sistem akan
menolak dan
akan muncul
pemberitahuan
“terdapat
inputan
kosong”
Sesuai
harapan
Valid
3. Klik tombol
Simpan
Text di isi
semua dan
kode barang
berbeda
Sistem akan
menerima dan
menyimpan
data
Sesuai
harapan
valid
2. Pengujian terhadap form barang masuk
Tabel.III.25.
Pengujian terhadap form Barang masuk
No Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
kesimpulan
1 Klik text
jumlah
Mengetik
kode barang
salah
Sistem akan
menolak dan
akan muncul
pemberitahuan
“kode barang
tidak di
temukan”
Sesuai
harapan
Valid
2. Klik tombol
ok
Input text
ada yang
kosong
Sistem akan
menolak dan
akan muncul
pemberitahuan
“terdapat
inputan
kosong”
Sesuai
harapan
Valid
83
3. Klik text
jumlah
Input kode
barang sama
Sistem akan
menolak dan
akan muncul
pemberitahuan
“input kode
barang sudah
di tambahkan”
Sesuai
harapan
valid
3. Klik tombol
Simpan
Text di isi
semua dan
kode barang
ditemukan
Sistem akan
menerima dan
menyimpan
data lalu
mencetak
barang masuk
Sesuai
harapan
valid
3. Pengujian terhadap form login
Tabel.III.26.
Pengujian terhadap form login
No Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
kesimpulan
1 Klik Tombol
Login
User name
dan password
tidak di isi
Sistem akan
menolak dan
akan muncul
pemberitahuan
“maaf user
name dan
password
tidak di isi”
Sesuai
harapan
Valid
2. Klik tombol
Login
User name
di isi dan
Password
kosong
Sistem akan
menolak dan
akan muncul
pemberitahuan
“password
belum di isi”
Sesuai
harapan
Valid
3. Klik text
login
User name
tidak di isi
dan
password di
isi
Sistem akan
menolak dan
akan muncul
pemberitahuan
“user name
tidak di isi”
Sesuai
harapan
valid
4 Klik tombol
Login
User name
dan
password di
Sistem akan
menerima dan
akan muncul
Sesuai
harapan
valid
84
isi menu utama
3.5.3. Spesifikasi Hardware dan Software
1. Perangkat Keras (hardware)
Perangkat keras atau hardware adalah serangkaian unsur-unsur yang terdiri dari
beberapa perangkat keras yang membentuk suatu sistem komputer yang
digunakan. Adapun perangkat keras yang penulis sarankan agar proses
pengolahan data pada CV Asta Prima Cikampek adalah sebagai berikut:
a. Processor : CPU N1350
b. Memory Size : 4.00 GB (RAM)
c. Hardisk : 350 GB
d. Mouse : Standard Mouse
e. Keyboard : 108 Keys
f. Monitor : SVGA 15 Inch
g. Printer : Inkjet
2. Perangkat Lunak (software)
Perangkat lunak atau software adalah serangkaian unsur-unsur yang terdiri dari
beberapa perangkat lunak yang membentuk suatu sistem komputer yang
digunakan untuk mengoperasikan kerja pengguna. Fungsi perangkat lunak
adalah untuk mengidentifikasi dan menyiapkan aplikasi program sehingga tata
kerja seluruh peralatan komputer dapat terkontrol, serta membuat aktifitas kerja
menjadi lebih efisien. Adapun perangkat lunak yang digunakan adalah sebagai
berikut:
85
a. Sistem Operasi : Windows 8
b. Program Aplikasi : Java Application
c. Bahasa Pemrograman : Netbeans IDE 8.1
d. Database : MySQL Database
e. Browser : Mozilla Firefox
f. Web Server : Xampp