Pada form ini, dibuat untuk melakukan penjualan barang. Nantinya, form ini akan terdapat dua buah tabel. Tabel yang pertama adalah tabel daftar barang, yaitu untuk melihat barang apa saja yang ada, dimana barang tersebut akan ditampilkan ketika stok-nya lebih dari nol, jika stok kurang maka tidak akan ditampilkan. Setelah dibeli, barang akan di tampung pada tabel kedua. Untuk itu simak lebih teliti pada panduan berikut ini :
1. Buatlah sebuah JForm, desain bebas akan tetapi juga dapat mengikuti desain form seperti berikut :
2. Dan beri nama masing-masing txtfield, jDateChooser, button, table, serta jLabel. Selanjutnya, dalam form ini, ketika user belum melakukan transaksi baru. ada beberapa fungsi yang di setEnabled False pada kondisi awal, yaitu :
private void kondisiawal() { btninsert.setEnabled(false); btndelete.setEnabled(false); txt_idbarang.setEnabled(false); txt_jmlh.setEnabled(false); tbl_barangbeli.setEnabled(false); txt_tot.setEnabled(false); txt_bayar.setEnabled(false); clear(); btntransaksibaru.setEnabled(true); idPenjualan = ""; }Sedangkan setelah kondisi transaksi aktif akan di setEnabled True, yaitu :
private void kondisiAktif() { btninsert.setEnabled(true); btndelete.setEnabled(true); txt_jmlh.setEnabled(true); tbl_barangbeli.setEnabled(true); btntransaksibaru.setEnabled(false); txt_bayar.setEnabled(true); clear(); }
3. Setelah itu kita akan membuat kode tanggal secara otomatis pada saat button transaksi baru di klik. Sebelumnya kita juga pernah melakukannya pada transaksi pengadaan sebelumnya. Masih ingat? jika tidak saya akan memberikan source code diman source code tersebut termasuk bernama InsertTabelPenjualan ( ):
private String insertTabelPenjualan() { try { Date date = new Date(); SimpleDateFormat dateformat=new SimpleDateFormat ("yyyy-MM-dd"); String tanggal=dateformat.format(date); txttanggal.setDate(date); SimpleDateFormat dateformat2=new SimpleDateFormat ("dd.MM.yyyy"); String tanggal2=dateformat2.format(date); int count = 100; String sqltanggal = "select tanggal_penjualan,id_penjualan from penjualan"; resultSet = statement.executeQuery(sqltanggal); while (resultSet.next()) { String data1 = resultSet.getString(1); String data2 = resultSet.getString(2); if (data1.equals(tanggal)) { if (count == Integer.valueOf(data2.substring(14, 17))) { count++; } } } idPenjualan = "TJ." + tanggal2 + "." + count; String sql = "insert into penjualan values('" + idPenjualan + "','"+Form_Login.userLogin+"','" + tanggal + "',0)"; statement.executeUpdate(sql); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } return idPenjualan; }
Keterangan : source code diatas akan menampilkan kode tanggal secara otomatis. sehingga tidak perlu melakukan inputan.
4. Berikutnya adalah , langkah untuk membuat bagaimana jika terjadi transaksi maka terdapat stok barang yang berkurang dan langsung ditampilkan pada tabel. Maka perlu adanya update stok barang. Jika terjadi cancel dalam melakukan transaksi, maka stok barang harus bertambah, sehingga kita membutuhkan update stok barang. kemudian laba akan dihitung pada tiap transaksi. Berikut source code untuk menghitung laba :
Source code memperoleh laba :
private double hitungLaba() throws SQLException { VectorSource code untuk update stok barang :vektorIdPengadaan = new Vector(); Vector vektorIdBarang = new Vector(); Vector jum = new Vector(); Vector hargaBeli = new Vector(); Vector hargaJual = new Vector(); double laba = 0; try { String sql = "select r.id_pengadaan,r.id_barang,r.harga_beli_satuan,b.harga_jual,r.belum_terjual " + "from rel_pengadaan_barang r,barang b " + "where r.id_barang=b.id_barang AND r.id_barang='" + txt_idbarang.getText() + "' and r.belum_terjual>0"; resultSet = statement.executeQuery(sql); while (resultSet.next()) { vektorIdPengadaan.addElement(resultSet.getString(1)); vektorIdBarang.addElement(resultSet.getString(2)); hargaBeli.addElement(resultSet.getDouble(3)); hargaJual.addElement(resultSet.getDouble(4)); jum.addElement(resultSet.getInt(5)); } int jumlah; int jumlahJual = Integer.valueOf(txt_jmlh.getText()); for (int i = 0; i < vektorIdPengadaan.size(); i++) { jumlah = jum.elementAt(i) - jumlahJual; if (jumlah >= 0) { try { String query = "update rel_pengadaan_barang set belum_terjual=" + jumlah + " where id_pengadaan='" + vektorIdPengadaan.elementAt(i) + "' and id_barang='" + vektorIdBarang.elementAt(i) + "'"; statement.executeUpdate(query); laba = laba + (hargaJual.elementAt(i) - hargaBeli.elementAt(i)) * jumlahJual; } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } break; } else { try { String query1 = "update rel_pengadaan_barang set belum_terjual=" + 0 + " where id_pengadaan='" + vektorIdPengadaan.elementAt(i) + "' and id_barang='" + vektorIdBarang.elementAt(i) + "'"; statement.executeUpdate(query1); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } laba = laba + (hargaJual.elementAt(i) - hargaBeli.elementAt(i)) * jum.elementAt(i); jumlahJual = -1 * jumlah; } } } catch (NumberFormatException n) { JOptionPane.showMessageDialog(null, n.getMessage()); } return laba; }
private void UpdateStok(String ubah) { int stokBaru = 0; try { if(ubah.equals("insert")){ stokBaru = cekStok() - Integer.parseInt(txt_jmlh.getText()); }else if(ubah.equals("delete")){ stokBaru=cekStok()+jml_awal; } String total = "UPDATE barang set stok ='" + stokBaru + "' where id_barang = '" + id_barang + "'"; statement.executeUpdate(total); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); System.out.println("" + e.getMessage()); } }
5. Bagaimana untuk menampilkan data pada tabel pertama dan tabel kedua? Untuk tabel pertama merupakan tabel dimana tabel tersebut untuk melihat stok-stok yang tersedia atau sudah kosong. Langkahnya adalah :
private void selectTabelHargaJual(){ Object header[] = {"ID BARANG","NAMA BARANG","HARGA JUAL","STOK"}; DefaultTableModel defaultTable = new DefaultTableModel(null,header); tbl_barangjual.setModel(defaultTable); int baris = tbl_barangjual.getRowCount(); for (int i = 0; i < baris; i++) { defaultTable.removeRow(i); } String sql_select = "select id_barang,nama_barang,harga_jual,stok from barang where stok > 0"; try { statement = k.connection.createStatement(); resultSet = statement.executeQuery(sql_select); while(resultSet.next()){ String idBarang = resultSet.getString(1); String namaBarang = resultSet.getString(2); String harga_jual = resultSet.getString(3); String stok = resultSet.getString(4); String kolom[] = {idBarang,namaBarang,harga_jual,stok}; defaultTable.addRow(kolom); } } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }Kemudian tabel kedua merupakan tabel untuk mengetahui pembelian barang :
private void selectTabelHargaBeli() { Object header[] = {"ID PENJUALAN", "ID BARANG", "NAMA BARANG", "HARGA", "JUMLAH", "TOTAL HARGA"}; DefaultTableModel defaultTable = new DefaultTableModel(null, header); tbl_barangbeli.setModel(defaultTable); int baris = tbl_barangbeli.getRowCount(); for (int i = 0; i < baris; i++) { defaultTable.removeRow(i); } String sql_select = "select r.id_penjualan,r.id_barang,b.nama_barang,b.harga_jual,r.jumlah,r.total_harga " + "from rel_penjualan_barang r, barang b where r.id_barang = b.id_barang and r.id_penjualan ='" + idPenjualan + "'"; try { statement = k.connection.createStatement(); resultSet = statement.executeQuery(sql_select); while (resultSet.next()) { String idjual = resultSet.getString(1); String idBarang = resultSet.getString(2); String namaBarang = resultSet.getString(3); String harga = resultSet.getString(4); String jml = resultSet.getString(5); String total = resultSet.getString(6); String kolom[] = {idjual, idBarang, namaBarang, harga, jml, total}; defaultTable.addRow(kolom); } } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); System.out.println("" + e.getMessage()); } }
6. Kemudian berikutnya untuk melengkapi saya akan tampilkan source code insert dan delete. Dimana kedua fungsi tersebut sangat penting untuk melakukan insert data serta menghapus data jika terjadi kekeliruan peng-entrian data :
Source code insert data :
private void insertRelPenjualan() { double total = Integer.parseInt(txt_jmlh.getText()) * Double.parseDouble(txt_hrga.getText()); try { String sql = "INSERT INTO rel_penjualan_barang " + "VALUES('" + txt_idbarang.getText() + "','" + idPenjualan + "','" + txt_jmlh.getText() + "','"+hitungLaba()+"','" + total + "')"; statement = k.connection.createStatement(); statement.executeUpdate(sql); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); System.out.println("" + e.getMessage()); } }Source code delete data :
private void delete(){ String sql_delete="DELETE FROM rel_penjualan_barang WHERE ID_PENJUALAN='"+idPenjualan+"' AND ID_BARANG='"+idHapus.getText()+"'"; try { statement=k.connection.createStatement(); statement.executeUpdate(sql_delete); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Data masih digunakan!!"); System.out.println(""+e.getMessage()); } }Kemudian jalankan programnya, dan coba lakukan transaksi :
SetEnabled False ( ) :
Sebelum transaksi baru di klik
SetEnabled True ( ) :
Sesudah transaksi baru di klik
Insert Data :
Pembelian barang "Pensil" sejumlah 2
Barang telah masuk dan stok berkurang
Delete data :
Delete pada nama barang : "Pensil"
Stok kembali seperti sebelum di jual
gan mau tnya klau form data barang master dan form data transaksinya berbeda,, itu gimana cara buat di programnnya saat pemebelian / pembayaran barang di form tabel transaksi nya jumlah barang stock di form tabel data barang master berkurang stock barangnya. misalnya stock barang di form tabel data barang master 10 kemudian berkurang menjadi 8??
BalasHapusmohon bantuan nya gan
Komentar ini telah dihapus oleh pengarang.
BalasHapusmau tanya gan, terus buat kolom bayar, fungsiya untuk apa ya?
BalasHapuspermisi gan, saya mau tanyab agan punya scrip untuk tidak mengisi data tanggal agar bisa disimpan, kerna kalau di isi tanggalnya itu bisa di simpan dan normal, ketika tidak diisi itu terjadi error di output, mohon di bantu ya gan, thanks
BalasHapusmantapp boss, bisa minta databsenya sqlnya ke email saya jefffrysurbakty@gmal.com
BalasHapusmantap , boleh di share aplikasi + databasenya ?
BalasHapusBisa minta source code dan sql?
BalasHapusgan cara stok berkurang setelah melakukan transaksi gimana...disitu cuma ada prosedur updateStok tapi didalam prosedur updateStok manggil prosedur cekStok..nah prosedur cekStoknya ada dimana
BalasHapusMau tanya gan gimana kalau ada member sama karyawannya?
BalasHapusMau tanya gan gimana kalau ada member sama karyawannya?
BalasHapusmaksudnya gimana mba?
HapusKomentar ini telah dihapus oleh pengarang.
BalasHapusPermisi gan boleh minta source code dan database sql nya tolong kirim ke email saya dimasgg@gmail.com
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapuspermisi kak, aku bolrh minta source code dan database sqlnya ga? klo boleh tolong kirim ke email dong kak? 04afrilia@gmail.com makasih kakkkk^^
BalasHapusBang boleh minta file sqlnya, hehehe. dikirim ke email ya bang punten, alifdr7@gmail.com . Makasih bang sebelumnya :)
BalasHapusboleh minta filenya bang,fadilimah48@gmail.com
BalasHapusTerimakasih atas kunjungan para pembaca di blog yg saya buat, singkat cerita blog ini saya buat untuk memenuhi tugas kuliah yg saya kerjakan di tahun 2013 silam. hem... tetapi kok pada banyak yang tanya lewat akun di ig: panca.prasetiya dan akun fb: panca prasetiya.. mungkin jika sempat saya akan memposting program2 yg telah saya buat untuk membantu para pembaca khususnya di bidang it.. karena tugas ini juga mengantarkan saya sampe lulus untuk menempuh dan memenuhi tugas akhir saya..
BalasHapusjangan lupa follo ig dan akun fb saya ya guys...
terimakasih
malang, 25 oktober 2018
panca prasetiya
Gan minta source code dan databasenya kirim ke email tullah2669@gmail.com
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusminta source dan database.. ke sofy.dwi25@gmail.com
BalasHapusbagus Aplikasinya ,Coba deh download aplikasi netbeans bagus https://rajincopas.blogspot.com/2019/01/download-free-aplikasi-penjualan-barang.html
BalasHapusGan minta sourcode nya kirim ke email awhost95@gmail.com
BalasHapusmas minta .jar, lib, dan sql nya... please mas kirim septianbdavid@gmail.com
BalasHapusyoks terimakasi refrensi tutorialnya
BalasHapusmas boleh minta source codenya kh? bwt belajar...
BalasHapuska boleh minta source codenya, untuk menyelesaikan tugas sekolah. kirim ke S.imel55@yahoo.com
BalasHapusIni ada software toko GRATISSSSS "MiniMart" yang bisa digunakan untuk kontrol stok barang di toko anda.
BalasHapusSilahkan download langsung software toko GRATISSSSS "MiniMart" di sini :
https://helloyud.blogspot.com/2016/12/aplikasi-pertokoan-minimart.html