18
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Berikut ini merupakan pembahasan mengenai tinjuan perusahan pada PT. Giri Cilik Sejahtera yang meliputi sejarah perusahaan, struktur organisasi dan beserta fungsi-fungsinya.
3.1.1. Sejarah Perusahaan
PT. Giri Cilik Sejahtera merupakan perusahaan yang bergerak di bidang perusahan dagang yang didirikan oleh bapak Hakim, beralamat Jalan Raya Pebayuran No.55, Kedungwaringin, Kecamatan Kedungwaringin, Bekasi Jawa Barat 17540.
PT. Giri Cilik Sejahtera menyediakan berbagai bahan bangunan, tidak hanya itu perusahaan ini juga memproduksi bahan bangunan khusus besi. Awalnya perusahaan ini hanya menyediakan bahan bangunan berupa pasir saja dikarenakan pemilik melihat peluang dalam bidang bahan bangunan sangatlah besar maka pemilik memutuskan untuk memperbesar usahanya dan perusahaan ini juga berafiliasi dengan toko bangunan yang ada di sekitar dengan tujuan memberdayakan masyarakat dalam bidang wirausaha. Pemilik perusahaan bersama afiliasi pedagang bahan bangunan selalu menjaga perusahaan agar tetap berjalan lancar dan selalu mengutamakan keuunggulan atau kualitas dari bahan bangunan yang dijual.
PT. Giri Cilik Sejahtera yang dimiliki bapak Hakim mengharapkan agar kedepannya toko bangunan ini bisa memiliki sistem yang lebih bagus untuk mempermudah pengelolaan keuangannya pada bidang penjualan bahan bangunan agar bisa baik dan berjalan lancar.
3.1.2. Struktur Organisasi Perusahaan dan Fungsi
Struktur organisasi perusahaan adalah jaringan kerjasama dalam sekelompok orang guna mencapai tujuan yang telah ditetapkan. Berikut skema struktur organisasi pada PT. Giri Cilik Sejahtera.
Sumber : PT. Giri Cilik Sejahtera
Gambar III.1
Struktur Organisasi Perusahaan Adapun tugas dari tiap-tiap bagian adalah sebagai berikut: 1. Pemilik Perusahaan
Tugasnya:
a. Menetapkan keputusan-keputusan internal perusahaan dan bertanggung jawab terhadap perencanaan, pengembangan, pelaksanaan, pengawasan, penilaian dan pengendalian seluruh kegiatan perusahaan, serta kegiatan administrasi perusahaan.
b. Melakukan kerja sama dengan pihak eksternal (toko bangunan) yang berpotensi dalam mengembangkan perusahaan.
c. Bertanggung jawab atas kerugian yang dihadapi perusahaan termasuk juga keuntungan perusahaan.
Pemilik Perusahaan
Penanggung Jawab
2. Penanggung Jawab Tugasnya :
a. Bertanggung jawab atas kegiatan bendahara, purchase, marketing, teknisi, driver.
b. Bertanggung jawab atas alat dan fasilitas. c. Mengkoordinasikan kegiatan.
d. Membuat rencana dan mengevaluasi kerja harian dan bulanan untuk memastikan tercapainya kualitas target kerja yang di persyaratkan dan sebagai bahan informasi kepada atasan.
3. Purchase
a. Mencari dan menganalisa calon supplier.
b. Melakukan negosiasi harga dengan supplier dan memastikan tanggal pengiriman standar.
c. Melakukan kegiatan pembelian barang yang di butuhkan perusahaan. d. Membuat laporan pembelian dan pengeluaran barang.
4. Marketing
a. Merencanakan produk
b. Menetapkan harga yang akan di pasarkan c. Merencanakan promosi
d. Merencanakan proses distribusi e. Mencatat kegiatan penjualan
5. Bendahara
a. Mengendalikan keuangan perusahaan.
b. Mengkoordinasikan penyelenggaraan urusan perusahaan yang meliputi mengawasi penggunaan uang perusahaan.
c. Membuat laporan keuangan harian maupun bulanan untuk dilaporkan kepada atasan.
6. Teknisi
a. Teknisi bertugas melaksanakan tugas/pekerjaan dengan benar sesuai intruksi penanggung jawab perusahaan
b. Memeliharaan/perbaikan mesin dan sarana perusahaan
7. Driver
a. Mengantarkan barang yang sudah di pesan b. Melakukan pembersihan kendaraan
c. Melakuakn pemeriksaan terkait fisik ataupun mesin kendaraan
3.2. Tinjauan Kasus
3.2.1. Proses Bisnis Sistem Berjalan
Kegiatan rangkaian yang terstruktur dalam pelaksanaan satu proses, dalam sistem kelancararan pengolahan tiap data, ataupun bentuk aktivitas apabila didukung dengan prosedur yang baik dan tepat, maka sistem berjalan secara teratur dan output yang dihasilkan serta mutu pelayanan akan lebih baik.
Pada prosedur sistem akuntansi berjalan ini ada beberapa prosedur yang ditetapkan antara lain sebagai berikut:
1. Prosedur Pemesanan Barang
Prosedur pemesanan barang pada PT Giri Cilik Sejahtera dimulai ketika konsumen melakukan pemesanan barang melawati pemilik perusahaan kemudian pemilik perusahaan memproses pesanan tersebut dengan memesankan barang yang diminta setelah barang tersedia konsumen akan mendapatkan kwitansi rincian harga barang dan diberikan ke konsumen.
2. Prosedur Penerimaan Pembayaran
Dalam penerimaan pendapatan yang biasa menerima kas adalah pemilik perusahaan dimana kas ini didapat dari hasil penjualan barang yang telah dibayar oleh konsumen yang diserahkan kepada pemilik perusahaan kemudian dilakukan pencataan penerimaan oleh bendahara pada buku kas umum.
3. Prosedur Pembelian Barang
Pemilik perusahan melakukan pembelian barang kepada supplier dan mendapatkan nota pembelian barang yang akan dibuat untuk rincian nota pengeluaran kas dan akan dicatat dalam buku kas umum oleh bendahara.
4. Prosedur Pembuatan Laporan
Setelah mendapatkan nota dari hasil penjualan dan pengeluaran yang diberikan pemilik perusahaan kepada bendahara maka bendahara melakukan pembuatan laporan pada buku kas umum dan laporan keuangan.
3.5.3. Activity Diagram
1. Prosedur Pemesanan Barang
Gambar III.2
Activity Diagram Pemesanan Barang
2. Prosedur Penerimaan Pembayaran
Gambar III.3
Activity Diagram Penerimaan Pembayaran act Pemesanan Barang
Pemilik Konsumen Mulai Mengajukan/Melakukan Pemesanan Barang Memeriksa Pesanan
Mengirim Barang Mengirimkan Kwitansi
Menerima Barang dan Kwitansi
Selesai
act Penerimaan Pembayaran
Bendahara Pemilik
Konsumen
Mulai
Melakukan Pembayaran Menerima Pembayaran
Memberikan Kwitansi/Nota Kepada Bendahara Untuk
Diinput Ke Buku Kas
Input Ke Buku Kas
3. Prosedur Pembelian Barang
Gambar III.4
Activity Diagram Pembelian Barang 4. Prosedur Pembuatan Laporan
Gambar III.5
Activity Diagram Pembuatan Laporan
act Pembelian Barang
Bendahara Pemilik Supplier
Mulai
Mengajukan/Melakukan Pembelian Barang
Menerima Daftar Pembelian Barang
Mengirim Barang Mengirimkan Nota Pembelian
Menerima Barang dan Nota Pembelian
Memproses Pembelian
Memberikan Nota Pada Bendahara Untuk Diinput Input Nota Ke Buku Kas
Selesai
act Pembuatan Laporan
Pemilik Bendahara
Mulai
Mengumpulkan Bukti/Nota Transaksi
Membuat Rekap Laporan
Menyerahkan Rekap Laporan Ke Pemilik
Menerima Laporan
3.5.3. Spesifikasi Bentuk Dokumen Masukan
Dokumen masukan adalah semua dokumen yang digunakan sebagai dasar untuk memperoleh data-data yang akan diproses untuk menghasilkan suatu keluaran yang disebut dengan output. Dokumen masukan yang digunakan adalah sebagai berikut:
1. Nama Dokumen : Daftar Pembelian Barang Fungsi : Untuk pembelian barang
Sumber : Konsumen
Tujuan : Marketing
Media : Kertas
Jumlah : -
Frekuensi : Setiap kali ada pemesanan
Format : Lampiran A.1
2. Nama Dokumen : Bukti Pembelian Barang (Kwitansi Pembelian) Fungsi : Untuk bukti pembelian barang dari supplier
Sumber : Supplier
Tujuan : Pemilik
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap kali transaksi pembelian
3.5.4. Dokumen Keluaran
Dokumen keluaran adalah segala bentuk dokumen yang akan mendukung kegiatan manajemen serta merupakan dokumen dari hasil catatan laporan. Dokumen keluaran yang digunakan adalah sebagai berikut:
1. Nama Dokumen : Kwitansi Penjualan
Fungsi : Untuk bukti penjualan barang
Sumber : Pemilik
Tujuan : Konsumen
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap kali ada pemesanan
Format : Lampiran B.1
2. Nama Dokumen : Buku Kas Umum
Fungsi : Laporan masuk dan keluarnya kas
Sumber : Bendahara
Tujuan : Pemilik
Media : Kertas
Jumlah : -
Frekuensi : Setiap kali diminta
3.5.5. Permasalahan Pokok
Laiknya sebuah sistem, sistem yang telah berjalan pada PT Giri Cilik Sejahtera ini juga masih terdapat beberapa permasalahan pokok, antara lain:
1. Sistem pencatatan pemesanan, penjualan, pembelian, dan pendapatan perusahaan hanya menggunakan buku besar yang ditulis tangan.
2. Untuk pencarian data yang diinginkan membutuhkan waktu yang cukup lama karena harus merunut catatan transaksi satu persatu.
3. Kemungkinan terjadi manipulasi data sangat besar karena semua pencatatan masih dilakukan dengan tulis tangan.
4. Belum adanya bentuk laporan yang baik sehingga semua bentuk transaksi bisa dipertanggung jawabkan.
5. Sering terjadinya file-file yang corupt karena termakan virus. 3.5.6. Pemecahan Masalah
Setiap permasalah selalu memiliki solusi, solusi yang tepat dapat diperoleh dengan melakukan troubleshooting pada masalah yang dihadapi agar ditemukan titik dari permasalahan tersebut. Berikut adalah alternatif pemecahan masalah pada PT Giri Cilik Sejahtera:
1. Membuat sebuah sistem komputerisasi yang dapat menangani semua pencatatan transaksi dengan lebih baik.
2. Membuat pencarian data yang dibutuhkan lebih mudah dengan menyimpan semua data dalam basis data yang terintegrasi dengan program.
3. Membatasi akses masing-masing pengguna untuk meminimalisasi terjadinya manipulasi data.
4. Membuat format laporan yang lebih baik dengan tampilan lebih jelas sehingga semua bentuk transaksi dapat dipertanggung jawabkan.
5. Melakukan back-up data secara berkala untuk mengantisipasi terjadinya kerusakan sistem yang mengakibatkan hilangnya data.
3.3. Analisis Kebutuhan Software 3.3.1. Analisa Kebutuhan
Untuk membangun sebuah sistem informasi, diperlukan anlisa yang tepat agar sistem yang dibangun menjadi sistem yang tepat dan dapat mengefisienkan kerja atau proses bisnis. Sistem informasi yang diimplementasikan dalam sebuah aplikasi ini dibuat dengan berbasis desktop menggunakan bahasa pemrograman Java. Pilihan mengunakan desktop lebih tepat untuk kegiatan proses bisnis yang berkelanjutan, selain itu aplikasi berbasih desktop lebih sedikit menggunakan sunber daya komputer dibandingkan membuat aplikasi berbasih web. Adapun untuk kebutuhan pengguna dari aplikasi ini akan dibagi 2 yaitu:
A. Pemilik
A.1. Melakukan Login
A.2. Mengelola Data Pengguna A.3. Melihat Laporan
B. Bendahara
B.1. Melakukan Login
B.2. Mengelola Buku Kas Umum
C. Purchasing
C.1. Melakukan Login C.2. Mengelola Supplier C.3. Mengelola Barang C.4. Melakukan Pembelian
D. Marketing
D.1. Melakukan Login D.2. Mengelola Supplier D.3. Mengelola Barang D.4. Melakukan Pembelian
3.3.2. Use Case Diagram 1. Use Case Diagram Pemilik
a. Gambar Use Case Diagram Pemilik
Gambar III.6
Use Case Diagram Pemilik
uc Use Case Diagram Pemilik
Pemilik
Login Mengelola Pengguna
Menambah Pengguna Mengubah Pengguna Menghapus Pengguna Melihat Pengguna Melihat Laporan Melihat Laporan Pembelian Melihat Laporan Penjualan Melihat Laporan Buku Kas Mencari Pengguna «include» «include»
b. Deskripsi Use Case Diagram
1) Deskripsi Use Case Diagram Menambah Pengguna Tabel III.1
Deskripsi Use Case Diagram Menambah Pengguna
Tujuan Pemilik dapat menambah data pengguna
Deskripsi Sistem ini memungkinkan aktor menambah
pengguna yang berbeda-beda
Aktor Pemilik
Kondisi Awal
Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan data pengguna
baru 2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data pengguna ke basis data 4. Menampilkan pesan berhasil disimpan Skenario Alternatif
1. Memasukkan data pengguna baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data pengguna ke basis data 7. Menampilkan pesan berhasil disimpan Kondisi Akhir Sistem dapat menyimpan data pengguna baru
2) Deskripsi Use Case Diagram Mengubah Pengguna Tabel III.2
Deskripsi Use Case Diagram Mengubah Pengguna
Tujuan Pemilik dapat mengubah data pengguna
Deskripsi Sistem ini memungkinkan aktor
mengubah pengguna
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pengguna yang dicari
4. Melakukan perubahan pada data pengguna
1. Mencari data pengguna yang akan dibuah.
2. Menampilkan data pengguna
6. Melakukan validasi terhadap masukan.
7. Menyimpan data pengguna ke basis data
8. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan nama pengguna yang dicari
4. Melakukan perubahan pada data pengguna
2. Mencari data pengguna yang akan dibuah.
3. Menampilkan data pengguna
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
7. Memperbaiki masukan yang
salah 8. Melakukan validasi terhadap
masukan.
9. Menyimpan data pengguna ke basis data
10. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat mengubah data pengguna yang telah diubah
3) Deskripsi Use Case Diagram Mencari Pengguna Tabel III.3
Deskripsi Use Case Diagram Mencari Pengguna
Tujuan Pemilik dapat mencari data pengguna
Deskripsi Sistem ini memungkinkan aktor mencari
pengguna.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pengguna
yang dicari 2. Mencari data pengguna di basis data. 3. Menampilkan daftar pengguna yang
sesuai.
Kondisi Akhir Sistem dapat mencari data pengguna
4) Deskripsi Use Case Diagram Menghapus Pengguna Tabel III.4
Deskripsi Use Case Diagram Menghapus Pengguna
Tujuan Pemilik dapat menghapus data pengguna
Deskripsi Sistem ini memungkinkan aktor
menghapus pengguna.
Aktor Pemilik
Aksi Aktor Reaksi Sistem Skenario Normal
1. Memasukkan nama pengguna yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data pengguna yang akan dibuah.
4. Konfirmasi Hapus
6. Menghapus data pengguna dari basis data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data pengguna
2. Use Case Diagram Bendahara
a. Gambar Use Case Diagram Bendahara
Gambar III.7
Use Case Diagram Bendahara uc Use Case Diagram Bendahara
Bendahara
Login Mengelola Buku Kas
Mengubah Buku Kas
Menghapus Buku Kas
Mencari Buku Kas Melihat Buku Kas Menambah Buku Kas
b. Deskripsi Use Case Diagram Bendahara
1) Deskripsi Use Case Diagram Menambah Buku Kas Umum Tabel III.5
Deskripsi Use Case Diagram Menambah Buku Kas Umum
Tujuan Pemilik dapat menambah data buku kas
umum Deskripsi
Sistem ini memungkinkan aktor menambah buku kas umum yang berbeda-beda
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data buku kas umum
baru 2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data buku kas umum ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data buku kas umum baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data buku kas umum ke basis data
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data buku kas umum baru
2) Deskripsi Use Case Diagram Mengubah Buku Kas Umum Tabel III.6
Deskripsi Use Case Diagram Mengubah Buku Kas Umum
Tujuan Pemilik dapat mengubah data buku kas
umum
Deskripsi Sistem ini memungkinkan aktor
mengubah buku kas umum.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama buku kas umum yang dicari
4. Melakukan perubahan pada data buku kas umum
2. Mencari data buku kas umum yang akan dibuah.
3. Menampilkan data buku kas umum
5. Melakukan validasi terhadap masukan.
6. Menyimpan data buku kas umum ke basis data
7. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan nama buku kas umum yang dicari
4. Melakukan perubahan pada data buku kas umum
2. Mencari data buku kas umum yang akan dibuah.
3. Menampilkan data buku kas umum
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
7. Memperbaiki masukan yang salah
8. Melakukan validasi terhadap masukan.
9. Menyimpan data buku kas umum ke basis data
10. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat mengubah data buku kas umum yang telah diubah
3) Deskripsi Use Case Diagram Mencari Buku Kas Umum Tabel III.7
Deskripsi Use Case Diagram Mencari Buku Kas Umum
Tujuan Pemilik dapat mencari data buku kas
umum
Deskripsi Sistem ini memungkinkan aktor mencari
buku kas umum.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode buku kas umum yang dicari
2. Mencari data buku kas umum di basis data.
3. Menampilkan daftar buku kas umum yang sesuai.
4) Deskripsi Use Case Diagram Menghapus Buku Kas Umum Tabel III.8
Deskripsi Use Case Diagram Menghapus Buku Kas Umum
Tujuan Pemilik dapat menghapus data buku kas
umum
Deskripsi Sistem ini memungkinkan aktor
menghapus buku kas umum.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama buku kas umum yang dicari
1. Klik hapus
5. Memilih Ya
2. Mencari data buku kas umum yang akan dibuah.
4. Konfirmasi Hapus
6. Menghapus data buku kas umum dari basis data
7. Menampilkan pesan berhasil dihapus Kondisi Akhir Sistem dapat menghapus data buku kas
3. Use Case Diagram Purchasing
a. Gambar Use Case Diagram Purchasing
Gambar III.8
Use Case Diagram Purchasing
b. Deskripsi Use Case Diagram Purchasing
1) Deskripsi Use Case Diagram Menambah Barang Tabel III.9
Deskripsi Use Case Diagram Menambah Barang
Tujuan Purchasing dapat menambah data barang
Deskripsi Sistem ini memungkinkan aktor
menambah barang yang berbeda-beda
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data barang baru
2. Memeriksa apakah valid tidaknya masukan
3. Menyimpan data barang ke basis data 4. Menampilkan pesan berhasil
Skenario Alternatif
1. Menginput data barang baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data barang ke basis data 7. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data barang baru
2) Deskripsi Use Case Diagram Mengubah Barang Tabel III.10
Deskripsi Use Case Diagram Mengubah Barang
Tujuan Purchasing dapat mengubah data barang
Deskripsi Sistem ini memungkinkan aktor
mengubah barang.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama barang yang dicari
5. Melakukan perubahan pada data barang
2. Mencari data barang yang akan dibuah.
3. Menampilkan data barang
5. Melakukan validasi terhadap masukan.
6. Menyimpan data barang ke basis data 7. Menampilkan pesan berhasil
Skenario Alternatif
3. Memasukkan nama barang yang dicari
4. Melakukan perubahan pada data barang
7. Memperbaiki masukan yang salah
2. Mencari data barang yang akan dibuah.
3. Menampilkan data barang
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap masukan.
9. Menyimpan data barang ke basis data 10. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat mengubah data barang yang telah diubah
3) Deskripsi Use Case Diagram Mencari Barang Tabel III.11
Deskripsi Use Case Diagram Mencari Barang
Tujuan Purchasing dapat mencari data barang
Deskripsi Sistem ini memungkinkan aktor mencari
barang.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama barang
yang dicari 2. Mencari data barang di basis data. 3. Menampilkan daftar barang yang
Kondisi Akhir Sistem dapat mencari data barang
4) Deskripsi Use Case Diagram Menghapus Barang Tabel III.12
Deskripsi Use Case Diagram Menghapus Barang
Tujuan Purchasing dapat menghapus data barang
Deskripsi Sistem ini memungkinkan aktor
menghapus barang.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
2. Memasukkan nama barang yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data barang yang akan dibuah.
4. Konfirmasi Hapus
6. Menghapus data barang dari basis data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data barang
5) Deskripsi Use Case Diagram Menambah Supplier Tabel III.13
Deskripsi Use Case Diagram Menambah Supplier
Tujuan Purchasing dapat menambah data
supplier
Deskripsi Sistem ini memungkinkan aktor
menambah supplier yang berbeda-beda
Aktor Purchasing
Aksi Aktor Reaksi Sistem Skenario Normal
1. Memasukkan data supplier baru
2. Memeriksa apakah valid tidaknya masukan
3. Menyimpan data supplier ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan data supplier baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data supplier ke basis data
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data supplier baru
6) Deskripsi Use Case Diagram Mengubah Supplier Tabel III.14
Deskripsi Use Case Diagram Mengubah Supplier
Tujuan Purchasing dapat mengubah data supplier
Deskripsi Sistem ini memungkinkan aktor
mengubah supplier
Aktor Purchasing
Kondisi Awal
Aksi Aktor Reaksi Sistem Skenario Normal
1. Memasukkan nama supplier yang dicari
4. Melakukan perubahan pada data supplier
2. Mencari data supplier yang akan dibuah.
3. Menampilkan data supplier
5. Melakukan validasi terhadap masukan.
6. Menyimpan data supplier ke basis data
7. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan nama supplier yang dicari
4. Melakukan perubahan pada data supplier
7. Memperbaiki masukan yang salah
2. Mencari data supplier yang akan dibuah.
3. Menampilkan data supplier
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap masukan.
9. Menyimpan data supplier ke basis data
10. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat mengubah data supplier yang telah diubah
7) Deskripsi Use Case Diagram Mencari Supplier Tabel III.15
Deskripsi Use Case Diagram Mencari Supplier
Tujuan Purchasing dapat mencari data supplier
Deskripsi Sistem ini memungkinkan aktor mencari
supplier.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama supplier
yang dicari 2. Mencari data supplier di basis data. 3. Menampilkan daftar supplier yang
sesuai.
Kondisi Akhir Sistem dapat mencari data supplier
8) Deskripsi Use Case Diagram Menghapus Supplier Tabel III.16
Deskripsi Use Case Diagram Menghapus Supplier
Tujuan Purchasing dapat menghapus data
supplier
Deskripsi Sistem ini memungkinkan aktor
menghapus supplier.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama supplier yang dicari
4. Klik hapus
2. Mencari data supplier yang akan dibuah.
5. Memilih Ya
6. Menghapus data supplier dari basis data
7. Menampilkan pesan berhasil dihapus Kondisi Akhir Sistem dapat menghapus data supplier
9) Deskripsi Use Case Diagram Menambah Pembelian
Tabel III.17
Deskripsi Use Case Diagram Menambah Pembelian
Tujuan Purchasing dapat menambah data
pembelian
Deskripsi Sistem ini memungkinkan aktor
menambah pembelian.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data pembelian baru
2. Memeriksa apakah valid tidaknya masukan
3. Menyimpan data pembelian ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data pembelian baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data pembelian ke basis data
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data pembelian baru
10) Deskripsi Use Case Diagram Mencari Pembelian
Tabel III.18
Deskripsi Use Case Diagram Mencari Pembelian
Tujuan Purchasing dapat menambah data
pembelian
Deskripsi Sistem ini memungkinkan aktor mencari
pembelian.
Aktor Purchasing
Kondisi Awal Purchasing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode
pembelian yang dicari 2. Mencari data pembelian di basis data. 3. Menampilkan daftar pembelian yang
sesuai.
4. Use Case Diagram Marketing
a. Gambar Use Case Diagram Marketing
Gambar III.9
Use Case Diagram Marketing
b. Deskripsi Use Case Diagram Marketing
1) Deskripsi Use Case Diagram Menambah Penjualan Tabel III.19
Deskripsi Use Case Diagram Menambah Penjualan
Tujuan Marketing dapat menambah data penjualan
Deskripsi Sistem ini memungkinkan aktor menambah
penjualan.
Aktor Marketing
Kondisi Awal Marketing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data penjualan baru
2. Memeriksa apakah valid tidaknya masukan
3. Menyimpan data penjualan ke basis data 4. Menampilkan pesan berhasil disimpan Skenario Alternatif
1. Menginput data penjualan baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data penjualan ke basis data 7. Menampilkan pesan berhasil disimpan Kondisi Akhir Sistem dapat menyimpan data penjualan baru
2) Deskripsi Use Case Diagram Mencari Penjualan
Tabel III.20
Deskripsi Use Case Diagram Mencari Penjualan
Tujuan Marketing dapat mencari data penjualan
Deskripsi Sistem ini memungkinkan aktor mencari
penjualan.
Aktor Marketing
Kondisi Awal Marketing sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode penjualan
yang dicari 2. Mencari data penjualan di basis data. 3. Menampilkan daftar penjualan yang
sesuai.
3.3.3. Activity Diagram 1. Activity Diagram Login
Gambar III.10
Activity Diagram Login act Activity Login
Sistem Pengguna
Mulai
ID Pengguna dan Password
Klik Login Validasi Login
Valid?
Tampilkan Pesan Error
Tampilkan Menu Utama
Selesai
Form Login
[Tidak]
2. Activity Diagram Mengelola Data Barang
Gambar III.11
Activity Diagram Mengelola Data Barang
act Mengelola Data Barang
Sistem Purchasing
Mulai
Pilih
Tambah
Input Data Barang
Simpan Cari Validasi Valid? Simpan Data Tampilkan Data
Pilh Data Barang
Ubah
Ubah Data
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada?
Tampilkan Pesan Error
[Tidak] [Ya] [Tidak] [Tidak] Ya [Ya]
3. Activity Diagram Mengelola Data Supplier
Gambar III.12
Activity Diagram Mengelola Data Supplier
act Mengelola Data Supplier
Sistem Purchasing
Mulai
Pilih
Tambah
Input Data Supplier
Simpan Cari Validasi Valid? Simpan Data Tampilkan Data
Pilh Data supplier
Ubah
Ubah Data
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada?
Tampilkan Pessan Error
[Ya] Ya [Ya] [Tidak] [Tidak] [Tidak]
4. Activity Diagram Mengelola Data Pengguna
Gambar III.13
Activity Diagram Mengelola Data Pengguna
act Mengelola Data Pengguna
Sistem Pemilik
Mulai
Pilih
Tambah
Input Data Pengguna
Simpan Cari Validasi Valid? Simpan Data Tampilkan Data
Pilh Data Pengguna
Ubah
Ubah Data
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada?
Tampilkan Pesan Error
[Ya] [Tidak]
[Tidak]
Ya [Ya]
5. Activity Diagram Mengelola Data Penjualan
Gambar III.14
Activity Diagram Mengelola Data Penjualan
act Mengelola Data Penjualan
Sistem Marketing
Mulai
Pilih
Tambah
Input Data Pembeli
Simpan Cari Validasi Valid? Simpan Data Tampilkan Data
Pilh Data Penjualan
Cetak Simpan? Batal Selesai Tampilkan Bukti Penjualan Ada?
Input Data Barang
Input Lagi? [Ya] [Ya] [Tidak] [Ya] [Tidak] [Tidak] [Tidak] [Ya]
6. Activity Diagram Mengelola Data Pembelian
Gambar III.15
Activity Diagram Mengelola Data Pembelian
act Mengelola Data Pembelian
Sistem Purchasing
Mulai
Pilih
Tambah
Input Data Supplier
Simpan Cari Validasi Valid? Simpan Data Tampilkan Data
Pilh Data PembeliAN
Cetak Simpan? Batal Selesai Tampilkan Bukti Pembelian Ada?
Input Data Barang
Input Lagi? [Tidak] [Ya] [Tidak] [Tidak] [Tidak] [Ya] [Ya] [Ya]
7. Activity Diagram Melihat Laporan
Gambar III.16
Activity Diagram Melihat Laporan act Activity Laporan
Sistem Pemilik
Mulai
Input Periode Laporan
Klik Lihat Tampilkan Laporan
Selesai
8. Activity Diagram Mengelola Buku Kas Umum
Gambar III.17
Activity Diagram Mengelola Kas Umum
act Mengelola Buku Kas
Sistem Bendahara
Mulai
Pilih
Tambah
Input Data Buku Kas
Simpan Cari Validasi Valid? Simpan Data Tampilkan Data
Pilh Data Buku Kas
Ubah
Ubah Data
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada?
Tampilkan Pesan Error
[Tidak]
Ya [Ya]
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.18
3.4.2. Logical Record Structure (LRS)
Gambar III.19
Logical Record Structure
3.4.3. Spesifikasi File
1. Spesifikasi File Tabel Barang
Nama Database : db_giri_cilik_sejahtera Nama File : barang
Tipe File : File Master Akses File : Random
Record Size : 109 Karakter
Tabel III. 21
Spesifikasi File Tabel Barang
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Barang kode_barang CHAR 7 Primary Key
2 Nama Barang nama_barang VARCHAR 35
3 Merk merk VARCHAR 25
4 Ukuran Barang ukuran_barang VARCHAR 30
5 Satuan satuan VARCHAR 7
6 Harga Barang harga_barang DOUBLE
7 Stok Barang stok_barang INT 5
2. Spesifikasi File Tabel Supplier
Nama Database : db_giri_cilik_sejahtera Nama File : supplier
Tipe File : File Master Akses File : Random
Record Size : 291 Karakter
Field Key : kode_supplier
Tabel III.22
Spesifikasi File Tabel Supplier
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Supplier kode_supplier CHAR 6 Primary Key
2 Nama Supplier nama_supplier VARCHAR 35
3 Kontak Person kontak_person VARCHAR 35
4 Alamat Supplier alamat_supplier VARCHAR 200
5 No Telepon no_telp VARCHAR 15
3. Spesifikasi File Tabel Pengguna
Nama Database : db_giri_cilik_sejahtera Nama File : pengguna
Tipe File : File Master Akses File : Random
Record Size : 100 Karakter
Field Key : id_pengguna
Tabel III.23
Spesifikasi File Tabel Pengguna
No Elemen Data Akronim Tipe Panjang Keterangan
1 ID Pengguna id_pengguna VARCHAR 20 Primary Key
2 Nama Pengguna nama_pengguna VARCHAR 35
3 Password password VARCHAR 35
4 Hak Akses hak_akses VARCHAR 10
4. Spesifikasi File Tabel Penjualan
Nama Database : db_giri_cilik_sejahtera Nama File : penjualan
Tipe File : File Transaksi Akses File : Random
Record Size : 264 Karakter
Field Key : no_transaksi
Tabel III.24
Spesifikasi File Tabel Penjualan
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Transaksi no_transaksi CHAR 9 Primary Key
2 Tanggal Trans tanggal_transaksi DATE
3 Nama Pembeli nama_pembeli CHAR 35
4 Alamat Pembeli alamat_pembeli VARCHAR 200
5 Ongkos Kirim ongkos_kirim DOUBLE
6 Total Penjualan total_penjualan DOUBLE
5. Spesifikasi File Tabel Penjualan Detail Nama Database : db_giri_cilik_sejahtera Nama File : penjualan_detail Tipe File : File Transaksi Akses File : Random
Record Size : 21 Karakter
Field Key : -
Tabel III. 25
Spesifikasi File Tabel Penjualan Detail
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Transaksi no_transaksi CHAR 9 Foreign Key
2 Kode Barang kode_barang VARCHAR 7 Foreign Key
3 Jumlah Jual jumlah_jual INT 5
4 Harga Barang harga_barang DOUBLE
6. Spesifikasi File Tabel Pembelian
Nama Database : db_giri_cilik_sejahtera Nama File : pembelian
Tipe File : File Pembelian Akses File : Random
Record Size : 35 Karakter
Field Key : no_pembelian
Tabel III. 26
Spesifikasi File Tabel Pembelian
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Pembelian no_pembelian CHAR 9 Primary Key
2 Tanggal Pmb tanggal_pembelian DATE
3 Kode Supplier kode_supplier CHAR 6
4 Total Pembelian total_pembelian DOUBLE
7. Spesifikasi File Tabel Pembelian Detail Nama Database : db_giri_cilik_sejahtera Nama File : pembelian_detail Tipe File : File Transaksi Akses File : Random
Record Size : 21 Karakter
Field Key : -
Tabel III. 27
Spesifikasi File Tabel Pembelian Detail
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Transaksi no_pembelian CHAR 9 Foreign Key
2 Kode Barang kode_barang VARCHAR 7 Foreign Key
3 Jumlah Beli jumlah_beli INT 5
4 Harga Beli harga_beli DOUBLE
8. Spesifikasi File Tabel Buku Kas Umum Nama Database : db_giri_cilik_sejahtera Nama File : buku_kas
Tipe File : File Transaksi Akses File : Random
Record Size : 195 Karakter
Field Key : no_buku
Tabel III. 28
Spesifikasi File Tabel Buku Kas Umum
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Buku no_buku CHAR 10 Primary Key
2 No Bukti no_bukti VARCHAR 15
3 Uraian uraian VARCHAR 150
4 Debet debet DOUBLE
5 Kredit kredit DOUBLE
6 Saldo saldo DOUBLE
3.4.4. Sequence Diagram
1. Sequence Diagram Mengelola Data Barang
Gambar III.20
Sequence Diagram Mengelola Data Barang
sd Sequence Diagram Barang
Purchasing
Form Barang Control Barang
Barang bersihInputan() queryBarang]() tambahBarang() btnsimpanActionPerformed() «create»
[Input Data Barang]:
aktifNonaktif() btntambahActionPerformed()
[Buat Kode Barang Baru]: kodeBarangOtomatis() [Validasi]: [Set Data]: [Status= "Tambah"]: FormBarang() «create» [Tampil Error]: [Tampilkan Kode Barang]:
2. Sequence Diagram Mengelola Data Supplier
Gambar III.21
Sequence Diagram Mengelola Data Supplier
sd Sequence Diagram Supplier
Purchasing
Form Supplier Control Supplier
Supplier
[Validasi]: bersihInputan()
btnsimpanActionPerformed()
«create»
[Tampilkan Kode Supplier]:
[Buat Kode Supplier Baru]: kodeSupplierOtomatis()
[Tampil Error]: [Status= "Tambah"]:
[Set Data]: btntambahActionPerformed()
[Input Data supplier]:
FormSupplier() «create»
[Kode Supplier Baru]: queryObat()
tambahSupplier() aktifNonaktif()
3. Sequence Diagram Mengelola Data Pengguna
Gambar III.22
Sequence Diagram Mengelola Data Pengguna
sd Sequence Diagram Pengguna
Pemilik
Form Pengguna Control Pengguna
Pengguna bersihInputan()
«create»
[Tampil Error]: [Set Data]: [Input Data Pengguna]:
[status="Tambah"]: btntambahActionPerformed() tambahPengguna() FormPengguna() «create» [Validasi]: btnsimpanActionPerformed() aktifNonaktif()
4. Sequence Diagram Mengelola Data Penjualan
Gambar III.23
Sequence Diagram Mengelola Data Penjualan
sd Sequnce Diagram Mengelola Data Penjualan
Marketing
Form Penjualan Control Penjualan
Penjualan
Barang Penjualan Detail
loop Input Data Barang
btntambah_itemActionPerformed()
noTransaksiOtomatis()
[Tampil Data Barang]: aktifNonaktif() cariKodeBarang() «create» bersihInputan() ubahBarang() tambahPenjualan() tkode_barangKeyPressed() FormPenjualan() «create» [Validasi]: [Tampilkan No Transaksi]: btnsimpanActionPerformed() [Buat No Baru]:
[Tampil Data Barang]: noTransaksiOtomatis() [Data Barang]: «create» [status= "Tambah"]: cariBarang() «create» btntambahActionPerformed() tambahPenjualanDetail() [Tampil Pesan Error]:
[Input Kode Barang]:
[Set Data]:
5. Sequence Diagram Mengelola Data Pembelian
Gambar III.24
Sequence Diagram Mengelola Data Pembelian
sd Sequence Diagram Mengelola Data Pembelian
Purchasing
Form Pembelian Control Pembelian
Pembelian Barang Pembelian Detail loop cariKodeBarang() bersihInputan() tambahPembelianDetail() tkode_barangKeyPressed() «create»
[Tampil Pesan Error]: [Tampilkan No Pembelian]:
«create»
[Set Data]:
[Buat No Baru]:
[Tampil Data Barang]: btntambah_itemActionPerformed() noPembelianOtomatis() [Data Barang]: [status= "Tambah"]: ubahBarang() cariBarang() btntambahActionPerformed() tambahPembelian() [Input Kode Barang]:
«create»
[Validasi]: [No Pembelian Baru]: FormPembelian()
«create»
btnsimpanActionPerformed()
noPembelianOtomatis()
[Tampil Data Barang]: aktifNonaktif()
6. Sequence Diagram Mengelola Data Buku Kas
Gambar III.25
Sequence Diagram Mengelola Data Buku Kas
sd Sequence Diagram Buku Kas
Bendahara
Form Buku Kas Control Buku Kas
Buku Kas
[Buat No Buku Baru]: noBukuOtomatis()
[Tampil Error]: [Status= "Tambah"]:
[Set Data]: btntambahActionPerformed()
[Input Data Buku Kas]:
FormBukuKas() «create»
[No Buku Baru]: queryBuku() tambahBukuKas() aktifNonaktif() [Validasi]: bersihInputan() btnsimpanActionPerformed() «create» [Tampilkan No Buku]:
3.4.5. Deployment Diagram Gambar III.26 Deployment Diagram deployment Deployment Aplikasi Aplikasi Pendapatan Jasper Report Database Server MySQL Server Java
Java Runrtime Environment
db_giri_cilik_sejahtera
Java Core Library «use»
MySQL JDBC Driver «use»
3.4.6. User Interface a. Form Login
Gambar III.27
Form Login
b. Form Menu Utama
Gambar III.28
c. Form Pengguna Gambar III.29 Form Pengguna d. Form Supplier Gambar III.30 Form Supplier
e. Form Barang
Gambar III.31
Form Barang
f. Form Penjualan
Gambar III.32
g. Form Pembelian
Gambar III.33
Form Pemb elian Barang
h. Form Buku Kas Umum
Gambar III.34 Form Buku Kas
i. Form Laporan Gambar III.35 Form Laporan 3.5. Implementasi 3.5.1. Code Generation 1. Model Pembelian package model; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class Pembelian { private Connection koneksi; private String no_pembelian; private Date tanggal_pembelian;
private String kode_supplier; private String id_pengguna; private double total_pembelian; private String pesan_error; public Pembelian() { try { Class.forName("com.mysql.jdbc.Driver"); koneksi = DriverManager.getConnection("jdbc:mysql://localhost/db_giri_cilik_sejahtera?", "root", "");
} catch (ClassNotFoundException | SQLException ex) { this.pesan_error = ex.getMessage();
} }
public Connection getKoneksi() { return koneksi;
}
public String getNo_pembelian() { return no_pembelian;
}
public void setNo_pembelian(String no_pembelian) { this.no_pembelian = no_pembelian;
}
public Date getTanggal_pembelian() { return tanggal_pembelian;
}
public void setTanggal_pembelian(Date tanggal_pembelian) { this.tanggal_pembelian = tanggal_pembelian;
}
public String getKode_supplier() { return kode_supplier;
}
public void setKode_supplier(String kode_supplier) { this.kode_supplier = kode_supplier;
}
public String getId_pengguna() { return id_pengguna;
public void setId_pengguna(String id_pengguna) { this.id_pengguna = id_pengguna;
}
public double getTotal_pembelian() { return total_pembelian;
}
public void setTotal_pembelian(double total_pembelian) { this.total_pembelian = total_pembelian;
}
public String getPesan_error() { return pesan_error;
}
public String noPembelianOtomatis() { try {
String Sql = "SELECT * FROM pembelian ORDER BY SUBSTR(no_pembelian,4,9) * 1 DESC LIMIT 1";
Statement st = this.koneksi.createStatement(); ResultSet rs = st.executeQuery(Sql); if (rs.next()) { String No = rs.getString("no_pembelian"); No = No.substring(3, 9); No = "PMB" + String.format("%06d", Integer.parseInt(No) + 1); return No; } else { return "PMB000001"; }
} catch (SQLException ex) {
this.pesan_error = ex.getMessage(); return "";
} }
public List<Pembelian> daftarPembelian() { try {
String Sql = "SELECT * FROM pembelian ORDER BY no_pembelian DESC";
List<Pembelian> lb = new ArrayList(); Statement st = this.koneksi.createStatement(); ResultSet rs = st.executeQuery(Sql);
while (rs.next()) {
Pembelian pmb = new Pembelian();
pmb.setTanggal_pembelian(rs.getDate("tanggal_pembelian")); pmb.setKode_supplier(rs.getString("kode_supplier")); pmb.setId_pengguna(rs.getString("id_pengguna")); pmb.setTotal_pembelian(rs.getDouble("total_pembelian")); lb.add(pmb); } return lb;
} catch (SQLException ex) {
this.pesan_error = ex.getMessage(); return null;
} }
public List<Pembelian> cariPembelianPeriode(Date tanggal_pembelian1, Date tanggal_pembelian2) {
try {
String Sql = "SELECT * FROM pembelian WHERE tanggal_pembelian BETWEEN ? AND ? ORDER BY no_pembelian DESC";
List<Pembelian> lb = new ArrayList();
PreparedStatement ps = this.koneksi.prepareStatement(Sql); ps.setDate(1, tanggal_pembelian1);
ps.setDate(2, tanggal_pembelian2); ResultSet rs = ps.executeQuery(); while (rs.next()) {
Pembelian pmb = new Pembelian();
pmb.setNo_pembelian(rs.getString("no_pembelian")); pmb.setTanggal_pembelian(rs.getDate("tanggal_pembelian")); pmb.setKode_supplier(rs.getString("kode_supplier")); pmb.setId_pengguna(rs.getString("id_pengguna")); pmb.setTotal_pembelian(rs.getDouble("total_pembelian")); lb.add(pmb); } return lb;
} catch (SQLException ex) {
this.pesan_error = ex.getMessage(); return null;
} }
public Pembelian cariNoTransaksi(String No) { try {
String Sql = "SELECT * FROM pembelian WHERE no_pembelian=? ORDER BY no_pembelian"; PreparedStatement ps = this.koneksi.prepareStatement(Sql); ps.setString(1, No); ResultSet rs = ps.executeQuery(); if (rs.next()) { this.setNo_pembelian(rs.getString("no_pembelian"));
this.setTanggal_pembelian(rs.getDate("tanggal_pembelian")); this.setKode_supplier(rs.getString("kode_supplier")); this.setId_pengguna(rs.getString("id_pengguna")); this.setTotal_pembelian(rs.getDouble("total_pembelian")); } else { this.setNo_pembelian(null); this.setTanggal_pembelian(null); this.setKode_supplier(null); this.setId_pengguna(null); this.setTotal_pembelian(0); } return this;
} catch (SQLException ex) { this.setNo_pembelian(null); this.setTanggal_pembelian(null); this.setKode_supplier(null); this.setId_pengguna(null); this.setTotal_pembelian(0); this.pesan_error = ex.getMessage(); return this; } }
public int tambahPembelian() { try {
String Sql = "INSERT INTO pembelian (no_pembelian, tanggal_pembelian, kode_supplier, total_pembelian, id_pengguna) VALUES (?,?,?,?,?)";
PreparedStatement ps = this.koneksi.prepareStatement(Sql); ps.setString(1, this.no_pembelian); ps.setDate(2, this.tanggal_pembelian); ps.setString(3, this.kode_supplier); ps.setDouble(4, this.total_pembelian); ps.setString(5, this.id_pengguna); return ps.executeUpdate();
} catch (SQLException ex) {
this.pesan_error = ex.getMessage(); return -1; } } } 2. Form Pembelian package forms; import pt_giri_cilik_sejahtera.Pt_Giri_Cilik_Sejahtera; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit;
import java.awt.event.KeyEvent; import java.io.File; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.ListIterator; import java.util.Locale; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import model.PembelianDetail; import model.Pembelian; import model.Barang; import model.Supplier; 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 FormPembelian extends javax.swing.JFrame { /**
* Creates new form FormPembelian */
String kondisi = ""; String no_pembelian = "";
Pembelian pembelian = new Pembelian();
PembelianDetail detailpembelian = new PembelianDetail(); Barang barang = new Barang();
Supplier supplier = new Supplier();
NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("id", "ID"));
DefaultTableModel tabelPembelianModel = null; DefaultTableModel tabelDetailModel = null; 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);
tabelPembelianModel = (DefaultTableModel) tblpembelian.getModel(); tabelDetailModel = (DefaultTableModel) tbldetail.getModel();
tblpembelian.getTableHeader().setFont(new Font("Calibri Light", 1, 16)); tblpembelian.setRowHeight(27);
DefaultTableCellRenderer rataKanan = new DefaultTableCellRenderer(); rataKanan.setHorizontalAlignment(JLabel.RIGHT);
tbldetail.getColumnModel().getColumn(3).setCellRenderer(rataKanan); tbldetail.getColumnModel().getColumn(4).setCellRenderer(rataKanan); tblpembelian.getColumnModel().getColumn(7).setCellRenderer(rataKanan); tblpembelian.getColumnModel().getColumn(8).setCellRenderer(rataKanan); tbldetail.getTableHeader().setFont(new Font("Calibri Light", 1, 16));
tbldetail.setRowHeight(27); setLocation(x, y); daftarPembelian(); daftarSupplier(); bersihInputan(); aktifNonaktif(); MyTab.setSelectedIndex(1); }
private void aktifNonaktif() {
btntambah.setEnabled("".equals(this.kondisi)); btnsimpan.setEnabled(!"".equals(this.kondisi)); btnbatal.setEnabled(!"".equals(this.kondisi)); btncari.setEnabled("".equals(this.kondisi));
btncetak.setEnabled("".equals(this.kondisi) && !"".equals(this.no_pembelian)); tkode_barang.setEnabled(!"".equals(this.kondisi)); tjumlah_beli.setEnabled(!"".equals(this.kondisi)); btntambah_item.setEnabled(!"".equals(this.kondisi) && !"".equals(tharga_barang.getText())); MyTab.setEnabledAt(0, !"".equals(this.kondisi)); MyTab.setEnabledAt(1, "".equals(this.kondisi)); }
private void bersihInputan() { tno_pembelian.setText("");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); ttanggal_pembelian.setText(sdf.format(new java.util.Date())); talamat.setText(""); tkode_barang.setText(""); tnama_barang.setText(""); tharga_barang.setText(""); tjumlah_beli.setText(""); ttotal_beli.setText(""); tabelDetailModel.getDataVector().removeAllElements(); }
private void daftarPembelian() {
List<Pembelian> listPembelian = pembelian.daftarPembelian(); System.out.println(pembelian.getPesan_error()); ListIterator li = listPembelian.listIterator(); tabelPembelianModel.setRowCount(0); tblpembelian.repaint(); String No = ""; double total = 0; while (li.hasNext()) {
Pembelian pmb = (Pembelian) li.next();
supplier = supplier.cariKodeSupplier(pmb.getKode_supplier()); List<PembelianDetail> listDetail =
detailpembelian.daftarDetailPembelian(pmb.getNo_pembelian()); ListIterator lIterator = listDetail.listIterator();
Object[] data = null;
while (lIterator.hasNext()) {
PembelianDetail dtl = (PembelianDetail) lIterator.next();
Barang brg = new Barang().cariKodeBarang(dtl.getKode_barang()); if (No.equalsIgnoreCase(pmb.getNo_pembelian())) { Object[] jdata = { "", "", "", "", dtl.getKode_barang(), brg.getMerk() + " " + brg.getUkuran_barang(), dtl.getJumlah_beli(), nf.format(dtl.getHarga_beli()), nf.format(dtl.getHarga_beli() * dtl.getJumlah_beli()) }; data = jdata; } else { Object[] jdata = {
pmb.getNo_pembelian(), pmb.getTanggal_pembelian(), pmb.getKode_supplier(), supplier.getNama_supplier(), dtl.getKode_barang(), brg.getMerk() + " " + brg.getUkuran_barang(), dtl.getJumlah_beli(), nf.format(dtl.getHarga_beli()), nf.format(dtl.getHarga_beli() * dtl.getJumlah_beli()) }; data = jdata; }
total += dtl.getHarga_beli() * dtl.getJumlah_beli(); tabelPembelianModel.addRow(data); No = pmb.getNo_pembelian(); } } Object[] jdata = { "", "", "", "", "", "", "", "<html><b>T O T A L</b></html>", "<html><b>" + nf.format(total) + "</b></html>" }; tabelPembelianModel.addRow(jdata); }
private void daftarPembelian(Date tgl1, Date tgl2) {
List<Pembelian> listPembelian = pembelian.cariPembelianPeriode(new java.sql.Date(tgl1.getTime()), new java.sql.Date(tgl2.getTime()));
ListIterator li = listPembelian.listIterator(); tabelPembelianModel.setRowCount(0); tblpembelian.repaint(); String No = ""; double total = 0; while (li.hasNext()) {
Pembelian pmb = (Pembelian) li.next();
supplier = supplier.cariKodeSupplier(pmb.getKode_supplier()); List<PembelianDetail> listDetail =
detailpembelian.daftarDetailPembelian(pmb.getNo_pembelian()); ListIterator lIterator = listDetail.listIterator();
Object[] data = null;
while (lIterator.hasNext()) {
PembelianDetail dtl = (PembelianDetail) lIterator.next();
Barang brg = new Barang().cariKodeBarang(dtl.getKode_barang()); if (No.equalsIgnoreCase(pmb.getNo_pembelian())) { Object[] jdata = { "", "", "", "", dtl.getKode_barang(), brg.getMerk() + " " + brg.getUkuran_barang(), dtl.getJumlah_beli(), nf.format(dtl.getHarga_beli()), nf.format(dtl.getHarga_beli() * dtl.getJumlah_beli()) }; data = jdata; } else { Object[] jdata = { pmb.getNo_pembelian(), pmb.getTanggal_pembelian(), pmb.getKode_supplier(), supplier.getNama_supplier(), dtl.getKode_barang(), brg.getMerk() + " " + brg.getUkuran_barang(), dtl.getJumlah_beli(), nf.format(dtl.getHarga_beli()), nf.format(dtl.getHarga_beli() * dtl.getJumlah_beli()) }; data = jdata; }
total += dtl.getHarga_beli() * dtl.getJumlah_beli(); tabelPembelianModel.addRow(data); No = pmb.getNo_pembelian(); } } Object[] jdata = { "", "", "", "", "", "", "", "<html><b>T O T A L</b></html>", "<html><b>" + nf.format(total) + "</b></html>" }; tabelPembelianModel.addRow(jdata);
}
private void bersihInputan2() { tkode_barang.setText(""); tnama_barang.setText(""); tharga_barang.setText(""); tjumlah_beli.setText(""); }
private void tambahItem() {
int i;
barang = barang.cariKodeBarang(tkode_barang.getText()); for (i = 0; i < tabelDetailModel.getRowCount(); i++) {
String kode = tabelDetailModel.getValueAt(i, 0).toString(); if (kode.equalsIgnoreCase(barang.getKode_barang())) { tabelPembelianModel.getDataVector().removeElementAt(i); break; } } Object[] data = { barang.getKode_barang(), tnama_barang.getText(), tjumlah_beli.getText(), nf.format(barang.getHarga_barang()), nf.format(barang.getHarga_barang() * Double.parseDouble(tjumlah_beli.getText())) }; tabelDetailModel.addRow(data); bersihInputan2(); no_pembelian = ""; aktifNonaktif(); tkode_barang.requestFocus(); }
private void hitungTotal() { double total = 0;
for (int i = 0; i < tabelDetailModel.getRowCount(); i++) { total += Double.parseDouble(tabelDetailModel.getValueAt(i, 4).toString().replace("Rp", "").replace(",00", "").replace(".", "")); System.out.println(total);
}
ttotal_beli.setText(nf.format(total)); }
private void cariBarang() {
NumberFormat number = new DecimalFormat("#"); if (!"".equals(tkode_barang.getText())) { barang = barang.cariKodeBarang(tkode_barang.getText()); if (barang.getNama_barang() == null) { bersihInputan2(); tkode_barang.requestFocus(); } else { tnama_barang.setText(barang.getMerk() + " " + barang.getUkuran_barang()); tharga_barang.setText(number.format(barang.getHarga_barang())); tjumlah_beli.requestFocus(); } } else { bersihInputan2(); tkode_barang.requestFocus(); } aktifNonaktif(); }
private void daftarSupplier() {
List<Supplier> ls = supplier.daftarSupplier(); ListIterator<Supplier> li = ls.listIterator(); tsupplier.removeAllItems(); tsupplier.addItem(""); while (li.hasNext()) { supplier = li.next(); tsupplier.addItem(supplier.getKode_supplier() + "-" + supplier.getNama_supplier()); } }
private void btncariActionPerformed(java.awt.event.ActionEvent evt) { if (tgl1.getDate() == null || tgl2.getDate() == null) {
daftarPembelian(); } else {
daftarPembelian(tgl1.getDate(), tgl2.getDate()); }
}
private void tbldetailMouseClicked(java.awt.event.MouseEvent evt) {
}
private void tbldetailKeyPressed(java.awt.event.KeyEvent evt) { if (evt.getKeyCode() == KeyEvent.VK_DELETE) {
tabelDetailModel.removeRow(row); tbldetail.repaint();
hitungTotal(); }
}
private void btntambahActionPerformed(java.awt.event.ActionEvent evt) { this.kondisi = "Tambah"; this.no_pembelian = ""; bersihInputan(); aktifNonaktif(); tno_pembelian.setText(pembelian.noPembelianOtomatis()); tkode_barang.requestFocus(); MyTab.setSelectedIndex(0); }
private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) { if ("".equals(talamat.getText().trim())) {
JOptionPane.showMessageDialog(rootPane, "Mohon isi data supplier dahulu", "Galat", JOptionPane.ERROR_MESSAGE);
return; }
if (tabelPembelianModel.getRowCount() == 0) {
JOptionPane.showMessageDialog(rootPane, "Belum ada barang yang dipilih", "Galat", JOptionPane.ERROR_MESSAGE);
return; }
String[] suppl = tsupplier.getSelectedItem().toString().split("-"); pembelian.setNo_pembelian(tno_pembelian.getText());
java.sql.Date sdate = new java.sql.Date(new java.util.Date().getTime()); pembelian.setTanggal_pembelian(sdate); pembelian.setKode_supplier(suppl[0]); pembelian.setTotal_pembelian(Double.parseDouble(ttotal_beli.getText().replace("R p", "").replace(".", "").replace(",00", ""))); pembelian.setId_pengguna(Pt_Giri_Cilik_Sejahtera.id_pengguna); pembelian.tambahPembelian();
for (int i = 0; i < tabelDetailModel.getRowCount(); i++) { String kode = tabelDetailModel.getValueAt(i, 0).toString();
double harga = Double.parseDouble(tabelDetailModel.getValueAt(i, 3).toString().replace("Rp", "").replace(".", "").replace(",00", ""));
int jml = Integer.parseInt(tabelDetailModel.getValueAt(i, 2).toString()); detailpembelian.setNo_pembelian(tno_pembelian.getText());