Sistem ini akan berjalan dengan membuat form terlebih dahulu. Dalam form inilah pengguna dapat membuat, mengedit, menampung, meng-update bahkan menghapus data yang ada. Sistem ini akan berjalan secara berkesinambungan sesuai dengan apa yang dibutuhkan pengguna.
Form Ketujuh :
Form Penjualan Barang
Keterangan :
Untuk membuat form tersebut dibutuhkan Palette untuk mendesignnya. Ada juga palette yang dibutuhkan untuk menunjang pembuatan form ini. Semua palette harus memiliki variabel nama supaya mudah di panggil. Seperti :
Text Field dari Label Kode Otomatis : txt_idpenjualan
JDate Chooser dari Label Tanggal : txttanggal
Text Field dari Label Cari Id / Nama Barang : txt_cari
Text Field dari Label Id Barang : txt_idbarang
Text Field dari Label Jumlah : txt_jmlh
Text Field dari Label Harga : txt_hrga
Text Filed (tanpa nama) : idHapus
Table 1 : tbl_barangjual
Table 2 : tbl_barangbeli
Button dari Transaksi Baru : btntransaksibaru
Label dari Label Total : txt_tot
Text Filed dari Label Bayar : txt_bayar
Button dari Home : btnkembali
Button dari Insert : btninsert
Button dari Delete : btndelete
Untuk bisa menjalankan form di atas dibutuhkan script sebagai berikut :
package toko_barang;
import Toko.Koneksi.Koneksi;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import sun.applet.Main;
public class form_penjualan_barang extends javax.swing.JFrame {
Koneksi k;
Statement statement;
ResultSet resultSet;
String idPenjualan, id_barang,ubah;
int count,jml_awal;
public form_penjualan_barang() {
initComponents();
k = new Koneksi();
setResizable(false);
selectTabelHargaJual();
selectTabelHargaBeli();
kondisiawal();
}
# untuk membersihkan text field
private void clear() {
txt_idbarang.setText("");
txt_cari.setText("");
txt_jmlh.setText("");
txt_hrga.setText("");
txt_bayar.setText("");
}
# semua action tidak aktif kecuali Button Transaksi Baru dan Home
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 = "";
}
# setelah mengklik Button Transaksi Baru maka semua action akan aktif
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();
}
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.conn.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());
}
}
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.conn.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());
}
}
private void searchTabelHargaJual(){
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 and (nama_barang like '%"+txt_cari.getText()+"%' or id_barang like '%"+txt_cari.getText()+"%')";
try {
statement = k.conn.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());
}
}
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;
}
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.conn.createStatement();
statement.executeUpdate(sql);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println("" + e.getMessage());
}
}
private void total_transaksi() {
String total = "SELECT sum(total_harga) from rel_penjualan_barang where id_penjualan ='" + idPenjualan + "'";
try {
statement = k.conn.createStatement();
resultSet = statement.executeQuery(total);
while (resultSet.next()) {
txt_tot.setText(resultSet.getString(1));
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println("" + e.getMessage());
}
}
private void updateTotalTransaksi() {
String sql_update = "UPDATE penjualan SET total_penjualan = '" + txt_tot.getText() + "' WHERE ID_PENJUALAN = '" + idPenjualan + "'";
try {
statement = k.conn.createStatement();
statement.executeUpdate(sql_update);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println("" + e.getMessage());
}
}
private double hitungLaba() throws SQLException {
Vector<String> vektorIdPengadaan = new Vector();
Vector<String> vektorIdBarang = new Vector();
Vector<Integer> jum = new Vector();
Vector<Double> hargaBeli = new Vector();
Vector<Double> 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 int cekStok() {
int stok = 0;
String total = "SELECT stok from barang where id_barang ='" + id_barang + "'";
try {
statement = k.conn.createStatement();
resultSet = statement.executeQuery(total);
while (resultSet.next()) {
stok = Integer.parseInt(resultSet.getString(1));
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage());
System.out.println("" + e.getMessage());
}
return stok;
}
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());
}
}
private void delete(){
String sql_delete="DELETE FROM rel_penjualan_barang WHERE ID_PENJUALAN='"+idPenjualan+"' AND ID_BARANG='"+idHapus.getText()+"'";
try {
statement=k.conn.createStatement();
statement.executeUpdate(sql_delete);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Data masih digunakan!!");
System.out.println(""+e.getMessage());
}
}
Supaya action-action pada form yang telah dibuat bisa berfungsi, dibutuhkan script sebagai berikut :
Key Type txt_cari
private void txt_cariKeyTyped(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
searchTabelHargaJual();
}
Key Pressed txt_jmlh
private void txt_jmlhKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
ubah="insert";
if(evt.getKeyChar()=='\n'){
if(Integer.parseInt(txt_jmlh.getText()) <= cekStok()){
insertRelPenjualan();
total_transaksi();
UpdateStok(ubah);
updateTotalTransaksi();
}
}
}
Mouse Click tbl_barangjual
private void tbl_barangjualMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
id_barang = tbl_barangjual.getValueAt(tbl_barangjual.getSelectedRow(), 0).toString();
String namaBarang = tbl_barangjual.getValueAt(tbl_barangjual.getSelectedRow(), 1).toString();
String harga = tbl_barangjual.getValueAt(tbl_barangjual.getSelectedRow(), 2).toString();
txt_idbarang.setText(id_barang);
txt_cari.setText(namaBarang);
txt_hrga.setText(harga);
}
Mouse Click tbl_barangbeli
private void tbl_barangbeliMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
idHapus.setText(tbl_barangbeli.getValueAt(tbl_barangbeli.getSelectedRow(), 1).toString());
jml_awal=Integer.valueOf(tbl_barangbeli.getValueAt(tbl_barangbeli.getSelectedRow(), 4).toString());
}
Button Transaksi Baru
private void btntransaksibaruActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
kondisiAktif();
txt_idpenjualan.setText(insertTabelPenjualan());
}
Key Pressed txt_bayar
private void txt_bayarKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
double sisa = Double.parseDouble(txt_bayar.getText()) - Double.parseDouble(txt_tot.getText());
if (evt.getKeyChar() == '\n') {
if (sisa >= 0) {
if (sisa != 0) {
JOptionPane.showMessageDialog(null, "Kembalian Anda = " + sisa);
} else {
JOptionPane.showMessageDialog(null, "Uang anda pas");
}
updateTotalTransaksi();
clear();
kondisiawal();
selectTabelHargaBeli();
selectTabelHargaJual();
} else {
JOptionPane.showMessageDialog(null, "Uang anda kurang = " + (sisa * (-1)));
}
}
}
Button Delete
private void btndeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ubah="delete";
if(idHapus.getText().equals("")){
JOptionPane.showMessageDialog(null, "Pilih data yang akan dihapus");
}
else{
int hasil=JOptionPane.showConfirmDialog(null, "Apakah benar anda ingin menghapus kode kategori : "+idHapus.getText(),null,JOptionPane.YES_NO_OPTION);
if(hasil == JOptionPane.YES_OPTION){
delete();
UpdateStok(ubah);
idHapus.setText("");
selectTabelHargaBeli();
selectTabelHargaJual();
}
else if(hasil==JOptionPane.NO_OPTION){
idHapus.setText("");
}
}
}
Button Insert
private void btninsertActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ubah="insert";
if (Integer.parseInt(txt_jmlh.getText()) <= cekStok()) {
insertRelPenjualan();
total_transaksi();
UpdateStok(ubah);
selectTabelHargaJual();
selectTabelHargaBeli();
clear();
} else {
JOptionPane.showMessageDialog(null, "Stok barang tidak cukup!!");
}
}
Button Home
private void btnkembaliActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
new MenuUtama(Form_Login.kondisiLogin).setVisible(true);
this.dispose();
}
# menjalankan form
public static void
main(String args[]) {
java.awt.EventQueue.invokeLater(new
Runnable() {
public void run() {
new
form_penjualan_barang().setVisible(true);
}
});
}
}