BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan 3.1.1 ......Dan bagian Purchasing akan memesan barang...
Transcript of BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan 3.1.1 ......Dan bagian Purchasing akan memesan barang...
30
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Dalam tinjauan perusahaan ini berisi sejarah perusahaan, struktur organisasi serta
tugas dan fungsi dari masing-masing bagian yang ada dalam perusahaan.
3.1.1. Sejarah Perusahaan
PT. Nutech Pundi Arta bergerak dibidang jasa Cutting, Assembly Cutting, Mandrel
dan sebagainya. Perusahaan didirikan oleh Bp. Harun Abdul Munir pada tanggal 14
januari 2004 yang berletak di Jl. H. Junaidi No. 91, Kemanggisan Pulo, Jakarta Barat.
Pada tanggal 1 Maret 2014 PT. Nutech Pundi Arta membuka cabang di Purwakarta
yang menjadi pusat produksi. Sedangkan cabang perusahaan di Purwakarta beralamat
di Kamp. KarangMulya, Desa Cikopo, Kec. BungurSari, Purwakarta. PT. Nutech
Pundi Arta kurang lebih memiliki karyawan / karyawati 150 orang. PT. Nutech Pundi
Arta memiliki beberapa departemen. Salah satu dari departemen yang akan di
fokuskan pada kajian riset ini adalah workshop. Workshop menjadi tempat produksi
untuk mandrel dan dies (pisau) baik itu untuk Costumer atau kebutuhan Dies di
internal. Ada perlengkapan dasar yang harus dimiliki di workshop. Diantaranya Mesin
Bubut, Welding, Gerinda, Bor, Miling, Plate Cutting dan tentunya operator yang
memiliki skill untuk mengoperasikannya. Workshop memproduksi mandrel dan Dies
(Pisau) untuk setiap custumer dibidang manufaktur. Seperti proses pada umumnya,
costumer akan melakukan pemesanan barang mandrel atau dies yang memiliki
beberapa tipe atau item yang berbeda. Setiap customer yang memesan mandrel atau
31
dies akan mengirimkan drawing atau jig mandrel untuk setiap part name atau itemnya
pada admin gudang bagian workshop. Lalu, akan dilakukan perhitungan untuk
penawaran dies atau mandrel. Setelahnya admin gudang workshop memeriksa
kebutuhan material yang diperlukan. Melakukan permintaan barang atau material
kepada Purchasing setelah PO dikeluarkan. Dan bagian Purchasing akan memesan
barang atau material kepada Supplier sesuai dengan permintaan dari pihak gudang
melalui BPB (Bukti Permintaan Barang).
3.1.2. Struktur Organisasi Perusahaan dan Fungsi
Sumber: Company Profile PT. Nutech Pundi Arta
Gambar III.1. Struktur Organisasi yang dimiliki PT. NPA
Bp. Kurniawan Achadi
Manager Produksi
PT. NPA
Bp. Asep S.
Manager Workshop
PT. NPA
Amirsyah
SuperVisor Workshop
Bp. Harun Abdul Munir
Direktur PT. NPA
Khoer
Leader Workdshop Desi
Admin Gudang
Workshop
Operator Produksi
Erryk
Marketing
Wawan
Purchasing
Efa Huzaifah
Accounting
32
Untuk melengkapi struktur organisasi suatu perusahaan, diperlukan uraian tugas
yang akan menjelaskan tentang wewenang dan tanggung jawab masing-masing fungsi
dalam perusahaan. Uraian jabatan pada PT. Nutech Pundi Arta adalah sebagai berikut:
1. Direktur
Tugasnya yaitu sebagai pemimpin dan pemilik perusahaan.
2. Manager Produksi
a. Membuat perencanaan dan jadwal proses produksi
b. Mengawasi proses produksi agar kualitas, kuantitas dan waktunya sesuai dengan
perencanaan yang sudah dibuat
c. Bertanggung jawab mengatur manajemen gudang agar tidak terjadi kelebihan
atau kekurangan persediaan bahan baku, bahan penolong maupuan produk yang
sudah jadi di gudang
d. Bertanggung jawab mengatur manajemen alat agar fasilitas produksi berfungsi
sebagaimana mestinya dan beroperasi dengan lancar
e. Membuat laporan secara berkala mengenai kegiatan di bagiannya
f. Bertanggung jawab pada peningkatan ketrampilan dan keahlian karyawan yang
berada di bawah tanggung jawabnya
g. Memberikan penilaian dan sanksi jika karyawan di bawah tanggung jawabnya
melakukan kesalahan dan pelanggaran
h. Berinovasi dalam pengerjaan produksi dan memberikan masukan pada
perusahaan yang berkaitan dengan bagian produksi
3. Manajer Workshop
Tugas seorang yang menjabat sebagai manager sebenarnya adalah penyatuan yakni
bagaimana mengintegrasikan berbagai macam variabel (karakteristik, budaya,
33
pendidikan dan lain sebagainya) kedalam suatu tujuan organisasi yang sama dengan
cara melakukan mekanisme penyesuaian.
4. Accounting
Bertanggung jawab atas laporan aktivitas keuangan secara tertulis selain itu pada
jabatan ini dituntut untuk mengerti masalah perpajakan yang berlaku di negara
Indonesia karena laporan perpajakan perusahaan dibuat oleh Accounting staff.
5. Purchasing
Bertanggung jawab atas pemesanan barang atau keperluan perusahaan baik dalam
kantor maupun luar kantor.
6. SuperVisor
Supervisor harus bertanggung jawab dalam memastikan semua pekerjaan
dilaksanakan dengan baik sehingga semua proses produksi berjalan lancar seperti
monitoring produksi, pengawasah anak buah, melakukan instruksi kerja,
bertanggung jawab keamanan, keselamatan atau kesehatan yang terancam. Ia harus
mampu menjalin kerja sama dengan atasan perusahaan atau dengan bawahannya
agar tidak terjadi konflik.
7. Leader
Tanggung jawab team Leader sangat bervariasi, tetapi biasanya mencakup beberapa
tanggung jawab untuk membangun tim dan memastikan kerja sama tim.
8. Admin Gudang
Bertanggung jawab terhadap pengelolaan barang di gudang, memastikan stock
barang tersedia digudang sesuai kebutuhan operasional perusahaan, memberikan
informasi terhadap stock up to date barang per hari ke bagian yang membutuhkan,
memberikan informasi terhadap stock up to date barang per hari ke bagian yang
membutuhkan, Menerima barang datang untuk stock barang di gudang dan
34
mengelompokkannya sesuai item atau klasifikasi barang, menyediakan barang yang
akan digunakan, sesuai dengan Surat Perintah Kerja (SPK), membuat laporan akhir
bulan (Inventory Report), membuat surat jalan untuk setiap pengiriman projek yang
ada di workshop, mencatat dan mendata setiap pengiriman barang.
9. Operator Produksi
Dasar kualitas Sumber Daya Manusia (SDM) bagian produksi perusahaan yang telah
melewati pelatian khusus yang tentunya sangat berbeda dengan pelatihan pekerja
pabrik pada umumnya. Hal ini dilaksakan berdasarkan standar prosedur perusahaan
Melaksanakan proses produksi dengan prosedur berdasarkan target kualitas
perusahaan, mengoperasikan mesin, mengolah dan mengontrol proses produksi.
Melaksanakan, mengatur serta mengontrol dari bahan dasar "baku" menjadi bahan
jadi proses produksi dengan target bedasarkan prosedur perusahaan Mengutamakan
disiplin kerja, keselamatan kerja, keamanan berstandarkan prosedur perusahaan dan
kesehatan yang menjadikan hal yang diutamakan dalam cacatan perusahaan.
35
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Prosedur sistem berjalan pembelian secara kredit pada PT. Nutech Pundi Arta
adalah sebagai berikut :
1. Setiap ada pemesanan mandrel, pneumatic dan dies dari costumer melalui email
pada bagian marketing, lalu bagian marketing membuat penawaran harga. Setelah
itu, marketing memberikan informasi mengenai projek mandrel, pneumatic dan
dies berupa pola, drawing atau jig kepada manajer workshop. Manajer workshop
setelah menerima projek tersebut akan memberikannya kepada Supervisor
workshop yang akan melakukan analisa projek tersebut serta menganalisa
kebutuhan material.
2. Setelah Supervisor melakukan analisa, selajutnya akan membuat catatan dan
menyerahkan catatan tersebut kepada bagian admin gudang workshop dan meminta
admin untuk memenuhi kebutuhan material sesuai dengan catatan yang diberikan.
3. Bagian admin gudang workshop mengecek material. Jika ada material walaupun
sebagian maka akan memberikan informasi secara langsuung kepada Supervisor
dimana Supervisor akan memerintah kepada leader untuk mengerjakan projek. Jika
kurang material atau tidak ada material, maka admin gudang akan membuat BPB
(bukti permintaan barang). Admin gudang memberikan BPB tersebut kepada
Purchasing.
4. Purchasing melakukan pemesanan kepada supplier melalui pesan WhatsApp.
Umumnya membutuhkan waktu satu atau dua hari material akan datang. Namun
jika Supplier tidak memiliki barang, maka purchasing akan menegosiasikan
36
material kepada Supervisor. Sedangkan material yang dikirim akan diterima oleh
admin gudang. Admin gudang akan menerima surat jalan rangkap dari supplier.
Surat jalan 2 rangkap berwarna putih dan merah dikembalikan kepada supplier
sedangkan surat jalan 2 rangkap berwarna kuning dan hijau untuk admin dan
purchasing. Admin gudang mendapat fotocopy berwarna hijau sedangkan fotocopy
surat jalan berwarna kuning diberikan kepada Purchasing.
5. Purchasing akan membuat data laporan pembelian barang beserta lampiran PO.
Mengirimkan PO kepada Accounting dan juga Supplier. Sedangkan PO untuk
supplier adalah sebagai bukti untuk mencocokkan barang yang diminta. Sedangkan
untuk Accounting sebagai data untuk menyesuaikan laporan pembelian dan Faktur.
37
3.2.2. Activity Diagram
1. Activity diagram marketing menerima PO dan projek
Gambar III.2.Gambar Activity Diagram Marketing menerima PO
38
2. Acivity diagram Admin gudang workshop membuat BPB
Gambar III.3. Gambar Activity Diagram Admin gudang membuat BPB
39
3. Activity diagram Purchasing melakukan pemesanan barang/material
Gambar III.4. Gambar Activity diagram pemesanan barang
40
4. Activity diagram Admin gudang workshop menerima material
Gambar III.5. activity diagram admin gudang menerima material
41
5. Activity diagram Purchasing membuat laporan pembelian
Gambar III.6. Activity Diagram purchasing membuat laporan pembelian
42
3.2.3. Dokumen Masukan
Bentuk dokumen masukkan (input) yang dibutuhkan dalam spesifikasi sistem
informasi akuntansi berjalan adalah :
1. Nama Dokumen : Purchase Order (PO)
Fungsi Dokumen : Sebagai bukti pemesanan barang dari Customer
Sumber : Marketing
Tujuan : Purchasing
Frekuensi : Setiap akan mengajukan permintaan barang
Media : Email (PDF)
Jumlah : Satu lembar
Lampiran : A.1
2. Nama Dokumen : Bukti Permintaan Barang (BPB)
Fungsi Dokumen : Untuk mengajukan permintaan pembelian barang
Sumber : Admin Gudang Workshop
Tujuan : Purchasing
Frekuensi : Setiap akan mengajukan permintaan barang
Media : Kertas
Jumlah : Tiga lembar
Lampiran : A.2
43
3.2.4. Dokumen Keluaran
Bentuk dokumen keluaran (output) yang dibutuhkan dalam spesifikasi
sistem akuntansi berjalan adalah:
1. Nama Dokumen : Data Pesanan
Fungsi Dokumen : Untuk mengajukan permintaan material
Sumber : Purchasing
Tujuan : Supplier
Frekuensi : Setiap akan mengirim barang
Media : Kertas
Jumlah : Tiga lembar
Lampiran : A.3
2. Nama Dokumen : Surat Jalan
Fungsi Dokumen : Sebagai bukti mengirim material
Sumber : Supplier
Tujuan : Admin Gudang
Frekuensi : Sebagai bukti menerima barang dari supplier
Media : Kertas
Jumlah : Empat lembar
Lampiran : A.4
44
4. Nama Dokumen : Laporan pembelian
Fungsi Dokumen : Sebagai bukti pembelian barang/material
Sumber : Purchasing
Tujuan : Accounting
Frekuensi : Setiap seminggu sekali
Media : Kertas
Jumlah : Dua Lembar
Lampiran : A.5
3.2.5. Permasalahan Pokok
Proses yang belum terkomputerisasi atas pembelian secara kredit yang
dilakukan oleh purchasing kepada supplier sering terjadi salah komunikasi dan
kurang sesuainya permintaan barang dengan barang yang diterima. Sehingga
menghambat proses produksi yang akan berimbas pada keterlambatan target yang
telah ditentukan. Setelah mengamati, penulis sering mendapati kesalahan barang
yang datang, menjadi masalah yang cukup serius. Tentu hal ini tidak bisa
diremehkan kan membutuhkan solusi yang serius dalam menanggapi masalah
tersebut.
45
3.2.6. Pemecahan Masalah
Sistem yang terkompterisasi akan sangat membantu pekerjaan dari purchasing
itu sendiri dalam melakukan pekerjaannya. Akan mempermudah dalam pendataan
dan melakukan pemesanan barang atau material sehingga tidak merugikan satu
sama lain serta mempermudah dalam mengelola laporan pembelian barang.
Maka dari itu, penulis mengusulkan beberapa aternatif masalah dari masalah
yang dihadapi, antara lain:
1. Membuat sebuah rancangan aplikasi pembelian kredit pada purchasing,
dimana akan mempermudah pencatatan pembelian setiap barang atau material.
2. Aplikasi yang dibuat harus terdatabase agar data lebih rapih dan tidak
tergabung menjadi satu dengan data yang lain.
3. Aplikasi yang dapat mengelola laporan pembelian barang.
3.3. Analisis Kebutuhan Software
3.3.1. Analisa Kebutuhan
1. Halaman Bagian Purchasing
A.1. Purchasing melakukan login
A.2. Purchasing mengelola Data Purchase Order (PO)
A.3. Purchasing mengelola Data Supplier
A.4. Purchasing mengelola Data Costumer
A.5. Purchasing mengelola Data Pesanan (Order Data)
A.6. Purchasing mengelola Jurnal Pembelian (Purchase Journal)
A.7. Purchasing mengelola Laporan Pembelian (Purchase Report)
46
3.3.2. Use Case Diagram
1. Use Case Purchasing melakukan Login
Gambar III.6. Purchasing melakukan Login
Tabel III.1. Deskripsi Use Case login Admin
Use Case Narrative Purchasing Login
Tujuan Melakukan Login
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan Login dan masuk
kehalaman menu utama
Skenario Utama
Aktor Admin
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop Pembelian
Aktsi Aktor Reaksi Sistem
47
1. Aktor memilih Login Sistem akan menampilkan Menu Utama
ssetelah aktor memasukkan Username
dan Password
2. Aktor memilih Cancel Sistem akan menampilkan Menu Login
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
2. Use Case Purchasing mengelola Data Purchase Order (PO)
Gambar III.7.Gambar Use Case Purchasing mengelola Data Purchase Order
Tabel III.2. Deskripsi Purchasing mengelola Data Purchase Order (PO)
Use Case Narrative Purchase Order
Tujuan Mengelola Data PO yang diterima
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan menambah, mengubah,
menyimpan, membatalkan Data PO.
48
Serta dapat keluar dari aplikasi secara
langsung
Skenario Utama
Aktor Purchasing
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop
Aktsi Aktor Reaksi Sistem
3. Aktor memilih Login Sistem akan menampilkan Menu Utama
setelah aktor memasukkan Username
dan Password
4. Aktor memilih Data PO Sistem akan menampilkan Form PO
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
3. Use Case Diagram Purchasing mengelola Data Supplier
Gambar. III.8. Gambar Use Case Purchasing mengelola Data Supplier
Tabel III.3. Deskripsi Purchasing mengelola Data Costumer dan Supplier
49
Use Case Narrative Data Supplier
Tujuan Mengelola Data Supplier
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan menambah, mengubah,
menyimpan, membatalkan Data
Supplier. Serta dapat keluar dari form
tersebut
Skenario Utama
Aktor Purchasing
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop
Aktsi Aktor Reaksi Sistem
5. Aktor memilih Login Sistem akan menampilkan Menu Utama
ssetelah aktor memasukkan Username
dan Password
6. Aktor memilih Data Supplier Sistem akan menampilkan Form Data
Supplier
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
50
4. Use Case Diagram mengelola Data Costumer
Gambar III.8. Gambar Use Case Diagram mengelola Data Costumer
TABEL III.4. Purchasing mengelola Data Costumer
Use Case Narrative Customer
Tujuan Mengelola Data Costumer
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan menambah, mengubah,
menyimpan, membatalkan Data
Supplier. Serta dapat keluar dari form
tersebut
Skenario Utama
Aktor Purchasing
51
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop
Aktsi Aktor Reaksi Sistem
7. Aktor memilih Login Sistem akan menampilkan Menu Utama
ssetelah aktor memasukkan Username
dan Password
8. Aktor memilih Data Supplier Sistem akan menampilkan Form Data
Customer
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
5. Use Case Diagram mengelola Data Pesanan
Gambar III.9. Gambar Use Case Diagram mengelola Data Pesanan
Tabel III.5. Deskripsi Purchasing mengelola Data Pesanan
52
Use Case Narrative Pesanan
Tujuan Mengelola Data Pesanan
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan menambah, mengubah,
menyimpan, membatalkan Form Jurnal
Pembelian. Serta dapat keluar dari
Form tersebut
Skenario Utama
Aktor Purchasing
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop
Aktsi Aktor Reaksi Sistem
9. Aktor memilih Login Sistem akan menampilkan Menu Utama
ssetelah aktor memasukkan Username
dan Password
10. Aktor memilih Data Jurnal
Pembelian
Sistem akan menampilkan Form Data
Pemesanan
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
53
6. Use Case Diagram mengelola Jurnal Pembelian
Gambar III.10. Gambar Use Case Diagram mengelola Jurnal Pembelian
Tabel III.6. Deskripsi Purchasing mengelola Jurnal Pembelian
Use Case Narrative Jurnal Pembelian
Tujuan Mengelola Data Jurnal Pembelian
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan menambah, mengubah,
menyimpan, membatalkan Form Jurnal
Pembelian. Serta dapat keluar dari
aplikasi secara langsung
Skenario Utama
Aktor Purchasing
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop
54
Aktsi Aktor Reaksi Sistem
11. Aktor memilih Login Sistem akan menampilkan Menu Utama
ssetelah aktor memasukkan Username
dan Password
12. Aktor memilih Data Jurnal
Pembelian
Sistem akan menampilkan Form Jurnal
Pembelian
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
7. Use Case Diagram Purchasing mengelola Laporan Pembelian
Gambar III.11. Use Case Diagram Purchasing mengelola Laporan Pembelian
55
Tabel. III.5. Deskripsi Purchasing mengelola Laporan Pembelian
Use Case Narrative Laporan Pembelian
Tujuan Mengelola Data Laporan Pembelian
Deskripsi Sistem ini memungkinkan aktor untuk
melakukan menambah, mengubah,
menyimpan, membatalkan Data
Laporan Pembelian. Serta dapat keluar
dari aplikasi secara langsung
Skenario Utama
Aktor Purchasing
Kondisi Awal Aktor membuka aplikasi Java Berbasis
Desktop
Aktsi Aktor Reaksi Sistem
13. Aktor memilih Login Sistem akan menampilkan Menu Utama
ssetelah aktor memasukkan Username
dan Password
14. Aktor memilih Data Jurnal
Pembelian
Sistem akan menampilkan Form
Laporan Pembelian
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan seperti permintaan
56
3.3.3. Activity Diagram
1. Activity Diagram Menu Login Purchasing
Gambar III.12. Activity Diagram Data Login
57
2. Activity Diagram Data Purchase Order Purchasing
Gambar III.13. Activity Diagram Data PO
58
3. Activity Diagram Data Supplier
Gambar III.14. Activity Diagram Data
59
4. Activity Diagram Data Costumer
Gambar III.15. Activity Diagram Data Costumer
60
5. Activity Diagram Data Pesanan
Gambar III.16. Activity Diagram Data Pesanan
61
6. Activity Diagram Jurnal Pembelian
Gambar III.17. Activity Diagram Jurnal Pembelian
62
7. Activity Diagram Laporan Pembelian
Gambar III.18. Activity Diagram Laporan Pembelian
63
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.19. Gambar Entity Relationship Diagram (ERD)
64
3.4.2. Logical Record Structure (LRS)
Gambar III.20. Gambar Entity Relationship Diagram
65
3.4.3. Spesifikasi File
a. Spesifikasi File Data Admin/user
Nama Database : Db_pembelian
Nama File : Tb_admin
Tipe File :
Panjang Record : 90
Field Key : id_user
Tabel III.8.
Spesifikasi File data admin
No Elemen Data Akronim Tipe Panjang Keterangan
1 Identitas admin Id_user Varchar 20 Primery Key
2 Username Username Varchar 25
3 Password Password Varchar 25
4 Hak hak Varchar 20
b. Spesifikasi File Data Supplier
Nama Database : Db_pembelian
Nama File : Tb_supplier
Tipe File : Master Data
Panjang Record : 212
Field Key : id_supplier
Tabel III.9.
66
Spesifikasi File Data Supplier
No Elemen Data Akronim Tipe Panjang Keterangan
1 Identitas Supplier Id_suplier Varchar 100 Primery Key
2 Nama Supplier Nama Varchar 100 Foreign Key
3 Alamat Alamat text
4 No Telepon telepon Varchar 12
c. Spesifikasi File Data Customer
Nama Database : Db_pembelian
Nama File : Tb_customer
Tipe File : Master Data
Panjang Record : 70
Field Key : id_customer
Tabel III.10.
Spesifikasi File Data Customer
No Elemen Data Akronim Tipe Panjang Keterangan
1 Identitas Customer Id_customer Varchar 20 Primery Key
2 Nama Customer Nama Varchar 50 Foreign Key
3 Alamat Alamat text
d. Spesifikasi File Data Purchase Order (PO)
Nama Database : Db_pembelian
67
Nama File : Tb_po
Tipe File : Transaksi
Panjang Record : 195
Field Key : no_po
Tabel III.11.
Spesifikasi File Data Purchase Order
No Elemen Data Akronim Tipe Panjang Keterangan
1 Identitas Customer Id_customer Varchar 20 Primery Key
2 Nama Customer Nama Varchar 50 Foreign Key
3 Alamat Alamat text
e. Spesifikasi File Data pemesanan
Nama Database : Db_pembelian
Nama File : Tb_pemesanan
Tipe File : Transaksi
Panjang Record : 245
Field Key : no_faktur
Tabel III.12.
Spesiifikasi File Data Pemesanan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Nomor faktur No_faktur Varchar 50 Primery Key
2 Supplier Supplier Varchar 50 Foreign Key
3 Tanggal Pemesanan tgl date
4 Nama barang Nama_barang Varchar 100 Foreign Key
68
5 Banyak nya barang Qty Int 20
6 Satuan barang satuan Varchar 25
7 Keterangan Keterangan text
3.4.4. Sequence Diagram
Gambar III.21. Sequence Diagram pembelian
69
3.4.5. Deployment Diagram
Gambar III.22. Deployment Diagram
70
3.4.6. User Interface
1. Halaman Login
Gambar III.23. Halaman Login Purchasing
2. Halaman Menu Utama (Main Menu)
Gambar III.24. Halaman Menu Utama
71
3. Halaman Data Purchase Order
Gambar III.25. Halaman Form Purchase Order
4. Halaman Data Supplier
Gambar III.26. Halaman Form Supplier
72
5. Halaman Data Costumer
Gambar III.27. Halaman Form Supplier
6. Halaman Jurnal Pembelian
Gambar III.28. Halaman Form Jurnal Pembelian
73
7. Halaman Laporan Pembelian
Gambar III. 29. Halaman Form Laporan Pembelian
74
3.5. Implementasi
3.5.1. Code Generation
package Form;
import Class.sysKoneksi;
import java.awt.Dimension;
import java.awt.Toolkit;
import Class.sysKoneksi;
import Class.koneksiDB;
import Class.koneksis;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
75
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
/**
*
* @author Ogatz
*/
public class Pemesanan extends javax.swing.JFrame {
Connection conn;
Statement stat;
ResultSet hasil;
public static String namauser;
private koneksiDB db = new koneksiDB();
String driver,database, user,pass,userlogin;
String tanggallahir;
private Dimension dimensi = Toolkit.getDefaultToolkit().getScreenSize();
76
private DefaultTableModel _tabel;
Connection _Cnn;
sysKoneksi getCnn = new sysKoneksi();
String _User;
// Deklarasi Komponen = Sesuaikan dengan nm_klien field pada tabel database
String faktur,supplier,tanggal,nama_barang,qty, satuan, ket;
/**
* Creates new form frProfil
*/
public Pemesanan() {
initComponents();
tNama3.setText(frLogin.namauser);
dataFromDataBaseToComboBox2();
tampil_combo();
koneksi();
datatabel();
77
form_awal();
this.setExtendedState(this.getExtendedState() | this.MAXIMIZED_BOTH);
}
public void HapusTabel(){
int row = _tabel.getRowCount();
for (int i = 0;i < row;i++){
_tabel.removeRow(0);
}
}
public void koneksi(){
}
private void LoadData(){
78
String[] kolom = {"No Faktur","Nama Barang","Qty","Satuan","Keterangan"};
_tabel = new DefaultTableModel(null,kolom){
Class[] types = new Class [] {
java.lang.String.class,
java.lang.String.class,
java.lang.String.class,
java.lang.String.class,
java.lang.String.class,
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
// Agar table tidak bisa diedit
public boolean isCellEditable(int row, int col) {
int cola = _tabel.getColumnCount();
return (col < cola) ? false : true;
79
}
};
tbTabel.setModel(_tabel);
try{
_Cnn = null;
sysKoneksi getCnn = new sysKoneksi();
_Cnn = getCnn.getConnection();
//HapusTabel();
String sql = ""+" SELECT * from tb_pemesanan";
Statement stat = _Cnn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){
String faktur = res.getString(1);
String nama_barang = res.getString(4);
String qty = res.getString(5);
String satuan = res.getString(6);
String ket = res.getString(7);
80
Object[] data = {faktur,nama_barang,qty,satuan,ket};
_tabel.addRow(data);
}
tbTabel.getColumnModel().getColumn(0).setPreferredWidth(100);
tbTabel.getColumnModel().getColumn(1).setPreferredWidth(100);
tbTabel.getColumnModel().getColumn(2).setPreferredWidth(100);
tbTabel.getColumnModel().getColumn(3).setPreferredWidth(100);
tbTabel.getColumnModel().getColumn(4).setPreferredWidth(100);
} catch(Exception ex) {
JOptionPane.showMessageDialog(this,"Error : " + ex);
}
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
81
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
tNama = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
tNama2 = new javax.swing.JTextField();
jttgllahirdatechoser = new com.toedter.calendar.JDateChooser();
jLabel5 = new javax.swing.JLabel();
tNama1 = new javax.swing.JComboBox();
jPanel4 = new javax.swing.JPanel();
btTambah = new javax.swing.JButton();
btHapus = new javax.swing.JButton();
btSimpan = new javax.swing.JButton();
btBatal = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tbTabel = new javax.swing.JTable();
jPanel5 = new javax.swing.JPanel();
82
jLabel7 = new javax.swing.JLabel();
tNama5 = new javax.swing.JTextField();
tNama6 = new javax.swing.JTextField();
tNama7 = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
tNama3 = new javax.swing.JTextField();
jLabel8 = new javax.swing.JLabel();
tNama8 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setBackground(java.awt.SystemColor.textHighlight);
jLabel9.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
83
jLabel9.setForeground(new java.awt.Color(255, 255, 255));
jLabel9.setText("FORM PEMESANAN");
javax.swing.GroupLayout jPanel2Layout = new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE,
350, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
84
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
jPanel3.setBackground(new java.awt.Color(255, 255, 255));
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Form ",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 0, 11), java.awt.SystemColor.textHighlight)); // NOI18N
jLabel2.setText("NO ");
tNama.setBackground(new java.awt.Color(218, 255, 255));
tNama.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNamaActionPerformed(evt);
}
85
});
jLabel4.setText("Supplier");
tNama2.setEditable(false);
tNama2.setEnabled(false);
tNama2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama2ActionPerformed(evt);
}
});
jttgllahirdatechoser.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jttgllahirdatechoserMouseClicked(evt);
}
});
jttgllahirdatechoser.addPropertyChangeListener(new
java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
86
jttgllahirdatechoserPropertyChange(evt);
}
});
jLabel5.setText("Tanggal");
tNama1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel3Layout = new
javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel3Layout.createSequentialGroup()
87
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addComponent(jLabel4,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(tNama2,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE)
88
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jttgllahirdatechoser,
javax.swing.GroupLayout.PREFERRED_SIZE, 20,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(tNama1,
javax.swing.GroupLayout.PREFERRED_SIZE, 126,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tNama, javax.swing.GroupLayout.PREFERRED_SIZE,
99, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(8, 8, 8))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
89
.addComponent(tNama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(jLabel4)
.addComponent(tNama1,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
90
.addComponent(tNama2,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addComponent(jttgllahirdatechoser,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))
);
jPanel4.setBackground(new java.awt.Color(255, 255, 255));
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
"Navigasi", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 0, 11), java.awt.SystemColor.textHighlight)); // NOI18N
btTambah.setText("Tambah");
btTambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
91
btTambahActionPerformed(evt);
}
});
btHapus.setText("Hapus");
btHapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btHapusActionPerformed(evt);
}
});
btSimpan.setText("Simpan");
btSimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btSimpanActionPerformed(evt);
}
});
btBatal.setText("Batal");
92
btBatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btBatalActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel4Layout = new
javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.TRAILING)
.addComponent(btBatal, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
93
.addComponent(btTambah,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, 75, Short.MAX_VALUE)
.addComponent(btHapus,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btSimpan,
javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel4Layout.createSequentialGroup()
.addComponent(btTambah)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btSimpan)
94
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btBatal)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btHapus))
);
tbTabel.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
tbTabel.setRowHeight(20);
95
tbTabel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tbTabelMouseClicked(evt);
}
});
jScrollPane1.setViewportView(tbTabel);
jPanel5.setBackground(new java.awt.Color(255, 255, 255));
jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Barang
", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
javax.swing.border.TitledBorder.DEFAULT_POSITION, new
java.awt.Font("Tahoma", 0, 11), java.awt.SystemColor.textHighlight)); // NOI18N
jLabel7.setText("Qty");
tNama5.setBackground(new java.awt.Color(218, 255, 255));
tNama5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama5ActionPerformed(evt);
}
96
});
tNama6.setBackground(new java.awt.Color(218, 255, 255));
tNama6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama6ActionPerformed(evt);
}
});
tNama7.setBackground(new java.awt.Color(218, 255, 255));
tNama7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama7ActionPerformed(evt);
}
});
jLabel10.setText("Satuan");
jLabel11.setText("Keterangan");
97
jLabel3.setText("Nama Barang");
tNama3.setBackground(new java.awt.Color(218, 255, 255));
tNama3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama3ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel5Layout = new
javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
98
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addComponent(jLabel7,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 80,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(12, 12, 12)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
99
.addComponent(tNama7,
javax.swing.GroupLayout.PREFERRED_SIZE, 137,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tNama6,
javax.swing.GroupLayout.PREFERRED_SIZE, 125,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tNama5,
javax.swing.GroupLayout.PREFERRED_SIZE, 66,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel5Layout.createSequentialGroup()
.addComponent(jLabel3,
javax.swing.GroupLayout.PREFERRED_SIZE, 88,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tNama3,
javax.swing.GroupLayout.PREFERRED_SIZE, 153,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(52, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(
100
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel5Layout.createSequentialGroup()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(jLabel3)
.addComponent(tNama3,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addComponent(tNama5,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7))
101
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(tNama6,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(tNama7,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11))
.addGap(0, 0, Short.MAX_VALUE))
);
102
jLabel8.setText("Cari");
tNama8.setBackground(new java.awt.Color(218, 255, 255));
tNama8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tNama8ActionPerformed(evt);
}
});
jButton1.setText("Cari");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
103
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE,
821, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel4,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3,
javax.swing.GroupLayout.PREFERRED_SIZE,
104
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel5,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(15, 15, 15)
.addComponent(jLabel8,
javax.swing.GroupLayout.PREFERRED_SIZE, 23,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tNama8,
javax.swing.GroupLayout.PREFERRED_SIZE, 150,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
105
.addComponent(jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE, 59,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING, false)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
106
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel5,
javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(tNama8,
javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1)
.addComponent(jLabel8))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE))
);
107
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,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void btTambahActionPerformed(java.awt.event.ActionEvent evt) {
aksi_tambah();
108
tNama.requestFocus(true);
}
private void btSimpanActionPerformed(java.awt.event.ActionEvent evt) {
if (btSimpan.getText().equals("Simpan")){
aksi_simpan();
}else{
aksi_ubah();
}
}
private void btBatalActionPerformed(java.awt.event.ActionEvent evt) {
109
form_awal();
}
private void btHapusActionPerformed(java.awt.event.ActionEvent evt) {
aksi_hapus();
}
private void tNamaActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tbTabelMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
btTambah.setEnabled(true);
btSimpan.setEnabled(true);
btSimpan.setText("Ubah");
btBatal.setEnabled(false);
btHapus.setEnabled(true);
form_enable();
110
tNama.setEnabled(false);
String kode = tbTabel.getValueAt(tbTabel.getSelectedRow(), 0).toString();
try {
_Cnn = null;
_Cnn = getCnn.getConnection();
String sql = "SELECT * FROM tb_pemesanan WHERE
no_faktur='"+kode+"'";
Statement stat = _Cnn.createStatement();
ResultSet res = stat.executeQuery(sql);
while(res.next()){
tNama.setText(res.getString(1));
tNama1.setSelectedItem(res.getString(2));
tNama2.setText(res.getString(3));
tNama3.setText(res.getString(4));
tNama5.setText(res.getString(5));
tNama6.setText(res.getString(6));
tNama7.setText(res.getString(7));
}
} catch(Exception ex) {
111
JOptionPane.showMessageDialog(null, ex);
}
}
private void tNama3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tNama2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jttgllahirdatechoserMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
private void jttgllahirdatechoserPropertyChange(java.beans.PropertyChangeEvent
evt) {
// TODO add your handling code here:
if (jttgllahirdatechoser.getDate() != null) {
112
SimpleDateFormat Format = new SimpleDateFormat("yyyy-MM-dd");
tanggallahir = Format.format(jttgllahirdatechoser.getDate());
tNama2.setText(tanggallahir);
}
}
private void tNama5ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tNama1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tNama6ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
113
private void tNama7ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tNama8ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
datatabel();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
114
/* 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(Pemesanan.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
115
java.util.logging.Logger.getLogger(Pemesanan.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Pemesanan.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Pemesanan.class.getName()).log(java.util.loggin
g.Level.SEVERE, null, ex);
}
//</editor-fold>
//</editor-fold>
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Pemesanan().setVisible(true);
116
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btBatal;
private javax.swing.JButton btHapus;
private javax.swing.JButton btSimpan;
private javax.swing.JButton btTambah;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
117
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JScrollPane jScrollPane1;
private com.toedter.calendar.JDateChooser jttgllahirdatechoser;
private javax.swing.JTextField tNama;
private javax.swing.JComboBox tNama1;
private javax.swing.JTextField tNama2;
private javax.swing.JTextField tNama3;
private javax.swing.JTextField tNama5;
private javax.swing.JTextField tNama6;
private javax.swing.JTextField tNama7;
private javax.swing.JTextField tNama8;
private javax.swing.JTable tbTabel;
// End of variables declaration
public void tampil_combo()
118
{
try {
Connection con = koneksis.getKoneksi();
Statement stt = con.createStatement();
String sql = "select nama from tb_supplier order by id_supplier asc"; // disini
saya menampilkan NIM, anda dapat menampilkan
ResultSet res = stt.executeQuery(sql); // yang anda ingin kan
while(res.next()){
Object[] ob = new Object[1];
ob[0] = res.getString(1);
tNama1.addItem(ob[0]); // fungsi ini bertugas menampung
isi dari database
}
res.close(); stt.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
119
}
public void dataFromDataBaseToComboBox2(){
db.koneksiDatabase();
try {
String query = "SELECT * FROM tb_barang";
Statement st = db.getKoneksi().createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
}
rs.last();
int jumlahdata = rs.getRow();
rs.first();
} catch (SQLException e) {
120
}
}
public void tampil1()
{
}
public void hasil(){
int nilai1;
int nilai2;
int nilai3;
int nilai4;
String hasil;
nilai1= Integer.valueOf(tNama5.getText());
nilai2= Integer.valueOf(tNama6.getText());
nilai3= nilai1+nilai2;
hasil=String.valueOf(nilai3);
tNama7.setText(hasil);
}
121
private void form_awal(){
form_disable();
form_clear();
LoadData();
//LoadData();
btSimpan.setText("Simpan");
btTambah.requestFocus(true);
btTambah.setEnabled(true);
btSimpan.setEnabled(false);
btBatal.setEnabled(false);
btHapus.setEnabled(false);
}
private void form_clear(){
tNama.setText("");
tNama1.setSelectedItem("");
122
tNama2.setText("");
tNama3.setText("");
tNama5.setText("");
tNama6.setText("");
tNama7.setText("");
}
private void form_disable(){
tNama.setEnabled(false);
tNama1.setEnabled(false);
tNama2.setEnabled(false);
tNama5.setEnabled(false);
}
private void form_enable(){
123
tNama.setEnabled(true);
tNama1.setEnabled(true);
tNama2.setEnabled(true);
tNama5.setEnabled(true);
}
private void aksi_tambah(){
form_enable();
btTambah.setEnabled(true);
btSimpan.setEnabled(true);
btBatal.setEnabled(true);
btHapus.setEnabled(false);
tNama3.requestFocus(true);
}
public void AutoNumber() {
try {
124
Connection con = koneksis.getKoneksi();
Statement stt = con.createStatement();
String sql = "SELECT * FROM tb_pemesanan ORDER BY no_faktur DESC";
ResultSet rs = stt.executeQuery(sql);
if (rs.next()) {
String faktur = rs.getString("no_faktur").substring(1);
String AN = "" + (Integer.parseInt(faktur) + 1);
String Nol = "";
if(AN.length()==1)
{Nol = "";}
else if(AN.length()==2)
{Nol = "0";}
else if(AN.length()==3)
{Nol = "0";}
else if(AN.length()==4)
{Nol = "1";}
tNama.setText("0" + Nol + AN);//sesuaikan dengan variable namenya
125
} else {
tNama.setText("01");//sesuaikan dengan variable namenya
}
} catch (Exception e) {
e.printStackTrace();//penanganan masalah
}
}
private void aksi_simpan(){
faktur = tNama.getText();
supplier = tNama1.getSelectedItem().toString();
tanggal = tNama2.getText();
nama_barang= tNama3.getText();
qty = tNama5.getText();
satuan= tNama6.getText();
ket = tNama7.getText();
try{
126
_Cnn = null;
_Cnn = getCnn.getConnection();
String sqlinsert = "insert into tb_pemesanan values ('"+faktur+"', "
+ "'"+supplier+"', "
+ "'"+tanggal+"', "
+ "'"+nama_barang+"', "
+ "'"+qty+"', "
+ "'"+satuan+"', "
+ "'"+ket+"')";
Statement state = _Cnn.createStatement();
state.executeUpdate(sqlinsert);
form_awal();
JOptionPane.showMessageDialog(null, "Data berhasil disimpan");
}catch(SQLException e) {
JOptionPane.showConfirmDialog(null, "Ada kesalahan Input",
"Informasi",
JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE);
}
}
127
private void aksi_ubah(){
faktur = tNama.getText();
supplier = tNama1.getSelectedItem().toString();
tanggal = tNama2.getText();
nama_barang= tNama3.getText();
qty = tNama5.getText();
satuan= tNama6.getText();
ket = tNama7.getText();
try{
_Cnn = null;
_Cnn = getCnn.getConnection();
String sqlupdate = "update tb_pemesanan set supplier = '"+supplier+"', tgl=
'"+tanggal+"', "
+ " nama_barang = '"+nama_barang+"', qty = '"+qty+"', satuan =
'"+satuan+"', keterangan = '"+ket+"'"
128
+ "where no_faktur = '"+faktur+"'";
Statement state = _Cnn.createStatement();
state.executeUpdate(sqlupdate);
form_awal();
JOptionPane.showMessageDialog(null, "Data berhasil diubah");
}catch(SQLException e) {
JOptionPane.showConfirmDialog(null, "Ada kesalahan Input edit",
"Informasi",
JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE);
}
}
private void ubah_stok(){
}
private void aksi_hapus(){
try{
_Cnn = null;
_Cnn = getCnn.getConnection();
129
String sqldelete = "delete from tb_pemesanan where no_faktur =
'"+tNama.getText()+"'";
Statement state = _Cnn.createStatement();
state.executeUpdate(sqldelete);
form_awal();
JOptionPane.showMessageDialog(null, "Data berhasil dihapus");
}catch(SQLException e) {
JOptionPane.showConfirmDialog(null, "Ada kesalahan Input",
"Informasi",
JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE);
}
}
public void datatabel(){
Object[] Baris={"No Faktur","Nama Barang","Qty","Satuan","Keterangan"};
DefaultTableModel tabmode = new DefaultTableModel(null, Baris);
tbTabel.setModel(tabmode);
String sql = "SELECT * from tb_pemesanan where tb_pemesanan.no_faktur like
'%"+tNama8.getText()+"%'";
try {
130
hasil=stat.executeQuery(sql);
while(hasil.next()){
String a = hasil.getString("no_faktur");
String b = hasil.getString("nama_barang");
String c = hasil.getString("qty");
String d = hasil.getString("satuan");
String e = hasil.getString("ket");
String[] data = {a,b,c,d,e};
tabmode.addRow(data);
}
} catch (Exception e) {
}
}
}
131
3.5.2. Black Box Testing
a. Form Login Admin
No. Skenario Pengujian Test Case Hasil yang diharapkan Hasil
Pengujian Kesimpulan
1 User name dan Password
tidak diisi kemudian klik
tombol login
username:
(kosong)
password: (kosong)
Sistem akan menolak dan
menampilkan “username
belum diisi dan password belum diisi”
Sesuai
Harapan Valid
2
Memasukkan username dan password tidak diisi
atau kosong kemudian
klik tombol login
username: wawan
password: (kosong)
Sistem akan menolak dan
menampilkan “username dan password salah”
Sesuai
Harapan Valid
3
Mengkosongkan username dan password
diisi kemdian klik tombol
login
username: (kosong)
password: wawan
Sistem akan menolak dan
menampilkan “username dan password salah”
Sesuai
Harapan Valid
4
Memasukkan dengan kondisi salah satu data
benar dan salah satu data
salah lalu klik tombol login
username:
rhs password:
124 (salah)
Sistem akan menolak dan
menampilkan “username
dan password salah”
Sesuai Harapan Valid
132
5 Menginputkan data login yang benar lalu klik
tombol login
username:
wawan
password: wawan(benar)
Sistem menerima akses login kemudian masuk
sebagai admin
Sesuai
Harapan Valid
b. Form Pemesanan
No. Skenario Pengujian Test Case Hasil yang diharapkan Hasil
Pengujian Kesimpulan
1
Klik menu pesanan, no faktur dan tanggal
faktur di kosongkan
lalu klik simpan
No Faktur (kosong)
Tanggal Faktur
(kosong)
Sistem akan menolak
dan menampilkan
informasi: “Data belum
terisi”
Sesuai
Harapan Valid
2
Klik menu pesanan,
memasukan no faktur dan tanggal faktur di
kosongkan lalu klik
simpan
No Faktur: P0001 Tanggal Faktur
(kosong)
Sistem akan menolak
dan menampilkan informasi: “Data
belum
terisi”
Sesuai
Harapan Valid
3
Klik menu pesanan,
memasukan no faktur
dan tanggal faktur, lalu klik simpan
No Faktur:
19A/19405558
Tanggal Faktur: 26 Februari 2019
Sistem menerima dan
menyimpan data Sesuai
Harapan Valid
3.5.3. Spesifikasi Hardware dan Software
a. Spesifikasi Hardware
a. Server
i. Laptop
a. Intel® Celeron (R) CPU N3050
b. RAM 2 GB
c. Flasdisk 32 GB
d. Mouse
e. Keyboard
133
f. Monitor dengan resolusi layar minimum 1366x768
g. Koneksi internet dengan kecepatan 2 Mbps
b. Spesifikasi Software
a. Sistem Operasi Windows 8
b. Aplikasi bundle web server: Xampp yang terdiri dari beberapa komponen,
diantaranya;
(1) Aplikasi PhpMyAdmin
(2) Aplikasi Java Neatbeans
c. Aplikasi web : Mozilla Firefox, Google Chrome