• Tidak ada hasil yang ditemukan

BAB III PEMBAHASAN. perdagangan. yang didirikan oleh ibu Sulismawati pada tahun 2010 dengan modal

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PEMBAHASAN. perdagangan. yang didirikan oleh ibu Sulismawati pada tahun 2010 dengan modal"

Copied!
77
0
0

Teks penuh

(1)

16

BAB III

PEMBAHASAN

3.1. Tinjauan Perusahaan

Tinjauan perusahaan pada toko Ilham Foam akan menjelaskan tentang sejarah perusahaan, struktur organisasi dan uraian tugas dan tanggung jawab masing-masing bagian.

3.1.1. Sejarah perusahaan

Toko Ilham Foam merupakan sebuah toko yang bergerak dibidang

perdagangan. yang didirikan oleh ibu Sulismawati pada tahun 2010 dengan modal dan kekayaan bersih Rp. 200.000.000 tidak termasuk tanah dan bangunan yang beralamat di Dusun Pundong RT. 01/03, Desa Belendung, Kecamatan Klari, Kabupaten Karawang dengan nomor SIUP : 503/1618/456/PK/II/BPMPT/2015.

Toko Ilham Foam buka atau beroperasi setiap hari mulai pukul 08.00 sampai dengan 21.00 WIB. Toko Ilham Foam memiliki beberapa karyawan dan mempunyai beberapa kendaraan untuk kebutuhan usahanya. Adapun visi dan misi toko Ilham Foam adalah sebagai berikut:

1. Visi

Toko Ilham Foam ingin menjadi pimpinan kelas dunia yang amanah, dan berkontribusi pada masyarakat Indonesia dengan menciptakan serta mewujudkan impian para konsumen, yaitu masyarakat Indonesia.

(2)

2. Misi

Berkomitmen untuk selalu memberikan pelayanan dan solusi yang terbaik bagi masyarakat serta bertanggung jawab dalam setiap langkah.

3.1.2. Struktur Organisasi dan Fungsi

Pemilik

Admin Pegawai Bagian Pengiriman

Sumber : Toko Ilham Foam (2010)

Gambar III.1

Struktur Organisasi Toko Ilham Foam

Tugas dan tanggung jawab struktur organisasi pada toko Ilham Foam adalah sebagai berikut:

1. Pemilik

Pemilik mempunyai tugas sebagai berikut:

a. Menentukan kebijakan atau pengambilan keputusan dalam segala masalah.

b. Menjaga serta menjamin kelangsungan perkembangan toko.

c. Mendorong pegawai agar bekerja sesuai dengan sasaran yang direncanakan.

2. Admin

Bagian admin mempunyai tugas sebagai berikut:

(3)

b. Mencatat semua transaksi.

c. Membuat laporan.

3. Pegawai

pegawai bertanggung jawab untuk memberikan pelayanan yang baik kepada konsumen.

4. Bagian Pengiriman

Bagian pengiriman mempunyai tugas mengantar barang pesanan kepada

konsumen.

3.2.Tinjauan Kasus

Dari hasil observasi pada toko Ilham Foam, proses pengolahan data penjualan masih dilakukan dengan cara manual. Mulai dari pencatatan data barang, data pelanggan, transaksi penjualan dan pembuatan laporan-laporan. Sehingga sering mengalami kesalahan dalam proses input data dan memerlukan waktu yang cukup lama untuk mencari data yang diperlukan. Dari kekurangan tersebut maka penulis membuatkan sebuah program penjualan yang dapat digunakan untuk mencatat semua data transaksi penjualan.

Dengan program penjualan tersebut diharapkan dapat mengurangi kesalahan-kesalahan dalam proses input data dan mempercepat proses dalam mencari data yang diperlukan serta mempermudah dalam pembuatan laporan.

3.2.1.Dokumen Masukan

Bentuk dokumen masukan yang digunakan pada program penjualan adalah sebagai berikut:

(4)

1. Data Barang

Nama Dokumen : Data Barang

Fungsi : Untuk mengetahui kode barang, nama barang,

harga, stok barang.

Sumber : Admin

Tujuan : Pemilik toko

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap Pembelian Barang

Format : Lampiram A.1

3.2.2. Dokumen Keluaran

Bentuk dokumen keluaran adalah bentuk dokumen berdasarkan data keluaran. Dokumen tersebuat adalah sebagai berikut:

1. Nota Transaksi

Nama Dokumen : Nota Penjualan

Fungsi : Sebagai bukti pembayaran

Sumber : Admin

Tujuan : Pembeli

Media : Kertas

Jumlah : Satu lembar

Frekuensi : Setiap adanya transaksi penjualan

(5)

2. Laporan Data Barang

Nama Dokumen : Laporan data barang

Fungsi : Untuk mengetahui data barang

Sumber : Admin

Tujuan : Pemilik toko

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap hari

Format : Lampiran B.2

3. Laporan Transaksi Penjualan Perhari

Nama Dokumen : Laporan transaksi penjualan Perhari

Fungsi : Untuk mengetahui transaksi penjualan Perhari

Sumber : Admin

Tujuan : Pemilik toko

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap hari

Format : Lampiran B.3

4. Laporan Transaksi Penjualan Perbulan

Nama Dokumen : Laporan transaksi penjualan Perbulan

Fungsi : Untuk mengetahui transaksi penjualan Perbulan

Sumber : Admin

Tujuan : Pemilik toko

(6)

Jumlah : Satu Lembar

Frekuensi : Setiap bulan

Format : Lampiran B.4

3.3.Analisa Kebutuhan Software

3.3.1. Analisa Kebutuhan

Analisa kebutuhan software untuk program penjualan pada toko Ilham Foam antara lain:

A. Admin

A.1. Admin dapat login dengan Kode User dan password yang telah dibuat. A.2. Admin dapat mengelola form master barang.

A.3. Admin dapat mengelola transaksi penjualan. A.4. Admin dapat mengelola laporan data stok barang. A.5. Admin dapat mengelola laporan transaksi perhari. A.6. Admin dapat mengelola laporan transaksi perperiode.

B. Pemilik:

B.1. Pemilik dapat login dengan username dan password yang telah dibuat. B.2. Pemilik dapat melihat laporan data stok barang.

B.1. Pemilik dapat melihat laporan transaksi perhari. B.1. Pemilik dapat melihat laporan transaksi perperiode.

(7)

3.3.2. Use Case Diagram

Gambar III.2 Use Case Diagram Penjualan Tunai

uc Penj ualan Tunai

Admin

Mengelola Barang Menambah Barang

Mengubah Barang Menghapus Barang

Mencari Barang Melihat Barang Mengelola User Menambah User Mengubah User Menghapus User Mencari User Melihat User Login Validasi Logout

Memeriksa Status Login Mengelola Transaksi Penj ualan Input Transaksi Penj ualan Mencari Transaksi Penj ualan Mengelola Laporan Stok Barang Pemilik Mengelola Laporan PerHari Mengelola Laporan Perperiode Mencetak Laporan Perhari Mencetak Laporan Stok Barang Melihat Laporan Stok Barang Melihat Laporan Perhari Mencetak Laporan PerPeriode Melihat Laporan PerPeriode «include» «include» «include» «include» «include» «include»

(8)

3.3.3. Activity Diagram

1. Activity Diagram Admin

Gambar III.3 Activity Diagram Admin act Activity Diagram Admin

Sistem Admin Login Menampilkan Menu Utama Validasi Login Mengelola Barang Mengelola Laporan Stok Barang LogOut Mengelola Laporan PerHari Mengelola Laporan PerPeriode Mengelola Transaksi Penjualan Benar Salah

(9)

2. Activity Diagram Pemilik

Gambar III.4 Activity Diagram Admin

act activity Diagram Pemilik

Sistem Pemilik Login Menampilkan Menu Utama Validasi Login

Mengelola User Melihat Laporan Stok Barang LogOut Melihat Laporan PerHari Melihat Laporan PerPeriode Benar Salah

(10)

3.4.Desain

3.4.1. Software Architecture

1. Class Diagram

Gambar III.5 Class Diagram Penjualan Tunai class Class Penjualan Tunai

Barang + harga # kode_barang + nama_barang + stok + getHarga() + getkodeBarang() + getNamaBarang() + getStok() + queryCekLogin() + queryMelihatiBarang() + queryMemasukkanBarang() + queryMencariBarang() + queryMenghapusBarang() + queryMengubahBarang() + setHarga() + setKodeBarang() + setNamaBarang() + setStok() Karyawan + Hak_Akses # Kode_User + Nama_User + Password + getHakAkses() + getKodeKaryawan() + getNamaKaryawan() + getPassword() + queryMelihatKaryawan() + queryMemasukkanKaryawan() + queryMencariKaryawan() + queryMenghapusKaryawan() + queryMengubahKaryawan() + setHakAkses() + setKodeKaryawan() + setNamaKaryawan() + setPassword() Transaksi # no_transaksi + tanggal + total + getNoTransaksi() + getTanggal() + getTotal() + queryMelihatTransaksi() + queryMemasukkanTransaksi() + queryMencariTransaksi() + setNoTransaksi() + setTanggal() + setTotal() Detail_Tansaksi + harga # Id + kode_barang + Nama_Barang + no_transaksi + qty + subtotal + getHarga() + getId() + getKodeBarang() + getNamaBarang() + getQty() + getSubTotal() + queryMelihatDetailTransaksi() + queryMemasukkanDetailTransaksi() + queryMencariDetailTransaksi() + setHarga() + setId() + setKodeBarang() + setNamaBarang() + setQty() + setSubTotal() Validasi + cekStatusLogin() + login() + logOut() Main + main() KoneksiBasisData + database + host + kode_karyawan + password + close(): int + execute(): int + getResult(): int + open(): int Mengelola Barang + Melihat Barang() + Menambah Barang() + Mencari Barang() + Menghapus Barang() + Mengubah Barang() Mengelola Karyawan + Melihat User() + Menambah User() + Mencari User() + Menghapus User() + Mengubah User() Mengelola Transaksi + Menambah Transaksi() + Mencari Transaksi()

Mengelola Detail Transaksi

+ Menambah Detail Transaksi() + Mencari Detail Transaksi()

Antarmuka + formBarang() + formKaryawan() + formLaporan() + formLaporan() + formLogin() + formTransaksiPenjualan() + tampilBarang() + tampilKaryawan() + tampilLaporan() + tampilMenu() + tampilTransaksiPenjualan() 1..* 1 1 1 1..* 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1..* 1 1 1 1..* 1

(11)

2. Sequence Diagram

a. Squence Diagram Login

Gambar III.6 Sequencce Diagram Login

sd Login Admin

m : main an :Antarmuka v : Validasi k : KoneksiBasisData a : Admin

Admin 2 : formLogin() 9 : execute() 14 <<destroy>> 1 : main() 12 : close() 7 : open() 6 : <<create>> 8 : queryCekLogin() 13 << destroy>>

11 : username dan password Admin 5 : <<create>>

4 : Login()

10 : getResult() 3 : Username dan Password

(12)

b. Sequence Diagram LogOut

Gambar III.7 Sequencce Diagram LogOut sd LogOut

m : main

Admin

an : Antarmuka v : Validasi

2 : tampilMenu()

3 : klik menu Logout() 1 : main()

(13)

c. Sequence Diagram Menambahkan Barang

Gambar III.8 Sequencce Diagram Menambahkan Barang sd Menambah Barang

m : Main an : Antarmuka mb : MengelolaBarang k : KoneksiBasisData b : Barang

Admin

13 : execute() 7 : set Kode()

5 <<create>> 3 : klik menu New

18 : pesan 12 ; queryMenambahBarang() 1 : main() 16 <<destroy>> 10 : setJumlah() 14 : close() 8 : setNama() 6 <<create>> 4 : memasukkanbarang() 2 : formBarang() 17 : pesan 11 : open() 15 <<destroy>> 9 : setharga()

(14)

d. Sequence Diagram Menghapus Barang

Gambar III.9 Sequencce Diagram Menghapus Barang sd Menghapus Barang

m : Main an : Antarmuka mb : MengelolaBarang k : KoneksiBasisData b : Barang

Admin

6 : Yes/No

17 <<destroy>> 4 : klik menu Delete

19 : pesan

15 : close() 2 : Barang yang dipilih()

13 : queryMenghapusBarang() 11 <<create>> 7 : menghapusBarang() 18 : pesan 5 : konfirmasi hapus 16 <<destroy>> 3 : formBarang() 14 : execute() 1 : main() 12 : open() 10 <<create>>

(15)

e. Sequence Diagram Mengubah Barang

Gambar III.10 Sequencce Diagram Mengubah Barang sd Mengubah Barang

m : Main an : Antarmuka mb : MengelolaBarang k : KoneksiBasisData b : Barang

Admin

13 : queryMengubahBarang() 2 : barang yang dipilih

11 : setJumlah() 9 : setNama() 18 : pesan 7 <<create>> 16 <<destroy>> 5 : mengubahBarang() 14 : execute() 3 : formBarang() 12 : open() 1 : main() 10 : setHarga() 19 : pesan 8 : setKode() 17 <<destroy>> 6 <<create>> 15 : close() 4 : klik menu edit

(16)

f. Sequence Diagram Melihat Barang

Gambar III.11 Sequencce Diagram Melihat Data Barang sd Melihat Barang

m : Main an : Antarmuka mb : MengelolaBarang k : KoneksiBasisData b : Barang

Admin 5 <<create>> 14 : getJumlah() 3 : melihatBarang() 12 : getNama() 1 : main() 10 : hasil query 19 : dataBarang 8 : execute() 17 <<destroy>> 6 : open() 15 : dataBarang 4 <<create>> 13 : getHarga() 2 : tampilBarang() 11 : getKode() 20 : dataBarang 9 : getResult() 18 <<destroy>> 7 : queryMelihatBarang() 16 : close()

(17)

g. Sequence Diagram Memasukkan Transaksi

Gambar III.12 Sequencce Diagram Memasukkan Transaksi

sd Memasukkan Transaksi Penj ualan

m : main an : antarmuka mtp : MengelolaTransaksiPenjualan k : KoneksiBasisData tp : TansaksiPenjualan Admin

16 : getKembali() 5 <<create>>

14 : getTotal() 3 : klik menu new

23 : pesan 12 : setQuantity() 1 ; main() 21 <<destroy>> 10 : getNamaBarang() 19 : execute() 8 : getTanggalTransaksi() 17 : open() 6 <<create>> 15 : setBayar() 4 : inputTransaksiPenjualan() 24 : pesan 13 : getSubTotal() 2 : formTransaksiPenjualan() 22 <<destroy>> 11 : getHarga() 20 : close() 9 : setKodeBarang() 18 : queryMemasukkanTransaksi() 7 : getNomorTransaksi()

(18)

h. Sequence Mencari data Transaksi Penjualan

Gambar III.13 Sequencce Diagram Mencari data Transaksi

sd squence Mencari Transaksi Penj ualan

m : main an : antarmuka mtp : MengelolaTransaksiPenjualan k : KoneksiBasisData tp : TansaksiPenjualan Admin 14 : getNamaBarang() 3 : mencariTransaksiPenjualan() 1 ; main() 23 <<destroy>> 12 : getTanggalTransaksi()

21 : data Transaksi Penjualan() 10 : hasil query() 19 : getBayar() 8 : execute() 17 : getSubTotal() 6 : open() 15 : getHarga()

24 : data Transaksi Penjualan

4 <<create>> 2 : formTransaksiPenjualan() 24 <<destroy>> 13 : getKodeBarang() 22 : close() 11 : getNomorTransaksi() 20 : getKembali() 9 : getResult() 18 : getTotal() 7 : queryMencariTransaksiPenjualan() 16 : getQuantity()

25 : data Transaksi Penjualan

(19)

i. Sequence Diagram Menambah Data User

Gambar III.14 Sequencce Diagram Menambah Data User sd Menambah User

m : main an : Antarmuka mu : mengelolaUser k : KoneksiBasisData u : User

Pemilik 11 : setHakAkses() 9 : setAlamat() 18 : pesan 7 : setKodeUser() 16 <<destroy>> 5 <<create>> 14 : execute() 3 : klik menu new

12 : open() 1 : main() 10 : setPassword() 8 : setNama() 19 : pesan 17 <<destroy>> 6 <<create>> 15 : close() 4 : memasukkanUser() 13 : queryMemasukkanUser() 2 : formUser()

(20)

j. Sequence Diagram Mencari Data User

Gambar III.15 Sequencce Diagram Mencari Data User sd Mencari User

m : main an : Antarmuka mu : mengelolaUser k : KoneksiBasisData u : User

Pemilik 21 : data User 19 <<destroy>> 6 : open() 16 : data karyawan() 1 : main() 11 : getKodeUser() 15 : getHakAkses() 4 <<create>> 3 : mencariUser() 20 : data User 14 : getPassword() 18 <<destroy>> 2 : formPencarianUser() 9 : getResult() 13 : getAlamat() 5 <<create>> 17 : close() 8 : execute() 10 : hasil query 12 : getNama() 7 : queryMencariUser()

(21)

k. Sequence Diagram Menghapus Data User

Gambar III.16 Sequencce Diagram Menghapus Data User sd Menghapus User

m : main an : Antarmuka mu : mengelolaUser k : KoneksiBasisData u : User

A Pemilik 12 : open() 10 <<create>> 19 : pesan 6 : Yes/ No 17 <<destroy>> 4 : klik menu Delete

15 : close() 13 : queryMemasukkanKaryawan() 1 : main() 11 <<create>> 7 : menghapusKaryawan() 18 : pesan 5 : konfirmasi hapus 16 <<destroy>> 3 : formUser() 14 : execute() 2 :User yang dipilih

(22)

l. Sequence Diagram Mengubah Data User

Gambar III.17 Sequencce Diagram Mengubah Data User sd Mengubah User

m : main an : Antarmuka mu : mengelolaUser k : KoneksiBasisData u : User

Pemilik 16 : queryMengubahUser() 3 : formUser() 14 : setHakAkses() 1 : main() 12 : setAlamat() 21 : pesan 10 : setKodeUser() 19 <<destroy>> 8 <<create>> 17 : execute() 4 : Klik menu edit

15 : open() 2 : User yang dipilih

13 : setPassword() 22 : pesan 11 : setNama() 20 <<destroy>> 9 <<create>> 18 : close() 5: MengubahUser()

(23)

m. Sequence Diagram Melihat Data User

Gambar III.18 Sequencce Diagram Melihat Data User sd Melihat User

m : main an : Antarmuka mu : mengelolaUser k : KoneksiBasisData u : User

Pemilik 11 : getKodeUser() 20 : data User 9 : getResult() 18 <<destroy>> 7 : queryMelihatuser() 5 <<create>> 16 : data Karyawan() 3 : melihatuser() 14 : getPassword() 1 : main() 12 : getNama() 21 : data User 10 : hasil query 19 <<destroy>> 8 : execute() 17 : close() 6 : open() 4 <<create>> 15 : getHakAkses() 2 : tampiluser() 13 : getAlamat()

(24)

n. Sequence Diagram Mencetak Laporan Stok Barang

Gambar III.19 Sequencce Diagram Mencetak Laporan Stok Barang

sd Laporan Stok Barang

Admin

m : main an : antarmuka ml : mengelola

Laporan k : KoneksiBasisData Lb : LaporanBarang 10 : hasil query 8 : queryCetakLaporan() 5 <<create>>

15 : data Laporan Harian

3 : mencetakLaporanStokBarang() 13 <<destroy>> 1 : main() 11 : close() 9 : execute() 7 : open() 4 <<create>>

14 : data Laporan Harian 2 :

formLaporanStokBarang()

(25)

o. Sequence Diagram Mencetak Laporan Transaksi Perhari

Gambar III.20 Sequencce Diagram Mencetak Laporan Transaksi Perhari

sd MencetakLaporanHarian

Admin

m : main an : antarmuka ml : mengelola Laporan

k : KoneksiBasisData Lh : LaporanHarian

4 <<create>>

8 : queryCetakLaporan() 2 : formLaporanHarian()

15 : data Laporan Harian

13 <<destroy>> 7 : open() 11 : close() 5 <<create>> 9 : execute() 3 : mencetakLaporanHarian() 1 : main()

14 : data Laporan Harian

12 <<destroy>> 6 : setTanggal()

(26)

p. Sequence Diagram Mencetak Laporan Transaksi PerPeriode

Gambar III.21 Sequencce Diagram Mencetak laporan Transaksi PerPeriode

sd mencetaklaporanperperiode

Admin

m : main an : antarmuka ml : mengelola Laporan k : KoneksiBasisData Lp : LaporanPerperiode 7 : setTanggaldari()

16 : data Laporan PerPeriode

5 <<create>> 14 <<destroy>> 3 : mencetakLaporanPerperiode() 12 : close() 1 : main() 10 : execute () 8 : open() 6 : setTanggaldari()

15 : data Laporan PerPeriode

4 <<create>> 13 <<destroy>> 2 : formLaporanPerperiode() 11 : hasil query 9 : queryCetakLaporan()

(27)

3.4.2. User Interface

1. Form Login

Gambar III.22 Form Login

2. Form Utama Admin

(28)

3. Form Master data Barang

Gambar III.24 Form Master Data Barang

4. Form Transaksi Penjualan

(29)

5. Form Laporan Transaksi Perhari

Gambar III.26 Form Laporan Transaksi Perhari

6. Form Laporan Transaksi Penjualan PerPeriode

(30)

7. Form Utama Pemilik

Gambar III.28 Form Utama Pemilik

8. Form User

(31)

3.5.Implementasi 3.5.1. Code Generation 1. LoginControl.java package penjualan.control; import java.sql.*; import javax.swing.JOptionPane; public class LoginControl { Connection conn;

Statement st; ResultSet rs;

public static Connection koneksiDb(){ try{ Class.forName("com.mysql.jdbc.Driver"); Connection koneksi = DriverManager.getConnection("jdbc:mysql://localhost/penjualan_tunai","root ",""); return koneksi; }catch(Exception e){ JOptionPane.showMessageDialog(null, e); return null; } } } 2. BarangControl.java package penjualan.control; import java.io.File; import penjualan.data.Barang; import java.io.Serializable; import javax.persistence.Query; import java.text.DecimalFormat; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane;

public class BarangControl implements Serializable{ Connection con=null;

(32)

Statement st=null; ResultSet rs=null; String sql=null; public BarangControl(){ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/penjualan_t unai","root",""); st=con.createStatement(); }catch(Exception a){

JOptionPane.showMessageDialog(null, "Koneksi Database Gagal, Terjadi kesalahaan Pada : \n"+a);

} }

private EntityManagerFactory emf=null;

public BarangControl(EntityManagerFactory emf){ this.emf=emf;

}

public EntityManager getEntityManager(){ return emf.createEntityManager();

}

public void save(Barang barang) throws Exception{ EntityManager em=getEntityManager(); try{ em.getTransaction().begin(); em.persist(barang); em.getTransaction().commit(); }catch(Exception ex){} }

public void update(Barang barang) throws Exception{ EntityManager em=getEntityManager(); try{ em.getTransaction().begin(); em.merge(barang); em.getTransaction().commit(); }catch(Exception ex){} }

public void delete(String kode) throws Exception{ EntityManager em=getEntityManager();

Barang br; try{

br=em.getReference(Barang.class, kode); br.getKodeBarang();

(33)

em.getTransaction().begin(); em.remove(br);

em.getTransaction().commit(); }catch(Exception ex){}

}

public Barang findBarang(String kode){ EntityManager em=getEntityManager(); try{

return em.find(Barang.class, kode); }finally{}

}

public String nomorOtomatis(){ String kode="B001";

EntityManager em=null; try{

em = getEntityManager();

Query q=em.createQuery("select b from Barang b order by b.kodeBarang desc");

q.setMaxResults(1);

Barang b=(Barang) q.getSingleResult(); if(q!=null){

DecimalFormat formatnomor =new DecimalFormat("B000"); String nomorurut =b.getKodeBarang().substring(2);

kode=formatnomor.format(Double.parseDouble(nomorurut)+1); }

}finally{} return kode; }

public List tampil(){

List logBarang = new ArrayList();

sql="select KodeBarang,NamaBarang,Harga,Stok from barang order by KodeBarang asc";

try{

rs=st.executeQuery(sql);while(rs.next()){ Barang eb=new Barang();

eb.setKodeBarang(rs.getString("KodeBarang")); eb.setNamaBarang(rs.getString("NamaBarang")); eb.setHarga(rs.getInt("Harga")); eb.setStok(rs.getInt("Stok")); logBarang.add(eb); } } catch(SQLException a){

JOptionPane.showMessageDialog(null, "Terjadi kesalahaan tampil, pada :\n"+a);

(34)

return logBarang; }

public List cariBarang(String cari){ List logBarang = new ArrayList();

sql="select KodeBarang,NamaBarang,Harga,Stok from barang where

KodeBarang like '%"+cari+"%' or NamaBarang like '%"+cari+"%'"; try{

rs=st.executeQuery(sql); while(rs.next()){

Barang eb=new Barang();

eb.setKodeBarang(rs.getString("KodeBarang")); eb.setNamaBarang(rs.getString("NamaBarang")); eb.setHarga(rs.getInt("Harga")); eb.setStok(rs.getInt("Stok")); logBarang.add(eb); } } catch(SQLException a){

JOptionPane.showMessageDialog(null, "Terjadi kesalahaan tampil, pada :\n"+a);

}

return logBarang; }

Public int updateStok(int stok,String kdBarang){

sql="update barang set Stok='"+stok+"' where KodeBarang='"+kdBarang+"'"; int hasil=0; try{ hasil=st.executeUpdate(sql); } catch(SQLException a){ Logger.getLogger(BarangControl.class.getName()).log(Level.SEVERE,null,a ); } return hasil; } } 3. UserControl.java package penjualan.control; import penjualan.data.User; import java.io.Serializable; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Query; import java.text.DecimalFormat;

(35)

import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane;

public class UserControl implements Serializable{ Connection con=null; Statement st=null; ResultSet rs=null; String sql=null; public UserControl(){ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/penjualan_t unai?","root",""); st=con.createStatement(); }catch(Exception a){

JOptionPane.showMessageDialog(null, "Koneksi Database Gagal, Terjadi kesalahaan Pada : \n"+a);

} }

private EntityManagerFactory emf=null;

public UserControl(EntityManagerFactory emf){ this.emf=emf;

}

public EntityManager getEntityManager(){ return emf.createEntityManager();

}

public void save(User user) throws Exception{ EntityManager em=getEntityManager(); try{ em.getTransaction().begin(); em.persist(user); em.getTransaction().commit(); }catch(Exception ex){} }

public void update(User user) throws Exception{ EntityManager em=getEntityManager();

(36)

em.getTransaction().begin(); em.merge(user);

em.getTransaction().commit(); }catch(Exception ex){}

}

public void delete(String kode) throws Exception{ EntityManager em=getEntityManager(); User us; try{ us=em.getReference(User.class, kode); us.getKodeUser(); em.getTransaction().begin(); em.remove(us); em.getTransaction().commit(); }catch(Exception ex){} }

public User findUser(String kode){ EntityManager em=getEntityManager(); try{

return em.find(User.class, kode); }finally{}

}

public List tampil(){

List logBarang = new ArrayList();

sql="select KodeUser,NamaUser,Password,HakAkses from user order by KodeUser asc";

try{

rs=st.executeQuery(sql); while(rs.next()){

User eb=new User();

eb.setKodeUser(rs.getString("KodeUser")); eb.setNamaUser(rs.getString("NamaUser")); eb.setPassword(rs.getString("Password")); eb.setHakAkses(rs.getString("HakAkses")); logBarang.add(eb); } } catch(SQLException a){

JOptionPane.showMessageDialog(null, "Terjadi kesalahaan tampil, pada :\n"+a);

}

return logBarang; }

public List cariUser(String cari){ List logBarang = new ArrayList();

(37)

sql="select KodeUser,NamaUser,Password,HakAkses from user where KodeUser like '%"+cari+"%' or NamaUser like '%"+cari+"%'";

try{

rs=st.executeQuery(sql); while(rs.next()){

User eb=new User();

eb.setKodeUser(rs.getString("KodeUser")); eb.setNamaUser(rs.getString("NamaUser")); eb.setPassword(rs.getString("Password")); eb.setHakAkses(rs.getString("HakAkses")); logBarang.add(eb); } } catch(SQLException a){

JOptionPane.showMessageDialog(null, "Terjadi kesalahaan tampil, pada :\n"+a); } return logBarang; } } 4. TransaksiControl.java package penjualan.control; import java.awt.event.KeyEvent; import penjualan.data.Transaksi; import java.io.Serializable; import java.text.DecimalFormat; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Query; import java.io.File; import java.sql.Connection; import java.util.HashMap; import javax.swing.JOptionPane;

public class TransaksiControl implements Serializable{ private EntityManagerFactory emf=null;

public TransaksiControl(EntityManagerFactory emf){ this.emf=emf;

}

public EntityManager getEntityManager(){ return emf.createEntityManager();

}

public void save(Transaksi trans) throws Exception{ EntityManager em=getEntityManager();

try{

em.getTransaction().begin(); em.persist(trans);

(38)

em.getTransaction().commit(); }catch(Exception ex){}

}

public Transaksi findTransaksi(String kode){ EntityManager em=getEntityManager(); try{

return em.find(Transaksi.class, kode); }finally{}

}

public String nomor(){ String kode="TR001"; EntityManager em=null; try{

em = getEntityManager();

Query q=em.createQuery("select count(t.noTrans) from Transaksi t"); q.setMaxResults(1);

Long hasil=(Long) q.getSingleResult(); if(q!=null){

DecimalFormat formatnomor = new DecimalFormat ("TR000"); kode=formatnomor.format(hasil+1); } }finally{} return kode; } 5. DetailControl.java package penjualan.control; import java.io.Serializable; import penjualan.data.Detailtransaksi; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.swing.JOptionPane;

public class DetailControl implements Serializable{ private EntityManagerFactory emf=null;

Connection con=null; Statement st=null;

(39)

ResultSet rs=null; String sql=null;

public DetailControl(EntityManagerFactory emf){ this.emf=emf;

}

public EntityManager getEntityManager(){ return emf.createEntityManager();

}

public void saveDetail(Detailtransaksi detail) throws Exception{ EntityManager em=getEntityManager(); try{ em.getTransaction().begin(); em.persist(detail); em.getTransaction().commit(); }catch(Exception ex){} } public DetailControl(){ try{ Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/penjualan_t unai?","root",""); st=con.createStatement(); }catch(Exception a){

JOptionPane.showMessageDialog(null, "Koneksi Database Gagal, Terjadi kesalahaan Pada : \n"+a);

} }

public List tampilBarang(String noNota){ List logDetailBeli = new ArrayList();

sql="select KodeBarang,NamaBarang,Harga,Qty,Subtotal from detailtransaksi where NoTrans='"+noNota+"'";

try{

rs=st.executeQuery(sql); while(rs.next()){

Detailtransaksi eb=new Detailtransaksi();

eb.setKodeBarang(rs.getString("KodeBarang")); eb.setNamaBarang(rs.getString("NamaBarang")); eb.setHarga(rs.getInt("Harga")); eb.setQty(rs.getInt("Qty")); eb.setSubtotal(rs.getInt("Subtotal")); logDetailBeli.add(eb); }

(40)

} catch(SQLException a){

JOptionPane.showMessageDialog(null, "Terjadi kesalahaan tampil, pada :\n"+a);

}

return logDetailBeli; }

public int tambahDetailBeli(Detailtransaksi e){

sql="insert into detailtransaksi

values('"+e.getNo()+"','"+e.getNoTrans()+"','"+e.getKodeBarang() +"','"+e.getNamaBarang()+"','"+e.getHarga()+"','"+e.getQty()+"','"+e.getSubto tal()+"')"; int hasil=0; try{ hasil=st.executeUpdate(sql); } catch(SQLException a){ Logger.getLogger(BarangControl.class.getName()).log(Level.SEVERE,null,a ); } return hasil; }

public int deleteDetailBeli(String nonota,String No){

sql="delete from detailtransaksi where NoTrans='"+nonota+"' and

KodeBarang='"+No+"'"; int hasil=0; try{ hasil=st.executeUpdate(sql); } catch(SQLException a){ Logger.getLogger(BarangControl.class.getName()).log(Level.SEVERE,null,a ); } return hasil; }

public List cariBarang(String Notrans){ List logDetailtransaksi = new ArrayList();

sql="select KodeBarang,NamaBarang,Harga,Qty,Subtotal from detailtransaksi where NoTrans='%"+Notrans+"%'";

try{

rs=st.executeQuery(sql); while(rs.next()){

Detailtransaksi eb=new Detailtransaksi();

eb.setKodeBarang(rs.getString("KodeBarang")); eb.setNamaBarang(rs.getString("NamaBarang"));

eb.setHarga(rs.getInt("Harga")); eb.setQty(rs.getInt("Qty"));

(41)

eb.setSubtotal(rs.getInt("Subtotal")); logDetailtransaksi.add(eb);

}

} catch(SQLException a){

JOptionPane.showMessageDialog(null, "Terjadi kesalahaan tampil, pada :\n"+a); } return logDetailtransaksi; } } 6. TengahControl.java

package penjualan.control;import java.awt.Dimension; import java.awt.Toolkit;

import javax.swing.JFrame; public class tengah {

public tengah(JFrame form) {

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); int x = (dim.width - form.getSize().width)/2;

int y = (dim.height - form.getSize().height)/2; form.setLocation(x,y); } } 7. Barang.java package penjualan.data; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement; @Entity @Table(name = "barang") @XmlRootElement @NamedQueries({

@NamedQuery(name = "Barang.findAll", query = "SELECT b FROM Barang b"),

@NamedQuery(name = "Barang.findByKodeBarang", query = "SELECT b FROM Barang b WHERE b.kodeBarang = :kodeBarang"),

(42)

@NamedQuery(name = "Barang.findByNamaBarang", query = "SELECT b FROM Barang b WHERE b.namaBarang = :namaBarang"),

@NamedQuery(name = "Barang.findByHarga", query = "SELECT b FROM Barang b WHERE b.harga = :harga"),

@NamedQuery(name = "Barang.findByStok", query = "SELECT b FROM Barang b WHERE b.stok = :stok")})

public class Barang implements Serializable { private static final long serialVersionUID = 1L; @Id

@Basic(optional = false)

@Column(name = "KodeBarang") private String kodeBarang;

@Basic(optional = false)

@Column(name = "NamaBarang") private String namaBarang;

@Basic(optional = false) @Column(name = "Harga") private int harga;

@Basic(optional = false) @Column(name = "Stok") private int stok;

public Barang() { }

public Barang(String kodeBarang) { this.kodeBarang = kodeBarang; }

public Barang(String kodeBarang, String namaBarang, int harga, int stok) { this.kodeBarang = kodeBarang;

this.namaBarang = namaBarang; this.harga = harga;

this.stok = stok; }

public String getKodeBarang() { return kodeBarang;

}

public void setKodeBarang(String kodeBarang) { this.kodeBarang = kodeBarang;

}

public String getNamaBarang() { return namaBarang;

(43)

public void setNamaBarang(String namaBarang) { this.namaBarang = namaBarang;

}

public int getHarga() { return harga;

}

public void setHarga(int harga) { this.harga = harga;

}

public int getStok() { return stok;

}

public void setStok(int stok) { this.stok = stok;

}

@Override

public int hashCode() { int hash = 0;

hash += (kodeBarang != null ? kodeBarang.hashCode() : 0); return hash;

}

@Override

public boolean equals(Object object) { if (!(object instanceof Barang)) { return false;

}

Barang other = (Barang) object;

if ((this.kodeBarang == null && other.kodeBarang != null) || (this.kodeBarang != null && !this.kodeBarang.equals(other.kodeBarang))) {

return false; }

return true; }

@Override

public String toString() {

return "penjualan.data.Barang[ kodeBarang=" + kodeBarang + " ]"; }

(44)

8. User.java package penjualan.data; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement; @Entity @Table(name = "user") @XmlRootElement @NamedQueries({

@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u"), @NamedQuery(name = "User.findByKodeUser", query = "SELECT u FROM User u WHERE u.kodeUser = :kodeUser"),

@NamedQuery(name = "User.findByNamaUser", query = "SELECT u FROM User u WHERE u.namaUser = :namaUser"),

@NamedQuery(name = "User.findByPassword", query = "SELECT u FROM User u WHERE u.password = :password"),

@NamedQuery(name = "User.findByHakAkses", query = "SELECT u FROM User u WHERE u.hakAkses = :hakAkses")})

public class User implements Serializable { private static final long serialVersionUID = 1L; @Id

@Basic(optional = false)

@Column(name = "KodeUser") private String kodeUser;

@Basic(optional = false)

@Column(name = "NamaUser") private String namaUser;

@Basic(optional = false) @Column(name = "Password") private String password;

@Basic(optional = false)

@Column(name = "HakAkses") private String hakAkses;

public User() { }

public User(String kodeUser) { this.kodeUser = kodeUser; }

(45)

public User(String kodeUser, String namaUser, String password, String hakAkses) { this.kodeUser = kodeUser; this.namaUser = namaUser; this.password = password; this.hakAkses = hakAkses; }

public String getKodeUser() { return kodeUser;

}

public void setKodeUser(String kodeUser) { this.kodeUser = kodeUser;

}

public String getNamaUser() { return namaUser;

}

public void setNamaUser(String namaUser) { this.namaUser = namaUser;

}

public String getPassword() { return password;

}

public void setPassword(String password) { this.password = password;

}

public String getHakAkses() { return hakAkses;

}

public void setHakAkses(String hakAkses) { this.hakAkses = hakAkses;

}

@Override

public int hashCode() { int hash = 0;

hash += (kodeUser != null ? kodeUser.hashCode() : 0); return hash;

(46)

@Override

public boolean equals(Object object) { if (!(object instanceof User)) {

return false; }

User other = (User) object;

if ((this.kodeUser == null && other.kodeUser != null) || (this.kodeUser != null && !this.kodeUser.equals(other.kodeUser))) { return false; } return true; } @Override

public String toString() {

return "penjualan.data.User[ kodeUser=" + kodeUser + " ]"; } } 9. Transaksi.java package penjualan.data; import java.io.Serializable; import java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; @Entity @Table(name = "transaksi") @XmlRootElement @NamedQueries({

@NamedQuery(name = "Transaksi.findAll", query = "SELECT t FROM Transaksi t"),

@NamedQuery(name = "Transaksi.findByNoTrans", query = "SELECT t FROM Transaksi t WHERE t.noTrans = :noTrans"),

@NamedQuery(name = "Transaksi.findByTanggal", query = "SELECT t FROM Transaksi t WHERE t.tanggal = :tanggal"),

@NamedQuery(name = "Transaksi.findByTotal", query = "SELECT t FROM Transaksi t WHERE t.total = :total")})

(47)

private static final long serialVersionUID = 1L; @Id

@Basic(optional = false) @Column(name = "NoTrans") private String noTrans;

@Basic(optional = false) @Column(name = "Tanggal") @Temporal(TemporalType.DATE) private Date tanggal;

@Basic(optional = false) @Column(name = "Total") private double total;

public Transaksi() { }

public Transaksi(String noTrans) { this.noTrans = noTrans;

}

public Transaksi(String noTrans, Date tanggal, double total) { this.noTrans = noTrans;

this.tanggal = tanggal; this.total = total; }

public String getNoTrans() { return noTrans;

}

public void setNoTrans(String noTrans) { this.noTrans = noTrans;

}

public Date getTanggal() { return tanggal;

}

public void setTanggal(Date tanggal) { this.tanggal = tanggal;

}

public double getTotal() { return total;

}

public void setTotal(double total) { this.total = total;

(48)

@Override

public int hashCode() { int hash = 0;

hash += (noTrans != null ? noTrans.hashCode() : 0); return hash;

}

@Override

public boolean equals(Object object) { if (!(object instanceof Transaksi)) { return false;

}

Transaksi other = (Transaksi) object;

if ((this.noTrans == null && other.noTrans != null) || (this.noTrans != null && !this.noTrans.equals(other.noTrans))) { return false; } return true; } @Override

public String toString() {

return "penjualan.data.Transaksi[ noTrans=" + noTrans + " ]"; }

public String getNonota() {

throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.

} } 10.Detailtransaksi.java package penjualan.data; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement; @Entity @Table(name = "detailtransaksi") @XmlRootElement

(49)

@NamedQueries({

@NamedQuery(name = "Detailtransaksi.findAll", query = "SELECT d FROM Detailtransaksi d"),

@NamedQuery(name = "Detailtransaksi.findByNoTrans", query = "SELECT d FROM Detailtransaksi d WHERE d.noTrans = :noTrans"),

NamedQuery(name = "Detailtransaksi.findByNamaBarang", query =

"SELECT d FROM Detailtransaksi d WHERE d.namaBarang = :namaBarang"),

@NamedQuery(name = "Detailtransaksi.findByHarga", query = "SELECT d FROM Detailtransaksi d WHERE d.harga = :harga"),

@NamedQuery(name = "Detailtransaksi.findByQty", query = "SELECT d FROM Detailtransaksi d WHERE d.qty = :qty"),

@NamedQuery(name = "Detailtransaksi.findBySubtotal", query = "SELECT d FROM Detailtransaksi d WHERE d.subtotal = :subtotal"),

@NamedQuery(name = "Detailtransaksi.findByNo", query = "SELECT d FROM Detailtransaksi d WHERE d.no = :no")})

public class Detailtransaksi implements Serializable { private static final long serialVersionUID = 1L; @Basic(optional = false)

@Column(name = "NoTrans") private String noTrans;

@Basic(optional = false) @Lob

@Column(name = "KodeBarang") private String kodeBarang;

@Basic(optional = false)

@Column(name = "NamaBarang") private String namaBarang;

@Basic(optional = false) @Column(name = "Harga") private int harga;

@Basic(optional = false) @Column(name = "Qty") private int qty;

@Basic(optional = false) @Column(name = "Subtotal") private int subtotal;

@Id

@Basic(optional = false) @Column(name = "No") private String no;

public Detailtransaksi() { }

public Detailtransaksi(String no) { this.no = no;

(50)

public Detailtransaksi(String no, String noTrans, String kodeBarang, String namaBarang, int harga, int qty, int subtotal) {

this.no = no; this.noTrans = noTrans; this.kodeBarang = kodeBarang; this.namaBarang = namaBarang; this.harga = harga; this.qty = qty; this.subtotal = subtotal; }

public String getNoTrans() { return noTrans;

}

public void setNoTrans(String noTrans) { this.noTrans = noTrans;

}

public String getKodeBarang() { return kodeBarang;

}

public void setKodeBarang(String kodeBarang) { this.kodeBarang = kodeBarang;

}

public String getNamaBarang() { return namaBarang;

}

public void setNamaBarang(String namaBarang) { this.namaBarang = namaBarang;

}

public int getHarga() { return harga;

}

public void setHarga(int harga) { this.harga = harga;

}

public int getQty() { return qty;

}

(51)

this.qty = qty; }

public int getSubtotal() { return subtotal;

}

public void setSubtotal(int subtotal) { this.subtotal = subtotal;

}

public String getNo() { return no;

}

public void setNo(String no) { this.no = no;

}

@Override

public int hashCode() { int hash = 0;

hash += (no != null ? no.hashCode() : 0); return hash;

}

@Override

public boolean equals(Object object) { if (!(object instanceof Detailtransaksi)) { return false;

}

Detailtransaksi other = (Detailtransaksi) object;

if ((this.no == null && other.no != null) || (this.no != null && !this.no.equals(other.no))) { return false; } return true; } @Override

public String toString() {

return "penjualan.data.Detailtransaksi[ no=" + no + " ]"; }

(52)

11.FormLogin.java package penjualan.form; import penjualan.control.tengah; import penjualan.control.LoginControl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JOptionPane;

public class FormLogin extends javax.swing.JFrame { Connection kon; ResultSet rs; PreparedStatement pst; Statement st; public FormLogin() { initComponents();

tengah tengah = new tengah(this); }

public void cek(){

kon = LoginControl.koneksiDb(); try {

st = kon.createStatement();

String sql = "SELECT * FROM user where KodeUser =

'"+txtUsername.getText() +"' and Password = '"+txPass.getText()+"'"; rs = st.executeQuery(sql);

if(rs.next()){

if(rs.getString("HakAkses").equals("Admin")){ FormUtama mnu=new FormUtama();

mnu.setVisible(true); mnu.tampilUser(txtUsername.getText()); mnu.hakAksesAdmin(); dispose(); }else if(rs.getString("HakAkses").equals("Owner")){ FormUtama mnu=new FormUtama();

mnu.setVisible(true); mnu.tampilUser(txtUsername.getText()); mnu.hakAksesOwner(); this.dispose(); } }else{

JOptionPane.showMessageDialog(null, "Maaf password atau username anda salah");

(53)

txtUsername.setText(""); txPass.setText(""); txtUsername.requestFocus(); } }catch(SQLException e){ JOptionPane.showMessageDialog(null, e); } }

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

}

private void txtUsernameKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==10){

txPass.requestFocus(); }

}

private void btncancelActionPerformed(java.awt.event.ActionEvent evt) { txtUsername.setText("");

txPass.setText("");

txtUsername.requestFocus(); }

private void txPassKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==10){ btnLoginActionPerformed(null); } } 12.FormUtama.java package penjualan.form; import penjualan.control.tengah; import java.beans.PropertyVetoException; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.util.HashMap; import javax.swing.JInternalFrame; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer;

(54)

public class FormUtama extends javax.swing.JFrame { public FormUtama() {

initComponents();

tengah tengah = new tengah(this); }

public void tampilUser(String user){ username.setText(user);

}

public void hakAksesOwner(){ barangMN.setVisible(false); transaksiMN.setVisible(false);

}

public void hakAksesAdmin(){ userMN.setVisible(false); }

private void newBTActionPerformed(java.awt.event.ActionEvent evt) { nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.bersih(); nav.aktif();

}

private void saveBTActionPerformed(java.awt.event.ActionEvent evt) { nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.simpan(); }

private void findBTActionPerformed(java.awt.event.ActionEvent evt) { nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.cari();

}

private void deleteBTActionPerformed(java.awt.event.ActionEvent evt) { if(JOptionPane.showConfirmDialog(null, "Hapus data?", "Konfimasi",

JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){ nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.hapus(); }

}

private void barangMNActionPerformed(java.awt.event.ActionEvent evt) { newBT.setEnabled(true);

saveBT.setEnabled(true); deleteBT.setEnabled(true); findBT.setEnabled(true); editBT.setEnabled(true);

(55)

FormBarang fBarang=new FormBarang(); showForm(fBarang);

}

private void userMNActionPerformed(java.awt.event.ActionEvent evt) { FormUser fUser=new FormUser();

showForm(fUser); newBT.setEnabled(true); saveBT.setEnabled(true); deleteBT.setEnabled(true); findBT.setEnabled(false); editBT.setEnabled(true): }

private void transMNActionPerformed(java.awt.event.ActionEvent evt) { FormTransaksi fTransaksi=new FormTransaksi();

showForm(fTransaksi); deleteBT.setEnabled(false); newBT.setEnabled(true); saveBT.setEnabled(true); editBT.setEnabled(false); findBT.setEnabled(true); }

private void logoutActionPerformed(java.awt.event.ActionEvent evt) { new FormLogin().setVisible(true);

dispose();

}

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

FormLaporanPerhari fLaporan=new FormLaporanPerhari(); showForm(fLaporan); newBT.setEnabled(false); saveBT.setEnabled(false); findBT.setEnabled(false); deleteBT.setEnabled(false); editBT.setEnabled(false); }

private void editBTActionPerformed(java.awt.event.ActionEvent evt) { nav = (NavigatorFormInt) desktopPane.getSelectedFrame();

nav.edit();

}

private void logoutMNActionPerformed(java.awt.event.ActionEvent evt) { new FormLogin().setVisible(true);

dispose();

(56)

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

try {

String NamaFile = "src/Laporan/LaporanBarang.jasper"; //Lokasi File jasper Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection koneksi =

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

HashMap hash = new HashMap(); File file = new File(NamaFile);

JasperReport jp = (JasperReport) JRLoader.loadObject(file);

JasperPrint jasperprint = JasperFillManager.fillReport(jp, hash, koneksi); JasperViewer.viewReport(jasperprint, false);

JasperViewer.setDefaultLookAndFeelDecorated(true); } catch (Exception ex) {

System.out.println(ex); }

}

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

LaporanPerperiod fLaporan=new LaporanPerperiod(); showForm(fLaporan); newBT.setEnabled(false); saveBT.setEnabled(false); findBT.setEnabled(false); deleteBT.setEnabled(false); editBT.setEnabled(false); } NavigatorFormInt nav;

private void showForm(Object obj){ JInternalFrame jf=null; jf=(JInternalFrame) obj; desktopPane.add(jf); jf.setVisible(true); try{ jf.setMaximum(true); jf.setSelected(true); }catch(java.beans.PropertyVetoException e){ } } }

(57)

13.FormBarang.java package penjualan.form; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import penjualan.Penjualan; import penjualan.control.BarangControl; import penjualan.data.Barang;

public class FormBarang extends javax.swing.JInternalFrame implements NavigatorFormInt{

BarangControl bc = new BarangControl(Penjualan.emf); BarangControl brgc=new BarangControl();

Barang brg = new Barang();

private DefaultTableModel model;

List<Barang> listBarang=new ArrayList<Barang>(); public FormBarang() {

initComponents(); }

private void buatTabelBarang(){ model=new DefaultTableModel(); model.addColumn("Kode Barang"); model.addColumn("Nama Barang"); model.addColumn("Harga"); model.addColumn("Stok"); tabelbarang.setModel(model); }

private void showTabelBarang(){

model.getDataVector().removeAllElements(); model.fireTableDataChanged();

listBarang.clear();

listBarang=brgc.tampil();

for(int x=0;x<listBarang.size();x++){ Object[] data=new Object[4];

data[0]=listBarang.get(x).getKodeBarang(); data[1]=listBarang.get(x).getNamaBarang(); data[2]=listBarang.get(x).getHarga(); data[3]=listBarang.get(x).getStok(); model.addRow(data); } }

(58)

private void nonaktif(){ txtkodebarang.setEnabled(false); txtnamabarang.setEnabled(false); txtharga.setEnabled(false); txtstok.setEnabled(false); } private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) { buatTabelBarang(); showTabelBarang(); }

private void tabelbarangMouseClicked(java.awt.event.MouseEvent evt) { int baris = tabelbarang.getSelectedRow();

txtkodebarang.setText(tabelbarang.getModel().getValueAt(baris, 0).toString()); txtnamabarang.setText(tabelbarang.getModel().getValueAt(baris, 1).toString()); txtharga.setText(tabelbarang.getModel().getValueAt(baris, 2).toString()); txtstok.setText(tabelbarang.getModel().getValueAt(baris, 3).toString()); nonaktif(); } @Override

public void aktif() {

txtnamabarang.setEnabled(true); txtharga.setEnabled(true); txtstok.setEnabled(true); txtkodebarang.setText(bc.nomorOtomatis()); txtnamabarang.requestFocus(); } @Override

public void bersih() { txtkodebarang.setText(""); txtnamabarang.setText(""); txtharga.setText(""); txtstok.setText(""); } @Override

public void simpan() {

brg=bc.findBarang(txtkodebarang.getText()); Barang br=new Barang();

if(brg==null){

br.setKodeBarang(txtkodebarang.getText()); br.setNamaBarang(txtnamabarang.getText());

(59)

br.setHarga(Integer.parseInt(txtharga.getText())); br.setStok(Integer.parseInt(txtstok.getText())); try{

bc.save(br);

}catch(Exception e){}

JOptionPane.showMessageDialog(null,"Data telah tersimpan"); }else{ br.setKodeBarang(txtkodebarang.getText()); br.setNamaBarang(txtnamabarang.getText()); br.setHarga(Integer.parseInt(txtharga.getText())); br.setStok(Integer.parseInt(txtstok.getText())); try{ bc.update(br); }catch(Exception e){}

JOptionPane.showMessageDialog(null,"Data telah terupdate"); } bersih(); buatTabelBarang(); showTabelBarang(); txtkodebarang.requestFocus(); } @Override

public void hapus() { try{

bc.delete(txtkodebarang.getText());

JOptionPane.showMessageDialog(null,"Data telah dihapus"); }catch(Exception ex){

JOptionPane.showMessageDialog(null,"Data tidak bisa dihapus karena "+ ex.getMessage()); } bersih(); buatTabelBarang(); showTabelBarang(); } @Override

public void cari() {

model.getDataVector().removeAllElements(); model.fireTableDataChanged();

listBarang.clear();

listBarang=brgc.cariBarang(txtkodebarang.getText()); for(int x=0;x<listBarang.size();x++){

Object[] data=new Object[4];

data[0]=listBarang.get(x).getKodeBarang(); data[1]=listBarang.get(x).getNamaBarang(); data[2]=listBarang.get(x).getHarga();

(60)

model.addRow(data); }

}

@Override

public void tampil() {

txtnamabarang.setText(brg.getNamaBarang()); txtharga.setText(Double.toString(brg.getHarga())); txtstok.setText(Integer.toString(brg.getStok())); }

@Override

public void edit() {

txtkodebarang.setEnabled(true); txtnamabarang.setEnabled(true); txtharga.setEnabled(true); txtstok.setEnabled(true); } } 14.FormUser.java package penjualan.form; import javax.swing.JOptionPane; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.List; import javax.swing.table.DefaultTableModel; import penjualan.Penjualan; import penjualan.control.UserControl; import penjualan.data.User;

public class FormUser extends javax.swing.JInternalFrame implements NavigatorFormInt{

UserControl us = new UserControl(Penjualan.emf); UserControl brgc=new UserControl();

User usr = new User();

private DefaultTableModel model;

List <User> listUser=new ArrayList<User>(); public FormUser() {

initComponents(); }

private void buatTabelUser(){ model=new DefaultTableModel(); model.addColumn("Kode User"); model.addColumn("Nama User"); model.addColumn("Password");

(61)

model.addColumn("Haka Akses"); tabelbarang.setModel(model); }

private void showTabelUser(){

model.getDataVector().removeAllElements(); model.fireTableDataChanged();

listUser.clear();

listUser=brgc.tampil();

for(int x=0;x<listUser.size();x++){ Object[] data=new Object[4];

data[0]=listUser.get(x).getKodeUser(); data[1]=listUser.get(x).getNamaUser(); data[2]=listUser.get(x).getPassword(); data[3]=listUser.get(x).getHakAkses(); model.addRow(data); } }

private void nonaktif(){

txtkodeUser.setEnabled(false); txtnamaUser.setEnabled(false); txtPassword.setEnabled(false); btHakAkses.setEnabled(false); } Private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) { txtkodeUser.setEnabled(false); txtnamaUser.setEnabled(false); txtPassword.setEnabled(false); btHakAkses.setEnabled(false); bersih(); }

private void tabelbarangMouseClicked(java.awt.event.MouseEvent evt) { int baris = tabelbarang.getSelectedRow();

txtkodeUser.setText(tabelbarang.getModel().getValueAt(baris, 0).toString()); txtnamaUser.setText(tabelbarang.getModel().getValueAt(baris, 1).toString()); txtPassword.setText(tabelbarang.getModel().getValueAt(baris, 2).toString()); btHakAkses.setSelectedItem(tabelbarang.getModel().getValueAt(baris, 3).toString()); formUser.setVisible(false); nonaktif(); }

(62)

private void txtCariBrgKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==10){ model.getDataVector().removeAllElements(); model.fireTableDataChanged(); listUser.clear(); listUser=brgc.cariUser(txtCariBrg.getText()); for(int x=0;x<listUser.size();x++){

Object[] data=new Object[4];

data[0]=listUser.get(x).getKodeUser(); data[1]=listUser.get(x).getNamaUser(); data[2]=listUser.get(x).getPassword(); data[3]=listUser.get(x).getHakAkses(); model.addRow(data); } } }

private void btlihattabelActionPerformed(java.awt.event.ActionEvent evt) { buatTabelUser(); showTabelUser(); txtCariBrg.setText(null); //frmBarang.setSize(472,390); formUser.setBounds(800, 50, 530, 650); formUser.setVisible(true); txtCariBrg.requestFocus(); } @Override

public void aktif() {

txtkodeUser.setEnabled(true); txtnamaUser.setEnabled(true); txtPassword.setEnabled(true); btHakAkses.setEnabled(true); txtkodeUser.requestFocus(); } @Override

public void bersih() { txtkodeUser.setText(""); txtnamaUser.setText(""); txtPassword.setText(""); btHakAkses.setSelectedIndex(0); } @Override

public void simpan() {

usr=us.findUser(txtkodeUser.getText()); User u=new User();

(63)

if(usr==null){ u.setKodeUser(txtkodeUser.getText()); u.setNamaUser(txtnamaUser.getText()); u.setPassword(txtPassword.getText()); u.setHakAkses(btHakAkses.getSelectedItem().toString()); try{ us.save(u); }catch(Exception e){}

JOptionPane.showMessageDialog(null, "Data telah tersimpan"); }else{ u.setKodeUser(txtkodeUser.getText()); u.setNamaUser(txtnamaUser.getText()); u.setPassword(txtPassword.getText()); u.setHakAkses(btHakAkses.getSelectedItem().toString()); try{ us.update(u); }catch(Exception e){}

JOptionPane.showMessageDialog(null, "Data telah terupdate"); }

bersih();

txtkodeUser.requestFocus(); }

@Override

public void hapus() { try{

us.delete(txtkodeUser.getText());

JOptionPane.showMessageDialog(null, "Data telah dihapus"); }catch(Exception ex){

JOptionPane.showMessageDialog(null,"Data tidak bisa dihapus karena "+ ex.getMessage());

}

bersih(); }

@Override

public void cari() {

usr=us.findUser(txtkodeUser.getText()); if(usr==null){

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

}else{

JOptionPane.showMessageDialog(null, "Data ditemukan"); tampil();

} }

(64)

public void tampil() { txtnamaUser.setText(usr.getNamaUser()); txtPassword.setText(usr.getPassword()); if(usr.getHakAkses().equalsIgnoreCase("Admin")){ btHakAkses.setSelectedIndex(0); }else{ btHakAkses.setSelectedIndex(1); } } @Override

public void edit() {

txtkodeUser.setEnabled(true); txtnamaUser.setEnabled(true); txtPassword.setEnabled(true); btHakAkses.setEnabled(true); } } 15.FormTransaksi.java package penjualan.form; import java.awt.event.KeyEvent; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import penjualan.Penjualan; import penjualan.control.TransaksiControl; import penjualan.data.Transaksi; import penjualan.data.Barang; import penjualan.control.BarangControl; import penjualan.data.Detailtransaksi; import penjualan.control.DetailControl; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader;

(65)

import net.sf.jasperreports.view.JasperViewer; import static penjualan.Penjualan.emf;

public class FormTransaksi extends javax.swing.JInternalFrame implements NavigatorFormInt{

TransaksiControl tr =new TransaksiControl(Penjualan.emf); BarangControl bc=new BarangControl(Penjualan.emf); BarangControl brgc=new BarangControl();

DetailControl dbc=new DetailControl(); Detailtransaksi dt=new Detailtransaksi(); Transaksi trans = new Transaksi(); Barang brg=new Barang();

int total,brs;

List <Detailtransaksi> listEDB=new ArrayList<Detailtransaksi>(); List<Barang> listBarang=new ArrayList<Barang>();

private DefaultTableModel model; koneksi kon=new koneksi(); public FormTransaksi() { initComponents(); kon.setKoneksi(); txtStok.setVisible(false); txtno.setVisible(false); }

private void buatTabelBarang(){ model=new DefaultTableModel(); model.addColumn("Kode Barang"); model.addColumn("Nama Barang"); model.addColumn("Harga"); model.addColumn("Stok"); tabelbarang.setModel(model); }

private void showTabelBarang(){

model.getDataVector().removeAllElements(); model.fireTableDataChanged();

listBarang.clear();

listBarang=brgc.tampil();

for(int x=0;x<listBarang.size();x++){ Object[] data=new Object[4];

data[0]=listBarang.get(x).getKodeBarang(); data[1]=listBarang.get(x).getNamaBarang(); data[2]=listBarang.get(x).getHarga(); data[3]=listBarang.get(x).getStok(); model.addRow(data); } }

(66)

private void buatTabelBeli(){ model=new DefaultTableModel(); model.addColumn("Kode Barang"); model.addColumn("Nama Barang"); model.addColumn("Harga"); model.addColumn("Jumlah"); model.addColumn("Total"); tabeljual.setModel(model); }

private void tampilBarang(){

model.getDataVector().removeAllElements(); model.fireTableDataChanged();

listEDB.clear();

listEDB=dbc.tampilBarang(txtNota.getText()); for(int x=0;x<listEDB.size();x++){

Object[] data=new Object[5];

data[0]=listEDB.get(x).getKodeBarang(); data[1]=listEDB.get(x).getNamaBarang(); data[2]=listEDB.get(x).getHarga(); data[3]=listEDB.get(x).getQty(); data[4]=listEDB.get(x).getSubtotal(); model.addRow(data); } }

private String no() {

String no=null; try{

String sql = "Select right(No,3)+1 from detailtransaksi "; ResultSet rs = kon.st.executeQuery(sql); if (rs.next()){ rs.last(); no = rs.getString(1); while (no.length()<3){ no="0"+no; no="D"+no; txtno.setText(no); } }else{ no="D0011"; txtno.setText(no); }

}catch (Exception e){ }return no;

}

(67)

try {

String NamaFile = "src/laporan/NotaTransaksi.jasper"; //Lokasi File jasper Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection koneksi =

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

HashMap hash = new HashMap(); String notran=txtNota.getText(); hash.put("notrans",notran); File file = new File(NamaFile);

JasperReport jp= (JasperReport) JRLoader.loadObject(file);

JasperPrint jasperprint = JasperFillManager.fillReport(jp, hash,koneksi); JasperViewer.viewReport(jasperprint,false); JasperViewer.setDefaultLookAndFeelDecorated(true); } catch(Exception ex) { System.out.println(ex); } }

private void txtbayarKeyPressed(java.awt.event.KeyEvent evt) { if(evt.getKeyCode()==KeyEvent.VK_ENTER){

int total=Integer.parseInt(txtTotal.getText()); int bayar=Integer.parseInt(txtbayar.getText()); int kembali=bayar-total;

txtkembali.setText(Integer.toString(kembali)); int sisa = Integer.parseInt(txtbayar.getText()) - Integer.parseInt(txtTotal.getText());

if(evt.getKeyCode()==KeyEvent.VK_ENTER){ if (sisa >= 0) {

if (sisa != 0) {

JOptionPane.showMessageDialog(null, "Kembalian Anda = " + sisa); } else {

JOptionPane.showMessageDialog(null, "Uang anda pas"); }

} else {

JOptionPane.showMessageDialog(null, "Uang anda kurang = " + (sisa * (-1))); } } } } private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) { txtNota.setEnabled(false); tglTF.setEnabled(false);

Gambar

Gambar III.1
Gambar III.2 Use Case Diagram Penjualan Tunai
Gambar III.3 Activity Diagram Admin
Gambar III.4 Activity Diagram Admin act activity Diagram Pemilik
+7

Referensi

Garis besar

Dokumen terkait

Menimbang, bahwa putusan Pengadilan Negeri Subang Nomor : 11/Pdt.Plw/2017/PN.Sng diucapkan pada tanggal 8 Agustus 2017 dengan di hadiri oleh Kuasa Hukum Terlawan

Berdasarkan hasil penelitian yang telah dilakukan pada Universitas Bina Darma Beasiswa Bidik Misi, maka didapatkan hasil akhir sebuah sistem yaitu Sistem pendukung

Ciri teori belajar dari pernyataan bahwa seorang guru melakukan pembelajaran dengan memberikan kebebasan yang luas kepada siswa untuk menentukan apa

Presentasi Materi kuliah, Tanya jawab dan Pemberian Tugas • Ketepatan menjelaskan tentang gambaran umum, perbedaan pandangan tentang masalah lingkungan,contoh kasus

5 Tahun 1969 yang telah diganti dengan Undang-Undang Pokok Kehutanan (UUPK) No. 167) , dalam Penjelasan Umum disebutkan bahwa sejalan dengan Pasal 33 UUD 1945 sebagai

(1) Untuk memperoleh izin sebagaimana dimaksud dalam pasal 26, Kepala Dinas Kesehatan Kabupaten/Kota mengajukan permohonan tertulis kepada Bupati/Walikota melalui

Penelitian ini bertujuan untuk menentukan survival rate serta memperkirakan Total Akumulasi Biomassa Atas Permukaan dari jenis-jenis pohon utama hutan rawa gambut yang digunakan

Berdasarkan hasil analisis data dan pemba- hasan yang telah diurai, maka dapat diambil kesimpulan bahwa variabel PDRB di kota DIY pada tahun 2006-2012 dipengaruhi oleh Pena-