Form ini merupakan form lanjutan setelah form pengadaan barang. Pada form ini akan difungsikan ketika sebuah button bernama action pada form pengadaan barang di klik. Untuk lebih lengkapnya ikuti petunjuk-petunjuk berikut untuk membuatnya :
1. Buat sebuah form seperti berikut, dimana form ini menggunakan JTabbed Pane. Tab yang pertama mengenai detail barang dan yang kedua mengenai harga jual barang.
Tab Detail Barang
Tab Harga Jual Barang
2. Fokus pada Detail Barang terlebih dahulu. Pada langkah ini lebih membutuhkan banyak coding karena form ini merupakan form untuk melakukan transaksi barang. Selanjutnya adalah, bagaimana cara menampilkan data kategori barang yang di ambil melalui database kategori seperti dibawah ini ?
Untuk mendapatkan langkah diatas, menambahkan sebuah Events button yaitu itemStateChanged dengan cara klik kanan pada combo box kategori barang ==> Events ==> Item ==> itemStateChanged. Setelah itu isikan source code dibawah ini :
if(count>=2){ LoadComboBoxNamaBarang(combo_kat.getSelectedItem().toString()); } else{ count++; }Kemudian membuat kelas LoadComboBoxNamaBarang( ) :
private void LoadComboBoxNamaBarang(String data){ try { String sql="select nama_barang from barang where kategori='"+data+"'"; resultSet=statement.executeQuery(sql); combobarang.removeAllItems(); combobarang.addItem("-->pilih<--"); while(resultSet.next()){ combobarang.addItem(resultSet.getString(1).toString()); } } catch (Exception e) { }
3. Setelah itu, Bagaimana menampilkan data nama barang dari database barang berdasarkan kategori pada combo box nama barang?
Seperti langkah sebelumnya yaitu membuat events itemStateChanged pada combo box nama barang :
if(count2>=2){ if(combobarang.getSelectedItem().toString().equals("-->pilih<--")){ }else{ LoadIdBarang(combobarang.getSelectedItem().toString()); } } else{ count2++; }Dan membuat kelas LoadIdBarang dengan source code sebagai berikut :
private void LoadIdBarang(String data){ try { String sql="select id_barang from barang where nama_barang='"+data+"'"; statement=k.con.createStatement(); resultSet=statement.executeQuery(sql); while(resultSet.next()){ txt_idbarang.setText(resultSet.getString(1).toString()); } } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }
4. Kemudian selanjutnya menampilkan format automatis dari id pengadaan pada tabel pengadaan kedalam form data pembelian.
Bagian ini membutuhkan antara form satu dengan form lain sehingga didapat coding sebagai berikut :
Letakkan source code berikut pada form detail transaksi pengadaan :
Private String id_pengadaan; public form_detail_transaksi(String idTransaksi) { initComponents(); koneksi=new Koneksi(); this. id_pengadaan =idTransaksi; }Untuk memanggilnya dapat dilakukan perintah berikut :
idPengadaan=tabelPengadaan.getValueAt(tabelPengadaan.getSelectedRow(), 0).toString(); if (tabelPengadaan.getSelectedColumn()==4) { System.out.println(idPengadaan); this.dispose(); new FormDetailPengadaan(idPengadaan).setVisible(true); }5. Selanjutnya adalah kita beralih pada tanggal kadaluarsa. Terdapat dua jRadioButton yaitu "ada" dan "tidak ada". Cara mengoperasikan pada form ini adalah jika meng-klik "ada" maka tanggal kadaluarsa akan dapat di set, sebaliknya jika meng-klik "tidak ada" maka tanggal tidak dapat dioperasikan. Bagaimana caranya? Letakkan source code dibawah ini :
private void JRadioButton1MouseExited(java.awt.event.MouseEvent evt) { JRadioButton1.setEnabled(true); tglKadaluarsa.setEnabled(true); } private void JRadioButton1MouseEntered(java.awt.event.MouseEvent evt) { JRadioButton1.setEnabled(true); JRadioButton2.setEnabled(false); } private void JRadioButton2MouseEntered(java.awt.event.MouseEvent evt) { JRadioButton2.setEnabled(true); JRadioButton1.setEnabled(false); tglKadaluarsa.setEnabled(false); }
Keterangan : diatas telah tersedia events apa saja yang dibutuhkan, yaitu MouseExited dan Mouse Entered.
6. Selanjutnya cara memasukkan data bagaimana ? anda dapat meletakkan source code berikut ini :
private void insertdata(){ String id_transaksi=txt_idtran.getText().toString(); String id_barang=txt_idbarang.getText().toString(); String nama_barang=combobarang.getSelectedItem().toString(); String hrga_bli=txthrgabeli.getText().toString(); String jumlah=txt_jumlah.getText().toString(); String sql=null; if(ada.isSelected()){ SimpleDateFormat dateformat=new SimpleDateFormat ("yyyy-MM-dd"); String tanggal=dateformat.format(txt_tglkadaluarsa.getDate()); sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + id_transaksi + "', '" + id_barang + "', '" + jumlah + "', '" + hrga_bli + "','" + tanggal + "','" + jumlah + "')"; } else if (tdk_ada.isSelected()) { // sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + txtIdTransaksi.getText() + "', '" + txtIdBarang.getText() + "', '" + comboKategori.getSelectedItem().toString() + "', '" + comboNamaBarang.getSelectedItem().toString()+"','"+txtHargaBeli.getText()+ "',0,null)"; sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + id_transaksi + "', '" + id_barang + "', '" + jumlah + "', '" + hrga_bli + "','Tidak ada','" + jumlah + "')"; } try { statement.executeUpdate(sql); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }
7. Setelah melakukan insert data akan dilakukan update stok. Sehingga stok yang diinputkan akan mengalami pembaharuan :
private void updateStokBarang(String ubah){ int jml=0, stok=0; String sql_select="SELECT stok from barang WHERE ID_BARANG='"+txt_idbarang.getText()+"'"; try { statement=k.con.createStatement(); resultSet=statement.executeQuery(sql_select); while(resultSet.next()){ jml=Integer.parseInt(resultSet.getString(1)); } if(ubah.equals("insert")){ stok=jml+Integer.parseInt(txt_jumlah.getText()); } else if(ubah.equals("edit")){ stok=(jml-jml_awal)+Integer.parseInt(txt_jumlah.getText()); } else if(ubah.equals("delete")){ stok=jml-Integer.parseInt(txt_jumlah.getText()); } String sql_update="UPDATE barang SET STOK='"+stok+"' WHERE ID_BARANG='"+txt_idbarang.getText()+"'"; try { statement=k.con.createStatement(); statement.executeUpdate(sql_update); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }
8. Berikutnya adalah melakukan total transaksi, total transaksi ini perlu untuk mengetahui seberapa besar total dari transaksi yang telah dilakukan, untuk source code dapat dilihat pada coding dibawah ini :
private void totalTransaksi(String data) { String sql_select = "SELECT SUM(JUMLAH_PENGADAAN_BARANG*HARGA_BELI_SATUAN) FROM rel_pengadaan_barang WHERE ID_PENGADAAN='" + data + "'"; try { statement = k.con.createStatement(); resultSet = statement.executeQuery(sql_select); while (resultSet.next()) { txt_total.setText(resultSet.getString(1)); total_transaksi = resultSet.getDouble(1); } } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }
9. Setelah itu jika total transaksi telah dilakukan maka langkah selanjutnya adalah melakukan update transaksi :
private void updateTotalTransaksi(){ String sql="UPDATE pengadaan SET TOTAL_TRANSAKSI = '"+total_transaksi+"' WHERE ID_PENGADAAN = '"+id_pengadaan+"'"; try { statement=k.con.createStatement(); statement.executeUpdate(sql); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }Kemudian lakukan transaksi pada suatu barang :
Supplier adalah Riko
Insert Data pada Detail Transaksi Pengadaan
Hasil
Total transaksi yang ter-update
10. Selanjutnya adalah melakukan delet data, buat sebuah kelas dan letakkan source code berikut ini :
public void deletedata(){ String id_transaksi=txt_idtran.getText().toString(); String id_barang=txt_idbarang.getText().toString(); String sql="delete from rel_pengadaan_barang where id_pengadaan = '"+id_transaksi+"' AND id_barang='"+id_barang+"'" ; try { statement=k.con.createStatement(); statement.execute(sql); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }Coba delete data yang telah kita insert sebelumnya :
Delete data
Data terhapus, Total ter-set 0 kembali
Selanjutnya adalah beralih pada tab Harga Jual Barang, karena sebelumnya langkah di atas adalah untuk melakukan transaksi pada Detail Barang. Untuk Harga Jual Barang ini, berfungsi untuk melakukan set harga dan pencarian data. Setelah membuat formnya, langkah selanjutnya adalah membuat source code untuk mengatur harga jual. Dapat dilihat pada source code dibawah ini :
1. Set harga Jual :
private void updatedata(){ String harga_jual=txthrgjual.getText().toString(); String id_barang=id_brg.getText().toString(); String sql="update barang set hargajual = '"+harga_jual+"' where id_barang = '"+id_barang+"'"; try { statement.executeUpdate(sql); } catch (Exception e) { JOptionPane.showMessageDialog(null, e.getMessage()); } }
2. Kemudian letakkan perintah berikut ini pada textfield pencarian data dengan membuat Events KeyTyped :
public void Search() { Object header[] = {"ID BARANG", "NAMA BARANG", "HARGA BELI TERMAHAL", "HARGA JUAL"}; DefaultTableModel defaultTable = new DefaultTableModel(null, header); tbl_harga_jual.setModel(defaultTable); String cari = txt_search.getText(); String sql = "select b.id_barang, b.nama_barang, max(r.harga_beli_satuan),b.hargajual from rel_pengadaan_barang r, barang b " + "where b.id_barang = r.id_barang and b.id_barang LIKE '%" + cari + "%' or b.nama_barang LIKE '%" + cari + "%'"; try { statement = k.con.createStatement(); resultSet = statement.executeQuery(sql); while (resultSet.next()) { String idBarang = resultSet.getString(1); String namaBarang = resultSet.getString(2); String maxHarga = resultSet.getString(3); String harga_jual = resultSet.getString(4); String kolom[] = {idBarang, namaBarang, maxHarga, harga_jual}; defaultTable.addRow(kolom); } } catch (Exception e) { System.out.println("Terjadi kesalahan, karena " + e.getMessage()); JOptionPane.showMessageDialog(null, "Terjadi kesalahan, karena " + e.getMessage()); } }Coba lakukan set harga :
Cari data : Pensil, dan set harga : 2500
Harga jual berhasil di set