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. 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:
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:
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
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
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.
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»
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
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
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
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
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()
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()
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>>
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
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()
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()
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
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()
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()
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
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()
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()
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()
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()
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()
3.4.2. User Interface
1. Form Login
Gambar III.22 Form Login
2. Form Utama Admin
3. Form Master data Barang
Gambar III.24 Form Master Data Barang
4. Form Transaksi Penjualan
5. Form Laporan Transaksi Perhari
Gambar III.26 Form Laporan Transaksi Perhari
6. Form Laporan Transaksi Penjualan PerPeriode
7. Form Utama Pemilik
Gambar III.28 Form Utama Pemilik
8. Form User
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;
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();
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);
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;
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();
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();
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);
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;
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); }
} 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"));
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"),
@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;
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 + " ]"; }
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; }
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;
@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")})
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;
@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
@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;
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;
}
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 + " ]"; }
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");
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;
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);
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();
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){ } } }
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); } }
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());
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();
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");
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(); }
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();
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();
} }
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;
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); } }
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;
}
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);