29
PEMBAHASAN
3.1. Tinjauan Perusahaan 3.1.1 Sejarah Perusahaan
Toko Sentral Granit merupakan suatu usaha dagang yang didirikan pada tanggal 12 Februari 2016 oleh pemiliknya sendiri yang bernama Bapak Helmi berusia 38 tahun, yang beralamatkan di Jalan Ipik Gandamanah No.20 Desa Ciseureuh Kecamatan Purwakarta Kabupaten Purwakarta 41118. Toko Sentral Granit merupakan suatu bentuk usaha dagang yang operasi kerjanya yaitu menjual barang-barang kepada konsumen (Custumer) untuk dijual kembali. Adapun material bangunan yang dijual, yaitu keramik.
Toko Sentral Granit yang berbentuk usaha dagang ini bertujuan untuk memperoleh keuntungan dengan mendapatkan selisih antara harga yang dijual ke konsumen dengan harga beli dari supplier dengan tidak mengabaikan kualitas barang yang dijual dan pelayanan kepada konsumennya.
3.1.2 Struktur Organisasi
Sumber : Pemilik Toko Sentral Granit
Gambar III.1
Struktur Organisasi Toko Sentral Granit
Tugas dan Fungsi Organisasi :
Sesuai yang tercantum pada bagan organisasi Toko Sentral Granit diadakan pembagian wewenang dan tanggung jawab dalam kaitan dengan operasional sehari-hari. Adapun uraian tugas dari masing-masing bagian adalah sebagai berikut : 1. Pemilik sebagai pendiri usaha dan pengambil keputusan tertinggi dalam suatu
usaha. Tugas pokok pemilik adalah :
a. Bertanggung jawab atas seluruh kegiatan usaha
b. Membuat kebijakan dan peraturan yang berhubungan denga kinerja pegawai dan memunyai dampak positif dan serta profit oriented kepada pokok yang dipimpin.
c. Mengevaluasi kinerja pegawai.
d. Bertanggung jawab atas semua transaksi pembelian.
e. Membuat laporan stok barang berdasarkan stok barang yang dibuat oleh karyawan.
Pemilik
Helmi
Bagian Gudang
2. Bagian Gudang
Sebagai pelaksana urusan pengecekan dan penataan barang. Tugas pokok bagian gudang :
a. Bertanggung jawab atas kebersihan gudang. b. Mencatat stok barang.
c. Mengecek dan meyiapkan barang yang akan dikirim. 3. Supir
Sebagai pelaksana pengirim keramik yang dipesan oleh custumer.
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Sesuai dengan wawancara dan metode pengamatan langsung yang dilakukan oleh penulis mengenai proses pembelian secara tunai dan ruang lingkup dalam penyusunan laporan ini, maka penulis akan menguraikan secara umum prosedur sistem berjalan. Yang berkaitan dengan sistem pembelian secara tunai pada Toko Sentral Granit di Purwakarta adalah proses-proses dibawah ini:
1. Pengecekan stok barang dan Pemesanan barang
Bagian gudang melakukan pengecekan barang kemudian mencatat data barang yang sudah minim kedalam kertas catatan. Kemudian kertas tersebut diserahkan kepada pemilik toko, kemudian pemilik toko mencatatnya kedalam buku stok barang. Pemilik toko kemudian melakukan pemesanan barang kepada supplier, lalu supplier mencatat pesanan ke dalam Purchase Order (PO).
2. Prosedur penerimaan dan pembayaran
Setelah mencatat PO supplier menyiapkan barang beserta dengan dokumen yaitu surat jalan 3 rangkap dan faktur pembelian 3 rangkap. Kemudian barang, surat jalan 3 rangkap dan faktur pembelian 3 rangkap diserahkan kepada pemilik. Setelah menerima barang dan mengecek barang, pemilik melakukan pembayaran secara tunai kepada supplier dengan menyerahkan surat jalan 2 Rangkap dan faktur pembelian 2 rangkap.
3.2.2. Activity Diagram
Bagian Gudang Pemilik Supplier
Melakukan Pengecekan barang
Mencatat barang yang kurang dalam
kertas catatan
Menyerahkan kertas
catatan Menerima kertas catatan
Mencatat dalam buku Stok barang
Melakukan pemesanan Menerima pesanan
Mencatat pesanan Dalam PO
Gambar III.2 Activity sistem berjalan
Pemilik Supplier
Menyiapkan barang dan Membuat SJ 3R, FP 3R
Menyerahkan barang dan Membuat SJ 3R, FP 3R Menerima barang dan
SJ 3R, FP 3R
Mengecek barang dan SJ 3R, FP 3R Menyimpan SJ asli & FP asli Melakukan pembayaran & menyerahkan SJ 2R & FP 2R Menerima pembayaran SJ 2R, FP 2R Gambar III.3 Activity sistem berjalan
3.2.3. Dokumen Masukan
Dokumen masukan pada Toko sentral Granit diantaranya : 1. Dokumen Faktur Pembelian
Nama Dokumen : Faktur Pembelian
Fungsi : Sebagai bukti pembelian
Sumber : Supplier
Tujuan : Pemilik toko
Media : Kertas
Jumlah : 3 Rangkap
Frekuensi : Setiap transaksi pembelian
2. Dokumen Surat Jalan
Nama Dokumen : Surat Jalan
Fungsi : Sebagai bukti pengantar barang
Sumber : Supplier
Tujuan : Pemilik toko
Media : Kertas
Jumlah : 3 Rangkap
Frekuensi : Setiap transaksi pembelian
Format : Lampiran A1
3.2.4. Dokumen Keluaran
Dokumen keluaran pada Toko Sentral Granit diantaranya : 1. Dokumen Nota
Nama Dokumen : Nota
Fungsi : Sebagai bukti transaksi pembayaran
Sumber : Pemilik toko
Tujuan : Pembeli
Media : Kertas
Jumlah : 3 Rangkap
Frekuensi : Setiap transaksi penjualan
Format : Lampiran A1
2. Dokumen Stok Barang
Nama Dokumen : Stok Barang
Sumber : Bagian Gudang
Tujuan : Pemilik
Media : Kertas
Jumlah : 1 Rangkap
Frekuensi : Setiap transaksi 1 hari sekali
Format : A4
3.2.5. Permasalahan Pokok
Berdasarkan penelitian atau riset yang saya lakukan pada Toko Sentral Granit di Purwakarta, saya mengamati dalam sistem Pembelian secara tunai yang berjalan serta melakukan identifikasi dokumen yang ada pada Toko Sentral Granit di Purwakarta, saya telah menemukan beberapa permasalahan diantaranya:
1. Sering terjadi keleliruan mengenai jenis barang, motif barang dan nomor seri pada setiap produk.
2. Pencatatan Pembelian Toko Sentral Granit masih menggunakan buku besar, sehingga dalam pencatatan datanya sering terjadi kesalahan dan tidak sinkron antara pencatatan dan bukti-bukti transaksi yang ada.
3. Penyimpanan data masih berupa dokumen atau arsip-arsip yang disimpan dalam lemari sehingga ada dokumen yang hilang dan dalam pencarian data sering membutuhkan waktu yang lama, dan dokumen-dokumen sering terjadi kehilangan yang akan menghambat proses pencatatan laporan.
4. Pencarian data masih membutuhkan waktu yang lama kerena penyimpanan data masih berupa arsip.
5. Proses pembuatan laporan masih menggunakan buku besar yaitu dengan cara merekap dari data-data Pembelian yang telah dibuat sebelumnya. Sehingga informasi yang dihasilkan dari laporan tersebut kurang akurat.
6. Banyaknya barang yang diterima dalam keadaan rusak, yang terjadi didalm pengiriman barang, serta penyimpanan di dalam gudang.
3.2.6. Pemecahan Masalah
Penulis menentukan masalah yang ada pada Toko Sentral Granit mengenai penjualan secara tunai Purwakarta maka penulis menyimpulkan alternatif atau pemecahan masalah agar permasalahan tersebut dapat diatasi, diantaranya:
1. Membuat Sistem Informasi Akuntansi agar memudahkan karyawan dalam pengolahan data sehingga waktu yang dibutuhkan lebih efisien dan kesalahan dalam pencatatan dapat dikurangi.
2. Dapat menghemat waktu yang diperlukan pada saat pencarian data mengenai informasi yang dibutuhkan.
3. Dapat meminimalisir kesalahan yang dikarenakan kurang teliti dari para pegawai.
4. Membuat sebuah database yang terintegrasi untuk mempermudah user dalam mencari data-data, dan data-data yang tersimpan akan terjamin keamanannya. 5. Membuat Sistem Informasi Akuntansi yang akan mengahasilkan laporan
dengan informasi yang lebih akurat dan sesuai dengan laporan akuntansi yang berlaku.
3.3. Analisa Kebutuhan Software 3.3.1. Analisa Kebutuhan
Admin
A.1. Admin berhak mengelola menu login A.2. Admin mengelola data barang
A.3. Admin mengelola data supplier A.4. Admin mengelola pembelian A.5. Admin mengelola pembayaran A.6. Admin mengelola jurnal A.7. Admin mengelola laporan
Pemilik
B.1. Pemilik melakukan login B.2. Pemilik mengakses laporan
3.3.2. Use Case Diagram
Login
ID Pengguna
Password <<Include>>
<<Include>>
A.1 Use Case Mengakses Login
Gambar III.4 Use Case menu login
Tabel III.1
Deskripsi Use case Diagram Admin mengelola login
Login Menu Utama
Data Barang Data Supplier Pembelian Pembayaran Jurnal Laporan <<extend>> <<extend>> <<extend>> <<extend>> <<extend>> <<extend>> <<extend>>
Use Case Menu Utama
Gambar III.5 Use Case menu utama
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola
data yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman lagin, dengan meninput id pengguna dan password.
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman login
Kondisi Awal Reaksi Sistem
1. Aktor memilih meu login 2. Aktor memilih input id pengguna
3. Aktor memilih input password
Sistem ini akan masuk ke menu login
Sistem ini akan
menampilkan id dari pengguna
Sistem ini akan
menampilkan password
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Menu Data Barang Tambah Cari Batal Simpan Kode Barang Edit <<Include>> <<Include>> <<Include>> <<extend>> <<extend>> <<extend>> <<extend>> <<extend>>
A.2 Use Case Mengelola Data Barang
Menu
Utama <<extend>>
Gambar III.6 Use Case Data Barang
Tabel III.2
Deskripsi Use case Diagram Admin mengelola menu data barang
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola data
yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu data barang, dengan meninput kode barang, nama barang, qty, satuan dan harga satuan
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman data barang
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu data barang
2. Aktor memilih input kode barang, nama barang, qty, satuan dan harga satuan
3. Aktor bisa memilih menu tambah, simpan, batal, edit, dan cari
Sistem ini akan masuk ke menu data barang
Sistem ini akan
menampilkan kode barang, nama barang, qty, satuan dan harga satuan
Sistem ini akan
menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Menu Data Supplier Tambah Cari Batal Simpan Kode Supplier Edit <<extend>> <<extend>> <<extend>> <<extend>> <<Include>> <<Include>> <<Include>> <<extend>>
A.3 Use Case Mengelola Data Supplier
Menu
Utama <<extend>>
Gambar III.7 Use Case Data Supplier
Tabel III.3
Deskripsi Use case Diagram Admin mengelola menu data supplier
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola data
yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu data Supplier, dengan meninput kode supplier, nama supplier, alamat, no.telepon, dan email
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman data supplier
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu data supplier
2. Aktor memilih input kode supplier, nama supplier, alamat, no.telepon, dan email
3. Aktor bisa memilih menu tambah, simpan, batal, edit, dan cari
Sistem ini akan masuk ke menu data supplier
Sistem ini akan menampilkan kode supplier, nama supplier, alamat, no.telepon, dan email. Sistem ini akan menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Menu Pembelian Tambah Cari Batal No Pembelian Edit <<Include>> Simpan <<Include>> <<extend>> <<extend>> <<extend>> <<Include>>
A.4 Use Case Mengelola Pembelian
<<extend>>
Menu
Utama <<extend>>
Gambar III.8 Use Case Menu Pembelian
Tabel III.4
Deskripsi Use case Diagram Admin mengelola menu pembelian
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola data
yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu pembelian, dengan meninput nomor pembelian, tanggal, kode barang, nama barang, qty, satuan, harga saruan, dan jumlah.
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman pembelian
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu pembelian
2. Aktor memilih input nomor pembelian, tanggal, kode barang, nama barang, qty, satuan, harga saruan, dan jumlah.
3. Aktor bisa memilih menu tambah, simpan, batal, edit, dan cari
Sistem ini akan masuk ke menu pembelian
Sistem ini akan menampilkan nomor pembelian, tanggal, kode barang, nama barang, qty, satuan, harga saruan, dan jumlah.
Sistem ini akan menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Menu Pembayaran Cari Batal Simpan No Pembayaran <<Include>> <<extend>> <<extend>> <<extend>>
A.5 Use Case Mengelola Pembayaran
Menu
Utama <<extend>>
Gambar III.9
Use Case Menu Pembayaran Tabel III.5
Deskripsi Use case Diagram Admin mengelola menu pembayaran
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola data
yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu pembayaran, dengan meninput nomor
pembelian, tanggal
pembayaran, kode supplier, nama supplier, alamat, no.telepon, total tagihan, jumlah yang dibayarkan
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman pembelian
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu pembelian
2. Aktor memilih input nomor pembelian, tanggal pembayaran, kode supplier, nama supplier, alamat, no.telepon, total tagihan, jumlah yang dibayarkan
3. Aktor bisa memilih menu tambah, simpan, batal, edit, dan cari
Sistem ini akan masuk ke menu pembayaran
Sistem ini akan
menampilkannomor
pembelian, tanggal
pembayaran, kode supplier, nama supplier, alamat, no.telepon, total tagihan, jumlah yang dibayarkan. Sistem ini akan menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Jurnal Data Perkiraan Data Jurnal Tambah Batal Simpan Batal Cari Simpan Kode Akun Tambah <<extend>> <<extend>> <<extend>> <<extend>> <<extend>> <<Include>> <<Include>> <<Include>>
A.6 Use Case Mengelola Jurnal
Menu Utama
<<Include>> <<extend>>
<<Include>>
Gambar III.10 Use Case Jurnal
Tabel III.6
Deskripsi Use case Diagram Admin mengelola menu jurnal
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola data
yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu jurnal, dengan meninput data perkiraan, dan data jurnal.
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman jurnal
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu jurnal 2. Aktor memilih data perkiraan
3. Aktor bisa memilih data jurnal 4. Aktor bisa memilih menu tambah, simpan, dan batal.
Sistem ini akan masuk ke menu jurnal
Sistem ini akan
menampilkan data perkiraan kode perkiraan, dan nama perkiraan
Sistem ini akan
menampilkan kode akun, nama akun, debet, kredit, keterangan
Sistem ini akan
menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Laporan Laporan Laporan Jurnal Cetak Batal Cetak Batal <<extend>> <<extend>> <<extend>> <<extend>> <<extend>> <<Include>> <<Include>>
A.7 Use Case Mengelola Laporan
Menu Utama
<<extend>>
Gambar III.11 Use Case Laporan
Tabel III.7
Deskripsi Use case Diagram Admin mengelola menu laporan
Use Case Narative Halaman Admin
Tujuan Admin dapat mengelola data
yang ada di halaman admin.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu laporan, dengan menampilkan laporan pembelian dan laporan jurnal.
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman laporan
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu laporan 2. Aktor memilih menu laporan pembelian dengan meninput periode 3. Aktor bisa memilih menu laporan jurnal dengan menginput periode
4. Aktor bisa memilih menu tambah, simpan, dan batal.
Sistem ini akan masuk ke menu laporan.
Sistem ini akan menampilkan data laporan pembelian berdasarkan periode.
Sistem ini akan menampilkan data laporan jurnal berdasarkan periode
Sistem ini akan menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login
ID Pengguna
Password
<<Include>>
<<Include>>
B.1 Use Case mengakses menu login bagi pemilik
Gambar III.12
Use Case Login bagi pemilik
Tabel III.8
Deskripsi Use case Diagram Pemilik mengelola menu login
Use Case Narative Halaman Pemilik
Tujuan Admin dapat mengelola data
yang ada di halaman pemilik
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman login, dengan meninput id pengguna dan password.
Skenario Pemilik
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman login
Kondisi Awal Reaksi Sistem
1. Aktor memilih meu login 2. Aktor memilih input id pengguna
3. Aktor memilih input password
Sistem ini akan masuk ke menu login
Sistem ini akan menampilkan id dari pengguna
Sistem ini akan menampilkan password
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
Login Menu Utama Data Barang Data Supplier Pembelian Pembayaran Jurnal Laporan <<extend>> <<extend>> <<extend>> <<extend>> <<extend>> <<extend>> <<extend>>
Use Case Menu Utama
Gambar III.13
Use Case Menu Utama Bagi Pemilik
Login Laporan Laporan Laporan Jurnal Cari Batal Cari Batal <<extend>> <<extend>> <<Include>> <<extend>> <<extend>> <<extend>> <<Include>>
B.2 Use Case mengakses laporan bagi pemilik
Menu Utama
<<extend>>
Gambar III.14
Tabel III.9
Deskripsi Use case Diagram Pemilik mengelola menu laporan
Use Case Narative Halaman Pemilik
Tujuan Admin dapat mengelola data
yang ada di halaman pemilik.
Deskripsi Sistem ini memungkinkan
aktor untuk mengelola halaman menu laporan, dengan menampilkan laporan pembelian dan laporan jurnal.
Skenario Admin
Aktor Admin
Kondisi Awal Aktor masuk ke dalam
halaman laporan
Kondisi Awal Reaksi Sistem
1. Aktor memilih menu laporan 2. Aktor memilih menu laporan pembelian dengan meninput periode 3. Aktor bisa memilih menu laporan jurnal dengan menginput periode
4. Aktor bisa memilih menu tambah, simpan, dan batal.
Sistem ini akan masuk ke menu laporan.
Sistem ini akan menampilkan data laporan pembelian berdasarkan periode.
Sistem ini akan menampilkan data laporan jurnal berdasarkan periode
Sistem ini akan menampilkan sesuai apa yang diinginkan
Kondisi Akhir Jika perintah sesuai, maka
akan menampilkan apa yang diinginkan
3.3.3. Activity Diagram
Admin Sistem
Klik menu login Tampil form login Menginput user name
dan password
Akses Level
Batal Menu utama
Tidak Ya
Gambar III.15
Admin Sistem
Klik Data barang Menampilkan form Data Barang
Melakukan pilihan Menentukan Pilihan
Tambah Cari Menginput data kode barang,nama,qty,satuan,
harga
Mencari data barang berdasarkan kode barang Memproses data barang Menampilkan pesan data barang tidak ditemukan Menampilkan data barang yang dicari Melakukan edit data barang Simpan Proses simpan Proses batal Simpan Proses simpan batal Tampil data barang
Tidak valid valid
Ya Tidak
Ya Tidak
Gambar III.16
Admin Sistem
Klik Data Supplier Menampilkan form Data Supplier
Melakukan pilihan Menentukan Pilihan
Tambah Cari Menginput data kode supplier,nama,alamat,no
telepon, email
Mencari data barang berdasarkan kode supplier Memproses data supplier Menampilkan pesan data barang tidak ditemukan Menampilkan data barang yang dicari Melakukan edit data barang Simpan Proses simpan Proses batal Simpan Proses simpan batal Tampil data supplier
Tidak valid valid
Ya Tidak
Ya Tidak
Gambar III.17
Admin Admin
Klik Data Pembelian
Klik Tambah
Menampilkan Form Pembelian
Memproses Data Pembelian Menginput no.pembelian,
tanggal, kode barang, nama barang, qty, satuan
Simpan Ya Tidak Proses simpan Proses batal Proses Cetak Gambar III.18
Admin Sistem
Klik Menu Pembayaran Menampilkan form pembayaran
Menampilkan data berdasarkan no.pembelian Klik Cari
Tidak valid valid
Menampilkan pesan data barang tidak ditemukan Menampilkan data barang yang dicari Melakukan edit data pembelian yang dicari Simpan Proses simpan Proses batal Ya Tidak
Tampil Data Pembayaran
Gambar III.19
Admin Admin
Klik Data Jurnal
Menampilkan form jurnal Pilih Jurnal
Memilih cari kode akun
Mecari / memproses cari data jurnal berdasarkan kode akun
Menampilkan pesan kode tidak
ditemukan
Menampilkan pesan ditemukan
Tambah data jurnal
Menginput Memproses data jurnal
Simpan Proses simpan Proses batal Ya Tidak
Tidak valid valid
Tampil Data Jurnal
Gambar III.20
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Admin Pembelian Barang Supplier Pembayaran Jurnal Melakukan Melakukan Mempunyai Mempunyai Mempunyai Perkiraan Berisi Id_user Kd_barang Nm_barang qty satuan Harga Satuan Kd_barang qty Nm_barang satuan Harga Satuan No_pembelian Tgl_pembelian no_pembelian Tgl_pembayaran Total Debet Kd_supplier Nama_perkiraan kd_perkiraan no_pembelian Kredit Kd_supplier Nm_supplier alamat No_tlpon email Id_user Password Hak_akses kd_perkiraan total M 1 1 1 M 1 1 1 M 1 M Nama_perkiraan Gambar III.21
Entity Relationship Diagram (ERD)
Admin
*id_user password hak_aksesPembelian
kd_supplier tgl_pembelian **kd_barang nm_barang satuan harga_satuan total qty no_pembelian *id_userPembayaran
*tgl_pembayaran total **no_pembelainSupplier
*kd_supplier alamat nm_supplier email no_teleponBarang
*kd_barang qty satuan harga_satuan satuan nama_barangJurnal
*no_pembelian Kredit Debet **kd_perkiraanPerkiraan
*kd_perkiraan **nm_perkiraan nm_perkiraan Gambar III.22LRS (Logical Record Strukture) 3.4.3. Spesifikasi File
a. Spesifikasi File Admin
Nama Database : Admin Nama File : Admin Tipe File : Login Akses File : Random Field Key : id_user
Jumlah : 30 byte
Tabel III.10
Spesifikasi File Data User
No Elemen Data Akronim Type Panjang Keterangan
1 Id user id_user int 10 Primary key
2 Password password varchar 10
3 Hak Akses hak_akses varchar 10
b. Spesifikasi File Admin
Nama Database : Data Barang Nama File : Barang Tipe File : Transaksi Akses File : Random Field Key : kd_barang
Jumlah : 80 byte
Tabel III.11
No Elemen Data Akronim Type Panjang Keterangan
1 Kode Barang kd_barang varchar 10 Primary key
2 Nama Barang nm_barang varchar 20
3 Quantity qty int 20
4 Satuan satuan varchar 10
5 Harga Satuan hrg_satuan int 20
c. Spesifikasi File Admin
Nama Database : Data Supplier Nama File : Supplier Tipe File : Transaksi Akses File : Random Field Key : kd_supplier
Jumlah : 130 byte
Tabel III.12
Spesifikasi File Data Supplier
No Elemen Data Akronim Type Panjang Keterangan
1 Kode Supplier kd_supplier varchar 10 Primary key
2 Nama Supplier nm_supplier varchar 30
3 Email email varchar 30
4 Alamat alamat varchar 50
5 No Telepon no_telepon int 10
Nama Database : Data Pembelian Nama File : Pembelian Tipe File : Transaksi Akses File : Random Field Key : no_pembelian
Jumlah : 130 byte
Tabel III.13
Spesifikasi File Data Pembelian
No Elemen Data Akronim Type Panjang Keterangan
1 ID User id_user int 10 Fk
2 Kode Supplier kd_supplier varchar 10
3 Tgl Pembelian tgl_beli int 10
4 No Pembelian no_pembelian int 10
5 Kode Barang kd_barang int 10 Primary key
6 Nama Barang nm_barang varchar 30
7 Quantity qty int 20
8 Satuan Satuan varchar 10
9 Harga Satuan hrg_satuan int 20
e. Spesifikasi File Admin
Nama Database : Data Pembayaran Nama File : Pembayaran Tipe File : Transaksi Akses File : Random
Field Key : kd_pembayaran
Jumlah : 50 byte
Spesifikasi File Data Pembayaran
No Elemen Data Akronim Type Panjang Keterangan
1 No Pembelian no_pembelian varchar 10 Primary key
2 Tgl Pembayaran tgl_bayar int 10 fk
3 Total total int 30
f. Spesifikasi File Admin
Nama Database : Data Perkiraan Nama File : Perkiraan Tipe File : Jurnal Akses File : Random Field Key : nm_perkiraan
Jumlah : 40 byte
Tabel III.15
Spesifikasi File Data Perkiraan
No Elemen Data Akronim Type Panjang Keterangan
1 Kode Perkiraan kd_perkiraan int 10 Primary key
2 Nama Perkiraan nm_perkiraan varchar 30 fk
Nama Database : Data Jurnal Nama File : Jurnal Tipe File : Jurnal Akses File : Random Field Key : no_pembelian
Jumlah : 110 byte
Tabel III.16
Spesifikasi File Data Jurnal
No Elemen Data Akronim Type Panjang Keterangan
1 No Pembelian no_pembelian varchar 10 Primary key
2 Kode Perkiraan kd_perkiraan int 10 Fk
3 Nama Perkiraan nm_perkiraan varchar 30
4 Debet Debet int 30
5 Kredit Kredit int 30
Admin Form Data Pembelian Control Data Pembelian Data Pembelian 1. Tambah
1.1 Get no.pembelian 1.1.1 Get no.pembelian
Data Barang
1.2.Get no pembelian
2. Set tgl pembelian 2.1 set tgl pembelian
3. Get kode barang 3.1 Get Kode Barang 3.2. Get Kode Barang
4. Get Nama Barang 4.1 Get Nama Barang 4.1 Get Nama Barang
5. Set Quantity 5.1 Set Quantity
6. Get Satuan 6.1 Get Satuan 6.2 Get Satuan
7. Get Harga Satuan 7.1 Get Satuan 7.2 Get Satuan
8. Get Total Harga 8.1 Get Total Harga Simpan Cetak Batal Cari Edit 9. Gambar III.23 Sequance Pembelian
Admin Form Data Pembayaran Control Data Pembayaran Data Pembayaran Data Supplier
1. Cari 1.1 Get no pembelian 1.1.1 Get no pembelian
1.2 Get no pembelian 2 Set tgl pembayaran 2.1 Set tgl pembayaran 3. Get no pembayaran 3.1 Get no pembayaran 3.2 Get no pembelian
4. Get kode Supplier
4.1 Get kode Supplier 4.2 Get no pembelian
5. Get kode Barang
5.1 Get kode Barang 5.2 Get kode Barang
6.Get Nama Barang
6.1Get Nama Barang 6.2Get Nama Barang
7. Get Quantity 7.1 Get Quantity
7.2 Get Quantity
8. Set Satuan 8.1 Set Satuan
9. Get Harga Satuan
9.1 Get Harga Satuan 9.2 Get Harga Satuan
10. Get Total Tagihan 9.1 Get Harga Satuan
9.2Get Harga Satuan
11. Set Jumlah Pembayaran 11.1 Set Jumlah Pembayaran
12. Simpan Batal Edit Hapus Gambar III.24 Sequance Pembayaran
3.4.5. Deployment Diagram Main <<ActiveXControl>> Java <<device>> database <<DBMS>> MySQL <<Database>> Pembelian <<device>> <<Application>> Program Pembelian Gambar III.25
Deployment Diagram Pembelian
3.4.6. User Interface
Gambar III.26
Gambar III.27
User Interface Menu Utama
Gambar III.28
Gambar III.29
User Interface Menu Pembelian
Gambar III.30
Gambar III.31
User Interface Menu Pembayaran
Gambar III.32
Gambar III.33
User Interface Menu Perkiraan
Gambar III.34
3.5. Implementasi 3.5.1. Code Generation Transaksi Pembelian package program; import Database.KoneksiDatabase; import Database.ResultSetTable; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JOptionPane; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer; public class pembelian extends javax.swing.JFrame { ResultSet rs;
KoneksiDatabase con; public pembelian() {
con = new KoneksiDatabase(new Database.Parameter().HOST_DB, new Database.Parameter().USERNAME_DB, new
Database.Parameter().PASSWORD_DB); initComponents();
setTitle("Form Data pembelian"); con.koneksiDatabase(); loadtabel(); tambah.setEnabled(true); simpan.setEnabled(false); batal.setEnabled(false); edit.setEnabled(false); hapus.setEnabled(false); close.setEnabled(true); hitung.setEnabled(false); nonaktif(); tanggal();
loaddata(); loaddata1(); }
private void loaddata() {
rs = con.querySelectAll("barang"); try {
while (rs.next()) {
cb_idbarang.addItem(rs.getString("id_barang")); }
} catch (SQLException ex) {
Logger.getLogger(pembelian.class.getName()).log(Level.SEVERE, null, ex);
} }
private void loaddata1() {
rs = con.querySelectAll("supplier"); try {
while (rs.next()) {
cb_sup.addItem(rs.getString("nama_supplier")); }
} catch (SQLException ex) {
Logger.getLogger(pembelian.class.getName()).log(Level.SEVERE, null, ex);
} } /**
* This method is called from within the constructor to initialize the form. * 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(); jLabel = new javax.swing.JLabel(); salah = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); qty1 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jmlh = new javax.swing.JTextField(); nm_brg = new javax.swing.JTextField(); hrg_satuan = new javax.swing.JTextField();
close = new javax.swing.JButton(); simpan = new javax.swing.JButton(); edit = new javax.swing.JButton(); hapus = new javax.swing.JButton();
satuan = new javax.swing.JComboBox<>(); tcari = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane(); tabel3 = new javax.swing.JTable();
jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); qty = new javax.swing.JTextField(); tanggal = new javax.swing.JLabel(); cari = new javax.swing.JButton(); batal = new javax.swing.JButton(); tambah = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel();
cb_idbarang = new javax.swing.JComboBox<>(); hitung = new javax.swing.JButton();
id = new javax.swing.JTextField();
cb_sup = new javax.swing.JComboBox<>(); jLabel7 = new javax.swing.JLabel();
background = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jLabel.setForeground(new java.awt.Color(255, 255, 255)); jLabel.setText("Jumlah");
jPanel1.add(jLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 280, -1, -1));
salah.setForeground(new java.awt.Color(255, 255, 255)); salah.setText("No Pembelian");
jPanel1.add(salah, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 70, -1, -1));
jLabel3.setForeground(new java.awt.Color(255, 255, 255)); jLabel3.setText("Nama Supplier");
jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 100, -1, -1));
jLabel4.setText("Nama Barang");
jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 160, -1, -1));
qty1.setForeground(new java.awt.Color(255, 255, 255)); qty1.setText("Qty");
jPanel1.add(qty1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 190, -1, -1));
jLabel6.setForeground(new java.awt.Color(255, 255, 255)); jLabel6.setText("Harga Satuan");
jPanel1.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 220, -1, -1));
jPanel1.add(jmlh, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 280, 110, -1)); jPanel1.add(nm_brg, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 160, 110, -1)); jPanel1.add(hrg_satuan, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 220, 110, -1)); close.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-close-sign-50.png"))); // NOI18N close.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeActionPerformed(evt);
} });
jPanel1.add(close, new org.netbeans.lib.awtextra.AbsoluteConstraints(740, 10, 70, 50)); simpan.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-save-filled-50.png"))); // NOI18N simpan.setText("Simpan"); simpan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { simpanActionPerformed(evt);
} });
jPanel1.add(simpan, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 140, 170, 80)); edit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-edit-file-64.png"))); // NOI18N edit.setText("Edit"); edit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { editActionPerformed(evt);
} });
jPanel1.add(edit, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 230, 170, 70)); hapus.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-delete-bin-80.png"))); // NOI18N hapus.setText("Hapus"); hapus.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hapusActionPerformed(evt);
} });
jPanel1.add(hapus, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 140, 160, 80));
satuan.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "=PILIH=", "Pcs", "Dus", "Pack" }));
jPanel1.add(satuan, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 250, 110, -1));
jPanel1.add(tcari, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 320, 150, 30));
tabel3.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} },
new String [] {
"No Pembelian", "Nama Supplier", "ID Barang", "Nama Barang", "Qty", "Harga Satuan", "Satuan", "Jumlah"
} ));
tabel3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tabel3MouseClicked(evt); } }); jScrollPane1.setViewportView(tabel3); jPanel1.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 370, 800, 130));
jLabel8.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jLabel8.setForeground(new java.awt.Color(255, 255, 255));
jLabel8.setText("INPUT DATA PEMBELIAN "); jPanel1.add(jLabel8, new
org.netbeans.lib.awtextra.AbsoluteConstraints(310, 0, -1, 30)); jLabel9.setForeground(new java.awt.Color(255, 255, 255)); jLabel9.setText("Satuan");
jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 250, -1, 10));
jPanel1.add(qty, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 190, 110, -1));
tanggal.setText("Tanggal");
jPanel1.add(tanggal, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 280, -1, -1)); cari.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-search-26.png"))); // NOI18N cari.setText("Cari"); cari.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cariActionPerformed(evt);
} });
jPanel1.add(cari, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 320, 100, 30)); batal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-cancel-80.png"))); // NOI18N batal.setText("batal"); batal.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { batalActionPerformed(evt);
} });
jPanel1.add(batal, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 230, 160, 70)); tambah.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-plus-80.png"))); // NOI18N tambah.setText("tambah"); tambah.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tambahActionPerformed(evt);
} });
jPanel1.add(tambah, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 60, 170, 70));
jLabel1.setForeground(new java.awt.Color(255, 255, 255)); jLabel1.setText("TOKO SENTRAL GRANIT");
jPanel1.add(jLabel1, new
org.netbeans.lib.awtextra.AbsoluteConstraints(330, 30, -1, -1));
cb_idbarang.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "=PILIH=" }));
cb_idbarang.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cb_idbarangActionPerformed(evt); } }); jPanel1.add(cb_idbarang, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 130, 110, -1)); hitung.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-calculator-80.png"))); // NOI18N hitung.setText("Hitung"); hitung.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { hitungActionPerformed(evt);
} });
jPanel1.add(hitung, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 60, 160, 70));
jPanel1.add(id, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 70, 110, -1));
cb_sup.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "=PILIH=" }));
jPanel1.add(cb_sup, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 100, 110, -1));
jLabel7.setForeground(new java.awt.Color(255, 255, 255)); jLabel7.setText("ID Barang");
jPanel1.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 130, -1, -1));
background.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/IMG-20180705-WA0022.jpg"))); // NOI18N
jPanel1.add(background, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 820, 510)); getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 820, 510)); pack(); }// </editor-fold>
private void closeActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
this.dispose();
}
private void simpanActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
simpan();
}
private void editActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
aktif(); try {
if (!id.getText().isEmpty() && !nm_brg.getText().isEmpty() && !qty.getText().isEmpty()
&& !hrg_satuan.getText().isEmpty() && !jmlh.getText().isEmpty()) {
String kolom[] = {"no_pembelian", "nm_supplier", "id_barang", "nama_barang", "qty", "hrg_satuan", "satuan", "jumlah"};
String isi[] = {id.getText(), cb_sup.getSelectedItem().toString(), cb_idbarang.getSelectedItem().toString(), nm_brg.getText(), qty.getText(), hrg_satuan.getText(), satuan.getSelectedItem().toString(), jmlh.getText()}; con.queryUpdate("pembelian", kolom, isi, "no_pembelian='" + String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 0)) + "'"); JOptionPane.showMessageDialog(this, "Data berhasil update"); loadtabel(); clear(); nonaktif(); tambah.setEnabled(true); batal.setEnabled(false); edit.setEnabled(false); hapus.setEnabled(false); hitung.setEnabled(false); } else {
JOptionPane.showMessageDialog(this, "Data isian ada yang kosong"); }
JOptionPane.showMessageDialog(this, "Error edit data"); }
loadtabel();
}
private void hapusActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
try {
String id = String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 0));
if (JOptionPane.showConfirmDialog(this, "Yakin Menghapus Data", "Peringatan", JOptionPane.OK_CANCEL_OPTION) ==
JOptionPane.OK_OPTION) {
con.queryDelete("pembelian", "no=" + id); loadtabel(); clear(); nonaktif(); tambah.setEnabled(true); batal.setEnabled(false); edit.setEnabled(false); hapus.setEnabled(false); } else { return; } } catch (Exception e) {
JOptionPane.showMessageDialog(this, "pilih data terlebih dahulu"); }
}
private void tabel3MouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here:
aktif(); edit.setEnabled(true); hapus.setEnabled(true); batal.setEnabled(true); tambah.setEnabled(false); simpan.setEnabled(false); hitung.setEnabled(true); id.setText(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 0))); cb_sup.setSelectedItem(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow (), 1))); cb_idbarang.setSelectedItem(String.valueOf(tabel3.getValueAt(tabel3.getSelected Row(), 2))); nm_brg.setText(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 3)));
qty.setText(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 4))); hrg_satuan.setText(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 5))); satuan.setSelectedItem(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow( ), 6))); jmlh.setText(String.valueOf(tabel3.getValueAt(tabel3.getSelectedRow(), 7))); }
private void cariActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
if (tcari.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Isikan Data Pencarian"); } else {
try {
rs = con.querySelectAll("pembelian", "no_pembelian LIKE'%" + tcari.getText()
+ "%' OR nm_supplier LIKE '%" + tcari.getText() + "%' OR nama_barang LIKE '%" + tcari.getText() + "%' OR id_barang LIKE '%" + tcari.getText() + "%'"); tabel3.setModel(new Database.ResultSetTable(rs));
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Pencarian Error"); }
}
}
private void batalActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
tambah.setEnabled(true); simpan.setEnabled(false); batal.setEnabled(false); edit.setEnabled(false); hapus.setEnabled(false); hitung.setEnabled(false); nonaktif(); clear(); }
private void tambahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
tambah.setEnabled(false); simpan.setEnabled(true); batal.setEnabled(true); edit.setEnabled(false); hapus.setEnabled(false);
hitung.setEnabled(true); kode();
aktif();
}
private void cb_idbarangActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
String st = (String) cb_idbarang.getSelectedItem();
ResultSet rst = con.querySelectAll("barang", "id_barang='" + st + "'"); try {
while (rst.next()) {
this.nm_brg.setText(rst.getString("nama_barang")); this.hrg_satuan.setText(rst.getString("harga")); }
} catch (SQLException ex) {
Logger.getLogger(pembelian.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void hitungActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:
hitung();
} /**
* @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(pembelian.class.getName()).log(java.util.loggi ng.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(pembelian.class.getName()).log(java.util.loggi ng.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(pembelian.class.getName()).log(java.util.loggi ng.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(pembelian.class.getName()).log(java.util.loggi ng.Level.SEVERE, null, ex);
}
//</editor-fold> //</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new pembelian().setVisible(true); }
}); }
// Variables declaration - do not modify private javax.swing.JLabel background;
private javax.swing.JButton batal; private javax.swing.JButton cari;
private javax.swing.JComboBox<String> cb_idbarang; private javax.swing.JComboBox<String> cb_sup; private javax.swing.JButton close;
private javax.swing.JButton edit; private javax.swing.JButton hapus; private javax.swing.JButton hitung;
private javax.swing.JTextField hrg_satuan; private javax.swing.JTextField id;
private javax.swing.JLabel jLabel; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; 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.JScrollPane jScrollPane1; private javax.swing.JTextField jmlh;
private javax.swing.JTextField nm_brg; private javax.swing.JTextField qty; private javax.swing.JLabel qty1; private javax.swing.JLabel salah;
private javax.swing.JComboBox<String> satuan; private javax.swing.JButton simpan;
private javax.swing.JTable tabel3; private javax.swing.JButton tambah; private javax.swing.JLabel tanggal; private javax.swing.JTextField tcari; // End of variables declaration private void loadtabel() {
String namaKolom[] = {"no_pembelian", "nm_supplier", "id_barang", "nama_barang", "qty", "hrg_satuan", "satuan", "jumlah"};
rs = con.querySelect(namaKolom, "pembelian"); tabel3.setModel(new ResultSetTable(rs)); }
private void simpan() { try {
if (!id.getText().isEmpty() && !nm_brg.getText().isEmpty() && !qty.getText().isEmpty()
&& !hrg_satuan.getText().isEmpty() && !jmlh.getText().isEmpty()) {
String kolom[] = {"no_pembelian", "nm_supplier", "id_barang", "nama_barang", "qty", "hrg_satuan", "satuan", "jumlah"};
String isi[] = {id.getText(), cb_sup.getSelectedItem().toString(), cb_idbarang.getSelectedItem().toString(), nm_brg.getText(), qty.getText(), hrg_satuan.getText(), satuan.getSelectedItem().toString(), jmlh.getText()}; System.out.println(con.queryInsert("pembelian", kolom, isi)); JOptionPane.showMessageDialog(this, "Data berhasil disimpan"); int selectedOption = JOptionPane.showConfirmDialog(null, "ingin cetak transaksi?", "Cetak Pembelian", JOptionPane.YES_NO_OPTION); if (selectedOption == JOptionPane.YES_OPTION) { loadtabel(); cetakTR(); batal.setEnabled(false); tambah.setEnabled(true); edit.setEnabled(false); hapus.setEnabled(false); simpan.setEnabled(false); hitung.setEnabled(false); nonaktif(); clear();
} else { } } else {
JOptionPane.showMessageDialog(this, "Data isian ada yang kosong"); loadtabel();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Error input data"); System.out.println("salah");
} }
private String kode() { String no = null; try {
con.koneksiDatabase();
String sql = "Select right(no_pembelian,4)+1 from pembelian"; ResultSet rs = con.eksekusiQuery(sql); if (rs.next()) { rs.last(); no = rs.getString(1); while (no.length() < 4) { no = "000" + no; no = "5" + no; id.setText(no); } } else { no = "50001"; id.setText(no); } } catch (Exception e) { } return no; }
private void nonaktif() { id.setEnabled(false); nm_brg.setEnabled(false); qty.setEnabled(false); hrg_satuan.setEnabled(false); satuan.setEnabled(false); jmlh.setEnabled(false); cb_idbarang.setEnabled(false); cb_sup.setEnabled(false); }
private void aktif() { id.setEnabled(false); nm_brg.setEnabled(false); qty.setEnabled(true); hrg_satuan.setEnabled(false); satuan.setEnabled(true); jmlh.setEnabled(false); cb_idbarang.setEnabled(true); cb_sup.setEnabled(true); }
private void clear() { id.setText(""); nm_brg.setText(""); qty.setText(""); hrg_satuan.setText(""); satuan.setSelectedItem("=PILIH="); cb_sup.setSelectedItem("=PILIH="); cb_idbarang.setSelectedItem("=PILIH="); jmlh.setText(""); }
private void hitung() { try { int a = Integer.parseInt(qty.getText()); int b = Integer.parseInt(hrg_satuan.getText()); int c = a * b; jmlh.setText(Integer.toString(c)); } catch (Exception e) { } } void tanggal() {
java.util.Date skrg = new java.util.Date();
SimpleDateFormat kal = new SimpleDateFormat("yyyy-MM-dd"); tanggal.setText(kal.format(skrg));
}
private void cetakTR() { try {
String NamaFile = "src/laporan/pembelian_parameter.jasper"; Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection koneksi =
DriverManager.getConnection("jdbc:mysql://localhost/pembelian", "root", ""); HashMap hash = new HashMap();
//Mengambil parameter dari ireport hash.put("nomor", id.getText());
File file = new File(NamaFile);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(file.getPath());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hash, koneksi);
JasperViewer.viewReport(jasperPrint); } catch (Exception ex) {
javax.swing.JOptionPane.showMessageDialog(rootPane, ex.getMessage()); } } } Transaksi Pembayaran package program; import Database.KoneksiDatabase; import Database.ResultSetTable; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JOptionPane; import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer;
public class pembayaran extends javax.swing.JFrame { ResultSet rs;
KoneksiDatabase con; public pembayaran() {
con = new KoneksiDatabase(new Database.Parameter().HOST_DB, new Database.Parameter().USERNAME_DB, new
Database.Parameter().PASSWORD_DB); initComponents();
setTitle("Form Data Pembayaran"); loadtabel();
loaddata(); con.koneksiDatabase(); tambah.setEnabled(true); simpan.setEnabled(false); batal.setEnabled(false); close.setEnabled(true); nonaktif(); }
private String kode() { String no = null; try {
con.koneksiDatabase();
String sql = "Select right(no_bayar, 4)+1 from pembayaran"; ResultSet rs = con.eksekusiQuery(sql); if (rs.next()) { rs.last(); no = rs.getString(1); while (no.length() < 4) { no = "000" + no; no = "8" + no; no_byr.setText(no); } } else { no = "80001"; no_byr.setText(no); } } catch (Exception e) { } return no; }
private void loaddata() {
rs = con.querySelectAll("pembelian"); try {
while (rs.next()) {
no_beli.addItem(rs.getString("no_pembelian")); }
} catch (SQLException ex) {
Logger.getLogger(pembayaran.class.getName()).log(Level.SEVERE, null, ex);
} }
public void hitung() { try {
int a = Integer.parseInt(qty.getText()); int b = Integer.parseInt(hrg.getText());
int c = a * b; total.setText(Integer.toString(c)); } catch (Exception e) { } } /**
* This method is called from within the constructor to initialize the form. * 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(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); nm_brg = new javax.swing.JTextField(); jmlh_byr = new javax.swing.JTextField(); tanggal = new javax.swing.JTextField(); no_byr = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); qty = new javax.swing.JTextField(); hrg = new javax.swing.JTextField(); close = new javax.swing.JButton(); tambah = new javax.swing.JButton(); simpan = new javax.swing.JButton(); batal = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane(); tabel1 = new javax.swing.JTable();
jLabel13 = new javax.swing.JLabel();
no_beli = new javax.swing.JComboBox<>(); satuan = new javax.swing.JTextField(); id_brg = new javax.swing.JTextField(); nm_sup = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel14 = new javax.swing.JLabel();
total = new javax.swing.JTextField(); background = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); getContentPane().setLayout(new
org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel1.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N jLabel1.setForeground(new java.awt.Color(255, 255, 255)); jLabel1.setText("INPUT PEMBAYARAN"); jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 10, -1, 20)); jLabel2.setForeground(new java.awt.Color(255, 255, 255)); jLabel2.setText("Nama Barang");
jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 230, -1, -1));
jLabel3.setForeground(new java.awt.Color(255, 255, 255)); jLabel3.setText("Total");
jPanel1.add(jLabel3, new
org.netbeans.lib.awtextra.AbsoluteConstraints(230, 230, -1, -1));
jLabel4.setFont(new java.awt.Font("Times New Roman", 2, 14)); // NOI18N jLabel4.setForeground(new java.awt.Color(255, 255, 0));
jLabel4.setText("*Note : Format Tanggal (yyyy-MM-dd)");
jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 310, -1, -1));
jLabel5.setForeground(new java.awt.Color(255, 255, 255)); jLabel5.setText("No Pembayaran");
jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 150, -1, -1));
jLabel7.setForeground(new java.awt.Color(255, 255, 255)); jLabel7.setText("Kode Barang");
jPanel1.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 190, -1, -1));
jPanel1.add(nm_brg, new
org.netbeans.lib.awtextra.AbsoluteConstraints(130, 230, 80, -1)); jPanel1.add(jmlh_byr, new
org.netbeans.lib.awtextra.AbsoluteConstraints(320, 270, 100, -1));
jPanel1.add(tanggal, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 110, 80, -1));
jPanel1.add(no_byr, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 150, 80, -1));
jLabel8.setForeground(new java.awt.Color(255, 255, 255)); jLabel8.setText("No Pembelian");
jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 70, -1, -1)); jLabel9.setForeground(new java.awt.Color(255, 255, 255)); jLabel9.setText("Nama Supplier"); jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 70, -1, -1)); jLabel10.setForeground(new java.awt.Color(255, 255, 255)); jLabel10.setText("Satuan"); jPanel1.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 150, -1, -1)); jLabel11.setForeground(new java.awt.Color(255, 255, 255)); jLabel11.setText("Harga Satuan"); jPanel1.add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 190, -1, -1));
jPanel1.add(qty, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 110, 100, -1));
jPanel1.add(hrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(320, 190, 100, -1));
close.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-close-sign-50.png"))); // NOI18N
close.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeActionPerformed(evt);
} });
jPanel1.add(close, new org.netbeans.lib.awtextra.AbsoluteConstraints(750, 10, 60, 50)); tambah.setIcon(new javax.swing.ImageIcon(getClass().getResource("/program/icon/icon2/icons8-plus-80.png"))); // NOI18N tambah.setText("Tambah"); tambah.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tambahActionPerformed(evt);
} });