bab iii pembahasan - repository.bsi.ac.id filefladeo sendiri berfokus pada kepuasan konsumen...

112
25 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Dalam pelaksanaan kegiatan rutin di PT. Sabang Mandiri Abadi terdapat struktur organisasi yang menggambarkan fungsi-fungsi pelaksanaan tersebut. Penulis akan menerangkan sejarah perusahaan dan struktur organisasi dalam pembuatan tugas akhir ini. 3.1.1. Sejarah Perusahaan PT. Sabang Mandiri Abadi berdiri pada tahun 2002 yang didirikan oleh Bapak Onnes Kamil Kok yang beralamatkan di Jl. Palmerah Barat No.9, Jakarta Barat. Perusahaan ini merupakan perusahaan yang bergerak dibidang distribusi dalam penjualan produk sepatu, sandal, dan tas yang diberikan nama Fladeo yang bisa ditemui di department store seperti Matahari Department Store dan juga Ramayana Department Store. Fladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang dalam persaingan dengan barang merk lainnya. Selain itu, fladeo juga menyediakan berbagai model dan jenis sepatu dan sandal baik untuk dewasa maupun anak-anak dengan berbagai pilihan warna dan model yang menarik untuk para konsumennya.

Upload: phamtu

Post on 05-Jun-2019

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

25

BAB III

PEMBAHASAN

3.1. Tinjauan Perusahaan

Dalam pelaksanaan kegiatan rutin di PT. Sabang Mandiri Abadi terdapat

struktur organisasi yang menggambarkan fungsi-fungsi pelaksanaan tersebut.

Penulis akan menerangkan sejarah perusahaan dan struktur organisasi dalam

pembuatan tugas akhir ini.

3.1.1. Sejarah Perusahaan

PT. Sabang Mandiri Abadi berdiri pada tahun 2002 yang didirikan oleh

Bapak Onnes Kamil Kok yang beralamatkan di Jl. Palmerah Barat No.9, Jakarta

Barat. Perusahaan ini merupakan perusahaan yang bergerak dibidang distribusi

dalam penjualan produk sepatu, sandal, dan tas yang diberikan nama Fladeo yang

bisa ditemui di department store seperti Matahari Department Store dan juga

Ramayana Department Store.

Fladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang

itu sendiri, yang hingga saat ini dapat bertahan dan berkembang dalam persaingan

dengan barang merk lainnya. Selain itu, fladeo juga menyediakan berbagai model

dan jenis sepatu dan sandal baik untuk dewasa maupun anak-anak dengan

berbagai pilihan warna dan model yang menarik untuk para konsumennya.

Page 2: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

26

PT. Sabang Mandiri Abadi terus mengembangkan strategi untuk

memperkuat posisi sebagai pemimpin bisnis sepatu, sandal, dan tas di Indonesia,

dengan visi dan misi sebagai berikut.

Visi Perusahaan:

1. Memperbagus penampilan counter dengan membuka counter baru dan

merenovasi counter lama dengan konsep desain toko dan display terbaru untuk

menarik pembeli dan menambah penjualan.

2. Mempersiapkan strategi pemasaran yang matang untuk menyambut periode

back to school, lebaran, dan natal melalui promosi iklan.

3. Menjadikan perusahaan yang compatible, dipercaya, serta terdepan.

Misi Perusahaan:

1. PT. Sabang Mandiri Abadi berkomitmen memberikan yang terbaik melalui

kepemimpinan dan perbaikan terus-menerus dalam kegiatan perdagangan dan

berusaha meningkatkan penjualan.

2. Mengoptimalkan sumber daya manusia.

3. Memberikan pelayanan terbaik bagi semua konsumen.

Nomor SIUP PT. Sabang Mandiri Abadi Jakarta : 10462 - 03/ PK / 1.824.271

3.1.2. Struktur Organisasi dan Fungsi

Struktur organisasi menunjukkan kerangka dan susunan diantara fungsi-

fungsi, bagian atau posisi, maupun orang yang menunjukkan kedudukan, tugas,

wewenang, dan tanggung jawab yang berbeda dalam satu perusahaan. Adapun

struktur organisasi PT. Sabang Mandiri Abadi sebagai berikut :

Page 3: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

27

KOMISARIS

DIREKTUR

UTAMA

DIREKTUR

MANAGER

PURCHASING

MANAGER

MARKETING

MANAGER

FINANCE

ADMIN PAJAK

BAGIAN

FINANCE

KEPALA GUDANG

BAGIAN

PURCHASING

BAGIAN

GUDANG

SUPERVISOR

KOORDINATOR

SPG/SPB

Gambar III.1

Struktur Organisasi PT.Sabang Mandiri Abadi

Adapun fungsi dari tiap-tiap bagian tersebut diuraikan sebagai berikut :

1. Komisaris

Bertanggung jawab dalam mengawasi jalannya perusahaan serta memberikan

masukan-masukan yang berguna bagi kemajuan perusahaan.

2. Direktur Utama

Bertanggung jawab memimpin perusahaan dan menjalankan perusahaan

dengan menerbitkan kebijakan-kebijakan perusahaan, dan memilih, menetapkan,

mengawasi tugas dari kepala bagian (manager) dan para karyawan.

Page 4: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

28

3. Direktur

Direktur bertanggung jawab mengkoordinasikan dan mengawasi semua

kegiatan di perusahaan mulai dari bidang administrasi, kepegawaian hingga

pembelian, kualitas produk, persediaan dan penjualan barang

4. Manager Finance

a. Mengkoordinasi dan mengontrol perencanaan, pelaporan, serta

pembayaran kewajiban pajak perusahaan.

b. Mengelola fungsi akuntansi dalam memproses data dan informasi

keuangan untuk menghasilkan laporan keuangan yang dibutuhkan

perusahaan secara akurat.

5. Manager Purchasing

Bertugas mengevaluasi supplier, mereview kuliatas barang, dan melakukan

pengecekan untuk memastikan produk dari supplier terbaik dalam hal kualitas dan

jadwal pengiriman.

6. Manager Marketing

Bertanggung jawab melakukan perencanaan strategi pemasaran dengan

mengikuti perkembangan pasar, terutama terhadap produk yang sejenis dari

perusahaan pesaing.

7. Admin Pajak

Bertanggung jawab untuk mengatur segala sesuatu tang berkaitan dengan

perpajakan perusahaan.

Page 5: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

29

8. Bagian Finance

Bertanggung jawab atas pembuatan laporan pembelian dan pembayaran tiap

supplier.

9. Kepala Gudang

Bertugas mengkoordinasi, mengontrol, dan mengevaluasi semua kegiatan

penerimaan, penyimpanan, dan persediaam stok barang yang akan didistribusikan.

10. Bagian Purchasing

Bagian purchasing bertanggung jawab atas pelaksanaan pembelian tunai

maupun kredit untuk kepentingan operasioanal dan mencatat semua kegiatan

pembelian.

11. Bagian Gudang

Bertugas menerima barang dan juga memeriksa barang yang dikirim supplier.

12. Supervisor

Supervisor memiliki tugas strategis karena langsung terjun di lapangan

melaksanakan semua rencana yang telah ditetapkan manager marketing.

13. Koordinator

Bertugas mengatur kinerja bawahannya (SPG/SPB) dan juga bertanggung

jawab atas toko atau counter (area penjualan).

Page 6: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

30

14. SPG/SPB

Membantu supervisor dan koordinator dalam mengelola barang dagangan di

counter (area penjualan).

3.2. Tinjauan Kasus

Kemajuan teknologi yang cukup pesat ini, tentunya kebutuhan akan

informasi dan komunikasi sangat dibutuhkan dalam mengembangkan suatu

keputusan dalam hal bisnis. Dalam hal ini terdapat perusahaan yang gagal dalam

usahanya yang disebabkan oleh beberapa faktor salah satunya data yang tidak

terjaga kerahasiaannya karena tidak tertata dengan baik.

Oleh karena itu, penulis bermaksud untuk membuat suatu aplikasi sistem

yang dapat menyediakan informasi dengan tepat.

3.2.1. Proses Bisnis Sistem Berjalan

Adapun proses pembelian barang secara kredit pada PT. Sabang Mandiri

Abadi adalah sebagai berikut:

1. Proses pemesanan barang

Pada proses pemesanan barang, supplier datang membawa sample lalu bagian

purchasing menerima sample dan memilih sample yang akan dipesan dan

melakukan penawaran harga atas barang yang akan dipesan. Setelah itu bagian

purchasing membuat Purchase Order (PO) dengan jelas mengenai barang yang

akan dipesan, waktu pengiriman , harga yang telah disepakati, serta waktu

pembayaran yang telah disepakati dengan supplier dan setelah itu memberikan

PO ke direktur untuk di Acc, setelah direktur menerima PO dan meng Acc PO

Page 7: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

31

tersebut kemudian PO yang sudah di ACC diserahkan ke supplier sebagai bukti

pemesanan pembelian barang dan dilampirkan saat ingin mengirim barang.

2. Proses penerimaan barang

Setelah menerima PO yang sudah di ACC lalu supplier mengirim barang,

kemudian bagian gudang menerima barang tersebut. Setelah itu bagian gudang

memeriksa kualitas barang tersebut dan apabila barang yang diterima sesuai

dengan yang dipesan maka bagian gudang mencatat ke daftar penerimaan

barang dan menandatangani Surat Jalan (SJ) dari supplier tersebut, sedangkan

apabila barang yang dikirim tidak sesuai dengan yang dipesan atau terdapat

cacat maka barang tersebut akan di retur ke supplier lalu supplier menerima

retur barang tersebut. Setelah itu, bagian gudang menyerahkan dokumen-

dokumen yang supplier lampirkan saat mengirim barang seperti Surat Jalan

(SJ) yang telah ditandatangani, faktur, dan PO untuk diserahkan ke bagian

finance.

3. Proses pembayaran

Setelah bagian finance menerima dokumen-dokumen tersebut, lalu bagian

finance membuat pelunasan pembayaran berdasarkan dokumen-dokumen

tersebut dan menyiapkan giro. Setelah selesai membuat pelunasan pembayaran

dan menyiapkan giro lalu bagian finance menginformasikan ke supplier untuk

mengambil pelunasan pembayaran dan giro. Setelah menerima informasi lalu

supplier datang membawa tanda terima atas total pembelian yang harus dibayar

dan diberikan ke bagian finance. Bagian finance menerima tanda terima lalu

tanda terima tersebut dicek dan disesuaikan dengan pelunasan pembayaran

yang telah dibuat. Kemudian bagian finance memberikan pelunasan

Page 8: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

32

pembayaran dan giro ke supplier. Setelah supplier menerima pelunasan

pembayaran dan giro lalu supplier membuat kwitansi dan memberikan kwitansi

tersebut ke bagian finance.

4. Proses pembuatan laporan

Setelah selesai melakukan proses pembayaran, bagian finance membuat

laporan pembelian untuk diserahkan ke direktur.

3.2.2. Activity Diagram

Adapun activity diagram dari proses pembelian barang secara kredit pada

PT. Sabang Mandiri Abadi adalah sebagai berikut:

1. Activity Diagram Proses Pemesanan Barang

Gambar III.2

Activity Diagram Proses Pemesanan Barang

Page 9: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

33

2. Activity Diagram Proses Penerimaan Barang

Gambar III.3

Activity Diagram Proses Penerimaan Barang

3. Activity Diagram Proses Pembayaran

Gambar III.4

Activity Diagram Proses Pembayaran

Page 10: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

34

4. Activity Diagram Proses Pembuatan Laporan

Gambar: III.5

Activity Diagram Proses Pembuatan Laporan

3.2.3. Dokumen Masukan

Bentuk dokumen masukan (input) yang dibutuhkan dalam spesifikasi

sistem berjalan adalah :

1. Nama Dokumen : Purchase Order

Fungsi Dokumen : Sebagai bukti pemesanan barang

Sumber : Bagian purchasing

Tujuan : Supplier

Frekuensi : Setiap akan memesan barang

Media : Kertas

Jumlah : 4 rangkap

Format : Lihat lampiran A.1

2. Nama Dokumen : Invoice

Fungsi Dokumen : Sebagai bukti penagihan

Sumber : Supplier

Page 11: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

35

Tujuan : Bagian gudang

Frekuensi : Setiap akan menagih pembayaran

Media : Kertas

Jumlah : Satu lembar

Format : Lihat lampiran A.2

3. Nama Dokumen : Surat Jalan

Fungsi Dokumen : Sebagai bukti pengiriman barang

Sumber : Supplier

Tujuan : Bagian gudang

Frekuensi : Setiap akan mengirimkan barang

Media : Kertas

Jumlah : Satu lembar

Format : Lihat lampiran A.3

4. Nama Dokumen : Tanda Terima

Fungsi Dokumen : Sebagai bukti penagihan

Sumber : Supplier

Tujuan : Bagian finance

Frekuensi : Setiap ada tagihan

Media : Kertas

Jumlah : Satu lembar

Format : Lihat lampiran A.4

5. Nama Dokumen : Daftar penerimaan barang

Fungsi Dokumen : Sebagai bukti penerimaan barang

Sumber : Bagian gudang

Page 12: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

36

Tujuan : Bagian purchasing

Frekuensi : Setiap menerima barang dari supplier

Media : Kertas

Jumlah : Satu lembar

Format : Lihat lampiran A.5

3.2.4. Dokumen Keluaran

Bentuk dokumen keluaran (output) yang dibutuhkan dalam spesifikasi

sistem berjalan adalah :

1. Nama Dokumen : Pelunasan Pembayaran

Fungsi Dokumen : Sebagai bukti pelunasan pembayaran pembelian barang

Sumber : Bagian finance

Tujuan : Supplier

Frekuensi : Setiap pelunasan pembayaran atas pembelian barang

Media : Kertas

Jumlah : Satu lembar

Format : Lihat lampiran B.1

2. Nama Dokumen : Laporan Pembelian

Fungsi Dokumen : Sebagai laporan pembelian barang

Sumber : Bagian Finance

Tujuan : Direktur

Frekuensi : Setiap bulan

Media : Kertas

Jumlah : Satu lembar

Format : Lihat lampiran B.2

Page 13: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

37

3.2.5. Permasalahan Pokok

Sistem pembelian barang secara kredit yang telah berjalan di PT. Sabang

Mandiri Abadi Jakarta umumnya telah berjalan dengan baik. Tetapi terkadang

timbul permasalahan yang dihadapi dalam proses pembelian barang secara kredit

tersebut. Adapun permasalahannya sebagai berikut:

1. Sistem pembelian barang secara kredit yang masih manual sering terjadi

kekeliruan atau kesalahan dalam pencatatan data pembelian dikarenakan

kurang teliti.

2. Dalam proses pengarsipan data masih dilakukan dengan cara manual mencatat

dibuku, sehingga butuh waktu lama untuk pencarian apabila data diperlukan.

3.2.6. Pemecahan Masalah

Dari permasalahan yang terjadi pada PT. Sabang Mandiri Abadi Jakarta

penulis mencoba memberikan alternatif pemecahan masalah sebagai berikut:

1. Perlu adanya perubahan dalam sistem agar lebih efektif dan efisien dalam

proses pembelian barang.

2. Mengubah sistem manual menjadi sistem yang terkomputerisasi sehingga

dalam pengarsipan data sampai pembuatan laporan pembelian akan lebih

akurat dan lebih cepat, sehingga mempermudah dalam proses pembelian

barang.

Page 14: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

38

3.3. Analisis Kebutuhan Software

Analisa kebutuhan software sebagai langkah awal untuk menentukan

gambaran perangkat yang akan dihasilkan ketika membuat sebuah sistem

perangkat lunak.

Berdasarkan proses bisnis pembelian barang secara kredit pada PT. Sabang

Mandiri Abadi, proses selanjutnya adalah analisa kebutuhan dari sistem

pembelian barang secara kredit.

3.3.1. Analisis Kebutuhan

1. Analisa kebutuhan Bagian Purchasing

A.1. Bagian Purchasing dapat melakukan Login ke dalam sistem

A.2. Bagian Purchasing Mengelola Menu Utama

A.3. Bagian Purchasing Mengelola Menu Master

A.3.1. Bagian Purchasing Mengelola Form Data Supplier

A.3.2. Bagian Purchasing Mengelola Form Data Barang

A.3.3. Bagian Purchasing Mengelola Form Data User

A.4. Bagian Purchasing Mengelola Menu Transaksi

A.4.1. Bagian Purchasing Mengelola Form Purchase Order

A.4.2. Bagian Purchasing Mengelola Form Penerimaan Barang

A.5. Bagian Purchasing Mengelola Menu Laporan

A.5.1. Bagian Purchasing Mengelola Laporan Penerimaan Barang

A.6. Bagian Purchasing Mengelola Menu Utility

A.6.1. Bagian Purchasing Mengelola Form Backup Database

A.7. Bagian Purchasing dapat melakukan Logout

Page 15: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

39

2. Analisa kebutuhan Bagian Finance

B.1. Bagian Finance dapat melakukan Login kedalam sistem

B.2. Bagian Finance Mengelola Menu Utama

B.3. Bagian Finance Mengelola Menu Master

B.3.1. Bagian Finance Mengelola Data Perkiraan

B.3.2. Bagian Finance Mengelola Data User

B.4. Bagian Finance Mengelola Menu Transaksi

B.4.1. Bagian Finance Mengelola Form Transaksi Pembelian

B.4.2. Bagian Finance Mengelola Form Pelunasan Pembayaran

B.4.3. Bagian Finance Mengelola Form Jurnal

B.5. Bagian Finance Mengelola Menu Laporan

B.5.1. Bagian Finance Mengelola Laporan Pembelian

B.5.3. Bagian Finance Mengelola Laporan Pengeluaran Kas

B.6. Bagian Finance Mengelola Menu Utility

B.6.1. Bagian Finance Mengelola Form Backup Database

B.7. Bagian Finance dapat melakukan Logout

Page 16: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

40

3.3.2. Use Case Diagram

A. Use Case Diagram Bagian Purchasing

Gambar III.6

Use Case Diagram Bagian Purchasing

Tabel III.1 Deskripsi Use Case Diagram Bagian Purchasing

Use Case Narative Halaman Bagian Purchasing

Tujuan Bagian Purchasing dapat melihat data yang ada di dalam

sistem halaman Bagian Purchasing.

Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

bagian purchasing yang di dalamnya ada data supplier, data

barang, data user, purchase order, penerimaan barang,

laporan penerimaan barang, backup database.

Skenario Utama

Aktor Bagian Purchasing

Kondisi Awal Aktor membuka aplikasi halaman bagian purchasing

Page 17: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

41

Aksi Aktor Reaksi Sistem

1. Aktor memilih

data supplier

2. Aktor memilih

data barang

3. Aktor memilih

data user

4. Aktor memilih

purchase order

5. Aktor memilih

penerimaan

barang

6. Aktor memilih

laporan

penerimaan

barang

7. Aktor memilih

backup database

Sistem ini akan menampilkan informasi data supplier

Sistem ini akan menampilkan informasi data barang

Sistem ini akan menampilkan informasi data user

Sistem ini akan menampilkan informasi purchase order

Sistem ini akan menampilkan informasi penerimaan barang

Sistem ini akan menampilkan informasi laporan penerimaan

barang

Sistem ini akan menampilkan informasi backup database

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan apa

yang di inginkan

B. Use Case Diagram Bagian Finance

Gambar III.7

Use Case Diagram Bagian Finance

Page 18: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

42

Tabel III.2 Deskripsi Use Case Diagram Bagian Finance

Use Case Narative Halaman Bagian Finance

Tujuan Bagian Finance dapat melihat data yang ada di dalam sistem

halaman Bagian Finance.

Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman

bagian finance yang di dalamnya ada data perkiraan, data

user, transaksi pembelian, pelunasan pembayaran, jurnal,

laporan pembelian, laporan pengeluaran kas, backup

database.

Skenario Utama

Aktor Bagian Finance

Kondisi Awal Aktor membuka aplikasi halaman bagian finance

Aksi Aktor Reaksi Sistem

1. Aktor memilih

data perkiraan

2. Aktor memilih

data user

3. Aktor memilih

transaksi

pembelian

4. Aktor memilih

pelunasan

pembayaran

5. Aktor memilih

jurnal

6. Aktor memilih

laporan

pembelian

7. Aktor memilih

laporan

pengeluaran

kas

8. Aktor memilih

backup

database

Sistem ini akan menampilkan informasi data perkiraan

Sistem ini akan menampilkan informasi data user

Sistem ini akan menampilkan informasi transaksi pembelian

Sistem ini akan menampilkan informasi pelunasan

pembayaran

Sistem ini akan menampilkan informasi jurnal

Sistem ini akan menampilkan informasi laporan pembelian

Sistem ini akan menampilkan informasi laporan pengeluaran

kas

Sistem ini akan menampilkan informasi backup database

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan apa

yang di inginkan.

Page 19: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

43

3.3.3. Activity Diagram

A. Activity Diagram Menu Master Data Supplier

Gambar III.8

Activity Diagram Menu Master Data Supplier

Page 20: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

44

B. Activity Diagram Menu Master Data Perkiraan

Gambar III.9

Activity Diagram Menu Master Data Perkiraan

Page 21: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

45

C. Activity Diagram Menu Transaksi Purchase Order

Gambar III.10

Activity Diagram Menu Transaksi Purchase Order

Page 22: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

46

D. Activity Diagram Menu Transaksi Pembelian

Gambar III.11

Activity Diagram Menu Transaksi Pembelian

Page 23: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

47

3.4. Desain

3.4.1. Entity Relationship Diagram (ERD)

Gambar III.12

Entity Relationship Diagram

Page 24: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

48

3.4.2. Logical Record Structure (LRS)

Gambar III.13

Logical Record Structure

Page 25: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

49

3.4.3. Spesifikasi File

Spesifikasi file yang digunakan dalam rancang bangun sistem pembelian

barang secara kredit pada PT. Sabang Mandiri Abadi terdiri dari :

1. Spesifikasi File Data User

Nama Database : user

Nama File : Data User

Tipe File : File Master

Akses File : Random

Panjang Record : 78 karakter

Field Key : Username

Tabel III.3

Spesifikasi File Data User

No Elemen Data Akronim Tipe Panjang Keterangan

1 Username Username Varchar 8 Primary Key

2 Nama Nama Varchar 50

3 Hak Akses Hak_Akses Varchar 10

4 Password Password Varchar 10

2. Spesifikasi File Data Barang

Nama Database : barang

Nama File : Data Barang

Tipe File : File Master

Page 26: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

50

Akses File : Random

Panjang Record : 50 karakter

Field Key : Kd_Barang

Tabel III.4

Spesifikasi File Data Barang

No Elemen Data Akronim Tipe Panjang Keterangan

1 Kode Barang Kd_Barang Varchar 8 Primary Key

2 Nama Barang Nama_Barang Varchar 20

3 Harga Beli Hrg_Beli Double

4 Harga Jual Hrg_Jual Double

5 Kode Supplier Kd_Supplier Varchar 7

6 Warna Warna Varchar 10

7 size Size Varchar 5

8 foto foto Mediumblob

3. Spesifikasi File Data Supplier

Nama Database : supplier

Nama File : Data Supplier

Tipe File : File Master

Akses File : Random

Panjang Record : 109 karakter

Field Key : Kd_Supplier

Page 27: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

51

Tabel III.5

Spesifikasi File Data Supplier

No Elemen Data Akronim Tipe Panjang Keterangan

1 Kode Supplier Kd_Supplier Varchar 7 Primary Key

2 Nama Supplier Nm_Supplier Varchar 25

3 Alamat Alamat Varchar 50

4 Telepon Telepon Varchar 12

5 Kota Kota Varchar 15

4. Spesifikasi File Purchase Order

Nama Database : purchase_order

Nama File : Purchase Order

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 30 karakter

Field Key : No_PO

Tabel III.6

Spesifikasi File Purchase Order

No Elemen Data Akronim Tipe Panjang Keterangan

1 Nomor Purchase Order No_PO Varchar 12 Primary Key

2 Tanggal Purchase Order Tgl_PO Date

Page 28: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

52

3 Tangal Kirim Tgl_Kirim Date

4 Kode Supplier Kd_Supplier Varchar 3 Foreign Key

5 Total Quantity Total_Qty Int 11

6 Username Username varchar 4

5. Spesifikasi File Detail Purchase Order

Nama Database : detail_purchase_order

Nama File : Detail Purchase Order

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 42 karakter

Field Key : Id

Tabel III.7

Spesifikasi File Detail Purchase Order

No Elemen Data Akronim Tipe Panjang Keterangan

1 Id Id Int 11 Primary Key

2 Nomor Purchase Order No_PO varchar 12

3 Kode Barang Kd_Barang varchar 8 Foreign Key

4 Quantity Order Qty_Order int 11

5 Harga Beli Hrg_Beli double

Page 29: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

53

6 Harga Jual Hrg_Jual double

6. Spesifikasi File Penerimaan Barang

Nama Database : penerimaan_barang

Nama File : Penerimaan Barang

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 17 karakter

Field Key : No_Tanda_Terima

Tabel III.8

Spesifikasi File Penerimaan Barang

No Elemen Data Akronim Tipe Panjang Keterangan

1 Nomor Tanda Terima No_Tanda_Terima Varchar 5 Primary Key

2 Nomor Purchase Order No_PO Varchar 12

3 Tanggal Terima Barang Tgl_Terima_Barang Date

7. Spesifikasi File Transaksi Pembelian

Nama Database : transaksi_pembelian

Nama File : Transaksi Pembelian

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 24 karakter

Field Key : No_Transaksi

Page 30: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

54

Tabel III.9

Spesifikasi File Transaksi Pembelian

No Elemen Data Akronim Tipe Panjang Keterangan

1 Nomor Transaksi No_Transaksi varchar 9 Primary Key

2 Nomor Tanda Terima No_Tanda_Terima varchar 7

3 Nomor Invoice No_Invoice varchar 8

4 Total Transaksi Total_Transaksi double

8. Spesifikasi File Pelunasan Pembayaran

Nama Database : pelunasan_pembayaran

Nama File : Pelunasan Pembayaran

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 7 karakter

Field Key : No_Pembayaran

Tabel III.10

Spesifikasi File Pelunasan Pembayaran

No Elemen Data Akronim Tipe Panjang Keterangan

1 Nomor Pembayaran No_Pembayaran varchar 7 Primary Key

2 Jatuh Tempo Jth_Tempo date

3 Total Bayar Total_Bayar double

Page 31: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

55

9. Spesifikasi File Detail Pelunasan Pembayaran

Nama Database : detail_pelunasan_pembayaran

Nama File : Detail Pelunasan Pembayaran

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 27 karakter

Field Key : Id

Tabel III.11

Spesifikasi File Detail Pelunasan Pembayaran

No Elemen Data Akronim Tipe Panjang Keterangan

1 Identitas Id int 11 Primary Key

2 Nomor Pembayaran No_Pembayaran varchar 7

3 Nomor Transaksi No_Transaksi varchar 9

10. Spesifikasi File Jurnal

Nama Database : jurnal

Nama File : Jurnal

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 33 karakter

Field Key : No_Jurnal

Page 32: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

56

Tabel III.12

Spesifikasi File Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1 Nomor Jurnal No_Jurnal varchar 6 Primary Key

2 Nomor Pembayaran No_Pembayaran varchar 7

3 Tanggal Jurnal Tgl_Jurnal Date

4 Keterangan Ket varchar 20

11. Spesifikasi File Detail Jurnal

Nama Database : detail_jurnal

Nama File : Detail Jurnal

Tipe File : File Transaksi

Akses File : Random

Panjang Record : 21 karakter

Field Key : Id

Tabel III.13

Spesifikasi File Detail Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1 Identitas Id Int 11 Primary Key

2 Nomor Jurnal No_Jurnal Varchar 6

3 Kode Perkiraan Kd_Perkiraan Varchar 4

Page 33: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

57

4 Debet Debet Double

5 Kredit Kredit Double

12. Spesifikasi File Data Perkiraan

Nama Database : data_perkiraan

Nama File : Data Perkiraan

Tipe File : File Master

Akses File : Random

Panjang Record : 19 karakter

Field Key : Kd_Perkiraan

Tabel III.14

Spesifikasi File Data Perkiraan

No Elemen Data Akronim Tipe Panjang Keterangan

1 Kode Perkiraan Kd_Perkiraan Varchar 4 Primary Key

2 Nama Perkiraan Nm_Perkiraan Varchar 15

Page 34: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

58

3.4.4. Sequence Diagram

A. Sequence Diagram Login

Gambar III.14

Sequence Diagram Login

Page 35: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

59

B. Sequence Diagram Data Supplier

Gambar III.15

Sequence Diagram Data Supplier

Page 36: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

60

C. Sequence Diagram Purchase Order

Gambar III.16

Sequence Diagram Purchase Order

Page 37: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

61

D. Sequence Diagram Transaksi Pembelian

Gambar III.17

Sequence Diagram Transaksi Pembelian

Page 38: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

62

3.4.5. Deployment Diagram

Gambar III.18

Deployment Diagram

Page 39: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

63

3.4.6. User Interface

Gambar III.19

User Interface Form Login Bagian Purchasing

Gambar III.20

User Interface Menu Utama Bagian Purchasing

Page 40: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

64

Gambar III.21

User Interface Form Data Supplier

Gambar III.22

User Interface Form Data Barang

Page 41: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

65

Gambar III.23

User Interface Form Data User

Gambar III.24

User Interface Form Purchase Order

Page 42: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

66

Gambar III.25

User Interface Form Penerimaan Barang

Gambar III.26

User Interface Form Laporan Penerimaan Barang

Page 43: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

67

Gambar III.27

User Interface Purchase Order

Gambar III.28

User Interface Laporan Penerimaan Barang

Page 44: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

68

Gambar III.29

User Interface Form Login Bagian Finance

Gambar III.30

User Interface Menu Utama Bagian Finance

Page 45: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

69

Gambar III.31

User Interface Form Data Perkiraan

Gambar III.32

User Interface Form Data User

Page 46: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

70

Gambar III.33

User Interface Form Transaksi Pembelian

Gambar III.34

User Interface Form Pelunasan Pembayaran

Page 47: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

71

Gambar III.35

User Interface Form Jurnal

Gambar III.36

User Interface Form Laporan Pembelian

Page 48: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

72

Gambar III.37

User Interface Form Laporan Pengeluaran Kas

Gambar III.38

User Interface Pelunasan Pembayaran

Page 49: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

73

Gambar III.39

User Interface Laporan Pembelian

Gambar III.40

User Interface Laporan Pengeluaran Kas

Page 50: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

74

3.5. Implementasi

3.5.1. Code Generation

A. Form Login

package fladeoapp.form;

import java.awt.Color;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.geom.RoundRectangle2D;

import javax.persistence.EntityManager;

import fladeoapp.FladeoApp;

import fladeoapp.data.User;

import java.awt.event.KeyEvent;

import javax.persistence.Query;

import java.util.List;

import javax.swing.JOptionPane;

public class FormLogin extends javax.swing.JFrame {

private String nama;

private String hakAkses;

private String username;

private String password;

int xx;

int xy;

/**

* Creates new form FormLogin

*/

public FormLogin() {

initComponents();

setLocationRelativeTo(null);

setShape(new RoundRectangle2D.Double(0, 0, 400, 450, 10, 10));

user();

password();

}

public void user(){

txtLogin.addMouseListener(new MouseAdapter(){

@Override

public void mouseClicked(MouseEvent e) {

txtLogin.setText("");

txtLogin.setForeground(Color.WHITE);

}

Page 51: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

75

});

txtLogin.setForeground((new Color(204, 204, 204)));

txtLogin.setText("fnc1");

}

public void password(){

txtPassword.addMouseListener(new MouseAdapter(){

@Override

public void mouseClicked(MouseEvent e) {

txtPassword.setText("");

txtPassword.setForeground(Color.WHITE);

}

});

txtLogin.setForeground((new Color(204, 204, 204)));

txtPassword.setText("1234");

}

private void login(){

if(txtLogin.getText().equals("Root") &&

txtPassword.getText().equals("Root")){

User userLogin = new User();

userLogin.setNama("Root");

userLogin.setHakAkses("Root");

FormUtama formUtama = new FormUtama(userLogin);

formUtama.getMenuTransaksi().setEnabled(false);

formUtama.getMenuLaporan().setEnabled(false);

formUtama.getMenuMasterUtility().setEnabled(false);

formUtama.getMasterItemAkun().setVisible(false);

formUtama.getMasterItemBarang().setVisible(false);

formUtama.getMasterItemSupplier().setVisible(false);

JOptionPane.showMessageDialog(null, "Login sebagai Root!");

this.dispose();

formUtama.setVisible(true);

return;

}

EntityManager em=null;

try {

em=FladeoApp.emf.createEntityManager();

Query q=em.createQuery("SELECT u FROM User u WHERE u.username

= :username");

q.setParameter("username", txtLogin.getText());

List<User> list = q.getResultList();

if(!list.isEmpty()){

for(User us : list){

nama = us.getNama();

hakAkses = us.getHakAkses();

username = us.getUsername();

password = us.getPassword();

Page 52: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

76

}

if(txtPassword.getText().equals(password)){

User userLogin = new User();

userLogin.setUsername(username);

userLogin.setHakAkses(hakAkses);

userLogin.setNama(nama);

FormUtama formUtama = new FormUtama(userLogin);

JOptionPane.showMessageDialog(this, "Selamat datang,

"+nama+"","Welcome", JOptionPane.INFORMATION_MESSAGE);

if(hakAkses.equalsIgnoreCase("FINANCE")){

formUtama.getMasterItemAkun().setVisible(true);

formUtama.getTransItemPembelian().setVisible(true);

formUtama.getTransItemPembayaran().setVisible(true);

formUtama.getTransItemJurnal().setVisible(true);

formUtama.getLapItemPembelian().setVisible(true);

formUtama.getLapItemKas().setVisible(true);

formUtama.getMasterItemSupplier().setVisible(false);

formUtama.getMasterItemBarang().setVisible(false);

formUtama.getTransItemPO().setVisible(false);

formUtama.getTransItemPB().setVisible(false);

formUtama.getLapItemTerimaBarang().setVisible(false);

}else if(hakAkses.equalsIgnoreCase("PURCHASING")){

formUtama.getMasterItemSupplier().setVisible(true);

formUtama.getMasterItemBarang().setVisible(true);

formUtama.getTransItemPO().setVisible(true);

formUtama.getTransItemPB().setVisible(true);

formUtama.getLapItemTerimaBarang().setVisible(true);

formUtama.getMasterItemAkun().setVisible(false);

formUtama.getTransItemPembelian().setVisible(false);

formUtama.getTransItemPembayaran().setVisible(false);

formUtama.getTransItemJurnal().setVisible(false);

formUtama.getLapItemPembelian().setVisible(false);

formUtama.getLapItemKas().setVisible(false);

}

this.dispose();

formUtama.setVisible(true);

}else{

JOptionPane.showMessageDialog(null, "Password salah!");

txtPassword.setText("");

txtPassword.requestFocus();

}

}else{

JOptionPane.showMessageDialog(null, "Username tidak ditemukan!");

Page 53: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

77

txtLogin.setText("");

txtPassword.setText("");

txtLogin.requestFocus();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

jPanel2 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

btnClose = new javax.swing.JButton();

jPanel4 = new javax.swing.JPanel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jPanel5 = new javax.swing.JPanel();

jLabel5 = new javax.swing.JLabel();

jSeparator2 = new javax.swing.JSeparator();

txtLogin = new javax.swing.JTextField();

jSeparator3 = new javax.swing.JSeparator();

txtPassword = new javax.swing.JPasswordField();

jSeparator1 = new javax.swing.JSeparator();

btnLogin = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setUndecorated(true);

addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {

public void mouseDragged(java.awt.event.MouseEvent evt) {

formMouseDragged(evt);

}

});

addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(java.awt.event.MouseEvent evt) {

formMousePressed(evt);

}

});

Page 54: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

78

getContentPane().setLayout(new

org.netbeans.lib.awtextra.AbsoluteLayout());

jPanel1.setBackground(new java.awt.Color(214, 48, 49));

jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jPanel2.setBackground(new java.awt.Color(255, 255, 255));

jPanel2.setPreferredSize(new java.awt.Dimension(400, 450));

jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel1.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/images/Fladeo Logo.png"))); //

NOI18N

jPanel2.add(jLabel1, new

org.netbeans.lib.awtextra.AbsoluteConstraints(130, 0, -1, 70));

btnClose.setBackground(new java.awt.Color(153, 0, 0));

btnClose.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N

btnClose.setForeground(new java.awt.Color(255, 255, 255));

btnClose.setText("X");

btnClose.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnCloseActionPerformed(evt);

}

});

jPanel2.add(btnClose, new

org.netbeans.lib.awtextra.AbsoluteConstraints(360, 0, -1, -1));

jPanel1.add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0,

400, 70));

jPanel4.setBackground(new java.awt.Color(255, 118, 117));

jPanel4.setPreferredSize(new java.awt.Dimension(400, 100));

jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel3.setBackground(new java.awt.Color(255, 255, 255));

jLabel3.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel3.setForeground(new java.awt.Color(255, 255, 255));

jLabel3.setText("Masukan Username");

jPanel4.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(70,

0, -1, 30));

jPanel1.add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(0,

180, -1, 30));

jLabel4.setBackground(new java.awt.Color(255, 255, 255));

jLabel4.setFont(new java.awt.Font("Segoe UI", 0, 22)); // NOI18N

jLabel4.setForeground(new java.awt.Color(255, 255, 255));

Page 55: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

79

jLabel4.setText("Form Login");

jPanel1.add(jLabel4, new

org.netbeans.lib.awtextra.AbsoluteConstraints(140, 110, -1, 40));

jPanel5.setBackground(new java.awt.Color(255, 118, 117));

jPanel5.setPreferredSize(new java.awt.Dimension(400, 100));

jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel5.setBackground(new java.awt.Color(255, 255, 255));

jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel5.setForeground(new java.awt.Color(255, 255, 255));

jLabel5.setText("Masukan Password");

jPanel5.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(70,

0, -1, 30));

jPanel1.add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(0,

270, -1, 30));

jSeparator2.setForeground(new java.awt.Color(255, 255, 255));

jPanel1.add(jSeparator2, new

org.netbeans.lib.awtextra.AbsoluteConstraints(130, 150, 130, 10));

txtLogin.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtLogin.setForeground(new java.awt.Color(255, 255, 255));

txtLogin.setText("FIN-001");

txtLogin.setBorder(null);

txtLogin.setCaretColor(new java.awt.Color(255, 255, 255));

txtLogin.setOpaque(false);

jPanel1.add(txtLogin, new org.netbeans.lib.awtextra.AbsoluteConstraints(70,

220, 253, 30));

jSeparator3.setForeground(new java.awt.Color(255, 255, 255));

jPanel1.add(jSeparator3, new

org.netbeans.lib.awtextra.AbsoluteConstraints(70, 250, 250, 10));

txtPassword.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtPassword.setForeground(new java.awt.Color(255, 255, 255));

txtPassword.setText("jPasswordField1");

txtPassword.setBorder(null);

txtPassword.setCaretColor(new java.awt.Color(255, 255, 255));

txtPassword.setOpaque(false);

txtPassword.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

txtPasswordKeyPressed(evt);

}

});

jPanel1.add(txtPassword, new

org.netbeans.lib.awtextra.AbsoluteConstraints(70, 310, 250, 30));

Page 56: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

80

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jPanel1.add(jSeparator1, new

org.netbeans.lib.awtextra.AbsoluteConstraints(70, 340, 250, 10));

btnLogin.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

btnLogin.setText("Login");

btnLogin.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnLoginActionPerformed(evt);

}

});

jPanel1.add(btnLogin, new

org.netbeans.lib.awtextra.AbsoluteConstraints(70, 360, 250, -1));

getContentPane().add(jPanel1, new

org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, 450));

pack();

}// </editor-fold>

private void txtPasswordKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

btnLoginActionPerformed(null);

}

}

private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {

if("".equals(txtLogin.getText())&&"".equals(txtPassword.getText())){

JOptionPane.showMessageDialog(null, "Masukan Username dan

Password!");

}else if("".equals(txtLogin.getText())){

JOptionPane.showMessageDialog(null, "Masukan Username!");

}else if("".equals(txtPassword.getText())){

JOptionPane.showMessageDialog(null, "Masukan password!");

}else{

login();

}

}

private void formMousePressed(java.awt.event.MouseEvent evt) {

xx = evt.getX();

xy = evt.getY();

}

private void formMouseDragged(java.awt.event.MouseEvent evt) {

int x = evt.getXOnScreen();

int y = evt.getYOnScreen();

this.setLocation(x -xx, y -xy);

Page 57: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

81

}

private void btnCloseActionPerformed(java.awt.event.ActionEvent evt) {

System.exit(0);

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code

(optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default

look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Windows".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(FormLogin.class.getName()).log(java.util.log

ging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(FormLogin.class.getName()).log(java.util.log

ging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(FormLogin.class.getName()).log(java.util.log

ging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(FormLogin.class.getName()).log(java.util.log

ging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

Page 58: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

82

new FormLogin().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton btnClose;

private javax.swing.JButton btnLogin;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2;

private javax.swing.JPanel jPanel4;

private javax.swing.JPanel jPanel5;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JSeparator jSeparator2;

private javax.swing.JSeparator jSeparator3;

private javax.swing.JTextField txtLogin;

private javax.swing.JPasswordField txtPassword;

// End of variables declaration

}

B. Form Data Supplier

package fladeoapp.form;

import fladeoapp.controller.SupplierController;

import fladeoapp.data.Supplier;

import fladeoapp.FladeoApp;

import java.awt.Font;

import java.awt.event.KeyEvent;

import javax.swing.JOptionPane;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.table.DefaultTableModel;

public class FormSupplier extends javax.swing.JInternalFrame implements

NavigatorFormInterface{

Supplier supplier = new Supplier();

SupplierController supCont = new SupplierController(FladeoApp.emf);

DefaultTableModel model;

FormUtama formUtama = FormUtama.staticUtama;

boolean update = false;

Page 59: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

83

String updateKode = "";

/**

* Creates new form FormSupplier

*/

public FormSupplier() {

initComponents();

((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);

this.setBorder(null);

model=new DefaultTableModel(){

@Override

public boolean isCellEditable(int row, int column) {

return false;

}

};

model.addColumn("Kode Supplier");

model.addColumn("Nama");

model.addColumn("Telepon");

model.addColumn("Kota");

model.addColumn("Alamat");

tableSupplier.getTableHeader().setFont(new Font("Segoe UI", Font.BOLD,

12));

tidakAktif();

formUtama.buttonOff();

formUtama.getTambahBtn().setEnabled(true);

panjangKarakter();

}

private void panjangKarakter(){

txtKode.setDocument(new JTextFieldLimit((3)));

txtNmSupplier.setDocument(new JTextFieldLimit((25)));

txtAlamat.setDocument(new JTextFieldLimit((50)));

txtTelp.setDocument(new JTextFieldLimit((12)));

txtKota.setDocument(new JTextFieldLimit((15)));

}

private void tidakAktif(){

txtKode.setEnabled(false);

txtNmSupplier.setEnabled(false);

txtTelp.setEnabled(false);

txtKota.setEnabled(false);

txtAlamat.setEnabled(false);

txtCari.setEnabled(false);

}

private void showTable(){

Page 60: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

84

tableSupplier.setModel(supCont.findAllSupplier(model));

}

private void cariTable(String cari){

DefaultTableModel x=supCont.searchSupplier(model,cari);

if(x.getRowCount()==0){

JOptionPane.showMessageDialog(null, "Data tidak ditemukan!");

}else{

if(cari.isEmpty()){

showTable();

}else{

tableSupplier.setModel(supCont.searchSupplier(model,cari));

}

}

}

private void seleksiBaris(){

tableSupplier.getSelectionModel().addListSelectionListener(new

ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

int baris=tableSupplier.getSelectedRow();

if(baris != -1){

txtKode.setText(tableSupplier.getValueAt(baris, 0).toString());

txtNmSupplier.setText(tableSupplier.getValueAt(baris, 1).toString());

txtTelp.setText(tableSupplier.getValueAt(baris, 2).toString());

txtKota.setText(tableSupplier.getValueAt(baris, 3).toString());

txtAlamat.setText(tableSupplier.getValueAt(baris, 4).toString());

txtKode.requestFocus();

}

}

});

}

private void validasiKodeSupplier(){

supplier = supCont.findSupplier(txtKode.getText());

if(supplier != null){

if(JOptionPane.showConfirmDialog(null, "Kode Supplier eksis! Mau edit

data?", "Warning",

JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){

txtNmSupplier.setText(supplier.getNmSupplier());

txtTelp.setText(supplier.getTelepon());

txtKota.setText(supplier.getKota());

txtAlamat.setText(supplier.getAlamat());

txtNmSupplier.requestFocus();

}else{

txtKode.setText("");

txtNmSupplier.setText("");

Page 61: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

85

txtTelp.setText("");

txtKota.setText("");

txtAlamat.setText("");

txtKode.requestFocus();

}

}

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

jLabel3 = new javax.swing.JLabel();

txtNmSupplier = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

txtTelp = new javax.swing.JTextField();

jLabel5 = new javax.swing.JLabel();

txtKota = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

jLabel2 = new javax.swing.JLabel();

jLabel7 = new javax.swing.JLabel();

jScrollPane2 = new javax.swing.JScrollPane();

txtAlamat = new javax.swing.JTextArea();

txtKode = new javax.swing.JTextField();

jScrollPane1 = new javax.swing.JScrollPane();

tableSupplier = new javax.swing.JTable();

jLabel6 = new javax.swing.JLabel();

txtCari = new javax.swing.JTextField();

setBackground(new java.awt.Color(255, 255, 255));

jPanel1.setBackground(new java.awt.Color(255, 118, 117));

jLabel3.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel3.setForeground(new java.awt.Color(255, 255, 255));

jLabel3.setText("Nama Supplier");

txtNmSupplier.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

Page 62: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

86

txtNmSupplier.setForeground(new java.awt.Color(51, 51, 51));

jLabel4.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel4.setForeground(new java.awt.Color(255, 255, 255));

jLabel4.setText("No. Telepon");

txtTelp.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTelp.setForeground(new java.awt.Color(51, 51, 51));

txtTelp.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtTelpKeyTyped(evt);

}

});

jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel5.setForeground(new java.awt.Color(255, 255, 255));

jLabel5.setText("Kota");

txtKota.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtKota.setForeground(new java.awt.Color(51, 51, 51));

jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N

jLabel1.setForeground(new java.awt.Color(255, 255, 255));

jLabel1.setText("Form Supplier");

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel2.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setText("Kode Supplier");

jLabel7.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel7.setForeground(new java.awt.Color(255, 255, 255));

jLabel7.setText("Alamat");

txtAlamat.setColumns(20);

txtAlamat.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtAlamat.setForeground(new java.awt.Color(51, 51, 51));

txtAlamat.setLineWrap(true);

txtAlamat.setRows(5);

txtAlamat.setWrapStyleWord(true);

jScrollPane2.setViewportView(txtAlamat);

txtKode.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtKode.setForeground(new java.awt.Color(51, 51, 51));

txtKode.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtKodeKeyTyped(evt);

Page 63: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

87

}

});

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addComponent(jSeparator1,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel5,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtKota,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel2,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtKode,

javax.swing.GroupLayout.PREFERRED_SIZE, 80,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(188, 188, 188)

Page 64: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

88

.addComponent(jLabel7,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel3,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtNmSupplier,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel4,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtTelp,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(303, Short.MAX_VALUE))

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGap(77, 77, 77)

.addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE, 122,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,

jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

Page 65: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

89

.addComponent(jSeparator1,

javax.swing.GroupLayout.PREFERRED_SIZE, 10,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(jLabel2)

.addComponent(jLabel7)

.addComponent(txtKode,

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

ent.BASELINE)

.addComponent(jLabel3)

.addComponent(txtNmSupplier,

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

ent.BASELINE)

.addComponent(jLabel4)

.addComponent(txtTelp,

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

ent.BASELINE)

.addComponent(jLabel5)

.addComponent(txtKota,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))))

.addContainerGap(21, Short.MAX_VALUE))

);

tableSupplier.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N

tableSupplier.setForeground(new java.awt.Color(51, 51, 51));

Page 66: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

90

tableSupplier.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

},

new String [] {

"Kode Supplier", "Nama", "Telepon", "Kota", "Alamat"

}

));

tableSupplier.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

tableSupplierMouseClicked(evt);

}

});

jScrollPane1.setViewportView(tableSupplier);

jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel6.setForeground(new java.awt.Color(51, 51, 51));

jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);

jLabel6.setText("Cari Supplier");

txtCari.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtCari.setForeground(new java.awt.Color(51, 51, 51));

txtCari.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

txtCariKeyPressed(evt);

}

});

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)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA

DING)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 995, Short.MAX_VALUE)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel6)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

Page 67: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

91

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(0, 0, Short.MAX_VALUE)))

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

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS

ELINE)

.addComponent(jLabel6)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)

.addContainerGap())

);

pack();

}// </editor-fold>

private void txtCariKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

cariTable(txtCari.getText());

}

}

private void txtTelpKeyTyped(java.awt.event.KeyEvent evt) {

char c=evt.getKeyChar();

if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) ||

c==KeyEvent.VK_DELETE)){

getToolkit().beep();

evt.consume();

}

}

Page 68: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

92

private void txtKodeKeyTyped(java.awt.event.KeyEvent evt) {

char keyChar = evt.getKeyChar();

if (Character.isLowerCase(keyChar)) {

evt.setKeyChar(Character.toUpperCase(keyChar));

}

}

private void tableSupplierMouseClicked(java.awt.event.MouseEvent evt) {

if(evt.getClickCount() == 2){

if(JOptionPane.showConfirmDialog(null, "Edit data ini?", "Warning",

JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){

int row = tableSupplier.getSelectedRow();

supplier = supCont.findSupplier(tableSupplier.getValueAt(row,

0).toString());

txtKode.setText(supplier.getKdSupplier());

txtNmSupplier.setText(supplier.getNmSupplier());

txtTelp.setText(supplier.getTelepon());

txtKota.setText(supplier.getKota());

txtAlamat.setText(supplier.getAlamat());

txtNmSupplier.requestFocus();

update = true;

updateKode = supplier.getKdSupplier();

}

}

}

// Variables declaration - do not modify

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane2;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JTable tableSupplier;

private javax.swing.JTextArea txtAlamat;

private javax.swing.JTextField txtCari;

private javax.swing.JTextField txtKode;

private javax.swing.JTextField txtKota;

private javax.swing.JTextField txtNmSupplier;

private javax.swing.JTextField txtTelp;

// End of variables declaration

Page 69: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

93

@Override

public void aktif() {

txtKode.setEnabled(true);

txtNmSupplier.setEnabled(true);

txtTelp.setEnabled(true);

txtKota.setEnabled(true);

txtAlamat.setEnabled(true);

txtCari.setEnabled(true);

bersih();

txtKode.requestFocus();

seleksiBaris();

formUtama.getSimpanBtn().setEnabled(true);

formUtama.getDeleteBtn().setEnabled(true);

}

@Override

public void bersih() {

txtKode.setText("");

txtNmSupplier.setText("");

txtTelp.setText("");

txtKota.setText("");

txtAlamat.setText("");

txtCari.setText("");

txtKode.requestFocus();

showTable();

update = false;

}

@Override

public void simpan() {

if(txtNmSupplier.getText().isEmpty() || txtTelp.getText().isEmpty() ||

txtKota.getText().isEmpty() || txtAlamat.getText().isEmpty()){

JOptionPane.showMessageDialog(null, "Data belum lengkap!");

}else if(txtKode.getText().isEmpty()){

JOptionPane.showMessageDialog(null, "Kode harus diisi!");

}else if(txtKode.getText().length() < 3){

JOptionPane.showMessageDialog(null, "Kode harus 3 digit!");

}else{

supplier=supCont.findSupplier(txtKode.getText());

Supplier Sup=new Supplier();

if(supplier==null){

supplier = supCont.findSupplierByName(txtNmSupplier.getText());

if(supplier != null){

JOptionPane.showMessageDialog(null, "Nama supplier eksis!");

return;

}

Sup.setKdSupplier(txtKode.getText());

Sup.setNmSupplier(txtNmSupplier.getText());

Page 70: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

94

Sup.setTelepon(txtTelp.getText());

Sup.setKota(txtKota.getText());

Sup.setAlamat(txtAlamat.getText());

try{

supCont.save(Sup);

}catch(Exception ex){

ex.printStackTrace();

}

JOptionPane.showMessageDialog(null, "Data baru berhasil

disimpan!");

bersih();

}else{

if(update == true &&

updateKode.equalsIgnoreCase(txtKode.getText())){

Supplier s = new Supplier();

s = supCont.findSupplierByName(txtNmSupplier.getText());

if(s != null){

JOptionPane.showMessageDialog(null, "Nama supplier eksis!");

bersih();

return;

}else{

Sup.setKdSupplier(txtKode.getText());

Sup.setNmSupplier(txtNmSupplier.getText());

Sup.setTelepon(txtTelp.getText());

Sup.setKota(txtKota.getText());

Sup.setAlamat(txtAlamat.getText());

try{

supCont.update(Sup);

}catch(Exception ex){

ex.printStackTrace();

}

JOptionPane.showMessageDialog(null, "Data berhasil diupdate!");

bersih();

}

}else{

JOptionPane.showMessageDialog(null, "Data Eksis!");

bersih();

}

}

}

}

@Override

public void hapus() {

int baris = tableSupplier.getSelectedRow();

if(baris==-1){

JOptionPane.showMessageDialog(null, "Pilih data yang mau dihapus!");

}else{

Page 71: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

95

try{

supCont.delete(txtKode.getText());

JOptionPane.showMessageDialog(null, "Data telah dihapus!");

}catch(Exception ex){

ex.printStackTrace();

}

bersih();

}

}

@Override

public void cari() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

@Override

public void tampil() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

}

C. Form Data Perkiraan

package fladeoapp.form;

import fladeoapp.controller.DataPerkiraanController;

import fladeoapp.data.DataPerkiraan;

import fladeoapp.FladeoApp;

import java.awt.Font;

import java.awt.event.KeyEvent;

import java.util.List;

import javax.swing.JOptionPane;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.table.DefaultTableModel;

public class FormPerkiraan extends javax.swing.JInternalFrame implements

NavigatorFormInterface{

DataPerkiraan dataAkun = new DataPerkiraan();

DataPerkiraanController perkiraanCont = new

DataPerkiraanController(FladeoApp.emf);

DefaultTableModel model;

Page 72: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

96

FormUtama formUtama = FormUtama.staticUtama;

/**

* Creates new form FormAkun

*/

public FormPerkiraan() {

initComponents();

((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);

this.setBorder(null);

model=new DefaultTableModel(){

@Override

public boolean isCellEditable(int row, int column) {

return false;

}

};

model.addColumn("Kode Perkiraan");

model.addColumn("Nama Perkiraan");

tableAkun.getTableHeader().setFont(new Font("Segoe UI", Font.BOLD,

12));

tidakAktif();

panjangKarakter();

}

private void panjangKarakter(){

txtKdAkun.setDocument(new JTextFieldLimit((4)));

txtNamaAkun.setDocument(new JTextFieldLimit((15)));

}

private void tidakAktif(){

txtKdAkun.setEnabled(false);

txtNamaAkun.setEnabled(false);

txtCari.setEnabled(false);

formUtama.getTambahBtn().setEnabled(true);

}

private void showTable(){

model.getDataVector().removeAllElements();

model.fireTableDataChanged();

List<DataPerkiraan> listPerkiraan = perkiraanCont.findAllPerkiraan();

for(DataPerkiraan perkiraan : listPerkiraan){

Object[] obj = new Object[2];

obj[0] = perkiraan.getKdPerkiraan();

obj[1] = perkiraan.getNmPerkiraan();

model.addRow(obj);

}

tableAkun.setModel(model);

}

Page 73: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

97

private void cariTable(String cari){

DefaultTableModel x=perkiraanCont.findOneAkunToTable(model,cari);

if(x.getRowCount()==0){

JOptionPane.showMessageDialog(null, "Data tidak ditemukan!");

}else{

if(cari.isEmpty()){

showTable();

}else{

tableAkun.setModel(perkiraanCont.findOneAkunToTable(model,cari));

}

}

}

private void seleksiBaris(){

tableAkun.getSelectionModel().addListSelectionListener(new

ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

int baris=tableAkun.getSelectedRow();

if(baris != -1){

txtKdAkun.setText(tableAkun.getValueAt(baris, 0).toString());

txtNamaAkun.setText(tableAkun.getValueAt(baris, 1).toString());

}

}

});

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

jLabel3 = new javax.swing.JLabel();

txtNamaAkun = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

jLabel2 = new javax.swing.JLabel();

txtKdAkun = new javax.swing.JTextField();

jScrollPane1 = new javax.swing.JScrollPane();

tableAkun = new javax.swing.JTable();

jLabel6 = new javax.swing.JLabel();

txtCari = new javax.swing.JTextField();

Page 74: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

98

setBackground(new java.awt.Color(255, 255, 255));

jPanel1.setBackground(new java.awt.Color(255, 118, 117));

jLabel3.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel3.setForeground(new java.awt.Color(255, 255, 255));

jLabel3.setText("Nama Perkiraan");

txtNamaAkun.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtNamaAkun.setForeground(new java.awt.Color(51, 51, 51));

jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N

jLabel1.setForeground(new java.awt.Color(255, 255, 255));

jLabel1.setText("Form Perkiraan");

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel2.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setText("Kode Perkiraan");

txtKdAkun.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtKdAkun.setForeground(new java.awt.Color(51, 51, 51));

txtKdAkun.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtKdAkunKeyTyped(evt);

}

});

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addComponent(jSeparator1,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.LEADING,

Page 75: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

99

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING, false)

.addComponent(jLabel3,

javax.swing.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE)

.addComponent(jLabel2,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING)

.addComponent(txtNamaAkun,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(txtKdAkun,

javax.swing.GroupLayout.PREFERRED_SIZE, 115,

javax.swing.GroupLayout.PREFERRED_SIZE))))

.addContainerGap(633, Short.MAX_VALUE))

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jSeparator1,

javax.swing.GroupLayout.PREFERRED_SIZE, 10,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(jLabel2)

.addComponent(txtKdAkun,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

Page 76: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

100

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(jLabel3)

.addComponent(txtNamaAkun,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addContainerGap(85, Short.MAX_VALUE))

);

tableAkun.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N

tableAkun.setForeground(new java.awt.Color(51, 51, 51));

tableAkun.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

{null, null},

{null, null},

{null, null},

{null, null}

},

new String [] {

"Kode Perkiraan", "Nama Perkiraan"

}

));

jScrollPane1.setViewportView(tableAkun);

jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel6.setForeground(new java.awt.Color(51, 51, 51));

jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);

jLabel6.setText("Cari");

txtCari.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtCari.setForeground(new java.awt.Color(51, 51, 51));

txtCari.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

txtCariKeyPressed(evt);

}

});

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)

.addGroup(layout.createSequentialGroup()

Page 77: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

101

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA

DING)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 995, Short.MAX_VALUE)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel6)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(0, 0, Short.MAX_VALUE)))

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

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS

ELINE)

.addComponent(jLabel6)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 224, Short.MAX_VALUE)

.addContainerGap())

);

pack();

}// </editor-fold>

private void txtCariKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

cariTable(txtCari.getText());

}

Page 78: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

102

}

private void txtKdAkunKeyTyped(java.awt.event.KeyEvent evt) {

char c=evt.getKeyChar();

if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) ||

c==KeyEvent.VK_DELETE)){

getToolkit().beep();

evt.consume();

}

}

// Variables declaration - do not modify

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel6;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JTable tableAkun;

private javax.swing.JTextField txtCari;

private javax.swing.JTextField txtKdAkun;

private javax.swing.JTextField txtNamaAkun;

// End of variables declaration

@Override

public void aktif() {

txtKdAkun.setEnabled(true);

txtNamaAkun.setEnabled(true);

txtCari.setEnabled(true);

bersih();

seleksiBaris();

formUtama.buttonOn();

}

@Override

public void bersih() {

txtNamaAkun.setText("");

txtCari.setText("");

txtKdAkun.setText("");

txtKdAkun.requestFocus();

showTable();

}

@Override

public void simpan() {

Page 79: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

103

if(txtNamaAkun.getText().equalsIgnoreCase("") ||

txtKdAkun.getText().equalsIgnoreCase("")){

JOptionPane.showMessageDialog(null, "Masukan nama perkiraan!");

}else{

dataAkun=perkiraanCont.findDataPerkiraan(txtKdAkun.getText());

DataPerkiraan da=new DataPerkiraan();

if(dataAkun==null){

da.setKdPerkiraan(txtKdAkun.getText());

da.setNmPerkiraan(txtNamaAkun.getText());

try{

perkiraanCont.save(da);

}catch(Exception ex){

ex.printStackTrace();

}

JOptionPane.showMessageDialog(null, "Data berhasil disimpan!");

}else{

da.setKdPerkiraan(txtKdAkun.getText());

da.setNmPerkiraan(txtNamaAkun.getText());

try{

perkiraanCont.update(da);

}catch(Exception ex){

ex.printStackTrace();

}

JOptionPane.showMessageDialog(null, "Data berhasil diupdate!");

}

bersih();

}

}

@Override

public void hapus() {

int baris = tableAkun.getSelectedRow();

if(baris==-1){

JOptionPane.showMessageDialog(null, "Pilih data yang mau dihapus!");

}else{

try{

perkiraanCont.delete(txtKdAkun.getText());

JOptionPane.showMessageDialog(null, "Data telah dihapus!");

}catch(Exception ex){

ex.printStackTrace();

}

bersih();

}

}

@Override

Page 80: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

104

public void cari() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

@Override

public void tampil() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

}

D. Form Purchase Order

package fladeoapp.form;

import fladeoapp.controller.PurchaseOrderController;

import fladeoapp.data.PurchaseOrder;

import fladeoapp.FladeoApp;

import fladeoapp.data.User;

import java.awt.Font;

import java.awt.event.KeyEvent;

import java.util.List;

import javax.swing.JDesktopPane;

import javax.swing.JOptionPane;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.table.DefaultTableModel;

public class FormPurchaseOrder extends javax.swing.JInternalFrame implements

NavigatorFormInterface{

PurchaseOrder po = new PurchaseOrder();

PurchaseOrderController poCont = new

PurchaseOrderController(FladeoApp.emf);

User userLogin = new User();

DefaultTableModel model;

boolean tombolKembali = false;

FormUtama formUtama = FormUtama.staticUtama;

/**

* Creates new form FormPurchaseOrder

*/

public FormPurchaseOrder(User user) {

initComponents();

((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);

this.setBorder(null);

Page 81: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

105

model=new DefaultTableModel();

model.addColumn("Nomor PO");

model.addColumn("Tgl. Buat");

model.addColumn("Tgl. Kirim");

model.addColumn("Supplier");

model.addColumn("Total Qty");

model.addColumn("Username");

tablePO.getTableHeader().setFont(new Font("Segoe UI", Font.BOLD, 12));

tidakAktif();

userLogin = user;

formUtama.buttonOff();

formUtama.getTambahBtn().setEnabled(true);

}

private void tidakAktif(){

txtNoPO.setEnabled(false);

txtTglBuat.setEnabled(false);

txtTglKirim.setEnabled(false);

txtSupplier.setEnabled(false);

txtTotalQty.setEnabled(false);

txtUsername.setEnabled(false);

txtCari.setEnabled(false);

btnBuatPO.setEnabled(false);

btnDetailPO.setEnabled(false);

}

private void showTable(){

model.getDataVector().removeAllElements();

model.fireTableDataChanged();

List<Object[]> listPO = poCont.findAllPurchaseOrder();

for(Object[] po : listPO){

model.addRow(po);

}

tablePO.setModel(model);

}

private void cariTable(String cari){

List<Object[]> listPO = poCont.searchPurchaseOrder(cari);

if(listPO.isEmpty()){

JOptionPane.showMessageDialog(null, "Data tidak ditemukan!");

}else{

if(cari.isEmpty()){

showTable();

}else{

model.getDataVector().removeAllElements();

model.fireTableDataChanged();

for(Object[] po : listPO){

model.addRow(po);

Page 82: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

106

}

tablePO.setModel(model);

}

}

}

private void seleksiBaris(){

tablePO.getSelectionModel().addListSelectionListener(new

ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

int baris=tablePO.getSelectedRow();

if(baris != -1){

txtNoPO.setText(tablePO.getValueAt(baris, 0).toString());

txtTglBuat.setText(tablePO.getValueAt(baris, 1).toString());

txtTglKirim.setText(tablePO.getValueAt(baris, 2).toString());

txtSupplier.setText(tablePO.getValueAt(baris, 3).toString());

txtTotalQty.setText(tablePO.getValueAt(baris, 4).toString());

txtUsername.setText(tablePO.getValueAt(baris, 5).toString());

}

}

});

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jLabel5 = new javax.swing.JLabel();

txtNamaAkun2 = new javax.swing.JTextField();

jPanel1 = new javax.swing.JPanel();

jLabel3 = new javax.swing.JLabel();

txtTglBuat = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

jLabel2 = new javax.swing.JLabel();

txtNoPO = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

txtTglKirim = new javax.swing.JTextField();

txtSupplier = new javax.swing.JTextField();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

Page 83: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

107

txtTotalQty = new javax.swing.JTextField();

txtUsername = new javax.swing.JTextField();

jLabel9 = new javax.swing.JLabel();

btnBuatPO = new javax.swing.JButton();

btnDetailPO = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

tablePO = new javax.swing.JTable();

jLabel6 = new javax.swing.JLabel();

txtCari = new javax.swing.JTextField();

jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel5.setForeground(new java.awt.Color(255, 255, 255));

jLabel5.setText("Tgl. Kirim");

txtNamaAkun2.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtNamaAkun2.setForeground(new java.awt.Color(51, 51, 51));

setBackground(new java.awt.Color(255, 255, 255));

jPanel1.setBackground(new java.awt.Color(255, 118, 117));

jLabel3.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel3.setForeground(new java.awt.Color(255, 255, 255));

jLabel3.setText("Tgl. buat");

txtTglBuat.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTglBuat.setForeground(new java.awt.Color(51, 51, 51));

jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N

jLabel1.setForeground(new java.awt.Color(255, 255, 255));

jLabel1.setText("Form Purchase Order");

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel2.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setText("Nomor PO");

txtNoPO.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtNoPO.setForeground(new java.awt.Color(51, 51, 51));

jLabel4.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel4.setForeground(new java.awt.Color(255, 255, 255));

jLabel4.setText("Tgl. Kirim");

txtTglKirim.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTglKirim.setForeground(new java.awt.Color(51, 51, 51));

Page 84: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

108

txtSupplier.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtSupplier.setForeground(new java.awt.Color(51, 51, 51));

jLabel7.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel7.setForeground(new java.awt.Color(255, 255, 255));

jLabel7.setText("Supplier");

jLabel8.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel8.setForeground(new java.awt.Color(255, 255, 255));

jLabel8.setText("Total Qty");

txtTotalQty.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTotalQty.setForeground(new java.awt.Color(51, 51, 51));

txtUsername.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtUsername.setForeground(new java.awt.Color(51, 51, 51));

jLabel9.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel9.setForeground(new java.awt.Color(255, 255, 255));

jLabel9.setText("Username");

btnBuatPO.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

btnBuatPO.setText("Buat PO Baru");

btnBuatPO.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnBuatPOActionPerformed(evt);

}

});

btnDetailPO.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

btnDetailPO.setText("Lihat Detail PO");

btnDetailPO.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnDetailPOActionPerformed(evt);

}

});

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

Page 85: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

109

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel2,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtNoPO,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel7,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtSupplier,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel3,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtTglBuat,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel8,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtTotalQty,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addComponent(jSeparator1,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

Page 86: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

110

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel4,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtTglKirim,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(jLabel9,

javax.swing.GroupLayout.PREFERRED_SIZE, 90,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtUsername,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(btnBuatPO,

javax.swing.GroupLayout.PREFERRED_SIZE, 180,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(btnDetailPO,

javax.swing.GroupLayout.PREFERRED_SIZE, 180,

javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jSeparator1,

javax.swing.GroupLayout.PREFERRED_SIZE, 10,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(btnBuatPO)

Page 87: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

111

.addComponent(btnDetailPO))

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(jLabel2)

.addComponent(txtNoPO,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel7)

.addComponent(txtSupplier,

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

ent.BASELINE)

.addComponent(jLabel3)

.addComponent(txtTglBuat,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel8)

.addComponent(txtTotalQty,

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

ent.BASELINE)

.addComponent(jLabel4)

.addComponent(txtTglKirim,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel9)

.addComponent(txtUsername,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

Page 88: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

112

tablePO.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N

tablePO.setForeground(new java.awt.Color(51, 51, 51));

tablePO.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

},

new String [] {

"Nomor PO", "Tgl. Buat", "Tgl. Kirim", "Supplier", "Total Qty",

"Username"

}

));

jScrollPane1.setViewportView(tablePO);

jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel6.setForeground(new java.awt.Color(51, 51, 51));

jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);

jLabel6.setText("Cari ");

txtCari.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtCari.setForeground(new java.awt.Color(51, 51, 51));

txtCari.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

txtCariKeyPressed(evt);

}

});

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)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA

DING)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 995, Short.MAX_VALUE)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel6)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

Page 89: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

113

.addGap(0, 0, Short.MAX_VALUE)))

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

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS

ELINE)

.addComponent(jLabel6)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)

.addContainerGap())

);

pack();

}// </editor-fold>

private void txtCariKeyPressed(java.awt.event.KeyEvent evt) {

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

cariTable(txtCari.getText());

}

}

private void btnBuatPOActionPerformed(java.awt.event.ActionEvent evt) {

po = null;

FormDetailPurchaseOrder formDetail = new

FormDetailPurchaseOrder(userLogin, po, tombolKembali);

JDesktopPane desktopPane = getDesktopPane();

desktopPane.add(formDetail);

formDetail.setVisible(true);

this.dispose();

}

private void btnDetailPOActionPerformed(java.awt.event.ActionEvent evt) {

Page 90: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

114

po = poCont.findPurchaseOrder(txtNoPO.getText());

FormDetailPurchaseOrder formDetail = new

FormDetailPurchaseOrder(userLogin, po, tombolKembali);

JDesktopPane desktopPane = getDesktopPane();

desktopPane.add(formDetail);

formDetail.setVisible(true);

this.dispose();

}

// Variables declaration - do not modify

private javax.swing.JButton btnBuatPO;

private javax.swing.JButton btnDetailPO;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JTable tablePO;

private javax.swing.JTextField txtCari;

private javax.swing.JTextField txtNamaAkun2;

private javax.swing.JTextField txtNoPO;

private javax.swing.JTextField txtSupplier;

private javax.swing.JTextField txtTglBuat;

private javax.swing.JTextField txtTglKirim;

private javax.swing.JTextField txtTotalQty;

private javax.swing.JTextField txtUsername;

// End of variables declaration

@Override

public void aktif() {

txtCari.setEnabled(true);

btnBuatPO.setEnabled(true);

btnDetailPO.setEnabled(true);

bersih();

seleksiBaris();

}

@Override

public void bersih() {

txtNoPO.setText("");

Page 91: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

115

txtTglBuat.setText("");

txtTglKirim.setText("");

txtSupplier.setText("");

txtTotalQty.setText("");

txtUsername.setText("");

txtCari.setText("");

showTable();

}

@Override

public void simpan() {

JOptionPane.showMessageDialog(null, "Buat PO baru untuk menyimpan

data!");

}

@Override

public void hapus() {

int baris = tablePO.getSelectedRow();

if(baris == -1){

JOptionPane.showMessageDialog(null, "Pilih data yang mau dihapus!");

}else{

PurchaseOrder pOrder = new PurchaseOrder();

try {

pOrder = poCont.findPurchaseOrder(txtNoPO.getText());

poCont.delete(pOrder.getNoPO());

} catch (Exception e) {

e.printStackTrace();

}

bersih();

}

}

@Override

public void cari() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

@Override

public void tampil() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

}

Page 92: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

116

E. Form Transaksi Pembelian

package fladeoapp.form;

import fladeoapp.FladeoApp;

import fladeoapp.controller.PenerimaanBarangController;

import fladeoapp.controller.TransaksiPembelianController;

import fladeoapp.data.PenerimaanBarang;

import fladeoapp.data.TransaksiPembelian;

import java.awt.Component;

import java.awt.Font;

import java.awt.event.KeyEvent;

import java.text.DecimalFormat;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Locale;

import javax.swing.DefaultComboBoxModel;

import javax.swing.JOptionPane;

import javax.swing.JTable;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableCellRenderer;

public class FormTransaksiPembelian extends javax.swing.JInternalFrame

implements NavigatorFormInterface{

TransaksiPembelian transaksi = new TransaksiPembelian();

PenerimaanBarang penerimaanBarang = new PenerimaanBarang();

TransaksiPembelianController transCont = new

TransaksiPembelianController(FladeoApp.emf);

PenerimaanBarangController pbCont = new

PenerimaanBarangController(FladeoApp.emf);

SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy",

Locale.forLanguageTag("id-ID"));

DefaultTableModel model;

DecimalFormat myFormatter = new DecimalFormat("###,###.##");

FormUtama formUtama = FormUtama.staticUtama;

/**

* Creates new form FormTransaksiPembelian

*/

public FormTransaksiPembelian() {

initComponents();

Page 93: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

117

((javax.swing.plaf.basic.BasicInternalFrameUI)this.getUI()).setNorthPane(null);

this.setBorder(null);

model=new DefaultTableModel(){

@Override

public boolean isCellEditable(int row, int column) {

return false;

}

};

model.addColumn("No. Transaksi");

model.addColumn("No. Tanda Terima");

model.addColumn("No. Invoice");

model.addColumn("Total Transaksi");

tableTransaksi.getTableHeader().setFont(new Font("Segoe UI", Font.BOLD,

12));

tidakAktif();

panjangKarakter();

formUtama.buttonOff();

formUtama.getTambahBtn().setEnabled(true);

}

private void tidakAktif(){

txtNoTrans.setEnabled(false);

txtNoInvoice.setEnabled(false);

cmbTandaTerima.setEnabled(false);

txtTglTandaTerima.setEnabled(false);

txtNoPO.setEnabled(false);

txtSupplier.setEnabled(false);

txtTglPO.setEnabled(false);

txtTglKirim.setEnabled(false);

txtTotalQty.setEnabled(false);

txtTotalBeli.setEnabled(false);

txtTotalTrans.setEnabled(false);

txtCari.setEnabled(false);

}

private void panjangKarakter(){

txtNoInvoice.setDocument(new JTextFieldLimit((10)));

}

private void comboBoxTandaTerima(){

List<Object[]> listPO =

pbCont.findAllNomorNotExistInTransaksiPembelian();

List<Object> list = new ArrayList<>();

for (Object[] po : listPO) {

list.add(po[0]);

}

cmbTandaTerima.setModel(new DefaultComboBoxModel(list.toArray()));

Page 94: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

118

}

private void showDataPenerimaanBarang(){

List<Object[]> listObj =

pbCont.findTotalPenerimaanBarang(cmbTandaTerima.getSelectedItem().toString

());

for(Object[] obj : listObj){

//pb.Tgl_Terima_Barang, pb.No_PO, sp.Nm_Supplier, po.Tgl_PO,

po.Tgl_Kirim, po.Total_Qty

txtTglTandaTerima.setText(sdf.format((Date) obj[1]));

txtNoPO.setText((String) obj[2]);

txtSupplier.setText((String) obj[3]);

txtTglPO.setText(sdf.format((Date) obj[4]));

txtTglKirim.setText(sdf.format((Date) obj[5]));

txtTotalQty.setText(myFormatter.format(obj[6]));

txtTotalBeli.setText(myFormatter.format(obj[7]));

txtTotalTrans.setText(myFormatter.format(obj[8]));

}

}

private void showTable(){

model.getDataVector().removeAllElements();

model.fireTableDataChanged();

List<TransaksiPembelian> listPO = transCont.findAllTransaksiPembelian();

for(TransaksiPembelian tp : listPO){

Object[] obj = new Object[4];

obj[0] = tp.getNoTransaksi();

obj[1] = tp.getNoTandaTerima();

obj[2] = tp.getNoInvoice();

obj[3] = tp.getTotalTransaksi();

model.addRow(obj);

}

tableTransaksi.setModel(model);

}

private void seleksiBaris(){

tableTransaksi.getSelectionModel().addListSelectionListener(new

ListSelectionListener() {

@Override

public void valueChanged(ListSelectionEvent e) {

int baris=tableTransaksi.getSelectedRow();

if(baris != -1){

txtNoTrans.setText(tableTransaksi.getValueAt(baris, 0).toString());

Object[] obj = {tableTransaksi.getValueAt(baris, 1)};

cmbTandaTerima.setModel(new DefaultComboBoxModel(obj));

txtNoInvoice.setText(tableTransaksi.getValueAt(baris, 2).toString());

showDataPenerimaanBarang();

Page 95: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

119

}

}

});

}

private void cariTable(String cari){

List<Object[]> listPb = transCont.searchTransaksiPembelian(cari);

if(listPb.isEmpty()){

JOptionPane.showMessageDialog(null, "Data tidak ditemukan!");

}else{

if(cari.isEmpty()){

showTable();

}else{

model.getDataVector().removeAllElements();

model.fireTableDataChanged();

for(Object[] pb : listPb){

model.addRow(pb);

}

tableTransaksi.setModel(model);

}

}

}

private void renderTableTotal(){

TableCellRenderer tbr = new DefaultTableCellRenderer(){

//SimpleDateFormat sdf=new SimpleDateFormat("dd MMMM yyyy",

Locale.forLanguageTag("in-ID"));

public Component getTableCellRendererComponent(JTable table,

Object value, boolean isSelected, boolean hasFocus,

int row, int column){

if(value instanceof Number){

value = myFormatter.format(value);

}

return super.getTableCellRendererComponent(table, value, isSelected,

hasFocus, row, column);

}

};

tableTransaksi.getColumnModel().getColumn(3).setCellRenderer(tbr);

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

always

* regenerated by the Form Editor.

Page 96: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

120

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel();

jLabel3 = new javax.swing.JLabel();

txtNoInvoice = new javax.swing.JTextField();

jLabel1 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

jLabel2 = new javax.swing.JLabel();

txtNoTrans = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

jLabel5 = new javax.swing.JLabel();

txtNoPO = new javax.swing.JTextField();

jLabel7 = new javax.swing.JLabel();

txtSupplier = new javax.swing.JTextField();

jLabel8 = new javax.swing.JLabel();

txtTglPO = new javax.swing.JTextField();

jLabel9 = new javax.swing.JLabel();

txtTglTandaTerima = new javax.swing.JTextField();

jLabel10 = new javax.swing.JLabel();

txtTglKirim = new javax.swing.JTextField();

jLabel12 = new javax.swing.JLabel();

txtTotalQty = new javax.swing.JTextField();

jLabel13 = new javax.swing.JLabel();

txtTotalBeli = new javax.swing.JTextField();

jLabel14 = new javax.swing.JLabel();

txtTotalTrans = new javax.swing.JTextField();

cmbTandaTerima = new javax.swing.JComboBox<>();

jScrollPane1 = new javax.swing.JScrollPane();

tableTransaksi = new javax.swing.JTable();

jLabel6 = new javax.swing.JLabel();

txtCari = new javax.swing.JTextField();

jPanel1.setBackground(new java.awt.Color(255, 118, 117));

jLabel3.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel3.setForeground(new java.awt.Color(255, 255, 255));

jLabel3.setText("No. Invoice");

txtNoInvoice.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtNoInvoice.setForeground(new java.awt.Color(51, 51, 51));

jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N

jLabel1.setForeground(new java.awt.Color(255, 255, 255));

jLabel1.setText("Form Transaksi");

Page 97: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

121

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel2.setForeground(new java.awt.Color(255, 255, 255));

jLabel2.setText("No. Transaksi");

txtNoTrans.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtNoTrans.setForeground(new java.awt.Color(51, 51, 51));

txtNoTrans.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtNoTransKeyTyped(evt);

}

});

jLabel4.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel4.setForeground(new java.awt.Color(255, 255, 255));

jLabel4.setText("No. Tanda Terima");

jLabel5.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel5.setForeground(new java.awt.Color(255, 255, 255));

jLabel5.setText("No. PO");

txtNoPO.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtNoPO.setForeground(new java.awt.Color(51, 51, 51));

txtNoPO.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtNoPOKeyTyped(evt);

}

});

jLabel7.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel7.setForeground(new java.awt.Color(255, 255, 255));

jLabel7.setText("Supplier");

txtSupplier.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtSupplier.setForeground(new java.awt.Color(51, 51, 51));

txtSupplier.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtSupplierKeyTyped(evt);

}

});

jLabel8.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel8.setForeground(new java.awt.Color(255, 255, 255));

jLabel8.setText("Tgl. PO");

txtTglPO.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTglPO.setForeground(new java.awt.Color(51, 51, 51));

Page 98: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

122

txtTglPO.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtTglPOKeyTyped(evt);

}

});

jLabel9.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel9.setForeground(new java.awt.Color(255, 255, 255));

jLabel9.setText("Tgl. Tanda Terima");

txtTglTandaTerima.setFont(new java.awt.Font("Segoe UI", 0, 14)); //

NOI18N

txtTglTandaTerima.setForeground(new java.awt.Color(51, 51, 51));

txtTglTandaTerima.addActionListener(new java.awt.event.ActionListener()

{

public void actionPerformed(java.awt.event.ActionEvent evt) {

txtTglTandaTerimaActionPerformed(evt);

}

});

jLabel10.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel10.setForeground(new java.awt.Color(255, 255, 255));

jLabel10.setText("Tgl. Kirim");

txtTglKirim.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTglKirim.setForeground(new java.awt.Color(51, 51, 51));

txtTglKirim.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtTglKirimKeyTyped(evt);

}

});

jLabel12.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel12.setForeground(new java.awt.Color(255, 255, 255));

jLabel12.setText("Total Qty");

txtTotalQty.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTotalQty.setForeground(new java.awt.Color(51, 51, 51));

txtTotalQty.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtTotalQtyKeyTyped(evt);

}

});

jLabel13.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel13.setForeground(new java.awt.Color(255, 255, 255));

jLabel13.setText("Total Beli");

Page 99: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

123

txtTotalBeli.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTotalBeli.setForeground(new java.awt.Color(51, 51, 51));

txtTotalBeli.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtTotalBeliKeyTyped(evt);

}

});

jLabel14.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel14.setForeground(new java.awt.Color(255, 255, 255));

jLabel14.setText("Total Transaksi");

txtTotalTrans.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtTotalTrans.setForeground(new java.awt.Color(51, 51, 51));

txtTotalTrans.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyTyped(java.awt.event.KeyEvent evt) {

txtTotalTransKeyTyped(evt);

}

});

cmbTandaTerima.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

cmbTandaTerima.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

cmbTandaTerimaActionPerformed(evt);

}

});

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addComponent(jSeparator1,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

Page 100: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

124

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel9,

javax.swing.GroupLayout.PREFERRED_SIZE, 107,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(txtTglTandaTerima))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,

jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING, false)

.addComponent(jLabel3,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel2,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel4,

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

ent.TRAILING, false)

.addComponent(txtNoInvoice,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(txtNoTrans,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(cmbTandaTerima,

javax.swing.GroupLayout.Alignment.LEADING, 0, 160,

Short.MAX_VALUE))))

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING, false)

.addComponent(jLabel8,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel7,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

Page 101: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

125

.addComponent(jLabel5,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel10)

.addGap(16, 16, 16)))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addComponent(txtSupplier,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(txtNoPO,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(txtTglPO)

.addComponent(txtTglKirim,

javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.PREFERRED_SIZE, 160,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING, false)

.addComponent(jLabel14,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel13,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel12,

javax.swing.GroupLayout.PREFERRED_SIZE, 72,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING, false)

.addComponent(txtTotalBeli,

javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE, 160, Short.MAX_VALUE)

.addComponent(txtTotalQty,

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(txtTotalTrans))))

.addContainerGap(188, Short.MAX_VALUE))

);

jPanel1Layout.setVerticalGroup(

Page 102: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

126

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG)

.addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.TRAILING)

.addGroup(jPanel1Layout.createSequentialGroup()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(jLabel12)

.addComponent(txtTotalQty,

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

ent.BASELINE)

.addComponent(jLabel13)

.addComponent(txtTotalBeli,

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

ent.BASELINE)

.addComponent(jLabel14)

.addComponent(txtTotalTrans,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(32, 32, 32))

.addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jSeparator1,

javax.swing.GroupLayout.PREFERRED_SIZE, 10,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

Page 103: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

127

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE)

.addComponent(jLabel2)

.addComponent(txtNoTrans,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel5)

.addComponent(txtNoPO,

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

ent.BASELINE)

.addComponent(jLabel3)

.addComponent(txtNoInvoice,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel7)

.addComponent(txtSupplier,

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

ent.BASELINE)

.addComponent(jLabel4)

.addComponent(jLabel8)

.addComponent(txtTglPO,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(cmbTandaTerima,

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

ent.BASELINE)

Page 104: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

128

.addComponent(jLabel9)

.addComponent(txtTglTandaTerima,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel10)

.addComponent(txtTglKirim,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))))

.addContainerGap(21, Short.MAX_VALUE))

);

tableTransaksi.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N

tableTransaksi.setForeground(new java.awt.Color(51, 51, 51));

tableTransaksi.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

},

new String [] {

"No. Transaksi", "No. Tanda Terima", "No. Invoice", "Total Transaksi"

}

));

jScrollPane1.setViewportView(tableTransaksi);

jLabel6.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

jLabel6.setForeground(new java.awt.Color(51, 51, 51));

jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);

jLabel6.setText("Cari");

txtCari.setFont(new java.awt.Font("Segoe UI", 0, 14)); // NOI18N

txtCari.setForeground(new java.awt.Color(51, 51, 51));

txtCari.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

txtCariKeyPressed(evt);

}

});

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)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

Page 105: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

129

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA

DING)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 985, Short.MAX_VALUE)

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel6)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE, 250,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(0, 0, Short.MAX_VALUE)))

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

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS

ELINE)

.addComponent(jLabel6)

.addComponent(txtCari,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 294, Short.MAX_VALUE)

.addContainerGap())

);

pack();

}// </editor-fold>

private void txtNoTransKeyTyped(java.awt.event.KeyEvent evt) {

}

private void txtCariKeyPressed(java.awt.event.KeyEvent evt) {

Page 106: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

130

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

cariTable(txtCari.getText());

}

}

private void txtNoPOKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void txtSupplierKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void txtTglPOKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void txtTglTandaTerimaActionPerformed(java.awt.event.ActionEvent

evt) {

// TODO add your handling code here:

}

private void txtTglKirimKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void txtTotalQtyKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void txtTotalBeliKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void txtTotalTransKeyTyped(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

}

private void cmbTandaTerimaActionPerformed(java.awt.event.ActionEvent

evt) {

showDataPenerimaanBarang();

}

// Variables declaration - do not modify

private javax.swing.JComboBox<String> cmbTandaTerima;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel10;

Page 107: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

131

private javax.swing.JLabel jLabel12;

private javax.swing.JLabel jLabel13;

private javax.swing.JLabel jLabel14;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JTable tableTransaksi;

private javax.swing.JTextField txtCari;

private javax.swing.JTextField txtNoInvoice;

private javax.swing.JTextField txtNoPO;

private javax.swing.JTextField txtNoTrans;

private javax.swing.JTextField txtSupplier;

private javax.swing.JTextField txtTglKirim;

private javax.swing.JTextField txtTglPO;

private javax.swing.JTextField txtTglTandaTerima;

private javax.swing.JTextField txtTotalBeli;

private javax.swing.JTextField txtTotalQty;

private javax.swing.JTextField txtTotalTrans;

// End of variables declaration

@Override

public void aktif() {

cmbTandaTerima.setEnabled(true);

txtCari.setEnabled(true);

txtNoInvoice.setEnabled(true);

bersih();

seleksiBaris();

renderTableTotal();

formUtama.getSimpanBtn().setEnabled(true);

}

@Override

public void bersih() {

txtNoTrans.setText(transCont.nomorOtomatis());

txtNoInvoice.setText("");

txtTglTandaTerima.setText("");

txtNoPO.setText("");

txtSupplier.setText("");

txtTglPO.setText("");

txtTglKirim.setText("");

Page 108: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

132

txtTotalQty.setText("");

txtTotalBeli.setText("");

txtTotalTrans.setText("");

txtCari.setText("");

comboBoxTandaTerima();

showTable();

}

@Override

public void simpan(){

if(txtNoInvoice.getText().isEmpty() || txtNoPO.getText().isEmpty()){

JOptionPane.showMessageDialog(null, "Data belum lengkap!");

return;

}

if(cmbTandaTerima.getItemCount() == 0){

JOptionPane.showMessageDialog(null, "Data tanda terima kosong!");

return;

}else{

List<Object[]> list =

transCont.searchTransaksiPembelian(cmbTandaTerima.getSelectedItem().toString

());

if(!list.isEmpty()){

JOptionPane.showMessageDialog(null, "No tanda terima eksis!");

}else{

try {

transaksi = new TransaksiPembelian();

transaksi.setNoTransaksi(txtNoTrans.getText());

transaksi.setNoTandaTerima(cmbTandaTerima.getSelectedItem().toString());

transaksi.setNoInvoice(txtNoInvoice.getText());

Number number = myFormatter.parse(txtTotalTrans.getText());

transaksi.setTotalTransaksi(number.doubleValue());

transCont.save(transaksi);

JOptionPane.showMessageDialog(null, "Data berhasil disimpan!");

bersih();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

@Override

public void hapus() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

Page 109: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

133

}

@Override

public void cari() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

@Override

public void tampil() {

throw new UnsupportedOperationException("Not supported yet."); //To

change body of generated methods, choose Tools | Templates.

}

}

3.5.2. Blackbox Testing

A. Form Login Bagian Purchasing

Tabel III.15

Hasil Pengujian Blackbox Testing Form Login

No. Skenario

pengujian

Test case Hasil yang

diharapkan

Hasil

pengujian

Kesimpulan

1. Nama user

dan password

tidak diisi

kemudian klik

tombol login

Nama user:

(kosong)

Password:

(kosong)

Sistem akan

menolak akses

dan

menampilkan

pesan

“Username

tidak

ditemukan!”

Sesuai

harapan

Valid

2. Mengetikkan

Username dan

Password

tidak diisi atau

kosong

kemudian klik

tombol login

Username:

Pch1

Password:

(kosong)

Sistem akan

menolak akses

dan

menampilkan

pesan

“Masukan

Password”

Sesuai

harapan

Valid

3. Username

tidak diisi

(kosong) dan

Password diisi

kemudian klik

tombol login

Username:

(kosong)

Password:

1234

Sistem akan

menolak akses

dan

menampilkan

pesan

“Masukan

Username”

Sesuai

harapan

Valid

Page 110: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

134

4. Mengetikkan

salah satu

kondisi salah

pada

Username

atau Password

kemudian klik

tombol login

Username:

Pch1

(benar)

Password:

admin

(salah)

Sistem akan

menolak akses

dan

menampilkan

pesan

“Password

salah”

Sesuai

harapan

Valid

5. Mengetikkan

Username dan

Password

dengan data

yang benar

kemudian klik

tombol login

Username:

Pch1

(benar)

Password:

1234

(benar)

Sistem akan

menerima

akses login dan

akan

menampilkan

pesan “Selamat

datang”

Sesuai

harapan

Valid

B. Form Tambah Data Supplier

Tabel III.16

Hasil Pengujian Blackbox Testing Form Tambah Supplier

No. Skenario

pengujian

Test case Hasil yang

diharapkan

Hasil

pengujian

Kesimpulan

1. Tidak mengisi

semua form

kemudian klik

simpan

Kode Supplier:

(kosong)

Nama

Supplier:

(kosong)

Telepon:

(kosong)

Kota:

(kosong)

Alamat:

(kosong)

Sistem akan

menolak dan

menampilkan

pesan “Data

belum

lengkap!”

Sesuai

harapan

Valid

2. Mengetikkan

di form

dengan salah

satu tidak di

isi, kemudian

klik simpan

Kode Supplier:

(TLA)

Nama

Supplier:

(Tritunggal

Laris Abadi)

Telepon:

(0215359373)

Kota:

(Bandung)

Alamat:

Sistem akan

menolak dan

menampilkan

pesan “Data

belum

lengkap!”

Sesuai

harapan

Valid

Page 111: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

135

(kosong)

3. Mengetikkan

di form

dengan data

benar

Kode Supplier:

(TLA)

Nama

Supplier:

(Tritunggal

Laris Abadi)

Telepon:

(0215359373)

Kota:

(Bandung)

Alamat:

(Jl. Pahlawan

No.12)

Sistem akan

dan

menampilkan

pesan “Data

baru berhasil

disimpan”

Sesuai

harapan

Valid

4. Mengetikkan

di form

dengan kode

barang yang

sudah ada atau

sudah terdaftar

sebelumnya

Kode Supplier:

(TLA)

Nama

Supplier:

(Tritunggal

Laris Abadi)

Telepon:

(0215359373)

Kota:

(Bandung)

Alamat:

(Jl. Pahlawan

No.12)

Sistem akan

menampilkan

pesan “Data

Eksis”

Sesuai

harapan

Valid

C. Form Transaksi Pembelian

Tabel III.17

Hasil Pengujian Blackbox Testing Form Transaksi Pembelian

No. Skenario

pengujian

Test case Hasil yang

diharapkan

Hasil

pengujian

Kesimpulan

1. Tidak mengisi

semua form

kemudian klik

simpan

No.Invoice:

(kosong)

Sistem akan

menolak akses

dan

menampilkan

pesan “Data

belum

lengkap!”

Sesuai

harapan

Valid

2. Mengetikkan

di form

dengan data

No.Invoice

20212

Sistem akan

menampilkan

pesan “Data

Sesuai

harapan

Valid

Page 112: BAB III PEMBAHASAN - repository.bsi.ac.id fileFladeo sendiri berfokus pada kepuasan konsumen terhadap kualitas barang itu sendiri, yang hingga saat ini dapat bertahan dan berkembang

136

benar Password:

(kosong)

berhasil

disimpan”

3.5.3. Spesifikasi Hardware dan Software

Tabel III.18

Spesifikasi Hardware dan Software

Kebutuhan Keterangan

Sistem Windows 8.1 64-bit

Processor Intel(R) Celeron(R) CPU N2840 @2.16 GHz

RAM 2 GB

Harddisk 400 GB

Monitor 11”LED

Keyboard 108 key

Printer Jet Laser

Mouse Standard

Software Kebutuhan menjalankan aplikasi secara local :

Bahasa script programming : Netbeans IDE 8.1

DBMS : MYSQL