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.




13 komentar:

  1. terima kasih untuk sharingnya.. sukses selalu Mas Bro..

    BalasHapus
  2. wah makasih bro ^_^ sukses ya

    BalasHapus
  3. Terimakasih bnyak kawans..
    Bagi ilmu, nambah ilmu, nambah pahala (y)

    BalasHapus
  4. bang, boleh minta detail nama variablenya.. izin kirim ke bowez88@gmail.com
    saya ada error di variablenya, terima kasih sebelumnya

    BalasHapus
  5. 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??
    mohon bantuan nya gan

    BalasHapus
  6. 1transaksi bisa banyak barang nih?

    BalasHapus
  7. 1transaksi bisa banyak barang nih?

    BalasHapus
  8. gan untuk databasenya gmn ?
    sama letak class2 nya juga

    BalasHapus
  9. gan mhn petunjukny
    sy coba yg tampil data
    ngk muncul ya data nya gan
    private void selectTabelHargaJual() dstny
    sdh dirun data ngk muncul

    BalasHapus
  10. bisa bagi programnya gan? dengan db nya boleh? kirim lewat via email
    ridwanparis04@gmail.com
    trims gan

    BalasHapus
  11. Bang boleh buat video tutorialnya?aku ngk mudeng, thanks

    BalasHapus