10 3.1. Tinjauan Perusahaan
3.1.1. Sejarah Perusahaan
SKN MOTOR adalah perusahaan yang bergerak dibidang pelayanan jasa servis mobil dan menyediakan segala macam accesories mobil. SKN MOTOR didirikan pada tahun 2009, yang berlokasi di JL PAHLAWAN NO 180 MERTOKONDO KEBUMEN Adapun ditengah maraknya kebutuhan masyarakat akan pelayanan jasa servis mobil, maka SKN bengkel dan accesories mobil turut hadir untuk memberikan pelayanan yang terbaik dan memuaskan bagi masyarakat. 3.1.2. Struktur Organisasi Perusahaan
Pemilik toko
Kepala Toko
Mekanik Kasir
Sumber : Struktur Organisasi SKN Motor (2020) Gambar III.1.
Adapun fungsi dari masing-masing bagian adalah sebagai berikut: 1. Pemilik Bengkel
a. Bertanggung jawab secara penuh terhadap kegiatan yang terjadi pada bengkel.
b. Memantau jalannya bengkel.
c. Memberikan kebijakan-kebijakan untuk bengkel. 2. Kepala Toko
a. Menjaga dan meningkatkan mutu pelayanan bengkel.
b. Mengevaluasi sistem dan prosedur bengkel.
c. Pembinaan dan pengembangan personil bengkel.
d. Bertanggung jawab terhadap keluar masuknya uang dan pengelolaan keuangan.
e. Mengawasi dan mengatur keuangan dan akuntansi bengkel. 3. Mekanik
a. Melaksanakan perbaikan kendaraan sesuai perintah atasan.
b. Melakukan pemeliharaan segala macam mesin agar tidak mudah rusak. 4. Kasir
a. Melayani customer yang akan melakukan servis maupun yang akan membeli accesories mobil
b. Menerima semua pembayaran dari customer yang telah melakukan service.
c. Bertanggung jawab terhadap keluar masuknya barang
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
1. Proses Penerimaan Kas Atas Penjualan
Konsumen datang langsung ke bengkel dan memberitahukan barang yang dibutuhkan. Kasir mengambilkan barang sesuai deskripsi konsumen. Kasir membuatkan nota penjualan. Kasir memberikan nota penjualan kepada
sesuai dengan jumlah pada nota penjualan. Kasir menerima Pembayaran. 2. Proses Penerimaan Kas Atas Jasa Service
Konsumen datang langsung ke bengkel dengan membawa kendaraan. Mekanik mengecek kendaraan. Mekanik meminta barang yang dibutuhkan untuk servis kendaraan konsumen. Kasir mengambilkan barang yang dibutuhkan mekanik. Mekanik melakukan servis pada kendaraan konsumen. Jika sudah selesai Kasir membuat nota penjualan dengan tambahan biaya servis. Kasir memberikan nota penjualan kepada konsumen. Konsumen menerima Nota Penjualan. Konsumen membayar sesuai dengan jumlah pada nota penjualan. Kasir menerima Pembayaran.
3. Proses Pembuatan Laporan
Setiap akhir bulan, kasir mengumpulkan nota penjualan dan menghitung penerimaan kas dari keseluruhan transaksi pada bulan tersebut. Kasir menyerahkan laporan penerimaaan kas atas penjualan barang dan servis kepada pemilik SKN Motor. Pemilik SKN Motor menerima laporan penerimaan kas tersebut dalam periode 1 bulan.
1. Proses Penerimaan Kas Atas Penjualan Proses Penerimaan Kas Atas Penjualan
Konsumen Kasir Ph as e START Datang Langsung Ke Bengkel Memberitahukan Barang Yang Dibutuhkan Mengambilkan Barang Sesuai Deskripsi Konsumen Membuatkan Nota Penjualan Memberikan Nota Penjualan Menerima Nota Penjualan Membayar Sesuai Nota Penjualan Menerima Pembayaran END Gambar III.2.
Proses Penerimaan Kas Atas Jasa Servis
Konsumen Mekanik Kasir
P ha se START Datang Langsung Ke Bengkel Dengan Membawa Kendaraan Mengecek Kendaraan Meminta Barang Yang Dibutuhkan Untuk servis Mengambilkan Barang Yang Dibutuhkan Melakukan Servis Servis Selesai Membuatkan Nota Penjualan Dengan Tambahan Biaya Servis END Memberikan Nota Penjualan Menerima Nota Penjualan Membayar Sesuai
Nota Penjualan PembayaranMenerima
Gambar III.3.
Proses Pembuatan Laporan Kasir Pemilik Ph as e START Mengumpulkan Nota Penjualan Menghitung Penerimaan Kas Dari Keseluruhan Transaksi
Menyerahkan Laporan Penerimaan Kas
Atas Penjualan Dan Jasa Servis
Menerima Laporan Penerimaan Kas
END
Gambar III.4.
1. Nama Dokumen : Nota Penerimaan Kas Atas Jasa Servis Fungsi : Bukti Peneriaan Kas
Sumber : Konsumen
Tujuan : Kasir
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap Terjadi Transaksi Penerimaan Jasa Servis 3.2.4. Dokumen Keluaran
1. Nama Dokumen : Nota Penjualan
Fungsi : Bukti Transaksi Penjualan
Sumber : Kasir
Tujuan : Konsumen
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap Terjadi Transaksi Penjualan 2. Nama Dokumen : Laporan Penerimaan Kas
Fungsi : Sebagai Laporan Bulanan Kas Yang Diterima
Sumber : Kasir
Tujuan : Pemilik
Media : Kertas
Jumlah : 1 Lembar
Permasalahan yang sering muncul pada sistem berjalan yang ada pada SKN Motor adalah sebagai berikut:
1. Proses penerimaan kas atas penjualan maupun servis masih dicatat dan dibukukan dalam buku besar sehingga kurang terjamin keamanan suatu data. 2. Laporan yang disusun masih menggunakan media kertas sehingga perlu
ruang dalam penyimpanan. Dokumen mudah hilang atau rusak serta penyimpanan data yang belum terstruktur dengan baik memakan kapasitas ruang data secara fisik.
3.2.6. Pemecahan Masalah
Berdasarkan permasalahan tersebut, penulis mencoba memberikan beberapa
alternatif pemecahan masalah, diantaranya sebagai berikut:
1. Disarankan untuk menggunakan sistem yang sudah terkomputerisasi agar data dapat terjamin keamananya. Selain itu sistem baru diharpkan dapat meminimalisir kesalahan dalam pencatatan penerimaan kas atas penjualan maupun servis sehingga dapat mempermudah dalam menysuun laporan. 2. Selain bentuk dokumen, disarankan juga menggunakan media penyimpanan
yang lebih terorganisir. Penulis menyarankan menggunakan media database sebagai tempat penyimpanan data agar terhindar dari resiko hilang ataupun rusak.
Penulis mendokumentasikannya melalui Analisis Kebutuhan, Use Case
Diagram, dan Activity Diagram sesuai dengan tinjauan kasus diatas.
3.3.1. Analisa Kebutuhan A. Kasir
A1. Kasir Login
A2. Kasir Mengakses Menu Utama A2.1. Kasir Mengakses Menu Master
a) Kasir Mengelola Data Pengguna b) Kasir Mengelola Data Barang c) Kasir Mengelola Data Akun A.2.2. Kasir Mengakses Menu Transaksi
a) Kasir Mengelola Penjualan b) Kasir Mengelola Jurnal A.3. Kasir Logout
P. Pemilik P1. Pemilik Login
P2. Pemilik Mengakses Menu Utama P.2.1. Pemilik Mengakses Menu Laporan
a) Pemilik Mengakses Laporan Penerimaan Kas P.3. Pemilik Logout
A. Use Case Diagram Kasir
Gambar III.5.
Use Case Diagram Kasir
Tabel III.1.
Deskripsi Use Case Diagram Kasir
Use Case Narative Kasir
Tujuan
Kasir dapat melakukan login, mengakses menu utama, mengakses menu master, mengakses menu transaksi dan logout.
Deskripsi
Sistem ini memungkinkan aktor untuk mengelola menu master mulai dari submenu pengguna, pasien, barang dan akun
Skenario Utama
Aktor Kasir
Kondisi awal Aktor melakukan login dan masuk ke dalam system informasi penerimaan kas
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu master
2. Aktor memilih menu transaksi
Sistem akan menampilkan form submenu pengguna Sistem akan menampilkan form submenu barang Sistem akan menampilkan form submenu akun Sistem akan menampilkan form submenu penjualan Sistem akan menampilkan form submenu jurnal Kondisi Akhir Jika perintah sesuai maka akan masuk kedalam
B. Use Case Diagram Pemilik
Gambar III.6.
Use Case Diagram Pemilik
Tabel III.2.
Deskripsi Use Case Diagram Pemilik
Use Case Narative Pemilik
Tujuan Pemilik dapat melakukan login, mengakses menu utama, mengakses menu laporan dan logout. Deskripsi Sistem ini memungkinkan aktor untuk mengelola
menu laporan dan melihat laporan penerimaan kas Skenario Utama
Aktor Kasir
Kondisi awal Aktor melakukan login dan masuk ke dalam system informasi penerimaan kas
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu laporan
Sistem akan menampilkan form submenu laporan penerimaan kas
Kondisi Akhir Jika perintah sesuai maka akan masuk kedalam aplikasi dan aktor dapat melakukan aktivitas sistem.
1. Activity Diagram Menu Login Activity Diagram Menu Login
Sistem Kasir START Melakukan Login Masukkan Kode User Masukkan Password
Cek Kode User dan Password Kode Atau Password Salah [VALID?] END [TIDAK VALID] Mengakses Menu Utama Gambar III.7.
Activity Diagram Menu Utama Sistem Kasir P has e START Mengakses Menu Utama Menampilkan Menu Utama Menu Logout Menu Master Keluar Sistem END Menu Transaksi Gambar III.8.
3. Activity Diagram Submenu Pengguna
Activity Diagram Menu Master Submenu Pengguna
Sistem Kasir P ha se START
Mengklik Menu Master Submenu Pengguna
Menampilkan Form Pengguna
Tampil Form Input Proses Ubah Data UBAH
HAPUS
END
Tidak Ya
TAMBAH CARI NAMA
PENGGUNA
Input Data Yang Ingin diubah Tampil Info Hapus Proses Hapus data Klik Simpan Proses simpan Data Textbox Kembali Bersih Input Kode Pengguna Nama Pengguna Password Level Klik Batal UBAH KELUAR Data Berhasil Diubah Gambar III.9.
4. Activity Diagram Submenu Barang
Activity Diagram Menu Master Submenu Barang
Sistem Kasir P ha se START
Mengklik Menu Master Submenu
Barang Menampilkan Form Barang
Tampil Form Input Proses Ubah Data UBAH
HAPUS
END
Tidak Ya
TAMBAH CARI NAMA
PENGGUNA
Input Data Yang Ingin diubah Tampil Info Hapus Proses Hapus data Klik Simpan Proses simpan Data Textbox Kembali Bersih Input Kode Barang Nama Barang Jenis Harga Stok Klik Batal UBAH KELUAR Data Berhasil Diubah Gambar III.10.
5. Activity Diagram Submenu Akun
Activity Diagram Menu Master Submenu Akun
Sistem Kasir P ha se START
Mengklik Menu Master Submenu
Akun Menampilkan Form Akun
Tampil Form Input Proses Ubah Data UBAH
HAPUS
END
Tidak Ya
TAMBAH CARI NAMA
PENGGUNA
Input Data Yang Ingin diubah Tampil Info Hapus Proses Hapus data Klik Simpan Proses simpan Data Textbox Kembali Bersih Input Kode Akun Nama Akun Saldo Normal Klik Batal UBAH KELUAR Data Berhasil Diubah Gambar III.11.
6. Activity Diagram Submenu Penjualan
Activity Diagram Menu Transaksi Submenu Penjualan
Sistem Kasir P ha se START
Mengklik Menu Transaksi Penjualan
Menampilkan Form Penjualan
Tampil Form Input
END TAMBAH Klik Simpan Proses simpan Data Textbox Kembali Bersih Input Kode Penjualan Tanggal Nama Pengguna Kode Barang Harga Jumlah Beli Subtotal Uang Bayar Uang Kembali Klik Batal KELUAR Gambar III.12.
7. Activity Diagram Submenu Jurnal
Activity Diagram Menu Transaksi Submenu Jurnal
Sistem Kasir P ha s e START
Mengklik Menu Transaksi Jurnal Menampilkan Form Jurnal
Tampil Form Input
END TAMBAH Klik Simpan Proses simpan Data Textbox Kembali Bersih Input Kode Jurnal Tanggal Keterangan Kode Pengguna Kode Akun Nama Akun Debet Kredit Klik Batal KELUAR Gambar III.13.
8. Activity Diagram Laporan Penjualan
Activity Diagram Menu Laporan Penjualan
Sistem Pemilik P ha se START
Mengklik Menu Laporan Penjualan Menampilkan Laporan Penjualan Menutup Menu Laporan Klik Cetak END
Laporan Per Periode Laporan Perbulan
Proses Mencetak Data Klik Simpan Proses simpan Data Menampilkan Laporan Gambar III.14.
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.15.
3.4.2. Logical Record Structure (LRS)
Gambar III.16.
Berikut spesifikasi file yang dibuatkan untuk menguraikan rancangan tabel yang akan digunakan dalam sistem informasi penerimaan kas.
1. Spesifikasi File Pengguna Nama File : pengguna Akronim : db_penerimaan
Fungsi : sebagai penyimpan data pengguna Tipe File : File Master
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 63 Byte
Kunci field : kode_pengguna
Software : MySQL
Tabel III.3.
Spesifikasi File Pengguna
No Elemen Data Nama Field Type Size Keterangan 1 Kode Pengguna kode_pengguna Varchar 8 Primary Key
2 Nama Pengguna nama_pengguna Varchar 15
3 Password password Varchar 30
Nama File : barang
Akronim : db_penerimaan
Fungsi : sebagai penyimpan data barang Tipe File : File Master
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 90 Byte Kunci field : kode_barang
Software : MySQL
Tabel III.4. Spesifikasi File Barang
No Elemen Data Nama Field Type Size Keterangan
1 Kode Barang kode_barang Varchar 8 Primary Key
2 Nama Barang nama_barang Varchar 30
3 Jenis jenis Varchar 30
4 Harga harga Int 11
Nama File : akun
Akronim : db_penerimaan
Fungsi : sebagai penyimpan data akun Tipe File : File Master
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 44 Byte Kunci field : kode_akun
Software : MySQL
Tabel III.5. Spesifikasi File Akun
No Elemen Data Nama Field Type Size Keterangan
1 Kode Akun kode_akun Varchar 8 Primary Key
2 Nama Akun nama_akun Varchar 30
3 Saldo Normal saldo_normal Varchar 6
Nama File : penjualan Akronim : db_penerimaan
Fungsi : sebagai penyimpan data penjualan Tipe File : File Transaksi
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 64 Byte
Kunci field : kode_penjualan
Software : MySQL
Tabel III.6.
Spesifikasi File Penjualan
No Elemen Data Nama Field Type Size Keterangan 1 Kode Penjualan kode_penjualan Varchar 15 Primary Key
2 Tanggal tanggal Varchar 30
3 Total Bayar totalbayar Int 11
Nama File : penjualan Akronim : db_penerimaan
Fungsi : sebagai penyimpan data penjualan Tipe File : File Transaksi
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 45 Byte
Kunci field : kode_penjualan
Software : MySQL
Tabel III.7.
Spesifikasi File Detail Penjualan
No Elemen Data Nama Field Type Size Keterangan 1 Kode Penjualan kode_penjualan Varchar 15 Primary Key
2 Kode Barang kode_barang Varchar 8 Foreign Key
3 Jumlah Beli jumlahbeli Int 11
Nama File : jurnal
Akronim : db_penerimaan
Fungsi : sebagai penyimpan data jurnal Tipe File : File Transaksi
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 83 Byte Kunci field : kode_jurnal
Software : MySQL
Tabel III.8. Spesifikasi File Jurnal
No Elemen Data Nama Field Type Size Keterangan
1 Kode Jurnal kode_jurnal Varchar 15 Primary Key
2 Tanggal Tanggal Varchar 30
3 Keterangan Keterangan Varchar 30
Nama File : detail_jurnal Akronim : db_penerimaan
Fungsi : sebagai penyimpan data jurnal Tipe File : File Transaksi
Organisasi File : Indexed Sequential Akses File : Random
Media : Harddisk
Panjang record : 45 Byte Kunci field : kode_jurnal
Software : MySQL
Tabel III.9.
Spesifikasi File Detail Jurnal
No Elemen Data Nama Field Type Size Keterangan
1 Kode Jurnal kode_jurnal Varchar 15 Primary Key
2 Kode Akun kode_akun Varchar 8 Foreign Key
3 Debet debet Int 11
pengguna kode_pengguna nama_pengguna password level -TAMBAH -SIMPAN -UBAH -HAPUS -BATAL barang kode_barang nama_barang jenis_barang harga stok -TAMBAH -SIMPAN -UBAH -HAPUS -BATAL akun kode_akun nama_akun saldo_normal -TAMBAH -SIMPAN -UBAH -HAPUS -BATAL penjualan kode_penjualan tanggal totalbayar kode_pengguna -TAMBAH -SIMPAN detail_penjualan kode_penjualan kode_barang jumlah_beli subtotal jurnal kode_jurnal kode_pengguna tanggal keterangan -TAMBAH -SIMPAN detail_jurnal kode_jurnal kode_akun debet kredit Gambar III.17. Class Diagram
Kasir Login Input Kode User
dan Password()
Cek Kode User dan Password() Kode User dan
Password tidak ada atau salah()
Menu Utama
Kode User Dan Password Benar() Control Form Penjualan Tambah() Sistem Simpan Data() Input Kode Penjualan() Tanggal() Nama Pengguna() Kode Barang() Nama Barang() Harga() Jumlah Beli() Sub Total() Uang Bayar() Uang Kembali() Data Tersimpan () Gambar III.18. Sequence Diagram
MySQL JDBC Driver Netbean IDE (Java) Database (database MySQL)
phpMyAdmin
Java SE 6.0 (JDK 6)
Gambar III.19. Component Diagram
KomputerClient Client Aplikasi Komputer Server Aplikasi Database db_penerimaan.sql Gambar III.20. Deployment Diagram
1. Menu Login
Gambar III.21. Menu Login
2. Menu Utama Kasir
Gambar III.22. Menu Utama Kasir
Gambar III.23. Master Pengguna
Gambar III.24. Master Barang
Gambar III.25. Master Akun
Gambar III.26. Transaksi Penjualan
Gambar III.27. Rancangan Nota Penjualan
Gambar III.28. Transaksi Jurnal 9. Menu Utama Pemilik
Gambar III.29. Menu Utama Pemilik
Gambar III.30. Menu Laporan
11. Laporan Penjualan
Gambar III.31. Laporan Penjualan
3.5.1. Code Generation
/*
* To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates
* and open the template in the editor. */ package menu; import java.awt.event.KeyEvent; import java.util.Date; import java.sql.*; import java.text.SimpleDateFormat; import java.util.HashMap; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.view.JasperViewer;
public class menuPenjualan extends javax.swing.JFrame { koneksi kon = new koneksi();
private Object[][] datasementara = null;
private String[] labelsementara = {"Kode Barang", "Nama Barang", "Harga", "Jumlah Beli", "Subtotal"};
public menuPenjualan() { initComponents(); kon.setKoneksi(); setTanggal(); awal(); kode_pengguna.setVisible(false); }
public Date date = new Date();
public SimpleDateFormat noformat = new SimpleDateFormat("yyMM"); public String KodeBarang;
public String NamaBarang; public String Harga; public String KodeUser; public String NamaUser;
public String getKodeBarang() { return KodeBarang;
public String getNamaBarang() { return NamaBarang;
}
public String getHarga() { return Harga;
}
public String getKodeUser() { return KodeUser;
}
public String getNamaUser() { return NamaUser;
}
private void bersih() { kode.setText(""); nama_barang.setText(""); jumlahbeli.setText(""); tsubtotal.setText(""); tbayar.setText(""); tkembali.setText(""); ltotal.setText("0"); }
private void nonaktif() { kode.setEditable(false); tgl.setEditable(false); nama_barang.setEditable(false); kode_barang.setEditable(false); jumlahbeli.setEditable(false); tsubtotal.setEditable(false); harga_jual.setEditable(false); tbayar.setEditable(false); tkembali.setEditable(false); nama_pengguna.setEditable(false); }
private void aktif() {
kode_barang.setEditable(true); jumlahbeli.setEditable(true); tbayar.setEditable(true); }
private void setTanggal() {
dd");
tgl.setText(kal.format(skrg)); }
private void awal() { nonaktif();
}
public String nomor() { String urutan = null; try {
kon.rs = kon.st.executeQuery("select right(kode_penjualan,3)+1 from penjualan"); if (kon.rs.next()) { kon.rs.last(); urutan = kon.rs.getString(1); while (urutan.length() < 3) { urutan = "0" + urutan; }
urutan = "NO-" + noformat.format(date) + urutan; } else {
urutan = "NO-" + noformat.format(date) + "001"; }
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Mungkin Database Anda: " + e); }
return urutan; }
private void tampilTabelSementara() { try {
String sql = "Select * from sementara order by kode_barang"; kon.rs = kon.st.executeQuery(sql);
ResultSetMetaData m = kon.rs.getMetaData(); int kolom = m.getColumnCount();
int baris = 0;
while (kon.rs.next()) { baris = kon.rs.getRow(); }
datasementara = new Object[baris][kolom]; int x = 0; kon.rs.beforeFirst(); while (kon.rs.next()) { datasementara[x][0] = kon.rs.getString("kode_barang"); datasementara[x][1] = kon.rs.getString("nama_barang"); datasementara[x][2] = kon.rs.getString("harga");
datasementara[x][4] = kon.rs.getString("subtotal"); x++; } tbpenjualan.setModel(new DefaultTableModel(datasementara, labelsementara)); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }
private void tampilDataobat() { try {
String sql = "select * from barang where kode_barang ='" + kode_barang.getText() + "'"; kon.rs = kon.st.executeQuery(sql); if (kon.rs.next()) { nama_barang.setText(kon.rs.getString("nama_barang")); harga_jual.setText(kon.rs.getString("harga")); jumlahbeli.requestFocus(); } else {
JOptionPane.showMessageDialog(null, "Kode " + kode_barang.getText() + "tidak ditemukan"); } } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }
private void simpanSementara() { try {
String sql = "insert into sementara values ('" + kode_barang.getText() + "','" + nama_barang.getText() + "','" + harga_jual.getText() + "','" + jumlahbeli.getText() + "','" + tsubtotal.getText() + "')"; kon.st.executeUpdate(sql); tampilTabelSementara(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }
private void hapusIsiSementara() {
int row = tbpenjualan.getSelectedRow(); int x;
int total = Integer.parseInt(ltotal.getText());
x = Integer.parseInt((String) tbpenjualan.getValueAt(row, 4)); total = total - x;
String sql = "delete from sementara where kode_barang ='" + (String) tbpenjualan.getValueAt(row, 0) + "'"; kon.st.executeUpdate(sql); tampilTabelSementara(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }
private void simpanpenjualan() { try {
String sql = "insert into penjualan values('" + kode.getText() + "','" + tgl.getText() + "','" + ltotal.getText() + "','" +
kode_pengguna.getText() + "')"; kon.st.executeUpdate(sql); } catch (SQLException e) {
System.out.println("Koneksi Gagal " + e.toString()); }
}
private void simpanDetailpenjualan() { try {
String sql = "insert into detailpenjualan select '" + kode.getText() + "',kode_barang,jumlahbeli,subtotal from sementara"; kon.st.executeUpdate(sql);
} catch (SQLException e) {
System.out.println("Koneksi Gagal " + e.toString()); }
}
private void hapusTabelSementara() { try {
String sql = "Delete from sementara"; kon.st.executeUpdate(sql); tampilTabelSementara(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }
private void cetakStruk() {
cetakPenjualan mt = new cetakPenjualan(); mt.setLocationRelativeTo(null);
mt.setVisible(true);
mt.Kodeobat = kode.getText(); }
* WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); kode = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); tgl = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel();
nama_pengguna = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel();
jPanel3 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel();
kode_barang = new javax.swing.JTextField(); btbrowse = new javax.swing.JButton(); jLabel5 = new javax.swing.JLabel();
nama_barang = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel();
harga_jual = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel();
jumlahbeli = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); tsubtotal = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); tbpenjualan = new javax.swing.JTable(); jPanel4 = new javax.swing.JPanel(); jLabel9 = new javax.swing.JLabel(); ltotal = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); tbayar = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); tkembali = new javax.swing.JTextField(); bttambah = new javax.swing.JButton(); btsimpan = new javax.swing.JButton(); btbatal = new javax.swing.JButton(); btkeluar = new javax.swing.JButton(); kode_pengguna = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel();
jSeparator1 = new javax.swing.JSeparator();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Penjualan");
public void windowActivated(java.awt.event.WindowEvent evt) { formWindowActivated(evt); } }); jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); jLabel1.setText("Kode Penjualan"); jLabel2.setText("Tanggal"); jLabel3.setText("Nama Pengguna");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel2) .addGap(18, 18, 18) .addComponent(tgl, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(nama_pengguna, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel1) .addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2) .addComponent(tgl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3) .addComponent(nama_pengguna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.bord er.EtchedBorder.RAISED)); jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setText("Kode Barang"); kode_barang.addContainerListener(new java.awt.event.ContainerAdapter() { public void componentAdded(java.awt.event.ContainerEvent evt) {
kode_barangComponentAdded(evt); }
});
kode_barang.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { kode_barangActionPerformed(evt);
} });
btbrowse.setText("...");
btbrowse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btbrowseActionPerformed(evt);
} });
jLabel5.setText("Nama Barang"); jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel6.setText("Harga"); jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel7.setText("Jumlah Beli"); jumlahbeli.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jumlahbeliActionPerformed(evt);
} });
jumlahbeli.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) {
jumlahbeliKeyTyped(evt); }
});
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel8.setText("Sub Total");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING, false) .addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 85, Short.MAX_VALUE)) .addGap(27, 27, 27)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addComponent(kode_barang, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btbrowse)) .addComponent(nama_barang) .addComponent(harga_jual) .addComponent(jumlahbeli) .addComponent(tsubtotal)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(kode_barang) .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btbrowse, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)) .addGap(18, 18, 18) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(nama_barang, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING) .addComponent(harga_jual, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(3, 3, 3))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel7) .addComponent(jumlahbeli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel8) .addComponent(tsubtotal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); tbpenjualan.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {
{null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null} },
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4", "Title 5" }
));
tbpenjualan.setCursor(new
public void keyPressed(java.awt.event.KeyEvent evt) { tbpenjualanKeyPressed(evt); } }); jScrollPane1.setViewportView(tbpenjualan); jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jLabel9.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N jLabel9.setText("Rp.");
ltotal.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N ltotal.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); ltotal.setText("Total");
jLabel11.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N jLabel11.setText("Uang Bayar");
tbayar.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N tbayar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { tbayarActionPerformed(evt);
} });
tbayar.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { tbayarKeyTyped(evt);
} });
jLabel12.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N jLabel12.setText("Uang Kembali");
tkembali.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N javax.swing.GroupLayout jPanel4Layout = new
javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
220, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(49, 49, 49) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(jLabel12) .addComponent(jLabel11)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addComponent(tkembali) .addComponent(tbayar)) .addContainerGap()) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel11) .addComponent(tbayar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(jLabel12) .addComponent(tkembali, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(ltotal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
Short.MAX_VALUE)) ); bttambah.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8_add_file_28px.png"))) ; // NOI18N bttambah.setText("TAMBAH"); bttambah.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); bttambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { bttambahActionPerformed(evt); } }); btsimpan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8_print_32px_1.png"))); // NOI18N btsimpan.setText("SIMPAN"); btsimpan.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); btsimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { btsimpanActionPerformed(evt); } }); btbatal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8_delete_file_28px.png") )); // NOI18N btbatal.setText("BATAL"); btbatal.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); btbatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { btbatalActionPerformed(evt); } }); btkeluar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon/icons8_shutdown_32px.png")) ); // NOI18N btkeluar.setText("KELUAR"); btkeluar.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); btkeluar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { btkeluarActionPerformed(evt);
} });
kode_pengguna.setText("0");
jLabel10.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel10.setText("Riwayat Transaksi");
jLabel10.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); jLabel10.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) { jLabel10MouseClicked(evt);
} });
jLabel10.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { jLabel10KeyPressed(evt);
} });
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(405, 405, 405) .addComponent(kode_pengguna, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) .addComponent(jSeparator1)))) .addContainerGap()) .addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.TRAILING, false) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(bttambah, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btsimpan, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(btbatal, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(47, 47, 47) .addComponent(btkeluar)) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING, false) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.BASELINE) .addComponent(bttambah)
.addComponent(btbatal) .addComponent(btkeluar)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(kode_pengguna) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) );
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, 0)) ); pack(); setLocationRelativeTo(null);
private void kode_barangActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
tampilDataobat(); }
private void btbrowseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
boolean closable = true;
dataBarang db = new dataBarang(null, closable); db.transaksi = this; db.setVisible(true); db.setResizable(true); kode_barang.setText(KodeBarang); nama_barang.setText(NamaBarang); harga_jual.setText(Harga); }
private void kode_barangComponentAdded(java.awt.event.ContainerEvent evt) { // TODO add your handling code here:
jumlahbeli.requestFocus(); }
private void btkeluarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
hapusTabelSementara(); dispose();
}
private void bttambahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
aktif();
kode.setText(nomor()); }
private void formWindowActivated(java.awt.event.WindowEvent evt) { // TODO add your handling code here:
nama_pengguna.setText(KodeUser); tampilTabelSementara();
}
private void btbatalActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
awal();
hapusTabelSementara(); kode.setText("");
private void tbpenjualanKeyPressed(java.awt.event.KeyEvent evt) { // TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER || evt.getKeyCode() == KeyEvent.VK_BACK_SPACE || evt.getKeyCode() == KeyEvent.VK_DELETE) { hapusIsiSementara(); jumlahbeli.setText(""); jumlahbeli.requestFocus(); } }
private void jumlahbeliActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
int harga, jumbel, total;
if (jumlahbeli.getText().equals("")) {
JOptionPane.showMessageDialog(null, "Masukkan Jumlah Beli"); } else {
harga = Integer.parseInt(harga_jual.getText()); jumbel = Integer.parseInt(jumlahbeli.getText()); total = harga * jumbel;
tsubtotal.setText(Integer.toString(total)); simpanSementara();
tampilTabelSementara(); int ttl = 0;
for (int a = 0; a < tbpenjualan.getRowCount(); a++) {
int sub = Integer.parseInt((String) tbpenjualan.getValueAt(a, 4)); ttl += sub;
}
ltotal.setText(Integer.toString(ttl));
if (JOptionPane.showConfirmDialog(this, "Mau Tambah Barang?", "Konfirmasi", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { aktif(); kode_barang.requestFocus(); kode_barang.setText(""); nama_barang.setText(""); harga_jual.setText(""); jumlahbeli.setText(""); tsubtotal.setText(""); } else { tbayar.requestFocus(); } } }
private void btsimpanActionPerformed(java.awt.event.ActionEvent evt) { if (tbayar.getText().equals("")) {
"Informasi", JOptionPane.INFORMATION_MESSAGE); tbayar.requestFocus();
} else {
simpanpenjualan(); simpanDetailpenjualan();
JOptionPane.showMessageDialog(this, "Berhasil di Simpan", "Informasi", JOptionPane.INFORMATION_MESSAGE); tampilTabelSementara();
if (JOptionPane.showConfirmDialog(this, "Mau Cetak Struk?", "Konfirmasi", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { cetakStruk(); hapusTabelSementara(); awal(); bersih(); tampilTabelSementara(); } else { hapusTabelSementara(); awal(); bersih(); kode.setText(""); } } }
private void tbayarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
int kembali, total, bayar;
total = Integer.parseInt(ltotal.getText()); bayar = Integer.parseInt(tbayar.getText()); kembali = bayar - total;
tkembali.setText(Integer.toString(kembali)); }
private void jumlahbeliKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here:
char c = evt.getKeyChar();
if (!((c >= '0') && (c <= '9') && jumlahbeli.getText().length() < 4 || (c == com.sun.glass.events.KeyEvent.VK_BACKSPACE) || (c == com.sun.glass.events.KeyEvent.VK_DELETE))) { getToolkit().beep(); evt.consume(); } }
private void tbayarKeyTyped(java.awt.event.KeyEvent evt) { // TODO add your handling code here:
|| (c == com.sun.glass.events.KeyEvent.VK_BACKSPACE) || (c == com.sun.glass.events.KeyEvent.VK_DELETE))) { getToolkit().beep(); evt.consume(); } }
private void jLabel10KeyPressed(java.awt.event.KeyEvent evt) { }
private void jLabel10MouseClicked(java.awt.event.MouseEvent evt) { cetakPenjualan mo = new cetakPenjualan();
mo.setLocationRelativeTo(null); mo.setVisible(true);
} /**
* @param args the command line arguments */
public static void main(String args[]) { /* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } }
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(menuPenjualan.class.getName()).log(java.util.lo gging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(menuPenjualan.class.getName()).log(java.util.lo gging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(menuPenjualan.class.getName()).log(java.util.lo gging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(menuPenjualan.class.getName()).log(java.util.lo gging.Level.SEVERE, null, ex);
}
//</editor-fold> //</editor-fold> //</editor-fold> //</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new menuPenjualan().setVisible(true); }
}); }
// Variables declaration - do not modify private javax.swing.JButton btbatal;
private javax.swing.JButton btbrowse; private javax.swing.JButton btkeluar; private javax.swing.JButton btsimpan; private javax.swing.JButton bttambah; private javax.swing.JTextField harga_jual; private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4;
private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JTextField jumlahbeli; private javax.swing.JTextField kode;
private javax.swing.JLabel ltotal;
private javax.swing.JTextField nama_barang; private javax.swing.JTextField nama_pengguna; private javax.swing.JTextField tbayar;
private javax.swing.JTable tbpenjualan; private javax.swing.JTextField tgl; private javax.swing.JTextField tkembali; private javax.swing.JTextField tsubtotal; // End of variables declaration }
1. Pengujian Login
Tabel III.10. Pengujian Menu Login
Kasus dan Hasil Uji
No Data Masukan Hasil Yang
Diharapkan Pengamatan Kesimpulan
1 Kode user benar Password benar
Berhasil login kedalam aplikasi penerimaan
Sesuai Harapan Diterima
2 Kode user benar Password salah
Sistem akan
menolak akses login Sesuai Harapan Diterima
3 Kode user salah Password benar
Sistem akan
menolak akses login Sesuai Harapan Diterima
4 Kode user kosong Password diisi
Sistem akan
menolak akses login Sesuai Harapan Diterima
5 Kode user diisi Pssword kosong
Sistem akan
menolak akses login Sesuai Harapan Diterima
6 Kode user kosong Password kosong
Sistem akan
Tabel III.11.
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Operasi Windows 8 Profesional
Processor Intel (R) Celeron (R) Up to 2.39 GHz
RAM 2.00 GB
Harddisk 232 GB
Monitor Generic PnP
Keyboard Standard PS/2