30 3.1. Tinjauan Perusahaan
3.1.1. Sejarah Perusahaan
Cikal bakal berdirinya Koperasi MTsN 1 Karawang pada mulanya inisiatif dari semua guru dan staf tata usaha MTsN 1 Karawang, kemudian didirikan pada tahun 2006 dengan diketuai oleh Bapak Juhri yang dipilih langsung oleh kepala sekolah.
Koperasi MTsN 1 Karawang berada di lingkungan sekolah Madrasah Tsanawiyah Negeri 1 Karawang yang beralamat di Jalan Lapang Karya Bhakti Desa Mekarmaya Kecamatan Cilamaya Wetan Kabupaten Karawang.
Koperasi MTsN 1 Karawang adalah koperasi sekolah yang didalamnya bisa melakukan transaksi simpan pinjam dan jual beli barang seperti alat tulis kantor, peralatan kebersihan, sembako dan lain sebagainya. Dengan visi koperasi yaitu “Maju Sejahtera Bersama” dan misi “Menumbuh kembangkan kesadaran berkoperasi untuk meningkatkan kesejahteraan bersama” koperasi ini sudah berjalan selama empat belas tahun hingga sekarang.
3.1.2. Struktur Organisasi dan Fungsi
Struktur organisasi menggambarkan sebuah susunan dari beberapa komponen beserta dengan hubungannya. Struktur organisasi pada Koperasi MTsN 1 Karawang sebagai berikut:
Sumber: Koperasi MTsN 1 Karawang, 2020 Gambar III.1
Struktur Organisasi Koperasi MTsN 1 Karawang
Adapun fungsi-fungsi dari setiap bagian pada struktur organisasi diatas, sebagai berikut:
Tabel III.1 Jabatan dan Fungsi
Jabatan Fungsi
Rapat Anggota Menetapkan anggaran dasar, membuat kebijakan-kebijakan, menyelenggarakan pemilihan dan menetapkan renacan kerja koperasi
Pengawas Koperasi Melakukan pengawasan terhadap pengurusan koperasi dan berjalannya koperasi
Ketua Koperasi Memimpin koperasi, bertanggung jawab penuh pada koperasi dan mengesahkan kebijakan-kebijakan
Sekretaris Bertanggung jawab dalam administrasi koperasi
Bendahara Bertanggung jawab dalam masalah keuangan, mengatur penerimaan dan pengeluaran uang dan membuat pembukuan keuangan
Seksi Wirausaha Penyusun rencana usaha koperasi, menyiapkan dan melaksanakan pemberdayaan bahan usaha koperasi
Anggota Koperasi Pemberi modal, pengguna jasa koperasi dan menjalankan roda organisasi dan usaha koperasi
Sumber: Koperasi MTsN 1 Karawang, 2020
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan 1. Proses Pemesanan Barang
Pada proses pemesanan barang, bagian wirausaha melakukan pengecekan stok barang secara langsung yang tersedia di koperasi. Kemudian bagian wirausaha membuat list barang apa saja yang sudah habis atau stok barang yang sudah menipis di buku list pembelian. Lalu bagian wirausaha menghubungi supplier untuk melakukan pemesanan barang sesuai dengan list pembelian yang sudah dibuat dan supplier menerima pesanan.
2. Proses Penerimaan Barang dan Pembayaran
Supplier akan mengirim barang yang dipesan beserta. Bagian wirausaha koperasi
menerima barang dan langsung melakukan pengecekan barang yang datang dengan kualifikasi jumlah, jenis dan keadaan barang yang diterima. Setelah melakukan pengecekan barang maka bagian wirausaha melakukan pembayaran secara tunai kepada supplier. Kemudian supplier menerima pembayaran dan menyerahkan faktur pembelian. Bagian wirausaha menerima faktur pembelian dan langsung mencatatnya di buku pembelian. Adapun faktur pembelian diarsipkan untuk dijadikan bukti.
3. Proses Pembuatan Laporan
Pembuatan laporan dilakukan berdasarkan catatan pada buku dan dilakukan dalam waktu satu tahun sekali dengan menggunakan Microsoft Excel dengan melampirkan bukti faktur pembelian. Laporan pembelian diserahkan kepada bendahara koperasi untuk diarsipkan.
3.2.2. Activity Diagram
1. Activity Diagram Proses Pemesanan Barang
Gambar III.2 Activity Diagram Proses Pemesanan Barang 2. Activity Diagram Proses Penerimaan Barang dan Pembayaran
Gambar III.3
Activity Diagram Proses Penerimaan Barang dan Pembayaran
3. Activity Diagram Proses Pembuatan Laporan
Gambar III.4 Activity Diagram Proses Pembuatan Laporan
3.2.3. Dokumen Masukan
1. Nama dokumen : Buku Pembelian
Fungsi : Sebagai daftar transaksi pembelian yang dilakukan Sumber : Bagian Wirausaha
Tujuan : Arsip
Media : Kertas
Jumlah : Satu lembar
Frekuensi : Setiap terjadi transaksi pembelian Format : Lampiran A-1
2. Nama dokumen : Faktur Pembelian
Fungsi : Sebagai bukti pembelian secara tunai Sumber : Supplier
Tujuan : Koperasi
Media : Kertas Jumlah : Satu lembar
Frekuensi : Setiap terjadi transaksi pembelian Format : Lampiran A-2
3.2.4. Dokumen Keluaran
1. Nama Dokumen : Buku List Pembelian
Fungsi : Sebagai daftar barang yang akan dipesan Sumber : Bagian Wirausaha
Tujuan : Supplier
Media : Kertas
Jumlah : Satu lembar
Frekuensi : Setiap akan melakukan pembelian Format : Lampiran B-1
2. Nama Dokumen : Laporan Pembelian
Fungsi : Sebagai laporan pembelian barang Sumber : Bagian wirausaha
Tujuan : Bendahara Koperasi Media : File Microsoft Excel Jumlah : 1 File
Frekuensi : Setiap tahun Format : Lampiran B-2 3.2.5. Permasalahan Pokok
Berdasarkan hasil analisa yang telah penulis lakukan, maka penulis dapat melihat permasalahan yang timbul dalam sistem pembelian tunai pada Koperasi Madrasah Tsanawiyah Negeri 1 Karawang, yaitu sebagai berikut:
1. Sistem pembelian masih dilakukan secara manual menyebabkan kesalahan dalam melakukan pencatatan dikarenakan kurangnya ketelitian.
2. Dalam melakukan pengecekan stok barang dilakukan secara langsung pada setiap jenis barang, hal tersebut akan memakan banyak waktu.
3. Dalam pembuatan laporan pembelian hanya dilakukan dalam kurun waktu satu tahun sekali sehingga membutuhkan waktu lama dalam pembuatannya.
4. Bukti transaksi yang dikumpulkan dalam kurun waktu satu tahun memungkinkan bukti transaksi tersebut menjadi rusak dan hilang yang bisa memperlambat proses pembuatan laporan.
3.2.6. Pemecahan Masalah
Untuk mengatasi permasalahan yang telah penulis paparkan di atas, maka penulis memberikan beberapa pemecahan masalah sebagai berikut:
1. Perlu adanya perubahan dalam sistem pencatatan dengan dibuatkannya sistem informasi akuntansi pembelian tunai agar lebih efektif dan efisien.
2. Dibuatnya sistem pembelian tunai yang akan memudahkan untuk melakukan pengecekan stok barang.
3. Dibuatnya sistem pembelian tunai yang sudah terkomputerisasi yang dapat menghasilkan laporan yang dapat dicetak kapanpun.
4. Penyimpanan data dengan menggunakan database management system yang dapat diakses dengan mudah dan data akan lebih aman.
3.3. Analisis Kebutuhan Software 3.3.1. Analisis Kebutuhan
1. Analisi Kebutuhan Bagian Admin a. Bagian Admin melakukan login
b. Bagian Admin dapat mengelola data akun
c. Bagian Admin dapat mengelola data barang d. Bagian Admin dapat mengelola data supplier e. Bagian Admin dapat mengelola data pembelian f. Bagian Admin dapat mengelola jurnal
g. Bagian Admin dapat membuat dan mencetak laporan h. Bagian Admin melakukan log out
2. Analisi Kebutuhan Kepala Koperasi a. Kepala Koperasi melakukan login
b. Kepala Koperasi dapat mengelola data user
c. Kepala Koperasi dapat melihat dan mencetak laporan d. Kepala Koperasi melakukan logout
3.3.2. Use Case Diagram
1. Use case diagram Admin dan Kepala Koperasi
Gambar III.5 Use case diagram Admin dan Kepala Koperasi
Tabel III.2
Deskripsi Use Case Mengelola Data Barang Use Case Mengelola Data Barang
Tujuan Mengijinkan admin untuk mengelola data barang
Aktor Admin
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Admin memilih menu data barang maka sistem akan menampilkan data barang
2. Admin dapat mengklik tambah, maka akan muncul kode barang dengan otomatis, kemudian input data barang dan simpan
3. Admin dapat memilih satu data barang yang akan dirubah kecuali kode barang, kemudian klik ubah dan merubah data barang lalu simpan
4. Admin dapat memilih satu data barang yang akan dihapus, kemudian klik hapus lalu akan muncul pesan konfirmasi data yang akan dihapus
5. Admin dapat klik cetak untuk cetak stok barang Skenario
Alternatif
Jika kode barang yang dicari tidak ditemukan maka sistem akan menampilkan tabel kosong
Kondisi Akhir Sistem akan menampilan data barang yang sudah ditambahkan
Tabel III.3
Deskripsi Use Case Mengelola Data Pembelian Use Case Mengelola Data Pembelian
Tujuan Mengijinkan admin untuk mengelola data pembelian
Aktor Admin
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Admin memilih menu data pembelian maka sistem akan menampilkan data pembelian
2. Admin dapat mengklik tambah maka akan muncul nomor pembelian dan tanggal dengan otomatis, kemudian memilih supplier dan input data barang yang akan dibeli dan menentukan jumlah, maka akan keluar subtotal dan total pembelian kemudian simpan
Skenario Alternatif
1. Jika kode barang yang dipilih sudah ada maka sistem akan menampilkan pesan “Data sudah ada”
2. Jika kolom jumlah diisi dengan huruf maka sistem akan menampilkan pesan “Input hanya boleh berupa angka”
3. Jika kode pembelian yang dicari tidak ditemukan maka sistem akan menampilkan tabel kosong
Kondisi Akhir Sistem akan menyimpan data pembelian dan menampilkan data pembelian
Tabel III.4
Deskripsi Use Case Melihat Laporan Use Case Membuat Laporan
Tujuan Mengijinkan admin atau kepala koperasi untuk melihat dan mencetak laporan
Aktor Admin
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Admin memilih menu laporan maka sistem akan menampilkan form laporan
2. Admin menginput periode tanggal laporan dan memilih laporan yang dicari lalu klik lihat, maka sistem akan menampilkan laporan yang dicari
3. Admin dapat mengklik cetak untuk cetak laporan Skenario
Alternatif
Jika periode tanggal laporan yang dicari tidak ditemukan maka akan muncul pesan “the document has no pages”
Kondisi Akhir Sistem akan menampilkan laporan sesuai laporan yang dipilih dan periode tanggal yang dipilih
Tabel III.5
Deskripsi Use Case Mengelola Data Supplier Use Case Mengelola Data Supplier
Tujuan Mengijinkan admin untuk mengelola data supplier
Aktor Admin
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Admin memilih menu data supplier maka sistem akan menampilkan data supplier
2. Admin dapat mengklik tambah, maka akan muncul kode supplier dengan otomatis, kemudian input data supplier dan simpan
3. Admin dapat memilih satu data supplier yang akan dirubah kecuali kode supplier, kemudian klik ubah dan merubah data supplier lalu simpan
4. Admin dapat memilih satu data supplier yang akan dihapus, kemudian klik hapus lalu akan muncul pesan konfirmasi data yang akan dihapus
Skenario Alternatif
Jika kode supplier yang dicari tidak ditemukan maka sistem akan menampilkan tabel kosong
Kondisi Akhir Sistem akan menampilan data supplier yang sudah ditambahkan
Tabel III.6
Deskripsi Use Case Mengelola Jurnal Use Case Mengelola Data Jurnal
Tujuan Mengijinkan admin untuk mengelola data pembelian
Aktor Admin
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Admin memilih menu jurnal maka sistem akan menampilkan data jurnal
2. Admin dapat mengklik tambah maka akan muncul nomor jurnal dan tanggal dengan otomatis, kemudian memilih nomor pembelian yang akan dibuat jurnal maka akan tampil total pembelian, lalu mengisi keterangan jurnal dan input akun yang akan digunakan dan menentukan debet kredit kemudian simpan
Skenario Alternatif
1. Jika akun yang dipilih sudah ada maka sistem akan menampilkan pesan “Data sudah ada”
2. Jika debet dan kredit diisi dengan huruf maka sistem akan menampilkan pesan “Input hanya boleh berupa angka”
3. Jika kode jurnal yang dicari tidak ditemukan maka sistem akan menampilkan tabel kosong
Kondisi Akhir Sistem akan menyimpan jurnal dan menampilkan data jurnal
Tabel III.7
Deskripsi Use Case Mengelola Data Akun Use Case Mengelola Data Akun
Tujuan Mengijinkan admin untuk mengelola data akun
Aktor Admin
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Admin memilih menu data akun maka sistem akan menampilkan data akun
2. Admin dapat mengklik tambah, kemudian input data akun dan simpan
3. Admin dapat memilih satu data akun yang akan dirubah, kemudian klik ubah dan merubah data akun lalu simpan
4. Admin dapat memilih satu data akun yang akan dihapus, kemudian klik hapus lalu akan muncul pesan konfirmasi data yang akan dihapus
Skenario Alternatif
Jika kode akun yang dicari tidak ditemukan maka sistem akan menampilkan tabel kosong
Kondisi Akhir Sistem akan menampilan data akun yang sudah ditambahkan
Tabel III.8
Deskripsi Use Case Mengelola Data User Use Case Mengelola Data User
Tujuan Mengijinkan kepala koperasi untuk mengelola data user Aktor Kepala Koperasi
Kondisi Awal Login tervalidasi dan valid
Skenario Utama 1. Kepala Koperasi memilih menu data user maka sistem akan menampilkan data user
2. Kepala Koperasi dapat mengklik tambah, kemudian input data akun dan simpan
3. Kepala Koperasi dapat memilih satu data user yang akan dirubah, kemudian klik ubah dan merubah data user lalu simpan
4. Kepala Koperasi dapat memilih satu data akun yang akan dihapus, kemudian klik hapus lalu akan muncul pesan konfirmasi data yang akan dihapus
Skenario Alternatif
-
Kondisi Akhir Sistem akan menampilan data user
3.3.3. Activity Diagram 1. Activity Diagram Log In
Gambar III.6 Activity Diagram Log In
2. Activity Diagram Menu Data Barang
Gambar III.7 Activity Diagram Menu Data Barang 3. Activity Diagram Menu Pembelian
Gambar III.8 Activity Diagram Menu Pembelian
4. Activity Diagram Menu Data Supplier
Gambar III.9
Activity Diagram Menu Data Supplier
5. Activity Diagram Menu Data Akun
Gambar III.10
Activity Diagram Menu Data Akun
6. Activity Diagram Menu Data User
Gambar III.11
Activity Diagram Menu Data User
7. Activity Diagram Menu Jurnal
Gambar III.12 Activity Diagram Menu Jurnal 8. Activity Diagram Menu Laporan
Gambar III.13 Activity Diagram Menu Laporan
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.14
Entity Relationship Diagram Pembelian Tunai 3.4.2. Logical Record Structure (LRS)
Gambar III.15
Logical Record Structure Pembelian Tunai
3.4.3. Spesifikasi File
1. Spesifikasi File Data Barang
Nama Database : pembelian_tunai Nama File : barang
Tipe File : File Master Akses File : Random Panjang Record : 64 Karakter Field Key : kode_barang Software : MySQL
Tabel III.9
Spesifikasi File Data Barang
No Elemen Data Akronim Tipe Panjang Keterangan 1 Kode Barang kode_barang Char 5 Primary Key 2 Nama Barang nama_barang Varchar 25
3 Jenis Barang jenis_barang Varchar 20 4 Harga Barang harga_barang Integer 11 5 Jumlah jumlah Integer 3
2. Spesifikasi File Data Supplier Nama Database : pembelian_tunai Nama File : supplier
Tipe File : File Master Akses File : Random Panjang Record : 72 Karakter Field Key : kode_supplier Software : MySQL
Tabel III.10
Spesifikasi File Data Supplier
No Elemen Data Akronim Tipe Panjang Keterangan 1 Kode Supplier kode_supplier Char 5 Primary Key 2 Nama Supplier nama_supplier Varchar 25
3 Nomer Telpon no_telpon Varchar 12
4 Alamat alamat Varchar 30
3. Spesifikasi File Data User
Nama Database : pembelian_tunai Nama File : user
Tipe File : File Master Akses File : Random Panjang Record : 65 Karakter Field Key : id_user Software : MySQL
Tabel III. 11
Spesifikasi File Data User
No Elemen Data Akronim Tipe Panjang Keterangan
1 ID User id_user Char 5 Primary Key
2 Nama User nama_user Varchar 25 3 Password User password Char 10 4 Hak Akses User hak_akses Varchar 25
4. Spesifikasi File Data Akun
Nama Database : pembelian_tunai Nama File : akun
Tipe File : File Master Akses File : Random Panjang Record : 66 Karakter
Field Key : kode_akun Software : MySQL
Tabel III.12
Spesifikasi File Data Akun
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Akun kode_akun Char 5 Primary Key
2 Nama Akun nama_akun Varchar 25 3 Jenis Akun jenis_akun Varchar 30 4 Saldo Normal Akun saldo_normal Varchar 6
5. Spesifikasi File Data Pembelian Nama Database : pembelian_tunai Nama File : pembelian Tipe File : File Transaksi Akses File : Random Panjang Record : 32 Karakter Field Key : no_pembelian Software : MySQL
Tabel III.13
Spesifikasi File Data Pembelian
No Elemen Data Akronim Tipe Panjang Keterangan 1 Nomor Pembelian no_pembelian Char 11 Primary Key 2 Tanggal Pembelian tgl_pembelian Date
3 Kode Supplier kode_supplier Char 5 Foreig Key
4 ID User id_user Char 5 Foreign Key
5 Total Pembelian total Integer 11
6. Spesifikasi File Detail Pembelian Nama Database : pembelian_tunai Nama File : detail_pembelian Tipe File : File Transaksi
Akses File : Random Panjang Record : 43 Karakter Field Key : -
Software : MySQL
Table III.14
Spesifikasi File Detail Pembelian
No Elemen Data Akronim Tipe Panjang Keterangan 1 Nomor Pembelian no_pembelian Char 5 Foreign Key 2 Kode Barang kode_barang Char 5 Foreign Key 3 Harga Barang harga Integer 11
4 Sub Total sub_total Integer 11 5 Jumlah Beli jumlahbeli Integer 11
7. Spesifikasi File Data Jurnal
Nama Database : pembelian_tunai Nama File : jurnal
Tipe File : File Transaksi Akses File : Random Panjang Record : 40 Karakter Field Key : no_jurnal Software : MySQL
Tabel III.15
Spesifikasi File Data Jurnal
No Elemet Data Akronim Tipe Panjang Keterangan 1 Nomor Jurnal no_jurnal Char 5 Primary Key 2 Tanggal Jurnal tgl_jurnal Date
3 Keterangan keterangan Varchar 30
4 ID User id_user Char 5 Foreign Key
8. Spesifikasi File Detail Jurnal Nama Database : pembelian_tunai Nama File : detail_jurnal Tipe File : File Transaksi Akses File : Random Panjang Record : 32 Karakter Field Key : -
Software : MySQL
Tabel III.16
Spesifikasi File Detail Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan 1 Nomor Jurnal no_jurnal Char 5 Foreign Key 2 Kode Akun kode_akun Char 5 Foreign Key 3 Saldo Debet debet Integer 11
4 Saldo Kredit kredit Integer 11
3.4.4. Class Diagram
Gambar III.16
Class Diagram Pembelian Tunai
class Package1
User - hak_akses: varchar - id_user: char - nama_user: varchar - password: char + hapus(): void + simpan(): void + tambah(): void + ubah(): void
Barang - harga_barang: int - jenis_barang: varchar - jumlah: int - kode_barang: char - nama_barang: varchar + cari(): void + hapus(): void + simpan(): void + tambah(): void + ubah(): void Supplier
- alamat: varchar - kode_supplier: char - nama_supplier: varchar - no_telpon: varchar + cari(): void + hapus(): void + simpan(): void + tambah(): void + ubah(): void
Akun - jenis_akun: varchar - kode_akun: char - nama_akun: varchar - saldo_normal: varchar + cari(): void + hapus(): void + simpan(): void + tambah(): void + ubah(): void
Pembelian - id_user: char - kode_supplier: char - no_pembelian: char - tgl_pembelian: date - total: int + tambah(): void
Detail Pembelian - harga: int - jumlahbeli: int - kode_barang: char - no_pembelian: char - sub_total: int + batal(): void + simpan(): void
Jurnal - id_user: char - keterangan: varchar - no_jurnal: char - tgl_jurnal: date + tambah(): void
Detail Jurnal - debet: int - kode_akun: char - kredit: int - no_jurnal: char + batal(): void + simpan(): void
3.4.5. Sequence Diagram
1. Sequence Diagram Data Barang
Gambar III.17
Sequence Diagram Data Barang
sd Sequence Diagram Data Barang
Admin
Form Barang Control Barang Barang
alt Ubah Data Barang
alt Hapus Data Barang
[Klik Tambah]:
btnubahActionPerformed()
Kode Barang()
btnhapusActionPerformed() [Ubah Data Barang Baru]:
verifikasi noAuto()
[Pilih Barang]:
[Klik Hapus]:
[Klik Simpan]:
[Tampil Data Barang]:
[Pilih Barang]:
[Input Data Barang]:
Result cariKodeBarang() btntambahActionPerformed()
simpan data() btnsimpanActionPerformed()
[Klik Ubah]:
[Tampil Kode Barang]:
[Klik Simpan]:
tambah data barang()
hapusBarang() btnsimpanActionPerformed()
cariKodeBarang()
2. Sequence Diagram Pembelian
Gambar III.18 Sequence Diagram Pembelian Tunai 3.4.6. Component Diagram
Gambar III.19 Component Diagram Pembelian Tunai
sd Sequence Diagram Pembelian
Admin
Form Pembelian Control Pembelian Barang Supplier Pembelian Detail Pembelian
verifikasi noAuto()
[Input Jumlah]:
[Tampil Data Barang]:
tambahDetailPembelian() cariKodeBarang()
[Tampil No Pembelian]:
set daftarPembelian() [Input Kode Barang]:
btnsimpanActionPerformed() [Klik Simpan]:
cmbsupplierItemStateChanged()
cariKodeSupplier() [Pilih Supplier]:
KodeBarang() btntambahActionPerformed()
textKode()
No Pembelian()
tambahPembelian() [Input Data Pembelian]:
getDataBarang() [Klik Tambah]:
cmp Component Diagram
Aplikasi Pem belian Tunai
Barang Pem belian
Supplier
User Jurnal
Akun
3.4.7. Deployment Diagram
Gambar III.20 Deployment Diagram Pembelian Tunai 3.4.8. User Interface
1. Form Menu Utama
Gambar III.21 Form Menu Utama
deployment Deployment Diagram Pembelian
«device»
database
<<database>>
pembelian_tunai
<<DBMS>>
MySQL Main
<<Aplication>>
Pembelian Tunai
«device»
Java Runtime Environment
2. Form Log In
Gambar III.22 Form Log In
3. Form Data Barang
Gambar III.23 Form Data Barang
4. Form Data User
Gambar III.24 Form Data User 5. Form Data Supplier
Gambar III.25 Form Data Supplier
6. Form Data Akun
Gambar III.26 Form Data Akun 7. Form Cari Barang
Gambar III.27 Form Cari Barang
8. Form Cari Akun
Gambar III.28 Form Cari Akun 9. Form Pembelian
Gambar III.29 Form Data Pembelian
Gambar III.30 Form Input Pembelian 10. Form Jurnal
Gambar III.31 Form Data Jurnal
Gambar III.32 Form Input Jurnal 11. Form Cari Data Pembelian
Gambar III.33 Form Cari Data Pembelian
12. Form Laporan
Gambar III.34 Form Laporan
3.5. Implementasi 3.5.1. Code Generation
1. Code Generation Form Pembelian package forms;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.ListIterator;
import javax.swing.DefaultCellEditor;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import model.DetailPembelian;
import model.Pembelian;
import model.Supplier;
import model.Barang;
import pembeliantunai.Pembeliantunai;
public class FormPembelian extends javax.swing.JFrame { String NoPembelian = "";
String Status = "";
int total = 0;
int row = -1;
DetailPembelian detailpembelian = new DetailPembelian();
Pembelian pembelian = new Pembelian();
Supplier supplier = new Supplier();
Barang barang = new Barang();
DefaultComboBoxModel box = null;
DefaultTableModel model1, model2;
TableColumn cKode, cJumlah;
JTextField textKode = new JTextField();
JTextField textJumlah = new JTextField();
NumberFormat nf = new DecimalFormat("#");
public FormPembelian() { initComponents();
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int x, y;
x = (int) ((d.getWidth() - getSize().width) / 2);
y = (int) ((d.getHeight() - getSize().height) / 2);
box = (DefaultComboBoxModel) cmbsupplier.getModel();
setLocation(x, y);
model1 = (DefaultTableModel) tblinputpembelian.getModel();
model2 = (DefaultTableModel) tbldatapembelian.getModel();
textKode.setFont(new Font("Georgia", 0, 15));
textJumlah.setFont(new Font("Georgia", 0, 15));
tblinputpembelian.getTableHeader().setFont(new Font("Georgia", 1, 15));
tblinputpembelian.setRowHeight(30);
tbldatapembelian.getTableHeader().setFont(new Font("Georgia", 1, 15));
tbldatapembelian.setRowHeight(30);
cKode = (TableColumn) tblinputpembelian.getColumnModel().getColumn(0);
cJumlah = (TableColumn) tblinputpembelian.getColumnModel().getColumn(3);
cKode.setCellEditor(new DefaultCellEditor(textKode));
cJumlah.setCellEditor(new DefaultCellEditor(textJumlah));
textKode.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) { row = tblinputpembelian.getSelectedRow();
textKode.setText(textKode.getText().toUpperCase());
if (!"".equals(textKode.getText())) {
getDataBarang(textKode.getText(), row);
for (int i = 0; i < model1.getRowCount() - 1; i++) { String kode = model1.getValueAt(i, 0).toString();
if (kode.equalsIgnoreCase(textKode.getText()) && row != i) { model1.setValueAt(null, row, 0);
model1.setValueAt(null, row, 1);
model1.setValueAt(null, row, 2);
model1.setValueAt(null, row, 3);
model1.setValueAt(null, row, 4);
textKode.setText(null);
JOptionPane.showMessageDialog(rootPane, "Data sudah ada!",
"Info", JOptionPane.ERROR_MESSAGE);
break; }}}}
if (e.getKeyCode() == KeyEvent.VK_F1) {
textKode.setText(new FormCariBarang(null, true).cariBarang());
row = tblinputpembelian.getSelectedRow();
textKode.setText(textKode.getText().toUpperCase());
if (!"".equals(textKode.getText())) {
getDataBarang(textKode.getText(), row);
for (int i = 0; i < model1.getRowCount() - 1; i++) { String kode = model1.getValueAt(i, 0).toString();
if (kode.equalsIgnoreCase(textKode.getText()) && row != i) { model1.setValueAt(null, row, 0);
model1.setValueAt(null, row, 1);
model1.setValueAt(null, row, 2);
model1.setValueAt(null, row, 3);
model1.setValueAt(null, row, 4);
textKode.setText(null);
JOptionPane.showMessageDialog(rootPane, "Data sudah ada!",
"Info", JOptionPane.ERROR_MESSAGE);
break; }}}}}});
textJumlah.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) {
if (!Character.isDigit(e.getKeyChar()) && e.getKeyChar() !=
KeyEvent.VK_BACK_SPACE && e.getKeyChar() != KeyEvent.VK_DELETE) { textJumlah.setEditable(false);
JOptionPane.showMessageDialog(rootPane, "Input hanya boleh berupa angka!", "Eror", JOptionPane.ERROR_MESSAGE); }
else { textJumlah.setEditable(true);
try {
textJumlah.setText(String.format("%d", Integer.parseInt(textJumlah.getText())));
} catch (Exception ex) {}
if (textJumlah.getText().equals("")) { textJumlah.setText("0");}}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() ==
KeyEvent.VK_TAB) { try {
row = tblinputpembelian.getSelectedRow();
intsubtotal=Integer.parseInt(textJumlah.getText())*
Integer.parseInt(model1.getValueAt(row, 2).toString());
model1.setValueAt(subtotal, row, 4);
hitungTotal();
if (textJumlah.getText().equals("")) { textJumlah.setText("1");}
} catch (Exception ex) { }} }});
tblinputpembelian.setSelectionBackground(Color.lightGray);
aktif();
DateFormat df = new SimpleDateFormat("dd/MM/yyy");
java.util.Date dt = new java.util.Date();
txttanggal.setText(df.format(dt));
daftarSupplier();
tabs.setSelectedIndex(1);
daftarPembelian();
this.NoPembelian = "";
aktif();}
private void aktif() {
btnbatal.setEnabled(!"".equals(Status));
btnsimpan.setEnabled(!"".equals(Status));
btntambah.setEnabled("".equals(Status));
tabs.setEnabledAt(0, !"".equals(Status));
tabs.setEnabledAt(1, "".equals(Status)); }
private void bersihForm() {
cmbsupplier.setSelectedItem("");
txtnopembelian.setText("");
model1.setRowCount(0);
tblinputpembelian.repaint(); } private void daftarSupplier() {
List<Supplier> listSupplier = supplier.daftarsupplier();
ListIterator li = listSupplier.listIterator();
box.removeAllElements();
cmbsupplier.addItem("");
while (li.hasNext()) {
Supplier spl = (Supplier) li.next();
cmbsupplier.addItem(spl.getkode_supplier()+"-" + spl.getnama_supplier());}}
private void getDataBarang(String kode, int row) { barang = barang.cariKodeBarang(kode);
if (barang.getnama_barang() == null) {
JOptionPane.showMessageDialog(rootPane, "Data barang yang anda cari tidak ada!", "Eror", JOptionPane.ERROR_MESSAGE);
model1.setValueAt(null, row, 0);
model1.setValueAt(null, row, 1);
model1.setValueAt(null, row, 2);
model1.setValueAt(null, row, 3);
model1.setValueAt(null, row, 4);
} else {
model1.setValueAt(kode.toUpperCase(), row, 0);
model1.setValueAt(barang.getnama_barang(), row, 1);
model1.setValueAt(barang.getharga_barang(), row, 2); }}
private void daftarPembelian() {
List<Pembelian> lp = pembelian.daftarPembelian();
ListIterator li = lp.listIterator();
model2.setRowCount(0);
tbldatapembelian.repaint();
String No = "";
Object[] data = null;
while (li.hasNext()) {
pembelian = (Pembelian) li.next();
supplier = supplier.cariKodeSupplier(pembelian.getkode_supplier());
List<DetailPembelian> ld =
detailpembelian.daftarDetailPembelian(pembelian.getno_pembelian());
ListIterator<DetailPembelian> lid = ld.listIterator();
while (lid.hasNext()) {
detailpembelian = lid.next();
barang = barang.cariKodeBarang(detailpembelian.getkode_barang());
if (!No.equalsIgnoreCase(detailpembelian.getno_pembelian())) { Object[] jdata = {
pembelian.getno_pembelian(), pembelian.gettgl_pembelian(), supplier.getnama_supplier(), detailpembelian.getkode_barang(), barang.getnama_barang(),
barang.getharga_barang(), detailpembelian.getjumlahbeli(), detailpembelian.getsub_total()};
data = jdata;
} else {
Object[] jdata = { "",
"", "",
detailpembelian.getkode_barang(), barang.getnama_barang(),
barang.getharga_barang(), detailpembelian.getjumlahbeli(), detailpembelian.getsub_total() };
data = jdata; } model2.addRow(data);
No = pembelian.getno_pembelian();}}}
private void daftarPembelian(Date tgl1, Date tgl2) {
List<Pembelian>lp=pembelian.cariTanggalPembelian(new java.sql.Date(tgl1.getTime()), new java.sql.Date(tgl2.getTime()));
ListIterator li = lp.listIterator();
model2.setRowCount(0);
tbldatapembelian.repaint();
String No = "";
Object[] data = null;
while (li.hasNext()) {
pembelian = (Pembelian) li.next();
supplier = supplier.cariKodeSupplier(pembelian.getkode_supplier());
List<DetailPembelian> ld =
detailpembelian.daftarDetailPembelian(pembelian.getno_pembelian());
ListIterator<DetailPembelian> lid = ld.listIterator();
while (lid.hasNext()) {
detailpembelian = lid.next();
barang = barang.cariKodeBarang(detailpembelian.getkode_barang());
if (!No.equalsIgnoreCase(pembelian.getno_pembelian())) { Object[] jdata = {
pembelian.getno_pembelian(), pembelian.gettgl_pembelian(), supplier.getnama_supplier(), detailpembelian.getkode_barang(), barang.getnama_barang(),
detailpembelian.getjumlahbeli(), detailpembelian.getsub_total()};
data = jdata;
} else {
Object[] jdata = { "",
"", "",
detailpembelian.getkode_barang(), barang.getnama_barang(),
detailpembelian.getjumlahbeli(), detailpembelian.getsub_total() };
data = jdata; } model2.addRow(data);
No = pembelian.getno_pembelian(); }} } private void hitungTotal() {
this.total = 0;
for (int i = 0; i < model1.getRowCount(); i++) { try {
this.total += Integer.parseInt(model1.getValueAt(i, 4).toString());
} catch (Exception ex) { }}
private void initComponents() { jPanel2 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
tabs = new javax.swing.JTabbedPane();
jPanel4 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
txtnopembelian = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
txttanggal = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
cmbsupplier = new javax.swing.JComboBox<>();
jScrollPane1 = new javax.swing.JScrollPane();
tblinputpembelian = new javax.swing.JTable();
jLabel5 = new javax.swing.JLabel();
txttotal = new javax.swing.JTextField();
btnsimpan = new javax.swing.JButton();
btnbatal = new javax.swing.JButton();
jPanel5 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
tbldatapembelian = new javax.swing.JTable();
jLabel7 = new javax.swing.JLabel();
tgl1 = new com.toedter.calendar.JDateChooser();
tgl2 = new com.toedter.calendar.JDateChooser();
txtcaritransaksi = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
btntambah = new javax.swing.JButton();
btntutup = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
javax.swing.GroupLayoutjPanel2Layout=new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN )
.addGap(0, 100, Short.MAX_VALUE));
jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.Gr oupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE));
javax.swing.GroupLayout jPanel1Layout = new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN) .addGap(0, 100, Short.MAX_VALUE));
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN) .addGap(0, 100, Short.MAX_VALUE));
jLabel2.setText("jLabel2");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
tabs.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N jLabel3.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N jLabel3.setText("No Pembelian");
jLabel1.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N jLabel1.setText("Tanggal Barang Masuk");
jLabel4.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N jLabel4.setText("Kode Supplier");
cmbsupplier.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
cmbsupplier.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { cmbsupplierItemStateChanged(evt); }});
tblinputpembelian.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}}, new String [] {
"Kode Barang", "Nama Barang", "Harga Barang", "Jumlah Beli",
"Subtotal"}));
tblinputpembelian.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) {
tblinputpembelianMouseClicked(evt); }});
tblinputpembelian.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) {
tblinputpembelianKeyPressed(evt); }});
jScrollPane1.setViewportView(tblinputpembelian);
jLabel5.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N jLabel5.setText("Total");
btnsimpan.setBackground(new java.awt.Color(204, 204, 255));
btnsimpan.setFont(new java.awt.Font("Georgia", 0, 12)); // NOI18N btnsimpan.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/simpan.png"))); // NOI18N btnsimpan.setText("Simpan");
btnsimpan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnsimpanActionPerformed(evt); }});
btnbatal.setBackground(new java.awt.Color(204, 204, 255));
btnbatal.setFont(new java.awt.Font("Georgia", 0, 12)); // NOI18N btnbatal.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/batal.png"))); // NOI18N btnbatal.setText("Batal");
btnbatal.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnbatalActionPerformed(evt); }});
javax.swing.GroupLayout jPanel4Layout = new
javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(javax.swing.
GroupLayout.Alignment.LEADING).addGroup(jPanel4Layout.createSequentialGro up()
.addContainerGap().addGroup(jPanel4Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING).addGroup(jPanel4Layout.createSequentialGroup().a ddGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING).addComponent(jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE, 941,
Short.MAX_VALUE).addGroup(jPanel4Layout.createSequentialGroup().addGap(16
, 16,
16).addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING).addComponent(jLabel4).addComponent(jLabel3).addComponent(jL
abel1)).addGap(56, 56,
56).addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING).addComponent(txttanggal,
javax.swing.GroupLayout.PREFERRED_SIZE, 134,
javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(txtnopembelian,
javax.swing.GroupLayout.PREFERRED_SIZE, 187,
javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(cmbsupplier,
javax.swing.GroupLayout.PREFERRED_SIZE, 152,
javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(0, 0,
Short.MAX_VALUE)))
.addContainerGap()).addGroup(jPanel4Layout.createSequentialGroup().addGap(18, 18, 18).addComponent(btnsimpan) .addGap(36, 36, 36).addComponent(btnbatal,
javax.swing.GroupLayout.PREFERRED_SIZE, 101,
javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.Layo utStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(jLabel5) .addGap(18, 18, 18)
.addComponent(txttotal,
javax.swing.GroupLayout.PREFERRED_SIZE, 140,
javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(24, 24, 24)))));
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ).addGroup(jPanel4Layout.createSequentialGroup()
.addGap(34, 34, 34)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
BASELINE)
.addComponent(jLabel3)
.addComponent(txtnopembelian, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(javax.swing.Layo utStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
BASELINE)
.addComponent(jLabel1).addComponent(txttanggal,
javax.swing.GroupLayout.PREFERRED_SIZE, 32,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
BASELINE)
.addComponent(jLabel4) .addComponent(cmbsupplier,
javax.swing.GroupLayout.PREFERRED_SIZE, 28,
javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(27, 27, 27)
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 133,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(18, 18, 18)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addComponent(txttotal, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)))
.addGroup(jPanel4Layout.createSequentialGroup()
.addGap(32, 32, 32)
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
BASELINE)
.addComponent(btnsimpan, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnbatal, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
tabs.addTab("Input Barang Masuk", jPanel4);
tbldatapembelian.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, 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 [] {
"No Pembelian", "Tanggal", "Supplier", "Kode Barang", "Nama Barang",
"Harga Barang", "Jumlah Beli", "Subtotal"}));
tbldatapembelian.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) {
tbldatapembelianMouseClicked(evt); }});
jScrollPane2.setViewportView(tbldatapembelian);
jLabel7.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N jLabel7.setText("Cari Tanggal Transaksi");
txtcaritransaksi.setBackground(new java.awt.Color(204, 204, 255));
txtcaritransaksi.setFont(new java.awt.Font("Georgia", 0, 12)); // NOI18N txtcaritransaksi.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/cari.png"))); // NOI18N txtcaritransaksi.setText("Cari");
txtcaritransaksi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {
txtcaritransaksiActionPerformed(evt); }});
jLabel8.setFont(new java.awt.Font("Georgia", 0, 18)); // NOI18N
jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel8.setText("Data Transaksi Pembelian");
javax.swing.GroupLayout jPanel5Layout = new
javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN) .addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE) .addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(tgl1, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(tgl2, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(txtcaritransaksi,
javax.swing.GroupLayout.PREFERRED_SIZE, 85,
javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jScrollPane2,
javax.swing.GroupLayout.DEFAULT_SIZE, 941, Short.MAX_VALUE) .addComponent(jLabel8,
javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()));
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN) .addGroup(jPanel5Layout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING, false)
.addComponent(tgl2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel7,
javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(tgl1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(txtcaritransaksi,
javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)) .addGap(59, 59, 59)
.addComponent(jLabel8) .addGap(18, 18, 18)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 212,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(33, Short.MAX_VALUE)));
tabs.addTab("Data Barang Masuk", jPanel5);
btntambah.setBackground(new java.awt.Color(204, 204, 255));
btntambah.setFont(new java.awt.Font("Georgia", 0, 12)); // NOI18N btntambah.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/tambah.png"))); // NOI18N btntambah.setText("Tambah");
btntambah.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btntambahActionPerformed(evt); }});
btntutup.setBackground(new java.awt.Color(204, 204, 255));
btntutup.setFont(new java.awt.Font("Georgia", 0, 12)); // NOI18N btntutup.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/image/tutup.png"))); // NOI18N btntutup.setText("Tutup");
btntutup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btntutupActionPerformed(evt); } });
jPanel3.setBackground(new java.awt.Color(102, 153, 255));
jLabel6.setBackground(new java.awt.Color(204, 204, 204));
jLabel6.setFont(new java.awt.Font("Georgia", 1, 20)); // NOI18N
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel6.setText("Form Pembelian Barang");
javax.swing.GroupLayout jPanel3Layout = new
javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN) .addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()));
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN) .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, 38, Short.MAX_VALUE));
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG)
.addGroup(layout.createSequentialGroup() .addGap(77, 77, 77)
.addComponent(btntambah) .addGap(32, 32, 32)
.addComponent(btntutup,
javax.swing.GroupLayout.PREFERRED_SIZE, 101,
javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addGap(21, 21, 21)
.addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE, 966, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(22, Short.MAX_VALUE)) );
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup()
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(26, 26, 26)
.addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE, 427, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL INE)
.addComponent(btntambah,
javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btntutup,
javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(29, Short.MAX_VALUE)) );
pack();
}// </editor-fold>
private void tblinputpembelianKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_DELETE) { if (!"".equals(NoPembelian)) {
row = tblinputpembelian.getSelectedRow();
model1.removeRow(row);
tblinputpembelian.repaint();
if (model1.getRowCount() == 0) { model1.setRowCount(1); }}}
if (evt.getKeyCode() == KeyEvent.VK_TAB) { try {
double subtotal =
Double.parseDouble(model1.getValueAt(model1.getRowCount() - 1, 4).toString());
if (subtotal > 0) {
model1.setRowCount(model1.getRowCount() + 1);
tblinputpembelian.repaint();
}} catch (Exception ex) {} }}
private void tblinputpembelianMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here:
try {
row = tblinputpembelian.getSelectedRow();
NoPembelian = (String) model1.getValueAt(row, 0);
} catch (Exception e) { }}
private void btnbatalActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
Status = "";
txtnopembelian.setText("");
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date dt = new java.util.Date();
txttanggal.setText(df.format(dt));
tabs.setSelectedIndex(1);
bersihForm();
aktif();}
private void btntambahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
this.Status = "Tambah";
bersihForm();
txtnopembelian.setText(pembelian.noAuto());
aktif();
tabs.setSelectedIndex(0);
model1.setRowCount(1);
this.NoPembelian = ""; }
private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
if ("".equals(cmbsupplier.getSelectedItem().toString())) {
JOptionPane.showMessageDialog(rootPane, "Supplier belum dipilih",
"Galat", JOptionPane.ERROR_MESSAGE);
return; }
if (model1.getRowCount() == 0) {
JOptionPane.showMessageDialog(rootPane, "Belum ada barang yang dipilih",
"Galat", JOptionPane.ERROR_MESSAGE);
return;
} else { try {
String Kode = model1.getValueAt(0, 1).toString();
if (Kode == null) {
JOptionPane.showMessageDialog(rootPane, "Belum ada barang yang dipilih", "Galat", JOptionPane.ERROR_MESSAGE);
return; }
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, "Belum ada barang yang dipilih", "Galat", JOptionPane.ERROR_MESSAGE);
return; }}
pembelian.setno_pembelian(txtnopembelian.getText());
java.util.Date dt = new java.util.Date();
java.sql.Date sdate = new java.sql.Date(dt.getTime());
pembelian.settgl_pembelian(sdate);
String[] Sup = cmbsupplier.getSelectedItem().toString().split("-");
pembelian.setkode_supplier(Sup[0]);
pembelian.settotal(Integer.parseInt(txttotal.getText()));
pembelian.setId_user(Pembeliantunai.id_user);
pembelian.tambahPembelian();
for (int i = 0; i < model1.getRowCount(); i++) { try {
String Kode = (String) model1.getValueAt(i, 0);
int Jumlah = Integer.parseInt(model1.getValueAt(i, 3).toString());
int Harga = Integer.parseInt(model1.getValueAt(i, 2).toString());
int Subtotal = Integer.parseInt(model1.getValueAt(i, 2).toString()) * Integer.parseInt(model1.getValueAt(i, 3).toString());
if (Jumlah > 0) {
detailpembelian.setno_pembelian(txtnopembelian.getText());
detailpembelian.setkode_barang(Kode);
detailpembelian.setjumlahbeli(Jumlah);
detailpembelian.setharga(Harga);
detailpembelian.setsub_total(Subtotal);