View
7
Download
0
Category
Preview:
Citation preview
21
BAB III
PEMBAHASAN
3.1 Tinjauan Perusahaan
Tinjauan perusahaan ini berisi tentang sejarah berdirinya Apotek Dana Farma
Karawang serta stuktur organisasi yang ada dan fungsi-fungsi dari bagian yang ada
dalam perusahaan.
3.1.1 Sejarah Apotek
APOTEK DANA FARMAyang berlokasi di Jl. Proklamasi No.27 Tanjungmekar
Karawang. Apotek ini berdiri sejak tahun 1982 dengan nama Balai Apotek Bakti
Waluya sampai dengan tahun 2008. Tahun 2009 berubah nama menjadi Apotek Dana
Farma sampai sekarang dan terus mengalami perkembangan yang cukup baik.
3.1.2. Struktur Organisasi dan Fungsi
Struktur organisasi merupakan suatu kerangka untuk mewujudkan suatu pola
tetap dari hubungan antara kedudukan dan peranan dalam suatu lingkar
kerjasama.Struktur organisasi mutlak diperlukan agar dapat diketahui dengan jelas
bagaimana hubungan antara bagian serta tugas, wewenang dan tanggung jawabnya
disetiap bagian struktur organisasi mempunyai tanggung jawab dan kewajiban-
kewajiban terhadap pengembangan apotek.Setiap bagian didalam struktur organisasi
harus mampu bekerja secara profesional, dan harus dapat berinteraksi dengan bagian
lainnya sehingga didapat kerjasama yang optimal antar fungsi.
22
Pada dasarnya struktur organisasi merupakan suatu hal yang sangat menentukan
kedudukan dalam apotek.Sistem yang di gunakan dalam Struktur Organisasi adalah
sistem kerjasama (team work) yang dijalankan oleh sekelompok orang untuk mencapai
tujuan tertentu. Gambaran mengenai susunan struktur organisasi pada APOTEK DANA
FARMA dapat dilihat pada gambar dibawah ini:
Sumber: Apotek Dana Farma Karawang
Gambar III.1
Struktur Organisasi Apotek Dana Farma
Adapun sesuai dengan fungsi dan tugas masing-masing bagian dari struktur
organisasi yang terdapat pada APOTEK DANA FARMA yaitu sebagai berikut :
1. Kepala Apotek
a. Bertugas memimpin dan mengkordinasi
b. Mengontrol jalannya klinik
c. Membuat suatu kebijakan
d. Memeriksa laporan pembelian yang dibutuhkan klinik.
2. Bagian Pembelian
a. Mengeluarkan order kepada supplier.
b. Membuat laporan pembelian.
23
c. Menerima obat.
d. Menerima laporan dari Bagian Pengiriman dan Bagian Gudang.
3. Store Gudang (Store)
a. Pengecekan obat
b. Proses pembuatan pesanan
c. Membuat laporan obat masuk dan keluar
4. Bagian Penjualan
a. Menerima Order dari customer
b. Membuat laporan penjualan
c. Menerima pembayaran
d. Menerima laporan dari bagian pengiriman dan bagian gudang
5. Bagian Keuangan
a. Membayar pesanan
b. Menerima laporan penjualan
3.2 Tinjauan Kasus
3.2.1 Prosedur Bisnis Sistem Berjalan
Pada sistem berjalan ada beberapa prosedur yang harus dijalankan untuk proses
pembuatan laporan, yaitu terdiri dari :
1. Proses pengecekan stok obat
Bagian pembelian mengecek stok obat dengan melihat posisi obat dirak dan
membuat KS (Kartu Stok) kemudian bagian pembelian membuat laporan pesanan
kepada pemilik untuk di acc.
2. Proses pemesanan obat
24
Bagian pembelian membuat SP (Surat Pesanan), kemudian bagian
pembelian menghubungi bagian supplier untuk datang ke apotek mengambil SP
(Surat Pesanan), apotek mengarsipkan surat pesanan, dan supplier membawa SP
(Surat Pesanan).
3. Proses penerimaan obat
Supplier datang keapotek membawa obat yang dipesan dan menyerahkan
faktur penjualan kepada bagian pembelian, kemudian bagian pembelian
menerima obat, nota dan faktur serta melakukan pengecekan obat yang datang
dan disesuaikan yang tertera dengan faktur penjualan, jika salah maka bagian
pembelian mengembalikan faktur kepada supplier.
4. Proses pembayaran obat
Bagian pembelian menyerahkan nota dan faktur kepada bagian keuangan
untuk melakukan pembayaran pada saat jatuh tempo kepada supplier.
25
1.2.2 Activity Diagram
Bersifat dinamis. Diaram aktivitas adalah tipe khusus dari diagram status yang
memperlihatkan aliran dari suatu aktivitas ke aktivitas lainnya dalam suatu sistem.
Gambar III.2
Activity Diagram Apotek Dana Farma.
1.2.3 Spesifikasi Dokumen Masukkan
1. Nama Dokumen : Faktur Pembelian
Fungsi : Untuk mengetahui data pembelian
Sumber : Supplier
Tujuan : Bagian Pembelian
Frekuansi : Setiap terjadi pembelian
26
Media : Kertas
Jumlah : Satu lembar
Bentuk : Lampiran A.1
3.3.4 Spesifikasi Dokumen Keluaran
1. Purchase Order
Nama Dokumen : Purchase Order
Fungsi : Sebagai bukti memesan barang
Sumber : supplier
Tujuan : Bagian Pembelian
Frekuensi : Setiap terjadi pemesanan barang
Media : Kertas
Jumlah : 2 Lembar
Bentuk : Lihat Lampiran B-1
2. Nama Dokumen : Laporan Pembelian
Fungsi : Untuk mengetahui semua transaksi pembelian
Sumber : Bagian Pembelian
Tujuan : Pemilik Apotek
Frekuansi : Setiap akhir bulan
Media : Kertas
Jumlah : Satu lembar
Bentuk : Lampiran B.2
27
3.3.5 Permasalahan Pokok
Bedasarkan pengamatan, maka penulis membuat kesimpulan bahwa Apotek Dana
Farma dalam membuat laporan masih menggunakan cara manual. Dilihat dari sistem
berjalan timbul adanya permasalahan yang antara lain,yaitu :
1. Dalam pengisian Purchase Order masih menggunakan manual sehingga mudah
disalah gunakan atau data yang dibuat bisa dipalsukan.
2. Keamanan dokumen kurang terjamin tersimpan dengan aman sehingga mudah
rusak dan hilangnya dokumen yang terkait Apotek Dana Farma.
3. Data dalam membuat laporan kurang akurat karena masih menghitung dan
membuat laporan masih secara manual dan mudah terjadi kesalahan-kesalahan
yang seharusnya tidak terjadi
4. Kurangnya sumber daya manusia pada Apotek Dana Farma.
3.3.6 Pemecahan Masalah
Berdasarkan hasil pengamatan, maka penulis membuat kesimpulan bahwa Apotek
Dana Farma dalam melakukan proses kegiatan pembuatan laporan masih manual.
Dengan pengisian data yang masih manual (tidak terkomputerisasi) maka banyak
permasalahan yang terjadi.Tentunya hal ini sangat merugikan karena tidak sesuai dengan
kemajuan teknologi informasi sekarang ini. Dengan digunakan komputer sebagai alat
bantu untuk mempermudah proses pembuatan laporan. Selain itu keuntungan lain yang
dapat diperoleh dengan adanya komputer adalah dalam pembuatan dan penyusunan
laporan akan lebih cepat dan akurat, sehingga dalam pembuatan dan penyusunan laporan
tidak mengalami kesulitan. Maka dari itu, penulis berusaha memberikan alternative
pemecahan masalah dari berbagai pemasalahan yang ada, yaitu dengan mengubah
28
system pembuatan laporan menggunakan bahasa pemprograman sehingga memudahkan
pengguna komputer dalam menjalankan pekerjaannya.
3.3 Analisi Kebutuhan Software
3.3.1 Analisa Kebutuhan
Sistem Informasi Pembelian Kredit merupakan pengembangan sistem yang
dirancang penulis untuk Apotek Dana Farma Karawangdengan menerapkan sebuah
program berbasis desktop untuk menunjang kegiatan operasional dalam mengelola
pembelian obat secara kredit di Apotek Dana Farma Karawang. Berikut ini spesifikasi
kebutuhan dari Sistem Informasi Pembelian Obat Secara Kredit berdasarkan
pemakainya:
A. Admin
A.1. Admin dapat melakukan Login pada Form Login.
A.2. Admin dapat mengelola data Master.
A.3. Admin dapat mengelola data transaksi.
A.4. Admin dapat mengelola data laporan.
A.5. Admin dapat mengelola data jurnal.
A.6. Admin dapat mengelolah pengaturan.
B. Pemilik Apotek
B.1. Pemilik Apotek dapat melakukan Login pada Form Login.
B.2. Pemilik Apotek dapat melihat menu Laporan
B.3. Pemilik Apotek dapat mengelola pengaturan.
29
3.3.2 Use Case Diagram
1. Use Case Diagram Login Admin
Gambar III.3
Use Case Diagram Login Admin
2. Use Case Menu Utama Admin
Gambar III.4
Use Case Diagram Menu Utama Admin
30
3. Use Case Diagram Pengelolahan Data Master
Gambar III.5
Use Case Diagram Pengelolahan Data Master
Deskripsi Use Case Digaram Pengelolahan Data Master
Tabel III.1
Use Case Diagram Pengolahan Data Master
Use case name Admin mengelola Data Master
Requirment A2
Goal Admin dapat mengolah data Master, baik mencari, menambah,
mengedit, menyimpan, dan mencetak data Master.
Pre-condition Admin telah melakukan login dan mengakses form data Master
dan mengelola data obat dan data supplier
Post-condition Data obat berhasil terupdate dan tersimpan data obat dan data
supplier.
Failed and conditions Gagal terupdate dan tersimpan data obat dan data supplier.
Primary Actors Admin
Main flow / Basic path 1. Admin mengakses form data obat dan data supplier.
2. Admin memilih tombol "tambah".
3. Admin menambahkan data obat dan data supplier.
4. Admin memilih tombol "simpan".
5. Sistem menyimpan data Master kedalam Database.
6. Sistem menampilkan keterangan berhasil menyimpan data.
31
Alternate flow / invariant
1
A.1 Admin mencari data obat dan data supplier.
A2. Sistem menampilkan data Master yang dicari.
A3. Admin memilih tombol "edit".
A4. Admin merubah data obat dan data supplier.
A5. Admin memilih tombol "simpan".
A6. Sistem memperbarui data Master kedalam Database.
A7. Sistem menampilkan keterangan berhasil memperbarui data
Master.
4. Use Case Diagram Pengelolahan Data Transaksi
Gambar III.6
Use Case Diagram Pengelolahan Data Transaksi
Deskripsi Use Case Pengelolahan Data Transaksi
Tabel III.2
Use Case Diagram Pengolahan Data Transaksi
Use Case Name PengolahanData Transaksi
Requirements A3
Goal Admin dapat mengolah data Master, baik mencari, menambah,
menyimpan, dan mencetak data transaksi.
Pre-condition Admin telah melakukan login dan mengakses form data transaksi dan
mengelola data pesanan dan data pembayaran.
32
Post condition Berhasil tersimpan data pesanan dan data pembayaran.
Failed end Conditions Gagal tersimpan data pesanan dan data pembayaran.
Primary Actors Admin
Main flow / Basic Path 1. Admin mengakses form data pesanan.
2. Admin memilih tombol "tambah".
3. Admin menambahkan data pesanan.
4. Admin memilih tombol "simpan".
5. Sistem menyimpan data transaksi kedalam Database.
6. Sistem menampilkan keterangan berhasil menyimpan data.
Alternate flow / A1. Admin mencari data pembayaran.
Invariant 1 A2. Sistem menampilkan data transaksi yang dicari.
A3. Admin memilih tombol “cetak”.
A4. Admin mencetak transaksi pesanan dan pembayaran.
5. Use Case Diagram Data Laporan
Gambar III.7
Use Case Diagram Pengolahan Data Laporan
Deskripsi Use Case Diagram Pengolahan Data Laporan
Tabel III.3
Use Case Diagram Pengolahan Data Laporan
33
Use Case Name Pengelolaan Data Laporan
Requirements A4
Goal
Admin dapat mengolah data laporan, baik mencari,
menambah,
menyimpan, dan mencetak data Master.
Pre-condition
Admin telah melakukan login dan mengakses form data
laporan dan
mengelola laporan pembelian dan laporan jurnal.
Post condition Berhasil tersimpan laporan pembelian dan laporan jurnal.
Failed end Gagal tersimpan laporan pembelian dan laporan jurnal.
Conditions
Primary Actors Admin.
Main flow /
1. Admin mengakses form laporan pembelian dan laporan
jurnal.
Basic Path 2. Admin memilih tombol "tambah".
3. Admin menambahkan data laporan pembelian dan laporan
jurnal.
4. Admin memilih tombol "simpan".
5. Sistem menyimpan data laporan kedalam Database.
6. Sistem menampilkan keterangan berhasil menyimpan data.
Alternate flow / A1. Admin mencari data laporan pembelian dan laporan jurnal.
Invariant 1 A2. Sistem menampilkan data laporan yang dicari.
A3. Admin memilih tombol "cetak”.
A4. Admin mencetak laporan pembelian dan laporan jurnal.
6. Use Case Diagram Pengelolahan Data Jurnal
Gambar III.8
Use Case Diagram Pengolahan Data Jurnal
34
Deskripsi Use Case Diagram Pengolahan Data Jurnal
Tabel III.4
Use Case Diagram Pengolahan Data Jurnal
Use Case Name Pengelolaan Data Jurnal
Requirements A5
Goal Admin dapat mengolah data jurnal, baik mencari, menambah,
dan menyimpan data jurnal.
Pre-condition
Admin telah melakukan login dan mengaksesdata perkiraan akun dan data
jurnal umum.
Post condition Berhasil tersimpan data perkiraan akun dan data jurnal umum.
Failed end Gagal tersimpan data perkiraan akun dan data jurnal umum.
Conditions
Primary Actors Admin
Main flow / 1. Admin mengakses data perkiraan akun dan data jurnal umum.
Basic Path 2. Admin memilih tombol "tambah".
3. Admin menambahkan data perkiraan akun dan data jurnal umum.
4. Admin memilih tombol "simpan".
5. Sistem menyimpan data perkiraan akun dan data jurnal umum kedalam
Database.
6. Sistem menampilkan keterangan berhasil menyimpan data.
Alternate flow / A1. Admin mencari data perkiraan akun.
Invariant 1 A2. Sistem menampilkan data perkiraan akun yang dicari.
A3. Admin memilih tombol "edit".
A4. Admin merubah data perkiraan akun.
A5. Admin memilih tombol "simpan".
A6. Sistem memperbarui data perkiraan akun kedalam Database.
A7. Sistem menampilkan keterangan berhasil memperbarui data perkiraan
akun.
7. Use Case Diagram Pengelolahan Data Pengaturan
Gambar III.9
Use Case Diagram Pengolahan Pengaturan
35
Deskripsi Use Case Diagram Pengolahan Data Pengaturan
Tabel III.5
Use Case Diagram Pengolahan Pengaturan
Use case name Mengelola menu pengaturan
Requirment A6
Goal Admin dapat mengelola menu pengaturan
Pre-condition Admin telah melakukan Login
Post-condition User berhasil ditambahkan
Failed and
conditions
Gagal menambahkan user
Primary Actors Admin
Main flow / Basic
path
A.1 Admin mengelola menu pengaturan
A.2 Admin memilih “tambah pengguna”, “ganti password” dan
“back up data”.
A.3 admin menginput “tambah pengguna”, “password baru”
A.4 Admin memilih tombol “simpan”
A.5 System menyimpan pembaharuan
8. Use Case Diagram Login Pemilik Apotek
Gambar III.10
Use Case Diagram Pemilik Apotek
36
9. Use Case Diagram Pengaturan Pemilik Apotek
Gambar III.11
Use Case Diagram Pengaturan Pemilik Apotek
Deskripsi Use Case Diagram Pengaturan Pemilik Apotek
Tabel III.6
Use Case Diagram Pengaturan Pemilik Apotek
Use case name Mengelola menu pengaturan Pemilik
Requirment B2
Goal Pemilik dapat mengelola menu pengaturan
Pre-condition Pemilik telah melakukan Login
Post-condition User berhasil ditambahkan
Failed and
Conditions
Gagal menambahkan user
Primary Actors Pemilik
Main flow / Basic
path
A.1 Pemilik mengelola menu pengaturan
A.2 Pemilik memilih “tambah pengguna”, “ganti password” dan “back up data”.
A.3 Pemilik menginput “tambah pengguna”, “password baru”
A.4 Pemilik memilih tombol “simpan”
A.5 System menyimpan pembaharuan
37
3.3.3 Activty Diagram Diagram
1. Activity Diagram Pengecekan Obat
Gambar III.12
Activity Diagram Pengecekan Obat
38
2. Activity Diagram Pembelian Obat
Gambar III.13
Activity Diagram Pembelian Obat
39
3. Activity Diagram Pembayaran Obat
Gambar III.14
Activity Diagram Pembayaran Obat
40
4. Activity Diagram Data Jurnal
Gambar III.15
Activity Diagram Data Jurnal
41
5. Activity Diagram Pemilik Apotek
Gambar III.16
Activity Diagram Pemilik Apotek
3.4 Desain
Menggambarkan hubungan antar tabel yang dibuat beserta relasi antar tabel.
Dalam penggambarannya disini menggunakan Entity Relationship Diagram untuk
pembuatan sistem informasi pembelian obat secara kredit pada Apotek Dana Farma
Karawang sebagai berikut:
42
3.4.1 Entity Relationship Diagram (ERD)
Gambar III.17
Entity Relationship Diagram (ERD)
43
3.4.2 Logical Record Structure (LRS)
Gambar III.18
Logical Record Structure (LRS)
44
3.4.3 Spesifikasi File
Dalam program ini menggunakan satu buah Database dengan nama
dana_farma.sql dan didalamnya terdapat tabel-tabel sebagai entitas. Tabel-tabel
tersebut sebagai berikut:
1. Spesifikasi File Tabel Data Pengguna
Nama Database : dana_farma
Nama File : pengguna
Akronim : pengguna.myd
Tipe File :File Master
Akses File : Random
Panjang Record : 100 byte
Kunci Field : id_pengguna
Tabel III.7.
Spesifikasi File Tabel Pengguna
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id pengguna Id_pengguna Varchar 20 Primary key
2 Nama Pengguna Nm_pengguna Varchar 35
3 Password Password Varchar 35
4 Level Level Varchar 10
2. Spesifikasi File Tabel Data Supplier
Nama Database : dana_farma
Nama File : supplier
Akronim : supplier.myd
45
Tipe File :File Master
Akses File : Random
Panjang Record : 345 byte
Kunci Field : kd_supplier
Tabel III.8.
Spesifikasi File Tabel Supplier
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Supplier Kd_supplier Char 5 Primary key
2 Nama Supplier Nm_supplier Varchar 35
3 Kontak Personal Kntk_personal Varchar 35
4 Alamat Supplier Almt_supplier Varchar 255
5 Nomer Telpon
Supplier
No_tlp_supplier Varchar 15
3. Spesifikasi File Tabel Data Obat
Nama Database : dana_farma
Nama File : obat
Akronim : obat.myd
Tipe File :File Master
Akses File : Random
Panjang Record : 108 byte
Kunci Field : kd_obat
Tabel III.9.
Spesifikasi File Tabel Data Obat
No Elemen Data Akronim Tipe Panjang Keterangan
46
1 Kode Obat Kd_obat Char 7 Primary key
2 Nama Obat Nm_obat Varchar 35
3 Jenis Obat Jenis_obat Varchar 25
4 Dosis Dosis Varchar 15
5 Satuan Satuan Varchar 15
6 Harga Obat Hrg_obat Double
7 Stok Stok Int 11
4. Spesifikasi File Tabel Perkiraan
Nama Database : dana_farma
Nama File : perkiraan
Akronim : perkiraan.myd
Tipe File :File Master
Akses File : Random
Panjang Record : 57 byte
Kunci Field : kd_akun
Tabel III.10.
Spesifikasi File Tabel Perkiraan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Akun Kd_akun Varchar 7 Primary key
2 Nama Akun Nm_akun Varchar 25
3 Klasifikasi Klasifikasi Varchar 25
5. Spesifikasi File Tabel Pemesanan
Nama Database : dana_farma
Nama File : pemesanan
47
Akronim : pemesanan.myd
Tipe File :File transaksi
Akses File : Random
Panjang Record : 35 byte
Kunci Field : no_pemesanan
Tabel III.11.
Spesifikasi File Tabel Pemesanan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Pemesanan No_pemesanan Char 9 Primary key
2 Tanggalpemesanan Tgl_pemesanan Date
3 Kode Supplier Kd_supplier Char 5
4 Id Pengguna Id_pengguna Varchar 20
5 Total Pemesanan Total_pemesanan Double
6 Status Tagih Status_tagih Int 1
6. Spesifikasi File Tabel Detail Pemesanan
Nama Database : dana_farma
Nama File :detail_pemesanan
Akronim : detail_pemesanan.myd
Tipe File :File Transaksi
Akses File : Random
Panjang Record : 27 byte
Kunci Field : no_pemesanan
48
Tabel III.12.
Spesifikasi File Tabel Detail Pemesanan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomor Pemesanan no_pemesanan Char 9 Primary key
2 Kode Obat kd_obat Varchar 7
3 Jumlah Beli jml_beli Int 11
4 Harga Obat hrg_obat Double
7. Spesifikasi File Tabel Penerimaan
Nama Database : dana_farma
Nama File : penerimaaan
Akronim : penerimaan.myd
Tipe File :File Transaksi
Akses File : Random
Panjang Record : 54 byte
Kunci Field : no_penerimaan
Tabel III.13.
Spesifikasi File Tabel Penerimaan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Penerimaan no_penerimaan Char 9 Primary key
2 Tanggal Peneriman tgl_penerimaan Date
3 Kode Supplier kd_supplier Char 5
4 Nomer Surat Jalan no_sj Char 20
5 Id Pengguna id_pengguna Varchar 20
49
8. Spesifikasi File Tabel Detail Penerimaan
Nama Database : dana_farma
Nama File : detail_penerimaaan
Akronim : detail_penerimaan.myd
Tipe File :File Transaksi
Akses File : Random
Panjang Record 27 byte
Kunci Field : no_penerimaan
Tabel III.14.
Spesifikasi File Tabel Detail Penerimaan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Penerimaan No_penerimaan Char 9 Primary key
2 Kode Obat Kd_obat Varchar 7
3 Jumlah Terima Jml_terima Int 11
9. Spesifikasi File Tabel Penagihan
Nama Database : dana_farma
Nama File : penagihan
Akronim : penagihan.myd
Tipe File :File Transaksi
Akses File : Random
Panjang Record :34 byte
Kunci Field : no_penagihan
50
Tabel III.15.
Spesifikasi File Tabel Penagihan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Penagihan No_penagihan Char 9 Primary key
2 Tanggal Penagihan Tgl_penagihan Date
3 Tanggal Jatuh Tempo Tgl_jatuh_tempo Date
4 Nomer Pemesanan No_pemesanan Char 9
5 Total Tagihan Total_tagihan Double
6 Id Pengguna Id_pengguna Varchar 15
7 Status Bayar Status_bayar Tinyint 1
10. Spesifikasi File Tabel Pembayara
Nama Database : dana_farma
Nama File : pembayaran
Akronim : pembayaran.myd
Tipe File :File Transaksi
Akses File : Random
Panjang Record : 58 byte
Kunci Field : no_pembayaran
Tabel III.16.
Spesifikasi File Tabel Pembayaran
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Pembayaran No_pembayaran Char 9 Primary key
2 Tanggal Pembayaran Tgl_pembayaran Date 7
3 Nomer Penagihan No_penagihan Char 11
51
4 Nomer Faktur No_faktur Varchar 20
5 Jumlah Dibayar Jmlh_dibayar Double
6 Id Pengguna Id_pengguna Varchar 20
11. Spesifikasi File Tabel Data Jurnal
Nama Database : dana_farma
Nama File : jurnal
Akronim : jurnal.myd
Tipe File :File Transaksi
Akses File : Random
Panjang Record : 147 byte
Kunci Field : no_jurnal
Tabel III.17.
Spesifikasi File Tabel Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Jurnal No_jurnal Char 7 Primary key
2 Tanggal Jurnal Tgl_jurnal Date
3 Nomer Referensi No_reff Varchar 20
4 Keterangan Keterangan Varchar 100
5 Id Pengguna Id_pengguna Double 20
12. Spesifikasi File Tabel Detail Jurnal
Nama Database : dana_farma
Nama File : detail_jurnal
Akronim : detail_jurnal.myd
52
Tipe File :File Transaksi
Akses File : Random
Panjang Record : 14 byte
Kunci Field : no_jurnal
Tabel III.18.
Spesifikasi File Tabel Detail Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomer Jurnal No_jurnal Char 7 Primary key
2 Kode Akun Kd_akun Varchar 7
3 Debet Debet Double
4 Kredit Kredit Double
53
3.4.4 Squence Diagram
Gambar III.19
Squence Diagram
54
3.4.5 Deployment Diagram
Gambar III.20
Deployment Diagram
3.4.6 User Interface
1. Admin melakukan Login pada form login dengan cara mengisi id pengguna dan
password lalu klik login.
Gambar III.21
Form login pembelian kredit
55
2. Tampil menu utama program pembelian kredit
Gambar III.22
Form Menu Utama Pembelian Kredit
3. Admin mengakses Data Obat pada menu Master dengan cara memilih Data Master
kemudian klik data obat, lalu isi data obat dan simpan
Gambar III.23
Form Data Master Data Obat pada Pembelian Kredit
56
Gambar III.24
Form Data Obat pada Pembelian Kredit
4. Admin mengakses Data Supplier pada menu Master dengan cara memilih Data
Master kemudian klik Data Supplier, lalu isi data supplier dan simpan
Gambar III.25
Form Data Master Data Supplier Pembelian Kredit
57
Gambar III.26
Form Data Supplier pada Pembelian Kredit
5. Admin mengakses Data Transaksi pada pemesanan dengan cara memilih Data
Transaksi kemudian klik Pemesanan, lalu isi Pemesanan dan simpan
Gambar III.27
Form Data Transaksi Data Pemesanan pada Pembelian Kredit
58
Gambar III.28
Form Data Pesanan Obat pada Pembelian Kredit
6. Admin mengakses Data Transaksi pada penerimaan dengan cara memilih Data
Transaksi kemudian klik Penerimaan, lalu isi Pemesanan dan simpan
Gambar III.29
Form Data Transaksi Data Penerimaan pada Pembelian Kredit
59
Gambar III.30
Form Data Penerimaan Obat pada Pembelian Kredit
7. Admin mengakses Data Transaksi pada penagihan dengan cara memilih Data
Transaksi kemudian klik Penagihan, lalu isi Pemesanan dan simpan
Gambar III.31
Form Data Transaksi Data Penagihan pada Pembelian Kredit
60
Gambar III.32
Form Data Penagihan Obat pada Pembelian Kredit
8. Admin mengakses Data Transaksi pada pembayaran dengan cara memilih Data
Transaksi kemudian klik Pembayaran, lalu isi Pemesanan dan simpan
Gambar III.33
Form Data Transaksi Data Pembayaran pada Pembelian Kredit
61
Gambar III.34
Form Data Pembayaran Tagihan pada Pembelian Kredit
9. Admin mengakses Data Laporan pada Laporan Pemesanan dengan cara memilih
Data Laporan kemudian klik Laporan Pemesanan, lalu isi Laporan Pemesanan dan
lihat
Gambar III.35
Form Data Laporan Data Laporan Pemesanan pada Pembelian Kredit
62
Gambar III.36
Form Laporan Pemesanan pada Pembelian Kredit
10. Admin mengakses Data Laporan pada Laporan Pembayaran dengan cara memilih
Data Laporan kemudian klik Laporan Pembayaran, lalu isi Laporan Pembayaran
dan lihat
Gambar III.37
Form Data Laporan Data Laporan Pembayaran pada Pembelian Kredit
63
Gambar III.38
Form Laporan Pembayaran pada Pembelian Kredit
11. Admin mengakses Data Laporan pada Laporan Jurnal dengan cara memilih Data
Laporan kemudian klik Laporan Jurnal, lalu isi Laporan Jurnal dan lihat
Gambar III.39
Form Data Laporan Data Laporan Jurnal pada Pembelian Kredit
Gambar III.40
Form Laporan Jurnal pada Pembelian Kredit
64
12. Admin mengakses Data Jurnal pada Data Perkiraan dengan cara memilih Data
Jurnal kemudian klik Data Perkiraan, lalu isi Data Perkiraan dan Simpan
Gambar III.41
Form Data Laporan Data Laporan Jurnal pada Pembelian Kredit
Gambar III.42
Form Data Perkiraan pada Pembelian Kredit
65
13. Admin mengakses Data Jurnal pada Jurnal dengan cara memilih Data Jurnal
kemudian klik Jurnal, lalu isi Jurnal umum dan Simpan
Gambar III.43
Form Data Jurnal Data Jurnal pada Pembelian Kredit
Gambar III.44
Form Jurnal Umum pada Pembelian Kredit
66
14. Admin mengakses Pengaturan pada Ganti Password dengan cara memilih
Pengaturan kemudian klik Ganti Password, lalu isi Ganti Password dan Simpan
Gambar III.45
Form Pengaturan Ganti Password pada Pembelian Kredit
Gambar III.46
Form Ganti Password pada Pembelian Kredit
67
15. Admin mengakses Pengaturan pada Back Up dengan cara memilih Back Up
kemudian klik Back Up
Gambar III.47
Form Pengaturan Back Up pada Pembelian Kredit
Gambar III.48
Form Back Up pada Pembelian Kredit
3.5 Implementasi
3.5.1 Code Generation
/*
* 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.
*/
68
package forms;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.io.File;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.ListIterator;
import java.util.Locale;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import model.Pemesanan;
import model.PemesananDetail;
import model.Obat;
import model.Supplier;
69
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import utama.Utama;
public class FormPemesanan extends javax.swing.JFrame {
/**
* Creates new form FormPemesanan
*/
String KdObat = "";
String NoPemesanan = "";
String Status = "";
NumberFormat number = new DecimalFormat("#");
NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("id",
"ID"));
Pemesanan pemesanan = new Pemesanan();
Supplier supplier = new Supplier();
Obat obat = new Obat();
70
PemesananDetail pemesananDetail = new PemesananDetail();
DefaultTableModel model = null;
DefaultTableModel model_pemesanan = null;
DefaultComboBoxModel combo_model = null;
public FormPemesanan() {
initComponents();
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int x, y;
x = (int) ((d.getWidth() - getSize().width) / 2);
y = (int) ((d.getHeight() - getSize().height) / 2);
setLocation(x, y);
model = (DefaultTableModel) tbldetailbeli.getModel();
model_pemesanan = (DefaultTableModel) tblpemesanan.getModel();
combo_model = (DefaultComboBoxModel) tsupplier.getModel();
tbldetailbeli.getTableHeader().setFont(new Font("Century Schoolbook", 1,
16));
tbldetailbeli.setRowHeight(30);
71
tblpemesanan.getTableHeader().setFont(new Font("Century Schoolbook",
1, 16));
tblpemesanan.setRowHeight(30);
bersihForm();
listSupplier();
listPemesanan();
tab.setSelectedIndex(1);
aktifButton();
}
private void aktifButton() {
btntambah.setEnabled("".equals(this.Status));
btnsimpan.setEnabled(!"".equals(this.Status));
btnbatal.setEnabled(!"".equals(this.Status));
btnpilih.setEnabled(!"".equals(this.Status));
btncetak.setEnabled("".equals(this.Status) &&
!"".equals(this.NoPemesanan));
btntambah_item.setEnabled(!"".equals(this.Status) &&
!"".equals(tnm_obat.getText()));
tno_pemesanan.setEditable(false);
ttotal_pemesanan.setEditable(false);
72
ttgl_pemesanan.setEditable(false);
tnm_obat.setEditable(false);
tmerk.setEditable(false);
tsatuan.setEditable(false);
tjml_beli.setEditable(!"".equals(this.Status));
tharga.setEditable(!"".equals(this.Status));
tsupplier.setEnabled(!"".equals(this.Status));
tkd_obat.setEditable(!"".equals(this.Status));
tharga.setEditable(!"".equals(this.Status));
tjml_beli.setEditable(!"".equals(this.Status));
tab.setEnabledAt(0, !"".equals(this.Status));
tab.setEnabledAt(1, "".equals(this.Status));
}
private void hitungTotal() {
double total = 0;
for (int i = 0; i < model.getRowCount(); i++) {
total += (double) model.getValueAt(i, 6);
}
ttotal_pemesanan.setText(number.format(total));
}
private void bersihForm() {
tno_pemesanan.setText("");
73
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date dt = new java.util.Date();
ttgl_pemesanan.setText(df.format(dt));
tsupplier.setSelectedItem("");
tkd_obat.setText("");
tnm_obat.setText("");
tmerk.setText("");
tsatuan.setText("");
tharga.setText("");
ttotal_pemesanan.setText("");
}
private void bersihItem() {
tkd_obat.setText("");
tnm_obat.setText("");
tmerk.setText("");
tsatuan.setText("");
tharga.setText("");
tjml_beli.setText("");
}
private void tampilObat() {
74
tkd_obat.setText(obat.getKd_obat());
tnm_obat.setText(obat.getNm_obat());
tmerk.setText(obat.getJenis_obat());
tsatuan.setText(obat.getSatuan());
tharga.setText(number.format(obat.getHrg_obat()));
}
private void listSupplier() {
List<Supplier> ls = supplier.listSupplier();
ListIterator li = ls.listIterator();
combo_model.addElement("");
while (li.hasNext()) {
Supplier sp = new Supplier();
sp = (Supplier) li.next();
combo_model.addElement(sp.getKd_supplier() + "-" +
sp.getNm_supplier());
}
}
private void tambahItem() {
// TODO add your handling code here:
int i;
75
for (i = 0; i < model.getRowCount(); i++) {
String kode = model.getValueAt(i, 0).toString();
if (kode.equalsIgnoreCase(tkd_obat.getText())) {
model.getDataVector().removeElementAt(i);
break;
}
}
Object[] data = {
tkd_obat.getText().toUpperCase(),
tnm_obat.getText(),
tmerk.getText(),
tsatuan.getText(),
tharga.getText(),
tjml_beli.getText(),
Double.parseDouble(tjml_beli.getText()) *
Double.parseDouble(tharga.getText())
};
model.addRow(data);
bersihItem();
KdObat = "";
aktifButton();
tkd_obat.requestFocus();
76
}
private void listPemesanan() {
List<Pemesanan> lp = pemesanan.listPemesanan();
ListIterator li = lp.listIterator();
model_pemesanan.setRowCount(0);
model.getDataVector().removeAllElements();
tblpemesanan.repaint();
while (li.hasNext()) {
pemesanan = (Pemesanan) li.next();
supplier = supplier.cariSupplierKd(pemesanan.getKd_supplier());
Object[] data = {
pemesanan.getNo_pemesanan(),
pemesanan.getTgl_pemesanan(),
pemesanan.getKd_supplier(),
supplier.getNm_supplier(),
nf.format(pemesanan.getTotal_pemesanan())
};
model_pemesanan.addRow(data);
}
}
private void listPemesanan(Date tgl1, Date tgl2) {
77
List<Pemesanan> lp = pemesanan.cariPemesananPeriode(new
java.sql.Date(tgl1.getTime()), new java.sql.Date(tgl2.getTime()));
ListIterator li = lp.listIterator();
model_pemesanan.setRowCount(0);
model.getDataVector().removeAllElements();
tblpemesanan.repaint();
while (li.hasNext()) {
pemesanan = (Pemesanan) li.next();
supplier = supplier.cariSupplierKd(pemesanan.getKd_supplier());
Object[] data = {
pemesanan.getNo_pemesanan(),
pemesanan.getTgl_pemesanan(),
pemesanan.getKd_supplier(),
supplier.getNm_supplier(),
nf.format(pemesanan.getTotal_pemesanan())
};
model_pemesanan.addRow(data);
}
}
/**
* This method is called from within the constructor to initialize the form.
78
* 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() {
btntambah = new javax.swing.JButton();
btnsimpan = new javax.swing.JButton();
btnbatal = new javax.swing.JButton();
btntutup = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
tab = new javax.swing.JTabbedPane();
jPanel2 = new javax.swing.JPanel();
tmerk = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
tharga = new javax.swing.JTextField();
tsatuan = new javax.swing.JTextField();
tnm_obat = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
79
tjml_beli = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
tkd_obat = new javax.swing.JTextField();
tno_pemesanan = new javax.swing.JTextField();
btnpilih = new javax.swing.JButton();
jLabel10 = new javax.swing.JLabel();
ttotal_pemesanan = new javax.swing.JTextField();
jLabel14 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
ttgl_pemesanan = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
tsupplier = new javax.swing.JComboBox<>();
jScrollPane2 = new javax.swing.JScrollPane();
tbldetailbeli = new javax.swing.JTable();
btntambah_item = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
jLabel15 = new javax.swing.JLabel();
tgl1 = new com.toedter.calendar.JDateChooser();
tgl2 = new com.toedter.calendar.JDateChooser();
btncari = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
80
tblpemesanan = new javax.swing.JTable();
btncetak = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
btntambah.setFont(new java.awt.Font("Century Schoolbook", 0, 14)); //
NOI18N
btntambah.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/tambah.png"))); //
NOI18N
btntambah.setText("Tambah");
btntambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btntambahActionPerformed(evt);
}
});
btnsimpan.setFont(new java.awt.Font("Century Schoolbook", 0, 14)); //
NOI18N
btnsimpan.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/save.png"))); //
NOI18N
btnsimpan.setText("Simpan");
btnsimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnsimpanActionPerformed(evt);
81
}
});
bnbatal.setFont(new java.awt.Font("Century Schoolbook", 0, 14)); // NOI18N
btnbatal.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/batal.png"))); //
NOI18N
btnbatal.setText("Batal");
btnbatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnbatalActionPerformed(evt);
}
});
btntutup.setFont(new java.awt.Font("Century Schoolbook", 0, 14)); //
NOI18N
btntutup.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/keluar.png"))); //
NOI18N
btntutup.setText("Tutup");
btntutup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btntutupActionPerformed(evt);
}
});
82
jPanel1.setBackground(new java.awt.Color(69, 145, 109));
jPanel1.setPreferredSize(new java.awt.Dimension(329, 88));
jLabel1.setFont(new java.awt.Font("Century Schoolbook", 0, 36)); //
NOI18N
jLabel1.setForeground(new java.awt.Color(255, 255, 255));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Pemesanan Barang");
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
83
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jLabel1)
.addContainerGap(23, Short.MAX_VALUE))
);
tab.setTabPlacement(javax.swing.JTabbedPane.BOTTOM);
tab.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); // NOI18N
tmerk.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); // NOI18N
jLabel6.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel6.setText("Jenis Obat");
jLabel11.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel11.setText("Satuan");
tharga.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
tsatuan.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
84
tnm_obat.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel12.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel12.setText("Jumlah Pembelian");
jLabel3.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel3.setText("Kode Obat");
tjml_beli.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel5.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel5.setText("Harga");
jLabel4.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel4.setText("Nama Obat");
tkd_obat.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
tkd_obat.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tkd_obatKeyPressed(evt);
85
}
});
tno_pemesanan.setFont(new java.awt.Font("Century Schoolbook", 0, 15));
// NOI18N
btnpilih.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
btnpilih.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/cari.png"))); //
NOI18N
btnpilih.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnpilihActionPerformed(evt);
}
});
jLabel10.setFont(new java.awt.Font("Century Schoolbook", 1, 18)); //
NOI18N
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel10.setText("Tekan [Del] Untuk Hapus");
ttotal_pemesanan.setEditable(false);
ttotal_pemesanan.setFont(new java.awt.Font("Century Schoolbook", 1,
24)); // NOI18N
86
ttotal_pemesanan.setHorizontalAlignment(javax.swing.JTextField.TRAILING);
jLabel14.setFont(new java.awt.Font("Century Schoolbook", 1, 18)); //
NOI18N
jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
jLabel14.setText("Total Pemesanan");
jLabel7.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel7.setText("No Pemesanan");
ttgl_pemesanan.setFont(new java.awt.Font("Century Schoolbook", 0, 15));
// NOI18N
jLabel8.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel8.setText("Tanggal Pemesanan");
jLabel9.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
jLabel9.setText("Supplier");
tsupplier.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
tbldetailbeli.setFont(new java.awt.Font("Century Schoolbook", 0, 14)); //
NOI18N
87
tbldetailbeli.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Kode Obat", "Nama Obat", "Jenis Obat", "Satuan", "Harga",
"Jumlah Beli", "Subtotal"
}
) {
boolean[] canEdit = new boolean [] {
false, false, false, false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
tbldetailbeli.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tbldetailbeliMouseClicked(evt);
}
});
tbldetailbeli.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tbldetailbeliKeyPressed(evt);
88
}
});
jScrollPane2.setViewportView(tbldetailbeli);
btntambah_item.setFont(new java.awt.Font("Century Schoolbook", 0, 14));
// NOI18N
btntambah_item.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/add_item.png")));
// NOI18N
btntambah_item.setText("Tambah Item");
btntambah_item.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btntambah_itemActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
89
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jLabel9)
.addComponent(jLabel7)
.addComponent(jLabel8))
.addGap(30, 30, 30)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING, false)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(tno_pemesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 154,
javax.swing.GroupLayout.PREFERRED_SIZE)
90
.addComponent(ttgl_pemesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 170,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(764, 764, 764))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(tsupplier, 0,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(619, 619, 619))))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(3, 3, 3)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jLabel4)
.addComponent(jLabel6)
91
.addComponent(jLabel11)
.addComponent(jLabel3)
.addComponent(jLabel5))
.addGap(48, 48, 48))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addComponent(jLabel12)
.addGap(18, 18, 18)))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(tkd_obat,
javax.swing.GroupLayout.PREFERRED_SIZE, 154,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnpilih))
.addComponent(tsatuan,
javax.swing.GroupLayout.PREFERRED_SIZE, 124,
javax.swing.GroupLayout.PREFERRED_SIZE)
92
.addComponent(tnm_obat,
javax.swing.GroupLayout.PREFERRED_SIZE, 337,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tjml_beli,
javax.swing.GroupLayout.PREFERRED_SIZE, 76,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tharga,
javax.swing.GroupLayout.PREFERRED_SIZE, 161,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tmerk,
javax.swing.GroupLayout.PREFERRED_SIZE, 244,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(btntambah_item,
javax.swing.GroupLayout.PREFERRED_SIZE, 224,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(261, 261, 261)))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(69, 69, 69)
.addComponent(jLabel14)
93
.addGap(28, 28, 28)
.addComponent(ttotal_pemesanan))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jLabel10)
.addComponent(jScrollPane2))
.addGap(1, 1, 1)))
.addContainerGap())))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
94
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel14,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(tsupplier,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
95
.addComponent(jLabel9,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(37, 37, 37)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(tkd_obat,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnpilih,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tnm_obat,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
96
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tmerk,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tsatuan,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED
)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
97
.addComponent(jLabel6,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jLabel5,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tharga,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(9, 9, 9)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
98
.addComponent(jLabel12,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tjml_beli,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, Short.MAX_VALUE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(tno_pemesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
99
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.BASELINE)
.addComponent(ttgl_pemesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 370,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(btntambah_item,
javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(25, 25, 25)
100
.addComponent(ttotal_pemesanan,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGap(189, 189, 189))
);
tab.addTab("Input", jPanel2);
jLabel15.setFont(new java.awt.Font("Century Schoolbook", 1, 15)); //
NOI18N
jLabel15.setText("Tanggal Pemesanan");
tgl1.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); // NOI18N
tgl2.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); // NOI18N
btncari.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
btncari.setText("Cari");
btncari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncariActionPerformed(evt);
}
});
tblpemesanan.setFont(new java.awt.Font("Century Schoolbook", 0, 14)); //
NOI18N
tblpemesanan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
101
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null}
},
new String [] {
"No Pemesanan", "Tanggal Pemesanan", "Kode Supplier", "Nama
Supplier", "Total Pemesanan"
}
) {
boolean[] canEdit = new boolean [] {
false, false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
tblpemesanan.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tblpemesananMouseClicked(evt);
}
});
jScrollPane3.setViewportView(tblpemesanan);
102
btncetak.setFont(new java.awt.Font("Century Schoolbook", 0, 15)); //
NOI18N
btncetak.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/forms/image/cetak.png"))); //
NOI18N
btncetak.setText("Cetak");
btncetak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btncetakActionPerformed(evt);
}
})
javax.swing.GroupLayout jPanel3Layout = new
javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.TRAILING)
103
.addComponent(jScrollPane3,
javax.swing.GroupLayout.DEFAULT_SIZE, 1094, Short.MAX_VALUE)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(btncetak,
javax.swing.GroupLayout.PREFERRED_SIZE, 133,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(jLabel15)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel3Layout.createSequentialGroup()
.addComponent(tgl1,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tgl2,
javax.swing.GroupLayout.PREFERRED_SIZE, 165,
javax.swing.GroupLayout.PREFERRED_SIZE)))
104
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED
)
.addComponent(btncari,
javax.swing.GroupLayout.PREFERRED_SIZE, 93,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD
ING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap(
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel15,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED
)
105
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align
ment.LEADING)
.addComponent(btncari,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tgl1,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tgl2,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(btncetak,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane3,
javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
.addContainerGap())
);
tab.addTab("Data", jPanel3);
106
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
1139, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(btntambah)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnsimpan,
javax.swing.GroupLayout.PREFERRED_SIZE, 112,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnbatal,
javax.swing.GroupLayout.PREFERRED_SIZE, 115,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(74, 74, 74)
107
.addComponent(btntutup,
javax.swing.GroupLayout.PREFERRED_SIZE, 119,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(19, 19, 19))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(tab)
.addContainerGap())
);
layout.setVerticalGroup
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(tab, javax.swing.GroupLayout.PREFERRED_SIZE,
513, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
108
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA
SELINE)
.addComponent(btntambah,
javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnsimpan,
javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnbatal,
javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btntutup,
javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
pack();
}// </editor-fold>
private void tkd_obatKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
obat = obat.cariObatKd(tkd_obat.getText().trim());
109
if (obat.getNm_obat() == null) {
JOptionPane.showMessageDialog(rootPane, "Data obat yang Anda
cari tidak ada", "Error", JOptionPane.ERROR_MESSAGE);
bersihItem();
} else {
tampilObat();
tharga.requestFocus();
}
aktifButton();
}
}
private void btntambahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.Status = "Tambah";
NoPemesanan="";
bersihForm();
tno_pemesanan.setText(pemesanan.noPemesananAuto());
tab.setSelectedIndex(0);
aktifButton();
}
private void btnbatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
bersihForm();
110
model.setRowCount(0);
tbldetailbeli.repaint();
tab.setSelectedIndex(1);
NoPemesanan="";
Status = "";
aktifButton();
}
private void btntambah_itemActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
if ("".equals(tnm_obat.getText())
|| "".equals(tharga.getText())) {
JOptionPane.showMessageDialog(rootPane, "Mohon pilih dulu obat
yang di order", "Info", JOptionPane.WARNING_MESSAGE);
return;
}
if(!Utama.validasiInput(tharga.getText(), "[0-9]{3,8}$")){
JOptionPane.showMessageDialog(rootPane, "Harga harus berupa
angka", "Info", JOptionPane.WARNING_MESSAGE);
return;
}
if(!Utama.validasiInput(tjml_beli.getText(), "[0-9]{1,5}$")){
111
JOptionPane.showMessageDialog(rootPane, "Jumlah beli harus berupa
angka", "Info", JOptionPane.WARNING_MESSAGE);
return;
}
tambahItem();
hitungTotal();
}
private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if ("".equals(tsupplier.getSelectedItem().toString().trim())) {
JOptionPane.showMessageDialog(rootPane, "Pilih dahulu [Supplier]",
"Galat", JOptionPane.ERROR_MESSAGE);
return;
}
if (model.getRowCount() == 0) {
JOptionPane.showMessageDialog(rootPane, "Belum ada obat yang
dipilih", "Galat", JOptionPane.ERROR_MESSAGE);
return;
}
pemesanan.setNo_pemesanan(tno_pemesanan.getText());
java.sql.Date sdate = new java.sql.Date(new java.util.Date().getTime());
112
pemesanan.setTgl_pemesanan(sdate);
pemesanan.setId_pengguna(Utama.id_pengguna);
pemesanan.setKd_supplier(tsupplier.getSelectedItem().toString().substring(0,
5));
pemesanan.setStatus_tagih(0);
pemesanan.setTotal_pemesanan(Double.parseDouble(ttotal_pemesanan.getText(
)));\
pemesanan.PemesananTambah()
System.out.println(pemesanan.getPesan_error());
for (int i = 0; i < model.getRowCount(); i++) {
String kode = (String) model.getValueAt(i, 0);
double harga = Double.parseDouble(model.getValueAt(i, 4).toString());
int jml = Integer.parseInt(model.getValueAt(i, 5).toString());
pemesananDetail.setNo_pemesanan(tno_pemesanan.getText());
pemesananDetail.setKd_obat(kode);
pemesananDetail.setHrg_obat(harga);
pemesananDetail.setJml_beli(jml);
pemesananDetail.PemesananDetailTambah();
bersihForm();
model.getDataVector().removeAllElements();
tbldetailbeli.repaint();
113
Status = "";
KdObat = "";
NoPemesanan="";
listPemesanan();
tab.setSelectedIndex(1);
JOptionPane.showMessageDialog(rootPane, "Pemesanan berhasil dibuat",
"Info", JOptionPane.INFORMATION_MESSAGE);
aktifButton();
}
private void tbldetailbeliMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try {
int row = tbldetailbeli.getSelectedRow();
KdObat = (String) model.getValueAt(row, 0);
} catch (Exception e) {
}
}
private void tbldetailbeliKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_DELETE) {
int row = tbldetailbeli.getSelectedRow();
114
model.removeRow(row);
tbldetailbeli.repaint();
hitungTotal();
}
}
private void btntutupActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}
private void btnpilihActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Utama.kd_obat = null;
new FormCariObat(this, true).setVisible(true);
if (Utama.kd_obat != null) {
obat = obat.cariObatKd(Utama.kd_obat);
tampilObat();
} else {
bersihItem();
}
aktifButton();
}
private void btncariActionPerformed(java.awt.event.ActionEvent evt) {
115
// TODO add your handling code here:
if (tgl1.getDate() == null || tgl2.getDate() == null) {
listPemesanan();
} else {
listPemesanan(tgl1.getDate(), tgl2.getDate());
}
}
private void tblpemesananMouseClicked(java.awt.event.MouseEvent evt) {
int row = tblpemesanan.getSelectedRow();
this.NoPemesanan = model_pemesanan.getValueAt(row, 0).toString();
aktifButton();
}
private void btncetakActionPerformed(java.awt.event.ActionEvent evt) {
JDialog reportViwer = new JDialog(this, true);
try {
String FileRaport = "src/forms/Nota.jasper";
HashMap parameter = new HashMap();
parameter.put("NoPemesanan", this.NoPemesanan);
File file = new File(FileRaport);
116
JasperReport jr = (JasperReport) JRLoader.loadObject(file);
JasperPrint jrp = JasperFillManager.fillReport(jr, parameter,
pemesanan.getKoneksi());
JasperViewer viewer = new JasperViewer(jrp, false);
reportViwer.setContentPane(viewer.getContentPane());
reportViwer.setSize(viewer.getSize());
reportViwer.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
reportViwer.setTitle("Nota");
reportViwer.setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
}
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
117
//<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 ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(FormPemesanan.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormPemesanan.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
118
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FormPemesanan.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormPemesanan.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
119
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormPemesanan().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnbatal;
private javax.swing.JButton btncari;
private javax.swing.JButton btncetak;
private javax.swing.JButton btnpilih;
private javax.swing.JButton btnsimpan;
private javax.swing.JButton btntambah;
private javax.swing.JButton btntambah_item;
private javax.swing.JButton btntutup;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
120
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
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 jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTabbedPane tab;
private javax.swing.JTable tbldetailbeli;
private javax.swing.JTable tblpemesanan;
private com.toedter.calendar.JDateChooser tgl1;
private com.toedter.calendar.JDateChooser tgl2;
private javax.swing.JTextField tharga;
private javax.swing.JTextField tjml_beli;
private javax.swing.JTextField tkd_obat;
121
private javax.swing.JTextField tmerk;
private javax.swing.JTextField tnm_obat;
private javax.swing.JTextField tno_pemesanan;
private javax.swing.JTextField tsatuan;
private javax.swing.JComboBox<String> tsupplier;
private javax.swing.JTextField ttgl_pemesanan;
private javax.swing.JTextField ttotal_pemesanan;
// End of variables declaration
}
122
3.5.2 BlackBox Testing
Tabel III.19
Hasil Pengujian Blackbox Testing Form Login Admin
No Skenario
Pengujian
Test Case Hasil yang
diharapkan
Hasil
pengujian
Kesimpulan
1 Id pengguna dan
Password tidak di isi
lalu klik Login
Id Ppengguna:
(Kosong)
Password:
(Kosong)
Id pengguna dan
password tidak
boleh kosong
Tidak sesuai
harapan
Tidak valid
2 Id Pengguna di isi
dan password tidak
di isi lalu klik Login
Id Pengguna:
(danafarma)
Password:
(kosong)
Id pengguna dan
password tidak
boleh kosong
Tidak sesuai
harapan
Tidak valid
3 Id Pengguna tidak di
isi dan password di
isi lalu klik Login
Id Pengguna:
(kosong)
Password:
(adm2019)
Id pengguna dan
password tidak
boleh kosong
Tidak sesuai
harapan
Tidak valid
4 Id Pengguna di isi
(salah)dan password
di isi (salah) lalu
klik Login
Id Pengguna:
(danafarma2019
)
Password:
(admin)
Id pengguna dan
Password keliru
Tidak sesuai
harapan
Tidak valid
5 Id Pengguna di isi
dan password di isi
lalu klik Login
Id Pengguna:
(danafarma)
Password:
(adm2019)
Berhasil Login Sesuai
Harapan
Valid
3.5.3 Spesifikasi Hardware dan Software
Kemampuan suatu sistem yang optimal dapat menghasilkan sistem yang baik,
salah satu yang di perlukan untuk memperoleh suatu sistem yang baik adalah perangkat
keras (hardware) dan perangkat lunak (software). Dua perangkat tersebut saling
berkaitan dalam beroperasinya suatu sistem di dalam komputer, kedua perangkat
tersebut tentu saja tidak dapat dipisahkan dan sangat berperan penting untuk
mengoptimalkan suatu sistem.
1. Perangkat Keras (Hardware)
Perangkat keras atau hardware adalah komponen pada komputer yang dapat dilihat
dan disentuh secara fisik, yang berfungsi untuk mendukung proses komputerisasi.
123
Penulis mengusulkan menggunakan perangkat keras yang standar dan tidak mahal serta
di sesuaikan dengan kebutuhan program aplikasi yang akan dirancang. Spesifikasi
perangkat keras yang diusukan sebagai berikut:
a. Monitor : 18 “
b. Proccessor : Core2 Duo / Intel(R) Celeron(R) CPU N2810 @ 2.00 GHz
c. Memory : 2GB (Minimum)
d. Harddisk : 100 GB
e. Keyboard : 102 Keys2
f. Printer : EPSON Printer LX.310
g. Mouse : Standar Mouse
2. Perangkat Lunak (Software)
Perangkat lunak atau software adalah program komputer yang terasosiasi
dengan dokumentasi perangkat lunak seperti dokumentasi kebutuhan, model desain,
dan cara penggunaan (user manual). Perangkat lunak atau software bisa juga
diartikan sebagai kumpulan komponen yang saling terkait dan mempunyai satu
tujuan.
Perangkat lunak yang dibutuhkan untuk menjalankan program rancang
bangun sistem pembelian kredit ini adalah:
a. Sistem Operasi : Windows 7 or Higher.
b. Bahasa Pemrograman : Java Netbeans.
c. Program atau Software pendukung : Xampp, Mysql, Phpmyadmin.
Recommended