Pada bagian import tambahkan dibawah baris
package penjuaan sepeti kode berikut:
package penjualan;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
Pada bagian
public class FrmPenjualan extends javax.swing.JFrame tambahkan kode berikut:
public final class FrmPenjualan extends javax.swing.JFrame {
Connection conn;
Statement cn;
/**
* Creates new form FrmPenjualan
*/
public FrmPenjualan() {
initComponents();
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 10);
table.setModel(tableModel);
Tabel(table, new int[]{90,300,90,60,60,90});
setDefaultTable();
TanggalOtomatis();
SetEditOff();
TampilComboBarang();
TampilComboPetugas();
tampilfaktur();
}
Buatlah kode program diatas
// Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"Kode Barang","Nama Barang","Harga Jual","Stok","Jumlah","Sub Total"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){ return canEdit[columnIndex];
}
};
}
String data[]=new String[6];
private void setDefaultTable() {
String stat ="";
try {
koneksi();
String SQL = "SELECT tblbarang.kodebarang,tblbarang.namabarang,tblbarang.hargajual," +
"tblbarang.stok,tbldetailpenjualan.jumlah,tbldetailpenjualan.subtotal,tblpenjualan.nofaktur " +
"FROM tblbarang,tbldetailpenjualan,tblpenjualan WHERE tblbarang.kodebarang=tbldetailpenjualan.kodebarang " +
"AND tblpenjualan.nofaktur=tbldetailpenjualan.nofaktur" +
"AND tbldetailpenjualan.nofaktur='"+NoFaktur.getText()+"'";
try (ResultSet res = cn.executeQuery(SQL)) {
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
tableModel.addRow(data);
}
}
cn.close();
conn.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
// Variables declaration - do not modify
Buatlah private baru
TampilGridDetail kemudian buat kode program seperti berikut:
private void TampilGridDetail(){
String stat ="";
try {
koneksi();
String SQL = "SELECT tblbarang.kodebarang,tblbarang.namabarang,tblbarang.hargajual,"
+"tblbarang.stok,tbldetailpenjualan.jumlah,tbldetailpenjualan.subtotal,tblpenjualan.nofaktur " +
"FROM tblbarang, tbldetailpenjualan, tblpenjualan " +
"WHERE tblbarang.kodebarang=tbldetailpenjualan.kodebarang " +
"AND tblpenjualan.nofaktur=tbldetailpenjualan.nofaktur " +
"AND tbldetailpenjualan.nofaktur='" + NoFaktur.getText() + "'";
try (ResultSet res = cn.executeQuery(SQL)) {
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
tableModel.addRow(data);
}
}
cn.close();
conn.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
Buatlah perintah
BersihData, BersihDetail, SetEditOff, dan
SetEditON disembarang tempat yang memiliki space kosong seperti
berikut ini:
public void BersihData(){
tableModel.setRowCount(0);
// NoFaktur.setText("");
NamaPetugas.setText("");
IDPetugas.setSelectedIndex(0);
KodeBarang.setSelectedIndex(0);
NamaBarang.setText("");
HargaJual.setText("");
Jumlah.setText("");
Stok.setText("");
Bayar.setText("0");
Sisa.setText("0");
Total.setText("0");
SubTotal.setText("0");
}
public void BersihDetail(){
KodeBarang.setSelectedIndex(0);
NamaBarang.setText("");
HargaJual.setText("");
Stok.setText("");
Jumlah.setText("");
SubTotal.setText("0");
}
public void SetEditOff(){
NoFaktur.setEnabled(false);
TglPenjualan.setEnabled(false);
IDPetugas.setEnabled(false);
KodeBarang.setEnabled(false);
Jumlah.setEnabled(false);
Hitung.setEnabled(false);
CariData.setEnabled(false);
AddItem.setEnabled(false);
}
public void SetEditOn(){
NoFaktur.setEnabled(true);
TglPenjualan.setEnabled(true);
IDPetugas.setEnabled(true);
KodeBarang.setEnabled(true);
Jumlah.setEnabled(true);
SaveTransaction.setEnabled(true);
CariData.setEnabled(true);
Hitung.setEnabled(true);
AddItem.setEnabled(true);
}
Buatlah kode program pada kombobox idpetugas dengan cara klik kanan pilih
events -> item -> itemStatChanged.
private void IDPetugasItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
koneksi();
String SQL = "SELECT * FROM tblpetugas where idpetugas='"+
IDPetugas.getSelectedItem().toString()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
NamaPetugas.setText(res.getString("namapetugas"));
} catch (SQLException ex) {
}
}
Buatlah private baru untuk menampilakn data pada kombobox idpetugas seperti berikut:
public void TampilComboPetugas(){
try {
koneksi ();
String SQL = "SELECT * FROM tblpetugas";
ResultSet res = cn.executeQuery(SQL);
while(res.next()){
IDPetugas.addItem(res.getString("idpetugas"));
}
} catch (SQLException ex) {
}
}
Buatlah kode program pada kombobox kodebarang dengan cara klik kanan pilih
events -> item -> itemStatChanged.
private void KodeBarangItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:
try {
koneksi();
String SQL = "SELECT * FROM tblbarang where kodebarang='"+
KodeBarang.getSelectedItem().toString()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
NamaBarang.setText(res.getString("namabarang"));
HargaJual.setText(res.getString("hargajual"));
Stok.setText(res.getString("stok"));
} catch (SQLException ex) {
}
Jumlah.requestFocus();
AddItem.setEnabled(true);
}
Buatlah private baru untuk menampilakn data pada kombobox iddistributor seperti berikut:
public void TampilComboBarang(){
try {
koneksi ();
String SQL = "SELECT * FROM tblbarang";
ResultSet res = cn.executeQuery(SQL);
while(res.next()){
KodeBarang.addItem(res.getString("kodebarang"));
}
} catch (SQLException ex) {
}
}
Buatlah private baru untuk menampilkan tanggal otomatis seperti berikut:
public void TanggalOtomatis(){
Date tanggal = new Date();
TglPenjualan.setText(""+ (String.format("%1$td/%1$tb/%1$tY",tanggal)));
}
Buatlah kode program untuk menampilkan perhitungan subtotal dengan mengkilik button hitung -> events -> action -> ActionPerformed. .
private void HitungActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int a;
int b;
double c;
a = Integer.parseInt(HargaJual.getText());
b = Integer.parseInt(Jumlah.getText());
c = a * b;
SubTotal.setText(String.valueOf(c));
}
Buatlah kode program untuk menampilkan total dengan cara klik kanan textfield subtotal -> events -> charet -> charetUpdate.
private void SubTotalCaretUpdate(javax.swing.event.CaretEvent evt) {
// TODO add your handling code here:
double d, e;
d = Double.parseDouble(SubTotal.getText());
e = Double.parseDouble(Total.getText());
e = e+d;
Total.setText(String.valueOf(e));
}
Buatlah kode program untuk menampilkan perhitungan sisa bayar dengan cara klik kanan textfield bayar -> events -> charet -> charetUpdate.
private void BayarCaretUpdate(javax.swing.event.CaretEvent evt) {
// TODO add your handling code here:
double a;
double b;
double c;
a = Double.parseDouble(Bayar.getText());
b = Double.parseDouble(Total.getText());
c = a - b;
Sisa.setText(String.valueOf(c));
}
Buatlah kode program
AddNew dengan
mengklik kanan button AddNew ->events -> action -> ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
SetEditOn();
BersihData();
NoFaktur.requestFocus();
tampilfaktur();
}
Buatlah kode program
Add Item dengan mengklik kanan button
Add Item ->events -> action -> ActionPerformed.
private void AddItemActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NM=NoFaktur.getText();
String KB=KodeBarang.getSelectedItem().toString();
String JM=Jumlah.getText();
if ((NM.isEmpty()) | (KB.isEmpty()) |(JM.isEmpty())) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeBarang.requestFocus();
}else {
try {
koneksi();
try (Statement stt = conn.createStatement()) {
String SQL = "insert into tbldetailpenjualan values('"+NoFaktur.getText()+"',"+
"'"+KodeBarang.getSelectedItem()+"',"+
"'"+Jumlah.getText()+"',"+
"'"+SubTotal.getText()+"')";
stt.executeUpdate(SQL);
koneksi();
Statement stt1 = conn.createStatement();
String SQL1 = "Update tblbarang Set stok=stok - '"+Jumlah.getText()+"'" +
"Where kodebarang='"+KodeBarang.getSelectedItem().toString()+"'";
stt1.executeUpdate(SQL1);
data[0] = KodeBarang.getSelectedItem().toString();
data[1] = NamaBarang.getText();
data[2] = HargaJual.getText();
data[3] = Stok.getText();
data[4] = Jumlah.getText();
data[5] = SubTotal.getText();
tableModel.insertRow(0, data);
}
conn.close();
KodeBarang.requestFocus();
AddItem.setEnabled(false);
BersihDetail();
KodeBarang.requestFocus();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
Buatlah kode program
SaveTransaction dengan mengklik kanan button
save Transaction ->events -> action -> ActionPerformed.
private void SaveTransactionActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String NM=NoFaktur.getText();
if ((NM.isEmpty())) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
NoFaktur.requestFocus();
}else {
try {
koneksi ();
String SQL = "insert into tblpenjualan values('"+NoFaktur.getText()+"',"+
"'"+TglPenjualan.getText()+"',"+
"'"+IDPetugas.getSelectedItem()+"',"+
"'"+Bayar.getText()+"',"+
"'"+Sisa.getText()+"',"+
"'"+Total.getText()+"')";
cn.executeUpdate(SQL);
cn.close();
conn.close();
BersihData();
SetEditOff();
SaveTransaction.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}
Buatlah kode program
Close dengan mengklik kanan button
Close ->evens -> action -> ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(JOptionPane.showConfirmDialog(null,"This application will be close \n if you press button OK","Information",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE)==JOptionPane.OK_OPTION)
this.dispose();
new FrmMenu().setVisible(true);
}
Buatlah kode program
Cari Data dengan mengklik kanan button
Cari Data-> events -> Action -> ActionPerformed.
private void CariDataActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
koneksi ();
String SQL = "SELECT * FROM tblpenjualan where nofaktur='"+NoFaktur.getText()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
TampilGridDetail();
TglPenjualan.setText(res.getString("tglpenjualan"));
IDPetugas.setSelectedItem(res.getString("idpetugas"));
Bayar.setText(res.getString("bayar"));
Sisa.setText(res.getString("sisa"));
Total.setText(res.getString("total"));
SaveTransaction.setEnabled(false);
NoFaktur.setEnabled(false);
CariData.setEnabled(false);
} catch (SQLException ex) {
}
}
Buatlah kode program
Cancel dengan mengklik kanan button
Cancel -> events -> Action ->
ActionPerformed.
private void CancelActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
BersihData();
SetEditOff();
}
Buatlah private baru untuk menampilkan
Faktur seperti berikut
:
public void tampilfaktur() {
// Date tanggal = new Date();
// String kode;
// NoFaktur.setText(""+ (String.format("%1$tY%1$tm%1$td",tanggal)));
Date sk = new Date();
SimpleDateFormat format1=new SimpleDateFormat("yyMMdd");
String time = format1.format(sk);
koneksi();
String sql = "select right(nofaktur,1) as kd from tblpenjualan order by kd desc";
try{
try (ResultSet rs = cn.executeQuery(sql)) {
if (rs.next()){
int kode = Integer.parseInt(rs.getString("kd"))+1;
NoFaktur.setText(time+Integer.toString(kode));
}else{
int kode = 1;
NoFaktur.setText(time+Integer.toString(kode));
}
}
}catch (SQLException | NumberFormatException e){
JOptionPane.showMessageDialog(null, e);
}
}
Buatlah perintah
koneksi disembarang tempat yang memiliki space kosong seperti berikut ini:
public void koneksi(){
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbretail","root","");
cn = conn.createStatement();
}catch (ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,"koneksi gagal..");
JOptionPane.showMessageDialog(null,e.getMessage());
}
}
Doneeeee… Form selesai dibuat selanjutnya tinggal sobat
jalankan dengan memencet
shift+F6 dan akan tampil seperti berikut sob: