Senin, 22 Juli 2013

Membuat Form Penjualan pada Aplikasi Penjualan dengan Java Netbeans


          Untuk Postingan kali ini akan dibahas mengenai pembuatan Form Penjualan, untuk Form Penjualan ini agak Lebih sulit deibandingkan membuat form - form sebelumnya karena Form Penjualan ini Mencakup pada semua form form sebelumnya. Sebelum kita beranjak Lebih lanjut terlebih dahulu kita harus membuat Form Penjualan. berikut dibawah ini adalah gambar daari Form Penjualan yang harus kita buat.


Langkah Berikutnya adalah kita harus mengisikan source code seperti dibawah ini. Untuk pengisian source code harus teliti, karena apabila terdapat sedikit kesalahan maka program tidak akan berjalan.
Berikut source codenya


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.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
import koneksi.koneksi;
import sun.applet.Main;

/**
 *
 * @author Moch. Arif S.
 */
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();
        selectTabelHargaJual();
        selectTabelHargaBeli();
        kondisiawal();
    }

    private void clear() {
        txt_idbarang.setText("");
        txt_cari.setText("");
        txt_jmlh.setText("");
        txt_hrga.setText("");
        txt_bayar.setText("");
    }

    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 = "";
    }

    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.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());
        }
    }

    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_pengadaan_barang,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());
        }
    }

    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.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());
        }
    }


    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 + "','administrator','" + 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.connection.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.connection.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.connection.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.connection.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.connection.createStatement();
            statement.executeUpdate(sql_delete);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Data masih digunakan!!");
            System.out.println(""+e.getMessage());
        }
    }

Setelah kita memberikan Source code, langkah selanjutnya kita harus memberikan source code pada button action yang ada pada form tersebut, berikut ini adalah source codenya.


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!!");
        }
    }                                         

    private void btnkembaliActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        new MenuUtama().setVisible(true);
        this.dispose();
    }                                          

    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("");
            }
        }
    }                                         

    private void txt_cariKeyTyped(java.awt.event.KeyEvent evt) {                                  
        // TODO add your handling code here:
        searchTabelHargaJual();
    }                                 

    private void btntransaksibaruActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        // TODO add your handling code here:
        kondisiAktif();
        txt_idpenjualan.setText(insertTabelPenjualan());
    }                                                

    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);
    }                                           

    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)));
            }
        }
    }                                    

    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());
    }                                           

    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();
            }
        }
    }                               


Setelah kita selesai memasukkan source code pada button action tersebut selanjutnya kita coba jalankan Program..
Ini adalah tampilan awal Form ketika Pertama dijalankan.
Bila pertama dijalankan maka tombol insert dan delete masih belum dapat digunakan.



Selanjutnya Kita klik button Transaksi Baru yang terletak dibawah tabel 1, setelah kita klik kemudian kita mencari ID / Nama barang pada form input cari, apabila barang sudah kita temukan maka kita klik barang tersebut pada tabel. otomatis form lainya akan terisi sendiri.
berikut gambarnya.



Selanjutnya kita klik Insert pada button dibawah. maka otomatis tabel 2 akan terisi jumlah stok barang pada tabel 1 juga akan berkurang dan total harga barang akan dihitung secara otomatis.
dibawah ini adalah gambar dari program tersebut.




Minggu, 21 Juli 2013

Tutorial membuat laporan iReport dengan java netbeans


               Kali ini saya akan mempostingkan tentang pembuatan Laporan iReport pada java Netbeans..
Langkah pertama yaitu kita harus membuat kooneksi iReport kedalam database kita.



Setelah gambar tesebut kita klik maka akan muncul seperti gambar dibawah ini. kita pilih tipe database yang kita gunakan, kali ini tipe database yang saya gunakan adalah Database JDBC connection.


Berikutnya kita mengisikan nama Laporan yang akan kita buat, untuk JDBC Driver saya menggunakan MySQL (com.mysql.jdbc.Driver), JDBC URL nya saya isi dengan jdbc:mysql://localhost:3306/NamaDatabase dan yang terakhir adalah mengisikan username dan bila database anda memiliki password maka harus diisi juga. setelah itu kita klik test pada button yang ada dibawah.


Bila muncul gambar dibawah ini maka koneksi report dan database berhasil.



Selanjutnya kita klik save pada button yang ada dibawah.




Setelah selesai kita akan kembali ke Menu awal, langkah berikutnya kita pilih gambar dibawah ini


setelah kita klik gambar tersebut maka akan muncul seperti gambar dibawah ini. kita pilih contoh tampilan Laporan yang ingin kita buat, setelah kita memilih maka klik launch report wizard.


Setelah itu.. akan muncul gambar form seperti dibawah ini. kita hanya mengisikan nama report yang kita buat kemudian klik Next.


Maka akan muncul seperti gambar dibawah ini. Pada gambar dibawah ini Pada Query (SQL) kita isi Query yang akan kita buat sebagai laporan. selanjutnya klik Next.


Selanjutnya Muncul seperti gambar dibawah, untuk fields ini kita klik tombol yang ditandai lingkaran merah maka otomatis data dari kolom kiri pindah ke kolom kanan, kemudian klik Next.


Selanjutnya kita akan menemui seperti gambar dibawah ini, langsung kita klik next.


Bila telah selesai maka akan tampil seperti gambar dibawah.dan selanjutnya klik Finish


Membuat Form Stok Barang Pada Aplikasi Penjualan dengan Java Netbeans


              Pada Kesempatan kali ini, saya akan memposting tentang pembuatan Form Stok Barang yang berfungsi untuk melihat dan mencari stok barang yang tersedia dan terdata pada aplikasi ini. berikut ini adalah langkah pertama pembuatan form stok barang.

1. Membuat Form stok barang pada Frame Netbeans seperti gambar berikut.


2.  Langkah berikutnya kita mengisikan source code pada form tersebut..
berikut ini source codenya



import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import java.sql.ResultSet;
import koneksi.koneksi;
import com.mysql.jdbc.Statement;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Moch. Arif S.
 */
public class StokBarang extends javax.swing.JFrame {
koneksi koneksi;
    Statement statement;
    ResultSet resultSet;
    
    /**
     * Creates new form StokBarang
     */
    public StokBarang () {
        initComponents();
        setTitle("STOK BARANG");
        koneksi = new koneksi();
    }

    
    private void select(String sql){ 
         
        String header[]={"ID_BARANG","KATEGORI","NAMA_BARANG","JUMLAH STOK"}; 
        DefaultTableModel defaultTableModel=new DefaultTableModel(null, header); 
        jTable1.setModel(defaultTableModel); 
         
        for (int i = 0; i < jTable1.getRowCount(); i++) { 
            defaultTableModel.removeRow(i); 
        } 
         
        try { 
            statement=(Statement) koneksi.connection.createStatement(); 
            resultSet=statement.executeQuery(sql); 
             
            while (resultSet.next()) { 
                String id_barang=resultSet.getString(1); 
                String kategori=resultSet.getString(2); 
                String nama_barang=resultSet.getString(3); 
                int stok=resultSet.getInt(4); 
                 
                Object baris[]={id_barang,kategori,nama_barang,stok}; 
                defaultTableModel.addRow(baris); 
            } 
        } catch (Exception e) { 
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

3. selanjutnya kita beri source code seperti dibawah ini.


    private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {                                     
        String sqlSearch=" select * from barang where NAMA_BARANG like '%"+jTextField1.getText()+"%'"; 
 select(sqlSearch); 
    }                                    

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
        
    }    

4. Setelah kita mengisikan source code, sekarang kita jalankan Program. Tampilan awal Form bila dijalankan adalah seperti gambar dibawah ini.



5. Form ini berfungsi untuk mencari atau melihat data stok barang, untuk pencarian barang, kita tinggal menginputkan nama barang pada form input search dan nama barang yang dicari akan otomatis muncul pada tabel.






Pembuatan Form Detail Transakasi pada Aplikasi Penjualan dengan Java Netbeans

         
             Postingan ini adalah Lanjutan dari Postingan yang lalu yaitu tentang form pengadaan barang, kali ini saya akan menjelaskan tentang pembuatan Form Detail Transaksi barang. Sebelumnya kita buat terlebih dahulu Form nya pada Netbeans, dibawah ini adalah gambar tentang pembuatan form detail transaksi barang pada Netbeans.


Setelah kita buat Form Detail transaksi tersebut langkah berikutnya adalah mengisi source code untuk form detail transaksi, source codenya adalah sebagai berikut.

import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import koneksi.koneksi;


public class form_detail_transaksi extends javax.swing.JFrame {

    koneksi koneksi;
    Statement statement;
    ResultSet resultSet;
    int count = 0, count2 = 0;
    private String id_pengadaan,id_edit;

    public form_detail_transaksi(String idTransaksi) {
        initComponents();
        koneksi = new koneksi();
        this.id_pengadaan = idTransaksi;
        txtIdTransaksi.setText(id_pengadaan);
        select(id_pengadaan);
        totalTransaksi(id_pengadaan);
        select_harga_jual();
        panggilKategori();
        comboNamaBarang.removeAllItems();
        comboNamaBarang.addItem("-- Pilih --");
      
    }

    private void clear1() {
        txtIdBarang.setText("");
        txtHargaBeli.setText("");
        txtJumlah.setText("");
    }
    
     private void clear2() {
        txtId_Barang.setText("");
        txtHarga_jual.setText("");
    }

    private void select(String data) {
        Object header[] = {"ID TRANSAKSI", "ID BARANG", "NAMA BARANG", "HARGA BELI", "HARGA JUAL", "JUMLAH", "KADALUARSA"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tabeldetail.setModel(defaultTable);

        int baris = tabeldetail.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select r.id_pengadaan,r.id_barang,b.nama_barang,r.harga_beli_satuan,b.harga_jual,r.jumlah_pengadaan_barang,r.tgl_kadaluarsa "
                + "from rel_pengadaan_barang r, barang b where r.id_pengadaan='" + data + "' and r.id_barang = b.id_barang";
        try {
            statement = koneksi.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while (resultSet.next()) {
                String idPengadaan = resultSet.getString(1);
                String idBarang = resultSet.getString(2);
                String namaBarang = resultSet.getString(3);
                double harga_beli = resultSet.getDouble(4);
                double harga_jual = resultSet.getDouble(5);
                int jumlah = resultSet.getInt(6);
                String kadaluarsa = resultSet.getString(7);

                Object kolom[] = {idPengadaan, idBarang, namaBarang, harga_beli, harga_jual, jumlah, kadaluarsa};
                defaultTable.addRow(kolom);
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    private void select_harga_jual() {
        Object header[] = {"ID BARANG", "NAMA BARANG", "HARGA BELI TERMAHAL", "HARGA JUAL"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tabelHargaJual.setModel(defaultTable);

        int baris = tabelHargaJual.getRowCount();
        for (int i = 0; i < baris; i++) {
            defaultTable.removeRow(i);
        }

        String sql_select = "select r.id_barang, b.nama_barang, max(r.harga_beli_satuan),b.harga_jual from rel_pengadaan_barang r, barang b where b.id_barang = r.id_barang group by id_barang";
        try {
            statement = koneksi.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            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) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    private void panggilKategori() {
        try {
            comboKategori.removeAllItems();
            String sql = "select kategori from kategori";
            statement = koneksi.connection.createStatement();
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                comboKategori.addItem(resultSet.getString(1));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    private void panggilNamaBarang(String data) {
        try {
            String sql = "select nama_barang from barang where kategori='" + data + "'";
            statement = koneksi.connection.createStatement();
            resultSet = statement.executeQuery(sql);
            comboNamaBarang.removeAllItems();
            comboNamaBarang.addItem("-- Pilih --");
            while (resultSet.next()) {
                comboNamaBarang.addItem(resultSet.getString(1).toString());
            }
        } catch (Exception e) {
//            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    private void panggilIdBarang(String data) {
        try {
            String sql = "SELECT ID_BARANG FROM barang WHERE NAMA_BARANG='" + data + "'";
            statement = koneksi.connection.createStatement();
            resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                txtIdBarang.setText(resultSet.getString(1));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    private void updateHarga() {
        String sql_update = "update barang set harga_jual = '" + txtHarga_jual.getText() + "' where id_barang = '" + txtId_Barang.getText() + "';";
        try {
            statement = koneksi.connection.createStatement();
            statement.executeUpdate(sql_update);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
    
    private void updateDetailTransaksi() {
       String sql=null;
        
        if (radioAda.isSelected()) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String tgl_kadaluarsa = dateFormat.format(tglKadaluarsa.getDate());
            
            sql ="UPDATE rel_pengadaan_barang "
                    + "SET ID_BARANG ='"+txtIdBarang.getText()+"', JUMLAH_PENGADAAN_BARANG ='"+txtJumlah.getText()+"', HARGA_BELI_SATUAN ='"+txtHargaBeli.getText()+"',"
                    + "TGL_KADALUARSA ='"+tgl_kadaluarsa+"' WHERE ID_PENGADAAN ='"+id_pengadaan +"' AND ID_BARANG='"+id_edit +"'";
        } else if (radioTdkAda.isSelected()) {
            sql ="UPDATE rel_pengadaan_barang "
                    + "SET ID_BARANG ='"+txtIdBarang.getText()+"', JUMLAH_PENGADAAN_BARANG ='"+txtJumlah.getText()+"', HARGA_BELI_SATUAN ='"+txtHargaBeli.getText()+"',"
                    + "TGL_KADALUARSA ='Tidak ada' WHERE ID_PENGADAAN ='"+id_pengadaan +"' AND ID_BARANG='"+id_edit +"'";
        }
        
        try {
            statement = koneksi.connection.createStatement();
            statement.executeUpdate(sql);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    private void insertData() {
       String sql = null;
        
        if (radioAda.isSelected()) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String tgl_kadaluarsa = dateFormat.format(tglKadaluarsa.getDate());
           //  sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + txtIdTransaksi.getText() + "', '" + txtIdBarang.getText() + "', '" + comboKategori.getSelectedItem().toString() + "', '" + comboNamaBarang.getSelectedItem().toString()+"','"+txtHargaBeli.getText()+"','"+txtJumlah.getText()+ "','" + tgl_kadaluarsa + "')";
        sql = "INSERT INTO rel_pengadaan_barang VALUES ('" + txtIdTransaksi.getText() + "', '" + txtIdBarang.getText() + "', '" + txtJumlah.getText() + "', '" + txtHargaBeli.getText() + "','" + tgl_kadaluarsa + "')";

        }
        else if (radioTdkAda.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 ('" + txtIdTransaksi.getText() + "', '" + txtIdBarang.getText() + "', '" + txtJumlah.getText() + "', '" + txtHargaBeli.getText() + "','Tidak ada')";

        }

        try {
            statement = koneksi.connection.createStatement();
            statement.executeUpdate(sql);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }

    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 = koneksi.connection.createStatement();
            resultSet = statement.executeQuery(sql_select);

            while (resultSet.next()) {
                txt_total_transaksi.setText(resultSet.getString(1));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }
    

 private void UpdateStok() {
        String idBarang = txtIdBarang.getText();
        String jumlah = txtJumlah.getText();
        String sqlstok = "SELECT stok FROM barang WHERE id_barang='" + idBarang + "'";
        try {
           statement = koneksi.connection.createStatement();
           resultSet = statement.executeQuery(sqlstok);
            while (resultSet.next()) {
                String stoklama = resultSet.getString(1);
                double stok = Double.parseDouble(jumlah) + Double.parseDouble(stoklama);
                String sql = "UPDATE barang SET stok='" + stok + "' WHERE id_barang='" + idBarang + "'";
                try {
                    statement = koneksi.connection.createStatement();
                    statement.executeUpdate(sql);
                } catch (Exception e) {
                    System.out.println("Terjadi kesalahan, karena data telah tersedia!\n" + e.getMessage());
                    JOptionPane.showMessageDialog(null, "Terjadi kesalahan, karena data telah tersedia!\n" + e.getMessage());
                }
            }
        } catch (Exception e) {
            System.out.println("Terjadi kesalahan, karena " + e.getMessage());
            JOptionPane.showMessageDialog(null, "Terjadi kesalahan, karena " + e.getMessage());
        }
    }
 private void TotalTransaksidipengadaan() {
        String sql_update = "update pengadaan set total_transaksi = '" + txt_total_transaksi.getText() + "' where id_pengadaan = '" + txtIdTransaksi.getText() + "';";
        
        try {
            statement = koneksi.connection.createStatement();
            statement.executeUpdate(sql_update);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
    }


private void deleteData() {
        String sql_delete = "DELETE FROM rel_pengadaan_barang WHERE ID_PENGADAAN ='" + txtIdTransaksi.getText() + "' AND ID_BARANG ='" + txtIdBarang.getText() + "'";
        try {
            statement = koneksi.connection.createStatement();
            statement.executeUpdate(sql_delete);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Data masih digunakan!!");
        }
    }

    public void Search() {
        Object header[] = {"ID BARANG", "NAMA BARANG", "HARGA BELI TERMAHAL", "HARGA JUAL"};
        DefaultTableModel defaultTable = new DefaultTableModel(null, header);
        tabelHargaJual.setModel(defaultTable);

        String cari = txtSearch.getText();
        String sql = "select r.id_barang, b.nama_barang, max(r.harga_beli_satuan),b.harga_jual 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 = koneksi.connection.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());
        }
    }


Berikutnya kita isi source code pada Button dan combo box tersebut.
Berikut penjelasan source codenya

  • Button Insert
private void btninsertActionPerformed(java.awt.event.ActionEvent evt) {                                          
        
         if (txtHargaBeli.getText().isEmpty() || txtJumlah.getText().isEmpty() ) {
            JOptionPane.showMessageDialog(null, "Pengisian Form Harus Lengkap");
        }else{
             insertData();
             UpdateStok();
             TotalTransaksidipengadaan();
        select(id_pengadaan);
        select_harga_jual();
        totalTransaksi(id_pengadaan);
        clear1();
        }
    }      

  • Button Set Harga
    private void btndelete1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        if (txtIdTransaksi.getText().isEmpty() || txtIdBarang.getText().isEmpty() || txtHargaBeli.getText().isEmpty() || txtJumlah.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Pilih data yang akan diedit");
        } else {
            int hasil = JOptionPane.showConfirmDialog(null, "Apakah benar anda ingin mengedit kode barang : " + txtIdBarang.getText(), null, JOptionPane.YES_NO_OPTION);
            if (hasil == JOptionPane.YES_OPTION) {
                updateDetailTransaksi();
                select(id_pengadaan);
                select_harga_jual();
                totalTransaksi(id_pengadaan);
                clear1();
            } else if (hasil == JOptionPane.NO_OPTION) {
                clear1();
            }
        }
    }   

  • Button Delete
    private void btndeleteActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        if (txtIdTransaksi.getText().isEmpty() || txtIdBarang.getText().isEmpty() || txtHargaBeli.getText().isEmpty() || txtJumlah.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Pilih data yang akan dihapus");
        } else {
            int hasil = JOptionPane.showConfirmDialog(null, "Apakah benar anda ingin menghapus kode barang : " + txtIdBarang.getText(), null, JOptionPane.YES_NO_OPTION);
            if (hasil == JOptionPane.YES_OPTION) {
                deleteData();
                select(id_pengadaan);
                select_harga_jual();
                totalTransaksi(id_pengadaan);
                clear1();
            } else if (hasil == JOptionPane.NO_OPTION) {
                clear1();
            }
        }
    }        

  • Button Cancel
private void btncancelActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        new form_pengadaan_barang().show();
        this.dispose();
    }   

  • Button Refresh
private void btnRefreshActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        select_harga_jual();
    }


  • Combo Nama Barang
private void comboNamaBarangItemStateChanged(java.awt.event.ItemEvent evt) {                                                 
        // TODO add your handling code here:
        if (count2 >= 2) {
            if (comboNamaBarang.getSelectedItem().toString().equals("-- Pilih --")) {
            } else {
                panggilIdBarang(comboNamaBarang.getSelectedItem().toString());
            }
        } else {
            count2++;
        }
    }      

  • Combo Kategori
   private void comboKategoriItemStateChanged(java.awt.event.ItemEvent evt) {                                               
        // TODO add your handling code here:
        if (count >= 2) {
            panggilNamaBarang(comboKategori.getSelectedItem().toString());
        } else {
            count++;
        }
    }    

  • Radio
    private void radioAdaMouseExited(java.awt.event.MouseEvent evt) {                                     
        // TODO add your handling code here:
        radioAda.setEnabled(true);
        tglKadaluarsa.setEnabled(true);
    }                                    

    private void radioAdaMouseEntered(java.awt.event.MouseEvent evt) {                                      
        // TODO add your handling code here:
        radioAda.setEnabled(true);
        radioTdkAda.setEnabled(false);
    }                                     

    private void radioTdkAdaMouseEntered(java.awt.event.MouseEvent evt) {                                         
        // TODO add your handling code here:
        radioTdkAda.setEnabled(true);
        radioAda.setEnabled(false);
        tglKadaluarsa.setEnabled(false);
    }                                        

  • Tabel
private void tabelHargaJualMouseClicked(java.awt.event.MouseEvent evt) {                                            
        // TODO add your handling code here:
        txtId_Barang.setText(tabelHargaJual.getValueAt(tabelHargaJual.getSelectedRow(), 0).toString());
        txtHarga_jual.setText(tabelHargaJual.getValueAt(tabelHargaJual.getSelectedRow(), 3).toString());

    }         

  • Tabel Detail
private void tabeldetailMouseClicked(java.awt.event.MouseEvent evt) {                                         
        // TODO add your handling code here:
        txtIdTransaksi.setText(tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 0).toString());
        txtIdBarang.setText(tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 1).toString());
        comboKategori.setSelectedItem(tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 2));
        comboNamaBarang.setSelectedItem(tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 3));
        txtHargaBeli.setText(tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 3).toString());
        txtJumlah.setText(tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 5).toString());
        id_edit = tabeldetail.getValueAt(tabeldetail.getSelectedRow(), 1).toString();
    }                                   


Setelah kita mengisikan source codenya langkah selanjutnya kita coba jalankan program form tersebut, sebelum menjalankan form tersbut kita harus kembali pada Form Pengadaan barang lalu kita klik detail, contohnya adalah seperti gambar dibawah ini.


Bila kita mengklik detail maka selanjutnya akan menuju pada Form Detail Transaksi barang. pada Form detail Transaksi in, ID TRANSAKSI sudah terisi secara otomatis dan untuk inputan Kategori Barang dan Nama barang, kita akan memilih melalui combo box karena data sudah ada pada database. seperti contoh gambar dibawah ini.



Bila kita selesai menginputkan, maka data yang kita inputkan akan ada pada tabel dibawahnya, beserta total transaksi untuk barang tersebut.



Langkah selanjutnya kita masuk pada tabbed pane harga jual barang. Data yang kita inputkan akan masuk pada tabel harga jual barang. berikut ini adalah gambar form harga jual barang setelah kita input data.


Langkah Berikutnya kita mengeset untuk harga jual barang, caranya yaitu dengan mengklik tabel data yang akan di set harga jualnya kemudian kita ubah harga jual..
seperti gambar berikut.


Sekian Penjelasan dari form Detail transaksi barang.