bab iii pembahasan...14 bab iii pembahasan 3.1. tinjauan perusahaan proses penjualan dalam suatu...

90
14 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Proses penjualan dalam suatu perdagangan secara garis besar ditentukan oleh adanya permintaan dari pasar dan tersedianya barang yang siap dijual. Seiring dengan perkembangan jaman, proses penjualan ini semakin rumit dengan adanya peraturan-peraturan baru dalam perdagangan itu sendiri. Satria Celuller adalah perusahaan yang bergerak dalam bidang pengisian pulsa yang aman, tercepat dan terpercaya. Selain itu, Satrial Celuller juga menjual aksesoris handphone. karyawan yang bekerja di kounter ini dapat dikatakan sebagai tenaga profesional, layanan customer services yang responsif sehingga terjalin komunikasi yang baik dengan pelanggan maupun dengan rekan bisnis yang memanfaatkan jasa layanan perusahaan ini. Dalam perjalanannya Satria Celuller ini selalu menerima saran dan kritik dari para konsumen agar perusahaan ini menjadi lebih baik lagi. Untuk itulah terlebih dahulu akan membahas mengenai tinjauan perusahaan sejarah, tentang berdirinya perusahaan serta strtuktur organisasi perusahaan ini sebagai berikut.

Upload: others

Post on 31-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

14

BAB III

PEMBAHASAN

3.1. Tinjauan Perusahaan

Proses penjualan dalam suatu perdagangan secara garis besar ditentukan

oleh adanya permintaan dari pasar dan tersedianya barang yang siap dijual.

Seiring dengan perkembangan jaman, proses penjualan ini semakin rumit dengan

adanya peraturan-peraturan baru dalam perdagangan itu sendiri.

Satria Celuller adalah perusahaan yang bergerak dalam bidang pengisian

pulsa yang aman, tercepat dan terpercaya. Selain itu, Satrial Celuller juga menjual

aksesoris handphone. karyawan yang bekerja di kounter ini dapat dikatakan

sebagai tenaga profesional, layanan customer services yang responsif sehingga

terjalin komunikasi yang baik dengan pelanggan maupun dengan rekan bisnis

yang memanfaatkan jasa layanan perusahaan ini. Dalam perjalanannya Satria

Celuller ini selalu menerima saran dan kritik dari para konsumen agar perusahaan

ini menjadi lebih baik lagi.

Untuk itulah terlebih dahulu akan membahas mengenai tinjauan perusahaan

sejarah, tentang berdirinya perusahaan serta strtuktur organisasi perusahaan ini

sebagai berikut.

15

3.1.1. Sejarah Perusahaan

Satria celuller didirikan pada tahun 2018 oleh Agung yang beralamat di kp.

Kalioyod, Wancimekar, Kecamatan Kotabaru, Kabupaten Karawang, Jawa Barat

41374. Satria Celuller ini bergerak dalam bidang penjualan pulsa, kouta dan kartu

perdana. Rentang waktu dari tahun 2018 hingga sekarang, Satria Celuller telah

mempunyai 8 cabang yang tersebar di sekitaran wilayah Cikampek, sedangkan

kantor pusatnya berada di jalan kp. Kalioyod wancimekar, Kec. Kotabaru, Kab.

Karawang.

Adapun pemilihan perusahaan ini dilihat dari segi lokasi, perusahaan ini

menempati lokasi yang strategis sehingga para pelanggan dapat dengan nyaman

melalukan aktivitas jual beli. Sistem kerjanya terdapat jam kerja bagi para

karyawannya yaitu dimulai dari jam 09.00-22.00, lalu terdapat pertukaran jam

kerja bagi para karyawan sehingga yang bertugas menjaga kounter bergantian.

Adapun Visi dan Misi dari perusahaan Satria Celuller sebagai berikut;

1. Visi

Menuju konter yang dapat memberikan manfaat kepada manusia melalui

teknologi komunikasi dan menjadikan pusat penjualan jasa komunikasi

yang unggul, terpercaya dan amanah.

2. Misi

a. Memberikan pelayanan kepada konsumen Satria Celuller secara mudah,

harga terjangkau, cepat dan terpecaya sehingga masyarakat dapat

melalukan transaksi pembelian maupun pelayanan jasa yang

memuaskan

16

b. Segera menindaklanjuti konsumen yang komplen terhadap pembelian

aksesori handphone yang pernah dibeli di Satria Celuller

c. Berkomitmen untuk mengembangkan produk agar usaha kamis sukses

dan berkembang pesat.

3.1.2. Struktur Organisasi dan Fungsi

Struktur organisasi merupakan salah satu alat untuk mencapai tujuan secara

efektif, struktur organisasi yang baik akan memudahkan kordinasi dan komunikasi

atas semua aktivitas untuk mencapai tujuan. Struktur organisasi merupakan

hubungan yang teratur diantara berbagai sektor atau fungsi yang perlu untuk

mencapai tujuan dan tanggung jawab serta wewenang dalam suatu organisasi.

Dengan tersusunya struktur secara fleksibel dan tegas maka setiap bagian dan

seksi yang ada pada usaha tersebut, melalukan tugas dan wewenangnya masing-

masing. Satria Celuller sebagai suatu organisasi usaha dan kegiatannya telah

merumuskan tentang pembagian tugas, wewenang dan tanggungjawab dalam

setiap bidangnya dan juga lebih mengutamakan spesialisasi pekerjaan agar lebih

eknomis. Untuk lebih jelasnya dapat dilihat pada struktur organisasi yang terdapat

pada Satria Celuller sebagai berikut:

17

Struktur organisasi Satria Celuller

Sumber organisasi Satria Celuller

Gambar III.1 Struktur Organisasi Satria Celluler

Fungsi dari tiap-tiap bagian adalah sebagai berikut;

1. Pemilik Kounter

Tugas dan tanggungjawab:

a. Melakukan pengawasan menyeluruh terhadap kegiatan aktivitas

penjualan di kounter.

b. Memberikan penugasan yang layak kepada bagian di bawahnya sesuai

dengan bidang pekerjaan masing-masing.

c. Melakukan pemantauan.

d. Merencanakan dan mengembangkan sumber-sumber pendapatan serta

pembelanjaan.

e. Memutuskan kebijakan tertinggi usaha ponsel tersebut.

f. Bertanggungjawab terhadap keuntungan dan kerugian yang terjadi

g. Memberhentikan karyawan

Pemilik Kounter

Keuangan

ADM dan kasir

kepala bagian konter

bagian penjualan

18

2. Keuangan

Tugas dan tanggungjawab

a. Melakukan penilaian dan evaluasi secara terus menerus mengenai

kinerja karyawan.

b. Mengelola dan mengatur penggajian untuk memastikan keakuratan

waktu dan efesiensi distribusi penggajian karywan.

c. Mengarsip seluruh dokumen transaksi untuk menjaga ketertiban

administrasi dan memudahkan penelusuran dokumen .

d. Melakukan stok opname setiap akhir bulan untuk melihat ada atau

tidaknya selisih jumlah barang dan catatan dikeuangan

3. Bagian Administrasi dan Kasir

Tugas dan tanggungjawab

a. Bertanggungjawa terhadap aktivitas penjualan

b. Mengupayakan pelayanan yang optimal kepada konsumen

c. Melakukan perhitungan uang kas setiap hari

d. Mencatat barang-barang yang habis dan barang return

e. Melakukan pemeliharaan barang-barang yang ada di kounter

f. Bertanggungjawab atas kebersihan, kenyamanan, kerapian dan tata

letak aksesoris hp yang baik dan menarik.

4. Kepala Bagian Konter

Tugas dan tanggungjawab

a. Bertugas sebagai pemimpin team penjualan, mengkoordinir tim

penjualan agar dapat meningkatkan tingkat penjualan dan apakah

penjualan sesuai target.

19

5. Bagian Penjualan

Tugas dan tanggungjawab

a. Merupakan bagian yang melayani konsumen, maka tugas bagian

penjualan yang paling utama adalah melakukan proses penjualan.

3.2. Tinjauan Kasus

3.2.1. Proses Bisnis Berjalan

Proses diawali dengan konsumen memilih pesanan barang kepada bagian

penjualan, setelah bagian penjualan menerima informasi terkait barang yang

dipesan, bagian penjualan akan megecek ketersediaan barang. Apabila barang

yang dipesan tidak ada maka akan diberitahukan kepada konsumen bahwa barang

pesanan tidak ada dan konsumen membatalkan pesanan, jika barang pesanan ada

maka bagian penjualan akan memproses pesanan dan memberitahukan terkait

informasi harga pesanan kepada konsumen. Seteleah konsumen mengetahui harga

pesanan konsumen akan membayar biaya secara tunai kepada bagian penjualan,

setelah bagian penjualan menerima pembayaran dari konsumen, bagian penjualan

akan menyerahkan pesanan kepada konsumen, kemudian mecatat transaksi

tersebut untuk dibuatkan laporan yang akan di serahkan kepada kepala karyawan

di bagian konter tersebut. Setelah kepala karyawan menerima laporan penjualan,

maka akan mencatat stok barang yang ada di konter tersebut, dan kepala karyawan

akan memberikan laporan penjualan serta laporan stok barang kepada bagian

keuangan. Setelah bagian keuangan menerima laporan tersebut selanjutnya akan

mencatat hasil penjualan dan sisa barang yang kemudian akan diserahkan kepada

pemilik konter.

20

3.2.2. Activity Diagram Sistem Akuntansi Berjalan

Gambar III.2 activity diagram sistem berjalan

21

3.2.3. Dokumen Masukan

3.2.4. Dokumen Keluaran

1. Laporan Penjualan

Nama Dokumen : Laporan Penjualan

Fungsi : Sebagai bukti penjualan barang

Sumber : bagian penjualan

Tujuan : Bagian keuangan

Frekuensi : 1 Hari penjualan

Media : Kertas

Jumlah Rangkap : 1 Lembar

Bentuk : Lampiran A-1

1. Laporan keuangan

Nama Dokumen : Laporan Keuangan

Fungsi : Sebagai bukti pendapatan

Sumber : Bagian keuangan

Tujuan : Pemilik konter

Frekuensi : 1 Bulan

Media : Kertas

Jumlah Rangkap : 1 Lembar :

22

3.2.5. Permasalahan pokok

Sistem penjualan yang telah berjalan pada Satria Celluler umumnya telah

berjalan dengan baik. Dalam proses penjualan, layanan, dan prmbuatan laporan.

Tetapi penulis melihat adanya kelemahan di sistem tersebut.

Adapun kekurangan tersebut adalah sebagai berikut :

1. Sering terjadi selisih dalam masalah stock barang di konter dikarenakan

terkadang lupa potong stock.

2. Sering keliru dalam menulis laporan, dikarenakan dalam 1 laporan terdapat

semua penjualan.

3. Laporan penjualan terkadang hilang atau rusak terkena air, sehingga

karyawan harus menghitung ulang semua penjualan di hari tersebut.

3.2.6. Pemecahan Masalah

1. Karyawan atau karyawati yang bertugas di bagian penjualan harus

memotong stok setiap barang keluar.

2. Karyawan atau karyawati harus lebih teliti dalam menulis laporan penjualan.

3. Dibuatnya laporan yang berbeda-beda dari setiap penjualan.

4. Ditambahkan karyawan bagian gudang.

5. Dibuatnya sistem penjualan yang sudah terkomputer, agar kinerja bisa lebih

mudah dalam melaporkan penjualan dan penyimpanan data dalam

penjualan.

23

3.3. Analisa Kebutuhan Software

Analisa kebutuhan software merupakan langkah awal untuk menentukan

perangkat lunak seperti apa yang akan dihasilkan, ketika melaksanakan sebuah

proyek pembuatan prangkat lunak. Dalam melakukan analisis kebutuhan

menentukan keberhasilan atas terciptanya perangkat lunak yang baik serta sesuai

dengan kebutuhan pengguna.

3.3.1. Analisa Kebutuhan

A. Halaman pemilik

A.1. Pemilik dapat melakukan login

A.2. Pemilik dapat mengelola data pengguna.

A.3. Pemilik dapat mengganti kata sandi.

A.4. Pemilik dapat mengelola data barang

A.5. Pemilik dapat mengelola data penjualan

A.6. Pemilik dapat mengelola data pembelian

A.7. Pemilik dapat melakukan logout.

B. Halaman bagian kasir

B.1. Kasir dapat melakukan login

B.2. Kasir dapat melakukan transaksi penjualan

B.3. Kasir dapat mencetak laporan penjualan

B.4. Kasir dapat mengganti kata sandi

B.5. Kasir dapat melakukan logout

C. Halaman bagian persediaan

C.1. Persediaan dapat melakukan login

C.2. Persediaan dapat melihat halaman data barang

24

C.3. Persediaan dapat menambah data barang

C.4. Persediaan dapat melihat halaman supplier

C.5. Persediaan dapat menambah data supplier

C.6. Persediaan dapat mencetak laporan barang

C.7. Persediaan dapat mencetak laporan pembelian

C.8. Persediaan dapat mengganti kata sandi

C.9. Persediaan dapat melakukan logout

25

3.3.2. Use Case Diagram

1. Use Case Halaman Pemilik

Gambar III.3 Use Case Diagram Halaman Pemilik

26

Tabel III.1

Deskripsi Halaman Pemilik

Use Case Narative Halaman Pemilik

Tujuan Pemilik dapat melihat data yang ada

dalam sistem halaman Pemilik.

Deskripsi Sistem ini memungkinkan aktor

untuk masuk ke halaman pemilik

yang di dalamnya ada data user, data

pembelian, data penjualan, dan data

barang

Skenario Utama

Aktor Pemilik

Kondisi Awal Pemilik telah melakukan login

Aksi Aktor Reaksi Sitem

1. Aktor akan memilih data

pengguna

sistem ini akan menampilkan data

pengguna

2. Aktor akan memilih data

pengguna

sistem ini akan menampilkan data

pengguna

3. Aktor akan memilih ganti

password

sistem ini akan mengganti data

pengguna

4. Aktor akan memilih data barang sistem ini akan menampilkan data barang

5. Aktor akan memilih data penjualan sistem ini akan menampilkan data penjualan

6. Aktor akan memilih data pembelian sistem ini akan menampilkan data pembelian

7. Aktor akan memilih logout sistem ini akan keluar ke menu login

27

2. Use Case Halaman Kasir

Gambar III.4 Use Case Diagram Halaman Kasir

28

Tabel III.2

Deskripsi Halaman Kasir

Use Case Narative Halaman Kasir

Tujuan Kasir dapat melihat data yang ada dalam sistem halaman kasir

Deskripsi Sistem ini memungkinkan aktor untuk masuk ke halaman kasir yang didalamnya ada data penjualan

Skenario Utama

Aktor Kasir

Kondisi Awal Kasir telah melakukan login

Aksi Aktor Reaksi Sistem

1. Aktor akan memilih penjualan sistem ini akan menampilkan

penjualan

2. Aktor akan mencetak penjualan sistem ini akan menampilkan data

penjualan

3. Aktor akan memilih ganti

password

sistem ini akan mengganti data

pengguna

4. Aktor akan memilih logout sistem ini akan keluar ke menu login

29

2. Use Case Halaman Persediaan

Gambar III.5 Use Case Diagram Halaman Persedian

30

Tabel III.3

Deskripsi Halaman Persediaan

Use Case Narative Halaman Persediaan

Tujuan Persediaan dapat melihat data yang

ada dalam sistem halaman persediaan

Deskripsi Sistem ini memungkinkan aktor

untuk masuk ke halaman persediaan

yang didalamnya ada data barang,

dan data supplier

Skenario Utama

Aktor persediaan

Kondisi Awal persediaan telah melakukan login

Aksi Aktor Reaksi Sistem

1. Aktor akan memilih data barang sistem ini akan menampilkan data

barang

2. Aktor akan memilih menambah

barang

sistem ini akan menampilkan

pembelian barang

3, Aktor akan memilih supplier sistem ini akan menampilkan data

supplier dan menambah supplier

4. Aktor akan memilih pembelian sistem ini akan menampilkan

pembelian

5. aktor akan mencetak data

pembelian

sistem ini akan menampilkan data

pembelian barang

6. Aktor akan memilih ganti sandi sistem ini akan mengganti data

pengguna

7. Aktor akan memilih logout sistem ini akan keluar ke menu login

31

3.3.3. Activity Diagram

1. Activity Diagram Halaman Pemilik

Gambar III.5 Activity Diagram Halaman Pemilik

32

a. Activity Diagram Data Pengguna

Gambar III.6 Activity Diagram Data pengguna

33

b. Activity Diagram Ganti Kata Sandi

Gambar III.7 Activity Diagram Ganti Kata Sandi

34

c. Activity Diagram Data Barang

Gambar III.8 Activity Diagram Data Barang

35

d. Activity Diagram Data Penjualan

Gambar III.9 Activity Diagram Data Penjualan

36

e. Activity Diagram Data Pembelian

Gambar III.10 Activity Diagram Data Pembelian

37

2. Activity Diagram Halaman Kasir

Gambar III.11 Activity Diagram Halaman Kasir

38

a. Activity diagram mengganti kata sandi

Gambar III.12 Activity Diagram Halaman Kasir

39

b. Activity diagram penjualan

Gambar III.13 Activity Diagram penjualan

40

c. Activity diagram data penjualan

Gambar III.14 Activity Diagram data penjualan

41

2. Activity Diagram Halaman persediaan

Gambar III.15 Activity Diagram halaman persediaan

42

a. Activity diagram data pembelian

Gambar III.16 Activity Diagram pembelian

43

b. Activity diagram mengganti kata sandi

Gambar III.17 Activity Diagram mengganti kata sandi

44

c. Activity diagram data data barang

Gambar III.18 Activity Diagram data barang

45

d. Activity diagram data supplier

Gambar III.19 Activity Diagram supplier

46

e. Activity diagram data pembelian

Gambar III.20 Activity Diagram data pembelian

47

3.4. Desain

3.4.1. Entity Relationship Diagram (ERD)

username

user

nama

noid

hakakses

password

mengelola

penjualan

noid

notrans

tgl

pembeli

kdbrngnmbrng

jumlah

total

harga

pembelian

barang

mengelola

mengelola

noid

notrans tgl nmsupplier

kdbrng nmbrng hbeli

jumlah

total

kdbrng

nmbrng hjualjenis

stock

hakakses kdbrng

Gambar III.21 Entity Relationship Diagram

48

3.4.2. Logical Record Structure (LRS)

Notrans

Tgl

Nmsupplier

Kdbrng

Nmbrng

hbeli

Jumlah

total

pembelian

Noid

Username

Nama

Password

hakakses

user

Kdbrng

Nmbrng

Jenis

Hjual

stock

barang

Notrans

Tgl

pembeli

Kdbrng

Nmbrng

harga

Jumlah

total

penjualan

Gambar III.22 Logical Record Structure (LRS)

3.4.3. Spesifikasi File

Untuk dapat menyimpan data masukan dan membantu pengolahan data,

maka digunakan database dengan nama satriacell. Berikut adalah spesifikasi file

dalam sistem penjualan pada satria celluler.

a. Spesifikasi File User

Nama Database : satriacell

Nama File : tbuser

Tipe File : file master

Akses File : random

49

Panjang Record : 60 karakter

Kunci File : noid

Tabel III.4

Spesifikasi File Tabel User

No Elemen Data Akronim Tipe Panjang Keterangan

1 Noid noid varchar 10 Primary Key

2 Username username varchar 30

3 Nama nama varchar 20

4 Password password varchar 10

5 Hakakses hakakses enum "Pemilik"

"Kasir" "Persediaan"

b. Spesifikasi File penjualan

Nama Database : satriacell

Nama File : tbjual

Tipe File : file master

Akses File : random

Panjang Record : 142 karakter

Kunci File : notrans

Tabel III.5

Spesifikasi File Tabel User

No Elemen Data Akronim Tipe Panjang Keterangan

1 No Transaksi notrans varchar 8 Primary Key

2 Tanggal tgl date

3 Pembeli pembeli varchar 20

4 Kode Barang kdbrng varchar 8

5 Nama Barang nmbrng varchar 40

6 Harga harga int 11

7 Jumlah jumlah int 11

8 Total total int 11

c. Spesifikasi File pembelian

Nama Database : satriacell

50

Nama File : tbbeli

Tipe File : file master

Akses File : random

Panjang Record : 120 karakter

Kunci File : notrans

Tabel III.6

Spesifikasi File Tabel User

No Elemen Data Akronim Tipe Panjang Keterangan

1 No Transaksi notrans varchar 8 Primary Key

2 Tanggal tgl date

3 Nama

Supplier nmsupplier varchar 20

4 Kode Barang kdbrng varchar 8

5 Nama Barang nmbrng varchar 40

6 Harga Beli hbeli int 11

7 Jumlah jumlah int 11

8 Total total int 11

d. Spesifikasi File barang

Nama Database : satriacell

Nama File : kdbrng

Tipe File : file master

Akses File : random

Panjang Record : 80 karakter

Kunci File : kdbrng

51

Tabel III.7

Spesifikasi File Tabel User

No Elemen Data Akronim Tipe Panjang Keterangan

1 Kode Barang kdbrng varchar 8 Primary Key

2 Nama Barang nmbrng varchar 40

3 Jenis jenis varchar 10

4 Harga Jual hjual int 11

5 Stok stock int 11

3.4.4. Sequence Diagram

Gambar III.19 Sequence Diagram Penjualan

52

3.4.5. Deployment Diagram

Gambar III. 20 Deployment Diagram Program

3.4.6. User Interface

1. Halaman Login

Gambar III. 21 Halaman Login

53

2. Halaman Menu Utama

Gambar III. 22 Halaman Menu Utama

54

3. Halaman Barang

Gambar III. 23 Halaman Barang

55

4. Halaman Pembelian

Gambar III. 24 Halaman Pembelian

56

5. Halaman Penjualan

Gambar III. 25 Halaman Penjualan

57

6. Halaman Supplier

Gambar III. 26 Halaman Supplier

7. Halaman Laporan Barang

Gambar III. 27 Halaman Laporan Barang

58

8. Halaman Laporan Pembelian

Gambar III. 28 Halaman Laporan Pembelian

9. Halaman Laporan Penjualan

Gambar III. 29 Halaman Laporan Penjualan

59

10. Halaman Data pengguna

Gambar III. 30 Halaman Data pengguna

11. Halaman Ganti Password

Gambar III. 31 Halaman Ganti Password

60

3.5.Implementasi

3.5.1. Code Generation

Form Menu Penjualan

package GUI;

import java.awt.event.KeyEvent;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import javax.swing.ImageIcon;

import javax.swing.JOptionPane;

import javax.swing.table.DefaultTableModel;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

public class Penjualan extends javax.swing.JFrame {

private DefaultTableModel TabModel;

61

Connection conn;

Statement st;

ResultSet rs;

/**

* Creates new form Penjualan

*/

public Penjualan() {

initComponents();

siapIsi(false);

tombolNormal();

stockTF.setVisible(false);

subtotTF.setVisible(false);

Object header[]={"Kode Barang","Nama Barang","Harga

Jual","Jumlah","Subtotal"};

TabModel=new DefaultTableModel(null, header);

}

private void bersih(){

noTF.setText("");

pembeliTF.setText("");

kodeTF.setText("");

namaTF.setText("");

62

hjualTF.setText("");

jumlahTF.setText("");

subtotTF.setText("0");

totalTF.setText("0");

ubayTF.setText("0");

ukemTF.setText("0");

}

private void siapIsi(boolean a){;

noTF.setEnabled(a);

pembeliTF.setEnabled(a);

kodeTF.setEnabled(a);

namaTF.setEnabled(a);

hjualTF.setEnabled(a);

jumlahTF.setEnabled(a);

totalTF.setEnabled(a);

ubayTF.setEnabled(a);

ukemTF.setEnabled(a);

}

private void tombolNormal(){

tambahBT.setEnabled(true);

simpanBT.setEnabled(false);

tbhBrgBT.setEnabled(false);

63

krgBrgBT.setEnabled(false);

cariBrgBT.setEnabled(false);

}

private void otomatis(){

try {

setKoneksi();

String sql="select right (notrans,2)+1 from tbjual";

ResultSet rs=st.executeQuery(sql);

if(rs.next()){

rs.last();

String no=rs.getString(1);

while (no.length()<3){

no="0"+no;

noTF.setText("S"+no);}

}

else

{

noTF.setText("S001");

}

} catch (Exception e)

{

}

}

64

public void ambildata() {

try {

jTable1.setModel(TabModel);

String kolom1 = kodeTF.getText();

String kolom2 = namaTF.getText();

String kolom3 = hjualTF.getText();

String kolom4 = jumlahTF.getText();

String kolom5 = subtotTF.getText();

String[] kolom = {kolom1, kolom2, kolom3, kolom4, kolom5};

TabModel.addRow(kolom);

}

catch (Exception ex) {

JOptionPane.showMessageDialog(null, "Data gagal disimpan");

}

}

private void simpan(){

setKoneksi();

try {

Date skrg=new Date();

SimpleDateFormat frm=new SimpleDateFormat("yyyy-MM-dd");

String tgl=frm.format(skrg);

65

int t = jTable1.getRowCount();

for(int i=0;i<t;i++)

{

String kdbrng=jTable1.getValueAt(i, 0).toString();

String nmbrng=jTable1.getValueAt(i, 1).toString();

int harga= Integer.parseInt(jTable1.getValueAt(i, 2).toString());

int jml= Integer.parseInt(jTable1.getValueAt(i, 3).toString());

int subtot= Integer.parseInt(jTable1.getValueAt(i, 4).toString());

String sql ="insert into tbjual

values('"+noTF.getText()+"','"+tgl+"','"+pembeliTF.getText()+"','"

+kdbrng+"','"+nmbrng+"','"+harga+"','"+jml+"','"+subtot+"','"+totalTF.getText()+

"','"+ubayTF.getText()+"','"+ukemTF.getText()+"')";

st.executeUpdate(sql);

}

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Simpan transaksi penjualan

gagal");

}

}

private void hapusdatadaritabel() {

66

int a = jTable1.getSelectedRow();

if(a == -1){

}TabModel.removeRow(a);

}

private void tampilBarang(){

Object header[]={"Kode Barang","Nama Barang","Jenis","Harga

Jual","Stock"};

DefaultTableModel data=new DefaultTableModel(null,header);

jTable2.setModel(data);

setKoneksi();

String sql="select*from tbbrng";

try {

ResultSet rs=st.executeQuery(sql);

while (rs.next())

{

String kolom1=rs.getString(1);

String kolom2=rs.getString(2);

String kolom3=rs.getString(3);

String kolom4=rs.getString(4);

String kolom5=rs.getString(5);

String kolom[]={kolom1,kolom2,kolom3,kolom4,kolom5};

data.addRow(kolom);

67

}

} catch (Exception e) {

}

}

/**

* 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() {

jDialog1 = new javax.swing.JDialog();

jPanel3 = new javax.swing.JPanel();

jScrollPane3 = new javax.swing.JScrollPane();

jTable2 = new javax.swing.JTable();

jPanel5 = new javax.swing.JPanel();

jLabel14 = new javax.swing.JLabel();

jPanel6 = new javax.swing.JPanel();

68

cariTF = new javax.swing.JTextField();

jButton7 = new javax.swing.JButton();

jPanel1 = new javax.swing.JPanel();

jPanel2 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

noTF = new javax.swing.JTextField();

jLabel3 = new javax.swing.JLabel();

pembeliTF = new javax.swing.JTextField();

jLabel5 = new javax.swing.JLabel();

jLabel6 = new javax.swing.JLabel();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

kodeTF = new javax.swing.JTextField();

namaTF = new javax.swing.JTextField();

hjualTF = new javax.swing.JTextField();

cariBrgBT = new javax.swing.JButton();

krgBrgBT = new javax.swing.JButton();

tbhBrgBT = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

jumlahTF = new javax.swing.JTextField();

simpanBT = new javax.swing.JButton();

tambahBT = new javax.swing.JButton();

69

ukemTF = new javax.swing.JTextField();

totalTF = new javax.swing.JTextField();

ubayTF = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

jLabel9 = new javax.swing.JLabel();

jLabel10 = new javax.swing.JLabel();

jLabel11 = new javax.swing.JLabel();

tglTF = new com.toedter.calendar.JDateChooser();

subtotTF = new javax.swing.JTextField();

stockTF = new javax.swing.JTextField();

jDialog1.setMinimumSize(new java.awt.Dimension(460, 386));

jDialog1.setModalityType(java.awt.Dialog.ModalityType.APPLICATION_MOD

AL);

jDialog1.setResizable(false);

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

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

jDialog1MouseClicked(evt);

}

});

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

new Object [][] {

70

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

"Title 1", "Title 2", "Title 3", "Title 4"

}

));

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

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

jTable2MouseClicked(evt);

}

});

jScrollPane3.setViewportView(jTable2);

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

jPanel5.setBorder(javax.swing.BorderFactory.createLineBorder(new

java.awt.Color(0, 0, 0)));

jLabel14.setFont(new java.awt.Font("Tahoma", 1, 20)); // NOI18N

jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

jLabel14.setText("Data Barang");

71

javax.swing.GroupLayout jPanel5Layout = new

javax.swing.GroupLayout(jPanel5);

jPanel5.setLayout(jPanel5Layout);

jPanel5Layout.setHorizontalGroup(

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

NG)

.addComponent(jLabel14, javax.swing.GroupLayout.DEFAULT_SIZE,

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

);

jPanel5Layout.setVerticalGroup(

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

NG)

.addComponent(jLabel14, javax.swing.GroupLayout.DEFAULT_SIZE,

35, Short.MAX_VALUE)

);

jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null,

"Ketikan Kriteria Pencarian",

javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,

javax.swing.border.TitledBorder.DEFAULT_POSITION, new

java.awt.Font("Tahoma", 1, 12))); // NOI18N

72

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

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

cariTFKeyPressed(evt);

}

});

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

jButton7.setIcon(new

javax.swing.ImageIcon(getClass().getResource("/Gambar/Pilih.gif"))); // NOI18N

jButton7.setText("Cari");

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

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

jButton7ActionPerformed(evt);

}

});

javax.swing.GroupLayout jPanel6Layout = new

javax.swing.GroupLayout(jPanel6);

jPanel6.setLayout(jPanel6Layout);

jPanel6Layout.setHorizontalGroup(

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

NG)

73

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

jPanel6Layout.createSequentialGroup()

.addComponent(cariTF)

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

.addComponent(jButton7,

javax.swing.GroupLayout.PREFERRED_SIZE, 85,

javax.swing.GroupLayout.PREFERRED_SIZE))

);

jPanel6Layout.setVerticalGroup(

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

NG)

.addGroup(jPanel6Layout.createSequentialGroup()

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

ent.BASELINE)

.addComponent(cariTF,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton7,

javax.swing.GroupLayout.PREFERRED_SIZE, 24,

javax.swing.GroupLayout.PREFERRED_SIZE))

74

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))

);

javax.swing.GroupLayout jPanel3Layout = new

javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout);

jPanel3Layout.setHorizontalGroup(

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

NG)

.addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,

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

.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,

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

.addComponent(jScrollPane3,

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

);

jPanel3Layout.setVerticalGroup(

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

NG)

.addGroup(jPanel3Layout.createSequentialGroup()

75

.addComponent(jPanel5,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

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

.addComponent(jScrollPane3,

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

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

.addComponent(jPanel6,

javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

);

javax.swing.GroupLayout jDialog1Layout = new

javax.swing.GroupLayout(jDialog1.getContentPane());

jDialog1.getContentPane().setLayout(jDialog1Layout);

jDialog1Layout.setHorizontalGroup(

jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

76

.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,

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

);

jDialog1Layout.setVerticalGroup(

jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEAD

ING)

.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE,

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

);

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOS

E);

setResizable(false);

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowActivated(java.awt.event.WindowEvent evt) {

formWindowActivated(evt);

}

public void windowOpened(java.awt.event.WindowEvent evt) {

formWindowOpened(evt);

}

});

77

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

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

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

jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new

java.awt.Color(0, 153, 255)));

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N

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

jLabel1.setText("Transaksi Jual Barang");

javax.swing.GroupLayout jPanel2Layout = new

javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout);

jPanel2Layout.setHorizontalGroup(

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

NG)

.addGroup(jPanel2Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel1,

javax.swing.GroupLayout.PREFERRED_SIZE, 296,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(352, Short.MAX_VALUE))

78

);

jPanel2Layout.setVerticalGroup(

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

NG)

.addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.TRAILING,

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

);

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

660, -1));

jLabel2.setText("No. Trans");

jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);

jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

71, 61, -1));

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

noTF.setDisabledTextColor(new java.awt.Color(51, 51, 255));

jPanel1.add(noTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(91,

68, 113, -1));

jLabel3.setText("Pembeli");

79

jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);

jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

106, 61, -1));

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

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

pembeliTFKeyTyped(evt);

}

});

jPanel1.add(pembeliTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(91, 106, 270, -1));

jLabel5.setText("Kode Barang");

jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

151, -1, -1));

jLabel6.setText("Nama Barang");

jPanel1.add(jLabel6, new

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

jLabel7.setText("Harga Jual");

jPanel1.add(jLabel7, new

org.netbeans.lib.awtextra.AbsoluteConstraints(370, 150, 90, -1));

80

jLabel8.setText("Jumlah");

jPanel1.add(jLabel8, new

org.netbeans.lib.awtextra.AbsoluteConstraints(480, 150, 50, -1));

jPanel1.add(kodeTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(20,

170, 90, -1));

jPanel1.add(namaTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(150, 170, 210, 20));

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

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

hjualTFKeyTyped(evt);

}

});

jPanel1.add(hjualTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(370, 170, 103, -1));

cariBrgBT.setText("...");

cariBrgBT.setToolTipText("Cari barang");

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

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

cariBrgBTActionPerformed(evt);

}

});

81

jPanel1.add(cariBrgBT, new

org.netbeans.lib.awtextra.AbsoluteConstraints(110, 170, 30, 20));

krgBrgBT.setText("-");

krgBrgBT.setToolTipText("Kurangi transaksi");

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

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

krgBrgBTActionPerformed(evt);

}

});

jPanel1.add(krgBrgBT, new

org.netbeans.lib.awtextra.AbsoluteConstraints(590, 170, 40, 20));

tbhBrgBT.setText("+");

tbhBrgBT.setToolTipText("Tambah transaksi");

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

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

tbhBrgBTActionPerformed(evt);

}

});

jPanel1.add(tbhBrgBT, new

org.netbeans.lib.awtextra.AbsoluteConstraints(550, 170, 40, 20));

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

82

new Object [][] {

{null, null, null, null},

{null, null, null, null},

{null, null, null, null},

{null, null, null, null}

},

new String [] {

"Title 1", "Title 2", "Title 3", "Title 4"

}

));

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

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

jTable1MouseClicked(evt);

}

});

jScrollPane1.setViewportView(jTable1);

jPanel1.add(jScrollPane1, new

org.netbeans.lib.awtextra.AbsoluteConstraints(20, 210, 623, 180));

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

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

jumlahTFActionPerformed(evt);

}

83

});

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

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

jumlahTFKeyTyped(evt);

}

});

jPanel1.add(jumlahTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(480, 170, 70, -1));

simpanBT.setText("Simpan");

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

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

simpanBTActionPerformed(evt);

}

});

jPanel1.add(simpanBT, new

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

tambahBT.setText("Tambah");

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

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

tambahBTActionPerformed(evt);

}

});

84

jPanel1.add(tambahBT, new

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

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

ukemTF.setForeground(new java.awt.Color(255, 0, 0));

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

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

ukemTFKeyTyped(evt);

}

});

jPanel1.add(ukemTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(500, 460, 140, -1));

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

totalTF.setForeground(new java.awt.Color(255, 0, 0));

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

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

totalTFKeyTyped(evt);

}

});

jPanel1.add(totalTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(500,

400, 140, -1));

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

85

ubayTF.setForeground(new java.awt.Color(255, 0, 0));

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

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

ubayTFKeyPressed(evt);

}

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

ubayTFKeyTyped(evt);

}

});

jPanel1.add(ubayTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(500, 430, 140, -1));

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

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

jLabel4.setText(" Kembali");

jPanel1.add(jLabel4, new

org.netbeans.lib.awtextra.AbsoluteConstraints(440, 460, 60, 20));

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

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

jLabel9.setText("Total");

jPanel1.add(jLabel9, new

org.netbeans.lib.awtextra.AbsoluteConstraints(450, 400, 50, 20));

86

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

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

jLabel10.setText("Bayar");

jPanel1.add(jLabel10, new

org.netbeans.lib.awtextra.AbsoluteConstraints(450, 430, 50, 20));

jLabel11.setText("Tanggal");

jPanel1.add(jLabel11, new

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

tglTF.setToolTipText("");

tglTF.setDateFormatString("dd MMMM yyyy");

jPanel1.add(tglTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(490,

70, 150, -1));

jPanel1.add(subtotTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(550, 110, 60, -1));

jPanel1.add(stockTF, new

org.netbeans.lib.awtextra.AbsoluteConstraints(490, 110, 60, -1));

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

87

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

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

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

501, Short.MAX_VALUE)

);

pack();

setLocationRelativeTo(null);

}// </editor-fold>

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

// TODO add your handling code here:

jDialog1.setLocationRelativeTo(null);

tampilBarang();

jDialog1.setVisible(true);

cariTF.setText("");

}

88

private void formWindowActivated(java.awt.event.WindowEvent evt) {

// TODO add your handling code here:

Date date = new Date();

tglTF.setDate(date);

}

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

// TODO add your handling code here:

}

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

// TODO add your handling code here:

if(noTF.getText().equals("") || pembeliTF.getText().equals("") ||

ubayTF.getText().equals("0") || ukemTF.getText().equals("0")){

JOptionPane.showMessageDialog(null, "Lengkapi inputan penjualan

barang");

} else{

simpan();

int pesan=JOptionPane.showConfirmDialog(null, "Cetak Kwitansi

Nota","Cetak",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MES

SAGE);

if(pesan==JOptionPane.YES_OPTION){

cetak_nota();

89

}else {

JOptionPane.showMessageDialog(null, "Simpan Transaksi Berhasil");

}

bersih();

}

}

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

// TODO add your handling code here:

if(tambahBT.getText().equalsIgnoreCase("tambah")){

tambahBT.setText("Batal");

siapIsi(true);

bersih();

otomatis();

pembeliTF.requestFocus();

noTF.setEnabled(false);

simpanBT.setEnabled(true);

tbhBrgBT.setEnabled(true);

krgBrgBT.setEnabled(true);

cariBrgBT.setEnabled(true);

}else{

bersih();

siapIsi(false);

tambahBT.setText("Tambah");

90

TabModel.getDataVector().removeAllElements();

TabModel.fireTableDataChanged();

tombolNormal();

}

}

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

// TODO add your handling code here:

int harga=Integer.parseInt(hjualTF.getText());

int jml=Integer.parseInt(jumlahTF.getText());

int stok=Integer.parseInt(stockTF.getText());

int total=Integer.parseInt(totalTF.getText());

if(jml>stok){

JOptionPane.showMessageDialog(null, "Stok barang tidak mencukupi");

}else{

int subtot=harga*jml;

subtotTF.setText(Integer.toString(subtot));

int totbay=total+(harga*jml);

totalTF.setText(Integer.toString(totbay));

ambildata();

91

kodeTF.setText("");

namaTF.setText("");

hjualTF.setText("");

jumlahTF.setText("");

}

}

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

// TODO add your handling code here:

int baris = jTable2.getSelectedRow();

kodeTF.setText(jTable2.getModel().getValueAt(baris, 0).toString());

namaTF.setText(jTable2.getModel().getValueAt(baris, 1).toString());

hjualTF.setText(jTable2.getModel().getValueAt(baris, 3).toString());

stockTF.setText(jTable2.getModel().getValueAt(baris, 4).toString());

jDialog1.dispose();

}

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

// TODO add your handling code here:

int baris = jTable1.getSelectedRow();

int qty=Integer.parseInt(jTable1.getModel().getValueAt(baris, 3).toString());

int total=Integer.parseInt(totalTF.getText());

92

int harga=Integer.parseInt(jTable1.getModel().getValueAt(baris,

2).toString());

int totbay=total-(harga*qty);

totalTF.setText(Integer.toString(totbay));

hapusdatadaritabel();

}

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

// TODO add your handling code here:

int baris = jTable2.getSelectedRow();

kodeTF.setText(jTable2.getModel().getValueAt(baris, 0).toString());

namaTF.setText(jTable2.getModel().getValueAt(baris, 1).toString());

hjualTF.setText(jTable2.getModel().getValueAt(baris, 3).toString());

stockTF.setText(jTable2.getModel().getValueAt(baris, 4).toString());

jDialog1.dispose();

}

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

// TODO add your handling code here:

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

Object header[]={"Kode Barang","Nama Barang","Jenis","Harga

Jual","Stock"};

DefaultTableModel data=new DefaultTableModel(null,header);

93

jTable2.setModel(data);

setKoneksi();

String sql="Select * from tbbrng where kdbrng like '%" + cariTF.getText() +

"%'" + "or nmbrng like '%" + cariTF.getText()+ "%'";

try {

ResultSet rs=st.executeQuery(sql);

while (rs.next())

{

String kolom1=rs.getString(1);

String kolom2=rs.getString(2);

String kolom3=rs.getString(3);

String kolom4=rs.getString(4);

String kolom5=rs.getString(5);

String kolom[]={kolom1,kolom2,kolom3,kolom4,kolom5};

data.addRow(kolom);

}

} catch (Exception e) {

}

}

}

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

// TODO add your handling code here:

94

Object header[]={"Kode Barang","Nama Barang","Jenis","Harga

Jual","Stock"};

DefaultTableModel data=new DefaultTableModel(null,header);

jTable2.setModel(data);

setKoneksi();

String sql="Select * from tbbrng where kdbrng like '%" + cariTF.getText() +

"%'" + "or nmbrng like '%" + cariTF.getText()+ "%'";

try {

ResultSet rs=st.executeQuery(sql);

while (rs.next())

{

String kolom1=rs.getString(1);

String kolom2=rs.getString(2);

String kolom3=rs.getString(3);

String kolom4=rs.getString(4);

String kolom5=rs.getString(5);

String kolom[]={kolom1,kolom2,kolom3,kolom4,kolom5};

data.addRow(kolom);

}

} catch (Exception e) {

}

}

private void formWindowOpened(java.awt.event.WindowEvent evt) {

95

// TODO add your handling code here:

ImageIcon img = new ImageIcon("src/gambar/kredit.png");

setIconImage(img.getImage());

}

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

// TODO add your handling code here:

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

int total=Integer.parseInt(totalTF.getText());

int bayar=Integer.parseInt(ubayTF.getText());

if(bayar<total){

JOptionPane.showMessageDialog(null, "Jumlah bayar tidak

mencukupi");

ubayTF.requestFocus();

} else{

int kembali=bayar-total;

ukemTF.setText(Integer.toString(kembali));

}

}

}

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

// TODO add your handling code here:

jTable1.setRowSelectionAllowed(true);

96

int a = jTable1.getSelectedRow();

String kolom1 = jTable1.getValueAt(a,0).toString();

String kolom2 = jTable1.getValueAt(a,1).toString();

String kolom3 = jTable1.getValueAt(a,2).toString();

String kolom4 = jTable1.getValueAt(a,3).toString();

String kolom5 = jTable1.getValueAt(a,4).toString();

}

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

// TODO add your handling code here:

//validasi data harus angka atau tombol backspace

char karakter = evt.getKeyChar();

if (!(Character.isDigit(karakter) ||

karakter==KeyEvent.VK_BACK_SPACE))

{

evt.consume();

}

}

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

// TODO add your handling code here:

//validasi data harus angka atau tombol backspace

char karakter = evt.getKeyChar();

97

if (!(Character.isDigit(karakter) ||

karakter==KeyEvent.VK_BACK_SPACE))

{

evt.consume();

}

}

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

// TODO add your handling code here:

//validasi data harus angka atau tombol backspace

char karakter = evt.getKeyChar();

if (!(Character.isDigit(karakter) ||

karakter==KeyEvent.VK_BACK_SPACE))

{

evt.consume();

}

}

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

// TODO add your handling code here:

}

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

// TODO add your handling code here:

98

//validasi data harus angka atau tombol backspace

char karakter = evt.getKeyChar();

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

|| karakter==KeyEvent.VK_ENTER))

{

evt.consume();

}

}

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

// TODO add your handling code here:

char karakter = evt.getKeyChar();

if (!(Character.isDigit(karakter) ||

karakter==KeyEvent.VK_BACK_SPACE))

{

evt.consume();

}

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/*

99

* Set the Nimbus look and feel

*/

/* Create and display the form */

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

public void run() {

new Penjualan().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton cariBrgBT;

private javax.swing.JTextField cariTF;

private javax.swing.JTextField hjualTF;

private javax.swing.JButton jButton7;

private javax.swing.JDialog jDialog1;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel10;

private javax.swing.JLabel jLabel11;

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;

100

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;

private javax.swing.JLabel jLabel9;

private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2;

private javax.swing.JPanel jPanel3;

private javax.swing.JPanel jPanel5;

private javax.swing.JPanel jPanel6;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane3;

private javax.swing.JTable jTable1;

private javax.swing.JTable jTable2;

private javax.swing.JTextField jumlahTF;

private javax.swing.JTextField kodeTF;

private javax.swing.JButton krgBrgBT;

private javax.swing.JTextField namaTF;

private javax.swing.JTextField noTF;

private javax.swing.JTextField pembeliTF;

private javax.swing.JButton simpanBT;

private javax.swing.JTextField stockTF;

private javax.swing.JTextField subtotTF;

private javax.swing.JButton tambahBT;

private javax.swing.JButton tbhBrgBT;

101

private com.toedter.calendar.JDateChooser tglTF;

private javax.swing.JTextField totalTF;

private javax.swing.JTextField ubayTF;

private javax.swing.JTextField ukemTF;

// End of variables declaration

public Connection setKoneksi(){

try {

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection("jdbc:mysql://localhost/satriacell","root","");

st=conn.createStatement();

} catch (Exception e) {

JOptionPane.showMessageDialog(null,"Koneksi Gagal :" +e);

}

return conn;

}

void cetak_nota(){

try {

String NamaFile = "src/Report/notaJual.jasper";

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection koneksi =

DriverManager.getConnection("jdbc:mysql://localhost/satriacell","root","");

102

HashMap param = new HashMap();

param.put("ptrans",noTF.getText());

JasperPrint JPrint = JasperFillManager.fillReport(NamaFile, param,

koneksi);

JasperViewer.viewReport(JPrint, false);

} catch (Exception e) {

JOptionPane.showMessageDialog(null, "Data tidak dapat dicetak!","Cetak

Data",JOptionPane.ERROR_MESSAGE);

}

}

}

103

3.5.2. Blackbox Testing

Form Login Pemilik

Tabel III.14

Hasil Pengujian Black Box Testing Form Login

3.5.3. Spesifikasi Hardware dan Software

Kebutuhan : Keterangan

Sistem : Windows 7 64-bit

Processor : AMD E-1 -6010 (1.35 GHz)

RAM : 2GB

Plasdisk : 8GB

Monitor : 14LED

Keyboard : 86 Key

Printer : Dot Matrix

Mouse : Standard

Software : Kebutuhan menjalankan aplikasi secara

local

Bahasa script programming : JAVA 7.1

Web Server : Apache 3.2

DBSM : MySQL

No Skenario Pengujian Test Case Hasil Pengujian Hasil Pengujian Kesimpulan

Sesuai harapan valid

mengetikan sala satu

kondisi salah pada nama

user atau password

kemudian klik login

4

Nama user:

(kosong)

password:

pemilik

Sistem akan menolak akses

dan akan menampilkan

pesan “lengkapi inputan

login”

mengetikan nama user dan

password dengan data

yang benar kemudian klik

tombol togin

5

Nama user:

pemilik (benar)

password:

pemlik (benar)

sistem akan menerima akses

login dan akan menampilkan

menu utama

3

nama usertidak di isi dan

password di isi kemudian

klik login

Nama user:

pemilik (benar)

password:

pemlk (salah)

Sistem akan menolak akses

dan akan menampilkan

pesan “lengkapi inputan

login”

Sesuai harapan valid

Sesuai harapan valid

2

mengetikan nama user dan

password tidak di isi atau

kosong kemudian klik

tombol login

Nama user:

pemilik

Password:

(Kosong)

Sistem akan menolak akses

dan akan menampilkan

pesan “lengkapi inputan

login”

sesuai harapan valid

Nama user dan Password

tidak diisi kemudian klik

tombol login

Nama user: (isi)

Password:

(Kosong)

Sistem akan menolak akses

dan akan menampilkan

pesan “lengkapi inputan

login”

Sesuai harapan valid1