BAB III PEMBAHASAN...27 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Dalam bab ini penulis...
Transcript of BAB III PEMBAHASAN...27 BAB III PEMBAHASAN 3.1. Tinjauan Perusahaan Dalam bab ini penulis...
27
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
Dalam bab ini penulis menjelaskan tentang sejarah perusahaan dan struktur
organisasi dan fungsi yang telah penulis riset untuk menbuat laporan Tugas Akhir
ini. Adapun tinjauan perusahaan yang ada pada Koperasi Wanita Patra Cilacap
adalah sebagai berikut:
3.1.1. Sejarah Perusahaan
Koperasi Wanita Patra Cilacap merupakan koperasi dengan jenis simpan
pinjam dan serba usaha yang berkedudukan di Jalan Ir. H. Juanda Komplek
Perumahan Pertamina Gunung Simping, Kabupaten Cilacap, Provinsi Jawa Tengah.
Pada pertengahan tahun 1983 Ny. M.J. Pitono Ketua Dharma Wanita Pertamina
Cilacap mendirikan Koperasi Wanita Patra Cilacap sebagai perkumpulan keluarga
karyawan, pensiunan Pertamina UP IV Cilacap dalam rangka mendukung
kesejahteraan keluarga.
Berbagai persiapan dilakukan sehingga pada tanggal 1 Maret 1984 Koperasi
Wanita Patra resmi berdiri. Badan hukum diperoleh pada tanggal 23 Januari 1985
yang disahkan oleh Kantor Wilayah Departemen Koperasi Jawa Tengah dengan
nomor Badan Hukum 10244b/BH/VI/85. Kemudian pada tanggal 23 Desember 1989
dengan adanya penambahan Anggaran Dasar, Koperasi Wanita Patra memperoleh
Badan Hukum baru 1024.a/BH/VI dan kembali mengalami perubahan Anggaran
dasar pada tanggal 30 Oktober 1996 dengan nomor Badan Hukum baru
10244b/BH/PAD/KWK.11/X/96.
28
3.1.2. Struktur Organisasi dan Fungsi
Berikut ini struktur organisasi sebagai suatu kerangka yang mewujudkan
suatu pola tetapi dari hubungan antara kedudukan dan peranan dalam suatu
kerjasama. Berikut ini adalah struktur organisasi yang terdapat di Koperasi Wanita
Patra Cilacap.
Sumber : Koperasi Wanita Patra Cilacap (2019)
Gambar III.1
Struktur Organisasi Koperasi Wanita Patra Cilacap
PENGURUS
Ketua
Iis Komalasari
Wakil Ketua
Rina Krisnayana
Sekretaris
Renni Endah Whijayanti
Bendahara I
Devi Hikmah Sari
Bendahara II
Sofiyah
Manajer Utama
Giyarti
Manajer USP
Istikharoh Sekretaris Pegawai
Ratna Eri Paryati
Unit Retail
CH. Heni Puji R
Bagian Pinjaman USP
Sunartiyah
Bagian Pembukuan
Emi Purwati Nur I
Teller
Amy
Kuswandari
Syarifah
Ainie
Islamia
A.S.
Unit BPW
Marfungi
Adi Setiawan
Office Boy
Ahmad Junaedi
Bagian Checking
Sustinah
29
Berikut ini merupakan fungsi dari tiap-tiap bagian pada Koperasi Wanita Patra
Cilacap:
1. Ketua
a. Memimpin, mengkoordinir, dan mengontrol jalannya aktifitas koperasi dan
bagian-bagian yang ada di dalamnya
b. Mengambil keputusan atas hal-hal yang dianggap penting bagi kelancaran
kegiatan koperasi
c. Memimpin rapat anggota tahunan dan melaporkan laporan pertanggung
jawaban akhir tahun pada anggota.
2. Wakil Ketua
a. Melaksanakan tugas ketua apabila berhalangan.
b. Membina dan mengawasi bidang organisasi dan administrasi.
c. Memberikan pengarahan dan pengawasan terhadap pelaksanaan rencana kerja
yang telah digariskan.
3. Sekretaris
a. Menyelenggarakan dan memelihara tata organisasi, buku organisasi dan
berbagai jenis arsip.
b. Merencanakan kegiatan operasional, bidang ideal meliputi program pendidikan,
penyuluhan, pengembangan usaha dan sebagainya.
c. Memelihara tata kerja, merencanakan peraturan khusus serta ketentuan
organisasi yang lain
4. Bendahara I
a. Mempersiapkan data dan informasi keuangan dalam rangka menyusun
laporan organisasi baik untuk RAT maupun pada pihak-pihak yang
diperlukan.
30
b. Merencanakan anggaran pendapatan dan belanja koperasi.
c. Membimbing dan mengawasi perjalanan operasional bidang keuangan dan
administrasi barang.
5. Bendahara II
a. Mengatur, mengawasi segala pengeluaran (biaya) agar tidak melampaui
anggaran yang telah ditetapkan.
b. Melakukan pemeriksaan secara langsung jumlah uang kas dan persediaan
barang atas kesesuaianya dengan catatan.
c. Mengambil langkah pengamanan tertentu dalam rangka pencegahan atas
kerugian koperasi.
6. Manager Utama
a. Melaporkan semua kegiatan, bertanggungjawab dan membuat laporan
kegiatan koperasi secara berkala
b. Menyelesaikan permasalahan yang timbul yang berhubungan dengan masalah
administrasi keuangan, usaha, anggota dan karyawan
c. Memberi persetujuan pinjaman barang dan menjalankan kegiatan-kegiatan
dalam pelayanan BPW
7. Manager USP (Unit Simpan Pinjam)
a. Mengecek pumbukuan USP (Memorial USP, Simpanan Berjangka, dan
Simpanan Pendidikan)
b. Memberi persetujuan pinjaman uang
c. Membuat laporan bulanan USP secara berkala
d. Menggantikan Manager Utama apabila tidak di tempat
8. Sekretaris Karyawan
a. Menyiapkan Daftar Gaji Karyawan, Honor Pengurus dan Pengawas
31
b. Melaksanakan tugas tambahan yang diberikan atasan
c. Surat-menyurat, mengarsip surat masuk dan keluar, serta dokumen-dokumen
koperasi
9. Bagian Pembukuan
a. Harian kas, harian memo sampai dengan neraca dan perhitungan sisa hasil
usaha
b. Mencocokan kas kasir dengan kas akuntansi tiap akhir bulan
c. Mencocokakan transaksi harian antara file anggota dengan kartu anggota
dikomputer
10. Bagian Checking
a. Mencocokan slip setoran dan slip penarikan dengan file anggota
b. Merekap transaksi harian setiap hari selama sebulan
c. Merekap transaksi bulanan akuntansi
11. Bagian Pinjaman USP
a. Menerima formulir permohonan pinjaman anggota
b. Melayani administrasi pinjaman
c. Menghitung dan melaksanakan penagihan bagi anggota yang menunggak
12. Unit Retail
a. Melayani pinjaman barang dan administrasi barang
b. Melakukan pencatatan pada buku persediaan dan buku hutang
c. Menghitung jasa persediaan barang dengan bagian pembukuan
d. Melaksanakan stock control
13. Teller
a. Melayani anggota
b. Melayani pendaftaran anggota baru
32
c. Membuat daftar simpanan wajib anggota
d. Mencatat buku kas kasir dan mencocokannya dengan bagian pembukuan
e. Memasukan pendapatan BPW
14. Unit BPW (Biro Perjalanan Wisata)
a. Menawarkan paket-paket tour dalam dan luar negeri
b. Melayani dan memasarkan ticketing
c. Mencari dan menawarkan info tentang pariwisata
15. Office Boy
a. Melaksanakan tugas kebersihan dan kerapihan kantor
b. Melaksanakan tugas tambahan yang diberikan oleh atasan
c. Membantu mengatur barang-barang dagangan
3.2. Tinjauan Kasus
Didalam sebuah penelitian diperlukan sebuah kasus untuk mengungkap secara
jelas permasalahan yang terjadi pada perusahaan yang akan di teliti. Dalam kasus
Koperasi Wanita Patra Cilacap selama ini sebagian masih menggunakan sistem
pembukuan dengan cara yang sangat sederhana, oleh karenanya penulis mengambil
kasus dari permasalahan yang ada yaitu mengenai Rancang Bangun Sistem Informasi
Akuntansi Penjualan Barang Secara Kredit Pada Koperasi Wanita Patra Cilacap.
Berikut penulis akan menjelaskan tinjauan kasus pada perusahaan ini.
3.2.1. Proses Bisnis Sistem Berjalan
Setiap perusahaan memerlukan prosedur sistem agar pekerjaan dapat
terlaksana dengan baik. Oleh karena itu prosedur sistem berjalan di Koperasi Wanita
Patra Cilacap yang berjalan terdapat beberapa proses sebagai berikut:
33
1. Proses pengajuan kredit
Anggota datang ke Koperasi Wanita Patra Cilacap mengajukan barang yang akan
dikredit ke bagian unit retail, lalu bagian unit retail mencatat data anggota dan
menanyakan berapa kali angsuran yang akan diambil. Kemudian bagian unit retail
menyerahkan surat pembiayaan barang, surat perjanjian kredit dan faktur
penjualan rangkap dua kepada anggota untuk melakukan tanda tangan.
2. Proses penyerahan barang
Bagian unit retail menyerahkan surat-surat tersebut kepada manager utama untuk
meminta tanda tangan tentang persetujuan anggota melakukan kredit. Setelah
disetujui oleh manager utama, maka anggota dapat membawa pulang barang
tersebut.
3. Proses pembayaran kredit
Anggota datang ke teller untuk melakukan pembayaran kredit sebelum ada jatuh
tempo. Jika melewati batas tempo maka akan mendapat denda. Anggota akan
membayar sesuai dengan harga dalam perjanjian kredit. Lalu teller akan
memberikan slip bukti pembayaran kepada anggota yang telah membayar.
4. Proses pencatatan laporan
Bagian unit retail menulis transaksi penjualan kedalam buku piutang , dan
membuat catatan di kartu catatan pembayaran kredit. Lalu bagian unit retail
memasukkan data anggota yang telah melakukan kredit selama sebulan. Lalu akan
membuat laporan bulanan penjualan kredit kepada atasan, yang nantinya akan
mendapat sebuah tanda tangan. Lalu kartu catatan pembayaran kredit dan faktur
penjualan rangkap 1 tersebut dimasukkan kedalam file anggota. Faktur penjualan
rangkap 2 akan disimpan oleh bagian unit retail sebagai berkas dalam penjualan
kredit.
34
3.2.2. Activity Diagram
Gambar III.2
Activity Diagram
35
3.2.3. Dokumen Masukan
1. Nama Dokumen : Surat Pembiayaan Barang
Fungsi : Sebagai rincian pembiayaan barang
Sumber : Bagian Unit Retail
Tujuan : Anggota
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap ada transaksi kredit barang
Bentuk : Lampiran A.1
2. Nama Dokumen : Surat Perjanjian Kredit
Fungsi : Sebagai bukti perjanjian kredit
Sumber : Bagian Unit Retail
Tujuan : Manager Retail
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap ada transaksi kredit barang
Bentuk : Lampiran A.2
3. Nama Dokumen : Faktur Penjualan
Fungsi : Sebagai bukti penjualan kredit
Sumber : Bagian Unit Retail
Tujuan : Manager Retail
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap ada transaksi kredit barang
Bentuk : Lampiran A.3
36
3.2.4. Dokumen Keluaran
1. Nama Dokumen : Slip Pembayaran
Fungsi : Sebagai Bukti Telah Melakukan Pembayaran
Sumber : Teller
Tujuan : Anggota
Jumlah : 1 Lembar
Frekuensi : Setiap Melakukan Pembayaran
Media : Kertas
Bentuk : Lampiran B.1
2. Nama Dokumen : Kartu Catatan Pembayaran Kredit
Fungsi : Sebagai catatan anggota yang melakukan kredit
Sumber : Bagian Unit Retail
Tujuan : Manager Utama
Jumlah : 1 Lembar
Frekuensi : Setiap Terjadinya Penjualan Kredit
Media : Kertas
Bentuk : Lampiran B.2
3.2.5. Permasalahan Pokok
Setelah penulis mempelajari dan mengamati sistem penjualan barang secara
kredit pada Koperasi Wanita Patra Cilacap, penulis melihat bahwa terdapat beberapa
masalah dalamnya. Diketahui bahwa Koperasi Wanita Patra Cilacap dalam
mengelola kegiatan penjualan barang sudah menggunakan komputer tetapi belum
seluruhnya terkomputerisasi. Adapun permasalahan yang terjadi pada Koperasi
Wanita Patra Cilacap diantaranya :
37
1. Sistem yang digunakan masih dilakukan secara manual sehingga membutuhkan
waktu yang lama dalam pencarian data serta proses dalam penyajian laporan.
2. Adanya masalah dalam melihat sisa angsuran yang harus dibayar, karena
perhitungan dan pencatatan masih manual pada kartu catatan penjualan kredit
sehingga anggota tidak dapat dengan mudah melihat informasi sisa angsuran.
3. Adanya kemungkinan data yang hilang karena penyimpanan dokumen kurang
tertata rapi.
3.2.6. Pemecahan Masalah
Dari permasalahan yang dijelaskan diatas, maka diperlukan suatu solusi yang
dapat mengatasi permasalahan-permasalahan tersebut. Solusi yang dimaksud adalah
sistem yang terkomputerisasi keseluruhan sehingga tidak ada lagi dokumen yang
hilang atau rusak. Untuk itu penulis memberikan alternatif pemecahan masalah
kepada Koperasi Wanita Patra Cilacap antara lain :
1. Pengolahan data berupa database yang terkomputerisasi sehingga informasi yang
dihasilkan lebih efektif dan efesien.
2. Dengan sistem terkomputerisasi dapat mengurangi resiko kehilangan data akibat
hilang atau rusaknya dokumen yang disimpan.
3. Pembuatan program pada laporan-laporan yang berhubungan dengan sistem
penjualan barang secara kredit yang dihasilkan oleh aplikasi komputer seperti
Java Desktop.
3.3. Analisa Kebutuhan Software
Analisis kebutuhan software merupakan aktivitas awal dari siklus hidup
pengembangan perangkat lunak.
38
Berikut analisa kebutuhan software yang penulis rancang untuk Koperasi
Wanita Patra Cilacap:
3.3.1. Analisis Kebutuhan
Halaman Admin
A. Admin
A.1. Admin dapat melakukan login
A.2. Admin mengakses menu master
A.2.1. Admin mengelola data anggota
A.2.2.Admin mengelola data barang
A.3. Admin mengakses menu transaksi
A.3.1.Admin mengelola transaksi penjualan
A.3.2.Admin mengelola transaksi angsuran
A.4. Admin mengelola laporan penjualan
A.5. Admin mengelola laporan jurnal
Halaman Manager
B. Manager
B.1. Manager dapat melakukan login
B.2. Manager mengakses menu master
B.2.1. Manager mengelola data admin
B.3. Manager melihat laporan penjualan
B.4. Manager melihat laporan jurnal
39
3.3.2. Use Case Diagram
Use case diagram merupakan pemodelan untuk kelakuan (behavior) sistem
informasi yang akan dibuat. Use case mendeskripsikan sebuah interaksi antara satu
atau lebih aktor dengan sistem informasi yang akan dibuat. Diagram ini sangat
penting untuk mengorganisasi dan memodelkan perilaku suatu sistem yang
dibutuhkan serta diharapkan pengguna. Secara kasar, use case digunakan untuk
mengetahui fungsi apa saja yang ada di dalam sebuah sistem dan siapa saja yang
berhak menggunakan fungsi-fungsi tersebut.
Gambar III.3
Use Case Diagram
40
Tabel III.1
Deskripsi Use Case Diagram Menu Utama Admin
Tabel III.2
Deskripsi Use Case Diagram Menu Utama Manager
Use Case Narative Halaman Menu Utama Admin
Tujuan Admin dapat melihat data yang ada di dalam sistem
halaman menu utama
Deskripsi
Sistem ini memungkinkan aktor untuk masuk ke
halaman menu utama yang di dalam nya ada : menu
master, menu transaksi, menu jurnal dan menu laporan .
Skenario utama
Aktor Admin
Kondisi Awal Aktor membuka aplikasi halaman menu utama
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu
master
Sistem ini akan menampilkan informasi menu master,
yang didalamnya ada : data anggota, data barang.
2. Aktor memilih menu
transaksi
Sistem ini akan menampilkan informasi menu transaksi,
yang didalamnya ada : transaksi penjualan dan transaksi
angsuran.
3. Aktor memilih menu
jurnal
Sistem ini akan menampilkan informasi menu jurnal,
yang didalamnya ada: laporanjurnal
4. Aktor memilih menu
laporan
Sistem ini akan menampilkan informasi menu laporan,
yang didalamnya ada: laporan penjualan
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan
apa yang diinginkan
Use Case Narative Halaman Menu Utama Manager
Tujuan Admin dapat melihat data yang ada di dalam sistem
halaman menu utama
Deskripsi
Sistem ini memungkinkan aktor untuk masuk ke
halaman menu utama yang di dalam nya ada: menu
master, menu transaksi, menu jurnal dan menu laporan .
Skenario utama
Aktor Manager
Kondisi Awal Aktor membuka aplikasi halaman menu utama
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu
master
Sistem ini akan menampilkan informasi menu master,
yang didalamnya ada : data admin.
41
Tabel III.3
Deskripsi Use Case Diagram Halaman Menu Master
2. Aktor memilih menu
jurnal
Sistem ini akan menampilkan informasi menu jurnal,
yang didalamnya ada: laporan jurnal
3. Aktor memilih menu
laporan
Sistem ini akan menampilkan informasi menu laporan,
yang didalamnya ada: laporan penjualan
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan
apa yang diinginkan
Use Case Narative Halaman Menu Master
Tujuan Admin dapat melihat data yang ada di dalam sistem
halaman menu master
Deskripsi
Sistem ini memungkinkan aktor untuk masuk ke halaman
menu master yang di dalam nya ada : data anggota, data
admin, dan data barang .
Skenario utama
Aktor Admin dan Manager
Kondisi Awal Aktor membuka aplikasi halaman menu master
Aksi Aktor Reaksi Sistem
1. Aktor memilih
data anggota
Sistem ini akan menampilkan informasi data anggota,
dimana aktor dapat mencari, mengedit, mengupdate,
menyimpan, mencetak, menambah, menghapus dan
membatalkan data anggota
2. Aktor memilih
data barang
Sistem ini akan menampilkan informasi data barang,
dimana aktor dapat mencari, mengedit, mengupdate,
menyimpan, mencetak, menambah, menghapus dan
membatalkan data barang
2. Aktor memilih
data admin
Sistem ini akan menampilkan informasi data admin,
dimana aktor dapat mencari, mengedit, mengupdate,
menyimpan, menambah, menghapus dan
membatalkan data admin
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan apa
yang diinginkan
42
Tabel III.4
Deskripsi Use Case Diagram Halaman Menu Transaksi
Use Case Narative Halaman Menu Transaksi
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman menu transaksi
Deskripsi
Sistem ini memungkinkan aktor untuk masuk ke
halaman menu transaksi yang di dalam nya ada :
transaksi penjualan dan transaksi angsuran.
Skenario utama
Aktor Admin
Kondisi Awal Aktor membuka aplikasi halaman menu transaksi
Aksi Aktor Reaksi Sistem
1. Aktor memilih
transaksi penjualan.
Sistem ini akan menampilkan informasi data
penerimaan pesanan, dimana aktor dapat mencari,
mengedit, mengupdate, menyimpan, mencetak,
menambah, menghapus dan membatalkan
transaksi penjualan.
2. Aktor memilih
transaksi angsuran
Sistem ini akan menampilkan informasi data
pembayaran, dimana aktor dapat mencari,
mengedit, mengupdate, menyimpan, mencetak,
menambah, menghapus dan membatalkan transaksi
angsuran
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan
apa yang diinginkan
43
Tabel III.5
Deskripsi Use case Halaman Menu Jurnal
Tabel III.6
Deskripsi Use case Halaman Menu Laporan
Use Case Narative Halaman Menu Jurnal
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman menu jurnal
Deskripsi Sistem ini memungkinkan aktor untuk masuk ke
halaman menu jurnal yang di dalam nya ada :
data perkiraan dan data jurnal.
Skenario utama
Aktor Admin dan Manager
Kondisi Awal Aktor membuka aplikasi halaman menu jurnal
Aksi Aktor Reaksi Sistem
Aktor memilih data
jurnal
Sistem ini akan menampilkan informasi data jurnal,
dimana aktor dapat mencari berdasarkan tanggal, dapat
mencetak dan membatalkan laporan jurnal.
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan
apa yang diinginkan
Use Case Narative Halaman Menu Laporan
Tujuan Admin dapat melihat data yang ada di dalam sistem
halaman menu laporan
Deskripsi Sistem ini memungkinkan aktor untuk masuk ke
halaman menu laporan yang di dalam nya ada : data
laporan penjualan dan data laporan jurnal
Skenario utama
Aktor Admin dan Manager
Kondisi Awal Aktor membuka aplikasi halaman menu laporan
Aksi Aktor Reaksi Sistem
Aktor memilih data
laporan penjualan
Sistem ini akan menampilkan informasi data laporan
penjualan, dimana aktor dapat mencari berdasarkan
tanggal, dapat mencetak dan membatalkan data laporan
penjualan.
Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan
apa yang diinginkan
44
3.3.3. Activity Diagram
Activity Diagram adalah suatu diagram menunjukkan sebuah alir kerja atau
aktivitas yang ada didalam sistem pada sebuah perangkat lunak. Diagram ini
terutama penting dalam pemodelan fungsi-fungsi suatu sistem dan memberi tekanan
pada aliran kendali antar objek. Yang perlu diperhatikan yaitu diagram aktivitas
bukan menggambarkan aktivitas sistem yang dilakukan aktor, tetapi menggambarkan
aktivitas yang dapat dilakukan oleh sistem.
1. Activity mengakses Login
Gambar III.4
Activity Diagram Login
2. Activity Diagram Mengelola Data Barang
Gambar III.5
Activity Diagram Data Barang
46
3. Activity Diagram Mengelola Data Anggota
Gambar III.6
Activity Diagram Data Anggota
47
4. Activity Diagram Mengelola Data Admin
Gambar III.7
Activity Diagram Data Admin
48
5. Activity Diagram Mengelola Transaksi Penjualan
Gambar III.8
Activity Diagram Transaksi Penjualan
49
6. Activity Diagram Mengelola Transaksi Angsuran
Gambar III.9
Activity Diagram Transaksi Angsuran
50
7. Activity Diagram Mengelola Jurnal
Gambar III.10
Activity Diagram Jurnal
51
8. Activity Diagram Mengelola Laporan
Gambar III.11
Activity Diagram Laporan
52
3.4. Desain
Desain adalah proses perencanaan atau perancangan suatu objek yang
bertujuan agar objek yang diciptakan memiliki fungsi, memiliki nilai keindahan, dan
berguna bagi manusia.
3.4.1. Entity Relationship Diagram (ERD)
grand_total JualDetail Jual Anggota
Barang
Angsuran
berisi
berisimelakukan
menghasilkan
menghasilkan
kode_barang
nama_barang
merk
stok_barang
ukuran
kode_barang
kode_jual total
jumlah_belikode_anggota
kode_jual
tgl
total
marginjml_angsr
kode_barang
harga
qty
tenor
nama_barang
jml_angsr
nofak
total_angsr
tgl
kode_angsr
Jurnal
nama_anggota
no_hp
alamat_anggota
kode_anggota
jabatan
nm_akun
tanggal
kd_akun
id_transaksikredit
no_jurnaldebit
nofak
Admin
password
hak_akses
username
1
1 1 1
1
1
1
M
1
M
Gambar III.12
Entity Relationship Diagram (ERD)
53
3.4.2. Logical Record Structure (LRS)
barang
anggota
detail_jual
kode_barang *nama_barang
hargastok_barang
ukuranmerk
kode_anggota *nama_anggotakode_jabatan
alamat_anggotano_hp
no_fak *kode_jual **
kode_anggota **kode_barang **
nama_barangharga
tgl grand_total
totalmargin
jml_angsrmargintenor
kode_jual *kode_barang **
jumlah_beliTotal
jual
kode_angsr *kode_jual **
kode_anggota **tgl **
jumlah_beli **jml_angsr **total_angsr
angsuran
jurnal
no_fak ** kode_angsr
tgljml_angsr
total_angsr
admin
id* usernamepasswordhak_akses
no_fak **no_jurnal
id_transaksi kd_akuntanggal
nm_akundebitkredit
1
11
1
1
1
1
1
M
M
Gambar III.13
Logical Record Structure (LRS)
54
3.4.3. Spesifikasi File
Spesifikasi file adalah format yang diperlukan dan harus diikuti dalam rangka
untuk data file yang akan diproses. Berikut spesifikasi file yang terdapat pada
program yang telah dirancang penulis untuk Koperasi Wanita Patra Cilacap:
1. Spesifikasi File Data Barang
Nama File : Data Barang
Fungsi File : Sebagai Informasi Data Barang
Tipe File : File Master
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 87 Karakter
Kunci Field : kode_barang
Tabel III.7
Spesifikasi File Data Barang
No. Elemen Data Akronim Jenis Lebar Keterangan
1 Kode Barang kode_barang Integer 11 Primary Key
2 Nama Barang nama_barang Varchar 30
3 Harga Harga Double -
4 Stok Barang stok_barang Integer 11
5 Ukuran Ukuran Varchar 10
6 Merk Merk Varchar 25
55
2. Spesifikasi File Data Admin
Nama File : Admin
Fungsi File : Sebagai awal masuk menu utama
Tipe File : File Master
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 65 Karakter
Kunci Field : id
Tabel III.8
Spesifikasi File Data Admin
3. Spesifikasi File Data Anggota
Nama File : Data Anggota
Fungsi File : Sebagai Informasi Data Anggota
Tipe File : File Master
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 102 Karakter
Kunci Field : kode_anggota
No. Elemen Data Akronim Jenis Lebar Keterangan
1 Username Username Varchar 25 Primary Key
2 Password Password Varchar 20
3 Hak Akses hak_akses Varchar 20
56
Tabel III.9
Spesifikasi File Data Anggota
4. Spesifikasi File Detail Jual
Nama File : Transaksi Penjualan
Fungsi File : Sebagai Informasi Detail Jual
Tipe File : File Transaksi
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 116 Karakter
Kunci Field : kode_jual
Tabel III.10
Spesifikasi File Transaksi Penjualan
No. Elemen Data Akronim Jenis Lebar Keterangan
1 Kode Anggota kode_ anggota Integer 11 Primary Key
2 Nama Anggota nama_anggota Varchar 30
3 Kode Jabatan kode_jabatan Varchar 11
4 Alamat Anggota alamat_anggota Varchar 35
5 No Hp Ukuran Integer 15
No. Elemen Data Akronim Jenis Lebar Keterangan
1 No Faktur no_fak Integer 11 Primary Key
2 Kode Jual kode_ jual Integer 20 Foreign Key
3 Tanggal Tgl Date -
4 Kode Anggota kode_anggota Integer 11 Foreign Key
5 Kode Barang kode_barang Integer 11 Foreign Key
6 Nama Barang nama_barang Varchar 30
7 Harga Harga Double -
8 Qty Qty Integer 11
9 Total Total Double -
57
5. Spesifikasi File Transaksi Angsuran
Nama File : Transaksi Angsuran
Fungsi File : Sebagai Informasi Transaksi Angsuran
Tipe File : File Transaksi
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 135 Karakter
Kunci Field : kode_angsuran
Tabel III.11
Spesifikasi File Transaksi Angsuran
6. Spesifikasi File Jual
Nama File : Transaksi Penjualan
Fungsi File : Sebagai Informasi Transaksi Penjualan
10 Tenor Tenor Integer 11
11 Jumlah
Angsuran
jml_angsr Integer 11
12 Margin Margin Double -
13 Grand Total grand_total Double -
No. Elemen
Data
Akronim Jenis Lebar Keterangan
1 No Faktur no_fak Integer 15 Foreign Key
2 Tanggal Tgl Date -
3 Jumlah Beli Jumlah_beli Integer 30
4 Jumlah
Angsuran
jml_angsr Integer 30
5 Total
Angsuran
total_angsr Integer 30
58
Tipe File : File Transaksi
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 15
Kunci Field : kode_jual
Tabel III.12
Spesifikasi File Jual
7. Spesifikasi File Jurnal
Nama File : Jurnal
Fungsi File : Sebagai Informasi Jurnal
Tipe File : File Transaksi
Organisasi File : Index Sequential
Akses File : Random
Media : Hardisk
Panjang Record : 87
Kunci Field : id
Tabel III.13
Spesifikasi File Jurnal
No. Elemen Data Akronim Jenis Lebar Keterangan
1 Kode Jual kode_jual Integer 15 Primary Key
2 Tanggal Tanggal Date -
3 Total Total Double -
No. Elemen Data Akronim Jenis Lebar Keterangan
1 No Faktur no_faktur Integer 11 Foreign Key
59
3.4.4. Sequence Diagram
Gambar III.14
Sequence Diagram
2 No Jurnal Tanggal Varchar 15
3 Id Transaksi Total Varchar 15
4 Kode Akun kd_akun Integer 11
5 Tanggal Tanggal Date
6 Nama Akun nm_akun Varchar 35
7 Debit Debit Double
8 Kredit Kredit Double
60
3.4.5. Deployment Diagram
Gambar III.15
Deployment Diagram
3.4.6. User Interface
User interface adalah bagian visual dari website, aplikasi software atau device
hardware yang memastikan bagaimana seorang user berinteraksi dengan aplikasi atau
website tersebut serta bagaimana informasi ditampilan di layarnya.
1. Login
Gambar III.16
User Interface Form Login
61
2. Data Barang
Gambar III.17
User Interface Form Data Barang
3. Data Anggota
Gambar III.18
User Interface Form Data Anggota
62
4. Transaksi Penjualan
Gambar III.19
User Interface Form Transaksi Penjualan
5. Transaksi Angsuran
Gambar III.20
User Interface Form Transaksi Angsuran
63
6. Data Admin
Gambar III.21
User Interface Form Data Admin
7. Tampilan Menu
Gambar III.22
User Interface Form Tampilan Menu
64
3.5. Implementasi
Implementasi adalah suatu penerapan atau tindakan yang dilakukan
berdasarkan rencana yang telah disusun atau dibuat dengan cermat dan terperinci
sebelumnya. Berikut merupakan implementasi dari program yang penulis rancang
untuk Koperasi Wanita Patra Cilacap:
3.5.1. Code Generation
Code Generation adalah sebuah program yang dibuat agar dapat menghasilkan
instruksi atau kode program sesuai dengan kebutuhan pengguna dalam ruang
lingkup tertentu.
Form Transaksi Penjualan
package penjualankwp;
import java.awt.event.KeyEvent;
import java.io.File;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;
public class transaksipenjualan extends javax.swing.JFrame {
private DefaultTableModel model;
* Creates new form fakturpenjualan
public transaksipenjualan() {
initComponents();
nojur();
tblpesanan();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
txttgl.setText(dateFormat.format(cal.getTime()));
}
65
private void tblpesanan(){
model = new DefaultTableModel ();
model.addColumn("Tanggal");
model.addColumn("Kd Anggota");
model.addColumn("Kd Barang");
model.addColumn("Nama Barang");
model.addColumn("Harga");
model.addColumn("Qty");
model.addColumn("Total");
model.addColumn("Tenor");
model.addColumn("Jumlah Angsur");
model.addColumn("Margin");
model.addColumn("Grand Total");
try{
Connection con= koneksi.getKoneksi();
Statement st=con.createStatement();
String sql = "Select *from jual";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
model.addRow(new Object[]{
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6),
rs.getString(7),
rs.getString(8),
rs.getString(9),
rs.getString(10),
rs.getString(11),
rs.getString(12),
rs.getString(13),
//rs.getString(14),
});
}
jTable12.setModel(model);
jumlah();
}catch (Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
public String noanggota;
public String kdbrg;
public String nmbrg;
public String hargabrg;
public String getnoanggota(){
return noanggota;
}
public String getkdbrg(){
return kdbrg;
}
public String getnmbrg(){
return nmbrg;
}
public String gethargabrg(){
return hargabrg;
}
public String nojur(){
String urutan=null;
java.util.Date skrg = new java.util.Date();
java.text.SimpleDateFormat kal=new java.text.SimpleDateFormat("ddMMyy");
String tgl=(kal.format(skrg));
try{
Statement stat = (Statement) koneksi.getKoneksi().createStatement();
java.sql.ResultSet sql = stat.executeQuery("SELECT (right (no_jurnal,3)+1) as nomor FROM jurnal where
no_jurnal like '%"+tgl+"%' order by no_jurnal desc");
if(sql.next())
66
{
urutan=sql.getString(1);
while (urutan.length()<3)
urutan="0"+urutan;
urutan="J"+tgl+urutan;
}else
{
urutan="J"+tgl+"001";
}
txtnojurnal.setText(urutan);
}
catch(Exception e){
// JOptionPane.showMessageDialog(null,e);
}
return urutan;
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
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();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
txtnofak = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
txtnoang = new javax.swing.JTextField();
txtkdbrg = new javax.swing.JTextField();
txtmargin = new javax.swing.JTextField();
txttenor = new javax.swing.JTextField();
txtgrandtotal = new javax.swing.JTextField();
txtangsuran = new javax.swing.JTextField();
btnsimpan = new javax.swing.JButton();
btnbatal = new javax.swing.JButton();
txttgl = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTable12 = new javax.swing.JTable();
txthrgbrg = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
cariang = new javax.swing.JButton();
caribarang = new javax.swing.JButton();
txtnmbrg = new javax.swing.JTextField();
txtmrg = new javax.swing.JTextField();
apaaja = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
txtqty = new javax.swing.JTextField();
txttotal = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
apaaja1 = new javax.swing.JTextField();
btnadd = new javax.swing.JButton();
txtnojurnal = new javax.swing.JTextField();
txttootal = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jLabel1.setText("FAKTUR PENJUALAN");
getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 20, -1, -1));
67
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel2.setText("Tgl");
getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 80, -1, 20));
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel3.setText("No Faktur");
getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 80, -1, 20));
jLabel4.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel4.setText("Kode Barang");
getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 140, -1, 20));
getContentPane().add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(148, 274, -1, -1));
jLabel6.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel6.setText("No Anggota");
getContentPane().add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 110, -1, 20));
jLabel7.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel7.setText("Grand Total");
getContentPane().add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 320, -1, 20));
jLabel8.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel8.setText("Jumlah Angsuran");
getContentPane().add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 260, -1, 20));
jLabel9.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel9.setText("Margin");
getContentPane().add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 290, -1, 20));
txtnofak.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtnofak.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtnofakActionPerformed(evt);
}
});
getContentPane().add(txtnofak, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 80, 290, -1));
jLabel10.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel10.setText("Tenor");
getContentPane().add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 230, -1, 20));
txtnoang.setEditable(false);
txtnoang.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txtnoang, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 110, 250, -1));
txtkdbrg.setEditable(false);
txtkdbrg.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txtkdbrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 140, 250, -1));
txtmargin.setEditable(false);
txtmargin.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txtmargin, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 290, 290, -1));
txttenor.setEditable(false);
txttenor.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txttenor.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txttenorActionPerformed(evt);
}
});
getContentPane().add(txttenor, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 230, 130, -1));
txtgrandtotal.setEditable(false);
txtgrandtotal.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txtgrandtotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 320, 290, -1));
txtangsuran.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtangsuran.addKeyListener(new java.awt.event.KeyAdapter() {
68
public void keyReleased(java.awt.event.KeyEvent evt) {
txtangsuranKeyReleased(evt);
}
});
getContentPane().add(txtangsuran, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 260, 130, -1));
btnsimpan.setText("Simpan");
btnsimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnsimpanActionPerformed(evt);
}
});
getContentPane().add(btnsimpan, new org.netbeans.lib.awtextra.AbsoluteConstraints(490, 310, 80, 30));
btnbatal.setText("Batal");
btnbatal.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
btnbatal.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnbatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnbatalActionPerformed(evt);
}
});
getContentPane().add(btnbatal, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 310, 70, 30));
txttgl.setEditable(false);
txttgl.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txttgl.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txttglActionPerformed(evt);
}
});
getContentPane().add(txttgl, new org.netbeans.lib.awtextra.AbsoluteConstraints(520, 80, 130, 25));
jTable12.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable12);
getContentPane().add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 350, 610, 170));
txthrgbrg.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txthrgbrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 170, 290, -1));
jLabel11.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel11.setText("Harga Barang");
getContentPane().add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 170, -1, 20));
cariang.setText("carianggota");
cariang.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
cariang.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
cariang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cariangActionPerformed(evt);
}
});
getContentPane().add(cariang, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 110, 40, 25));
caribarang.setText("caribarang");
caribarang.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
caribarang.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
caribarang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
caribarangActionPerformed(evt);
}
});
getContentPane().add(caribarang, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 140, 40, 25));
69
txtnmbrg.setEditable(false);
txtnmbrg.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txtnmbrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 140, 100, -1));
txtmrg.setEditable(false);
txtmrg.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtmrg.setText("8.5");
getContentPane().add(txtmrg, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 140, 50, -1));
apaaja.setEditable(false);
apaaja.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(apaaja, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 140, 110, -1));
jLabel12.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel12.setText("Qty");
getContentPane().add(jLabel12, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 200, -1, 20));
txtqty.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtqty.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtqtyActionPerformed(evt);
}
});
txtqty.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
txtqtyKeyReleased(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
txtqtyKeyTyped(evt);
}
});
getContentPane().add(txtqty, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 200, 80, -1));
txttotal.setEditable(false);
txttotal.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txttotal, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 200, 140, -1));
jLabel13.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel13.setText("Total :");
getContentPane().add(jLabel13, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 200, 50, 20));
apaaja1.setEditable(false);
apaaja1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(apaaja1, new org.netbeans.lib.awtextra.AbsoluteConstraints(300, 140, 110, -1));
btnadd.setText("Add");
btnadd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnaddActionPerformed(evt);
}
});
getContentPane().add(btnadd, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 250, 60, 30));
txtnojurnal.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
txtnojurnal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtnojurnalActionPerformed(evt);
}
});
getContentPane().add(txtnojurnal, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 80, 40, -1));
txttootal.setEditable(false);
txttootal.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
getContentPane().add(txttootal, new org.netbeans.lib.awtextra.AbsoluteConstraints(430, 320, 20, -1));
jPanel1.setBackground(new java.awt.Color(0, 204, 204));
getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 690, 560));
setSize(new java.awt.Dimension(704, 597));
setLocationRelativeTo(null);
}// </editor-fold>
private void btnbatalActionPerformed(java.awt.event.ActionEvent evt) {
int ok= JOptionPane.showConfirmDialog(null, "Batalkan pemesanan ini ?",
"Konfirmasi",JOptionPane.OK_CANCEL_OPTION);
if(ok==0){
try {
Connection con =koneksi.getKoneksi();
70
con.createStatement().executeUpdate("DELETE FROM jual where kode_jual ='0'");
tblpesanan();
txtnofak.setText("");
//txttgl.setText("");
txtnoang.setText("");
txtkdbrg.setText("");
txtnmbrg.setText("");
txthrgbrg.setText("");
txtqty.setText("");
txttotal.setText("");
//txttenor.setText("");
txtangsuran.setText("");
txtmargin.setText("");
txtgrandtotal.setText("");
apaaja.setText("");
apaaja1.setText("");
//txttotal.setText("0");
//jButton1.setEnabled(true);
//btnsimpan.setEnabled(false);
//btnadd.setEnabled(false);
}catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
}
private void jumlah(){
int ttl=0;
int row=jTable12.getRowCount();
for(int a=0;a<jTable12.getRowCount();a++){
{
int sub= Integer.parseInt((String)jTable12.getValueAt(a, 10));
ttl+= sub;
}
txttootal.setText(Integer.toString(ttl));
}
}
private void txttglActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void btnsimpanActionPerformed(java.awt.event.ActionEvent evt) {
String row_txtkode = txtnofak.getText();
String row_txttgl = txttgl.getText();
String row_txtbayar = txttootal.getText();
String row_txtnojur = txtnojurnal.getText();
if(!"".equals(row_txttgl)){
try {
Statement stat = (Statement) koneksi.getKoneksi().createStatement();
stat.executeUpdate("INSERT INTO detail_jual(kode_jual, tgl, total) VALUES "
+ "('"+row_txtkode+"','" + row_txttgl + "', '" + row_txtbayar + "')");
JOptionPane.showMessageDialog(null, "Pesanan berhasil disimpan");
tblpesanan();
updatetransaksi();
stat.executeUpdate("INSERT INTO jurnal(id, no_jurnal, id_transaksi, kd_akun, tanggal, nm_akun,
debit, kredit) VALUES "
+ "('0', '" + row_txtnojur+ "', '" + row_txtkode+ "', '" +11100+ "', '" + row_txttgl + "', 'Kas',
'"+row_txtbayar+"', '" + 0+ "')");
nojur();
stat.executeUpdate("INSERT INTO jurnal(id, no_jurnal, id_transaksi, kd_akun, tanggal, nm_akun,
debit, kredit) VALUES "
+ "('0', '" + row_txtnojur + "', '" + row_txtkode+ "', '" +502+ "', '" + row_txttgl + "', 'Penjualan',
'"+0+"', '" + row_txtbayar+ "')");
try {
HashMap hash = new HashMap();
hash.put("notr", txtnofak.getText());
File file1 = new File("src/report/faktur.jrxml");
71
JasperDesign jasperDesign = JRXmlLoader.load(file1);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, hash, koneksi.getKoneksi());
JasperViewer.viewReport(jasperPrint, false);
}catch (JRException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
}
//this.dispose();
txtnofak.setText("");
txtnojurnal.setText("");
txttootal.setText("");
tblpesanan();
nojur();
}catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
}
}else{
JOptionPane.showMessageDialog(null, "Terdapat inputan yang kosong ! ","Kesalahan",
JOptionPane.WARNING_MESSAGE);
}
}
private void updatetransaksi(){
String txtnopsn = txtnofak.getText();
try {
Connection con = koneksi.getKoneksi();
Statement stm=con.createStatement();
stm.executeUpdate("UPDATE jual SET kode_jual='" + txtnopsn + "' WHERE kode_jual = '0'");
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
}
}
private void txtnofakActionPerformed(java.awt.event.ActionEvent evt) {
}
private void cariangActionPerformed(java.awt.event.ActionEvent evt) {
boolean closable = true;
cariAnggota a = new cariAnggota(this, rootPaneCheckingEnabled);
a.anggota=this;
a.setVisible(true);
if(!a.isVisible()){
txtnoang.setText(noanggota);
}
}
private void caribarangActionPerformed(java.awt.event.ActionEvent evt) {
boolean closable = true;
cariBarang a = new cariBarang(this, rootPaneCheckingEnabled);
a.barang=this;
a.setVisible(true);
if(!a.isVisible()){
txtkdbrg.setText(kdbrg);
txtnmbrg.setText(nmbrg);
txthrgbrg.setText(hargabrg);
}
}
private void zul(){
int total = Integer.parseInt(txttotal.getText());
double kali1=total*8.5;
int jumlahangsur= Integer.parseInt(txtangsuran.getText());
//isi margin = 1239580
int bagi=(int) (kali1/12*jumlahangsur/100);//isi margin jadi = 12.395
DecimalFormat kursindonesia=(DecimalFormat)DecimalFormat.getCurrencyInstance(Locale.JAPAN);
DecimalFormatSymbols formatrp= new DecimalFormatSymbols();
formatrp.setCurrencySymbol("");
formatrp.setMonetaryDecimalSeparator('.');
formatrp.setGroupingSeparator('.');
kursindonesia.setDecimalFormatSymbols(formatrp);
72
double margin = bagi;//isi margin = 12.395
String margin1= (kursindonesia.format(margin));
float c=(float) Math.ceil(Float.parseFloat(margin1));
int hasil=(int) (Math.ceil(c)*1000);//dibulatkan trus kali 1000
txtmargin.setText(String.valueOf(hasil));
}
private void sumawal(){
try {
double nilai1, nilai2, nilai3;
String Hasil;
nilai1=Double.valueOf(txttotal.getText());
nilai2=Double.valueOf(txtmrg.getText());
nilai3= nilai1 * nilai2;
Hasil=String.valueOf(Math.ceil(nilai3));
apaaja.setText((Hasil));
} catch (NumberFormatException e) {
}
}
private void sum2nd(){
try {
double nilai1, nilai2, nilai3;
String Hasil;
nilai1=Double.valueOf(apaaja.getText());
nilai2=Double.valueOf(txttenor.getText());
nilai3=(int) (nilai1 / nilai2);
Hasil=String.valueOf(Math.ceil(nilai3));
apaaja1.setText(Hasil);
} catch (NumberFormatException e) {
}
}
private void sum3rd(){
try {
double nilai1, nilai2;
double r =0.00000;
int decimalPlace = 3;
BigDecimal bd = new BigDecimal(r);
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
r = bd.doubleValue();
//String Hasil;
nilai1=Double.valueOf(apaaja1.getText());
nilai2=Double.valueOf(txtangsuran.getText());
r=nilai1 * nilai2;
txtmargin.setText(String.valueOf(Math.ceil(r)));
} catch (NumberFormatException e) {
}
}
private void txtangsuranKeyReleased(java.awt.event.KeyEvent evt) {
//sumawal();
//sum2nd();
// sum3rd();
zul();
try {
int qty=Integer.parseInt(txttotal.getText());
int harga=Integer.parseInt(txtmargin.getText());
int subtotal;
subtotal= qty + harga ;
txtgrandtotal.setText(String.valueOf(subtotal));
} catch (NumberFormatException e) {
}
}
private void txtqtyKeyReleased(java.awt.event.KeyEvent evt) {
try {
double nilai1;
double nilai2;
int nilai3;
73
String Hasil;
nilai1=Double.valueOf(txthrgbrg.getText());
nilai2=Double.valueOf(txtqty.getText());
nilai3=(int) (nilai1 * nilai2);
Hasil=String.valueOf(nilai3);
txttotal.setText(Hasil);
} catch (NumberFormatException e) {
}
}
private void txtqtyKeyTyped(java.awt.event.KeyEvent evt) {
char d = evt.getKeyChar();
if(d == KeyEvent.VK_ENTER){
txtangsuran.requestFocus();
evt.consume();
}
}
private void btnaddActionPerformed(java.awt.event.ActionEvent evt) {
if(txtqty.getText().equals("")){
}
else{
String txtno = txtnofak.getText();
String txttanggal = txttgl.getText();
String txtnoanggota = txtnoang.getText();
String row_txtkdbrg = txtkdbrg.getText();
String row_txtnmbrg = txtnmbrg.getText();
String row_txtharga = txthrgbrg.getText();
String row_txqty = txtqty.getText();
String row_txttotal = txttotal.getText();
String row_txttenor = txttenor.getText();
String row_txtjmlangsur = txtangsuran.getText();
String row_txtmargin = txtmargin.getText();
String row_txtgrandtotal = txtgrandtotal.getText();
if(!"".equals(row_txqty) && !"".equals(row_txtharga) && !"".equals(row_txtjmlangsur) &&
!"".equals(row_txtgrandtotal)){
try {
Connection con = koneksi.getKoneksi();
Statement stm=con.createStatement();
stm.executeUpdate("INSERT INTO jual(id, kode_jual, tgl, kode_anggota, kode_barang, nama_barang,
harga, qty, total, tenor, jml_angsr, margin, grand_total) VALUES "
+ "('0', '0', '" + txttanggal + "', '" + txtnoanggota + "', '" + row_txtkdbrg + "', '" + row_txtnmbrg + "', '"
+ row_txtharga + "', '" + row_txqty + "', '" + row_txttotal + "', '" + row_txttenor + "', '" + row_txtjmlangsur + "', '"
+ row_txtmargin + "', '" + row_txtgrandtotal + "')");
tblpesanan();
con.close();
//txtnofak.setText("");
//txttgl.setText("");
txtnoang.setText("");
txtkdbrg.setText("");
txtnmbrg.setText("");
txthrgbrg.setText("");
txtqty.setText("");
txttotal.setText("");
//txttenor.setText("");
txtangsuran.setText("");
txtmargin.setText("");
txtgrandtotal.setText("");
apaaja.setText("");
apaaja1.setText("");
//jButton1.setEnabled(false);
}catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error " + e);
}
}else{
74
JOptionPane.showMessageDialog(null, "Terdapat inputan yang kosong ! ","Kesalahan",
JOptionPane.WARNING_MESSAGE);
}
}
}
private void txtnojurnalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txtqtyActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void txttenorActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
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(transaksipenjualan.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(transaksipenjualan.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(transaksipenjualan.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(transaksipenjualan.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new transaksipenjualan().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTextField apaaja;
private javax.swing.JTextField apaaja1;
private javax.swing.JButton btnadd;
private javax.swing.JButton btnbatal;
private javax.swing.JButton btnsimpan;
private javax.swing.JButton cariang;
private javax.swing.JButton caribarang;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
75
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable12;
private javax.swing.JTextField txtangsuran;
private javax.swing.JTextField txtgrandtotal;
private javax.swing.JTextField txthrgbrg;
private javax.swing.JTextField txtkdbrg;
private javax.swing.JTextField txtmargin;
private javax.swing.JTextField txtmrg;
private javax.swing.JTextField txtnmbrg;
private javax.swing.JTextField txtnoang;
private javax.swing.JTextField txtnofak;
private javax.swing.JTextField txtnojurnal;
private javax.swing.JTextField txtqty;
private javax.swing.JTextField txttenor;
private javax.swing.JTextField txttgl;
private javax.swing.JTextField txttootal;
private javax.swing.JTextField txttotal;
// End of variables declaration
}
3.5.2. Black Box Testing
Black Box Testing adalah pengujian yang dilakukan hanya mengamati hasil
eksekusi melalui data uji dan cek fungsional perangkat lunak.
1. Blackbox Testing Login
Tabel III.14
Blackbox Testing Login
No
Skenario
pengujian
Test case Hasil yang
diharapkan
Hasil
pengujian
Kesimpulan
1. Nama user
dan password
tidak di isi
(kosong)
kemudian
klik tombol
login
Nama
user:
(kosong)
Passwor
d:
(kosong)
Sistem akan
menolak
akses dan
menampilka
n pesan
“Username
atau
password
belum
terdaftar”
Sesuai
harapan
Valid
2. Nama user
diisi dan
password
tidak di isi
(kosong)
kemudian
klik tombol
login
Nama
user : ade
(benar)
Password
: (kosong)
Sistem akan
menolak
akses dan
menampilka
n pesan
“Akses
ditolak”
Sesuai
harapan
Valid
76
3. Nama user
tidak diisi
(kosong) dan
password di
isi (kosong)
kemudian
klik tombol
login
Nama
user :
(kosong)
Password
: 1234
Sistem akan
menolak
akses dan
menampilka
n pesan
“Akses
ditolak ”
Sesuai
harapan
Valid
4. Mengetikkan
nama
username
dan password
dengan data
yang benar
kemudian
klik tombol
login
Nama user
: ade
(benar)
Password:
1234
(benar)
Sistem akan
menerima
akses login
dan akan
menampilkan
halaman
menu utama
Sesuai
harapan
Valid
2. Blackbox Testing Transaksi Penjualan
Tabel III.15
Blackbox Testing Transaksi Penjualan
No Skenario
Pengujian
Test Case Hasil Yang
Diharapkan
Hasil
Pengujian
Kesimpulan
1 Klik transaksi
kemudian no
faktur
penjualan tidak
diisi, klik
simpan
No Faktur
(kosong) ,
tanggal, kode
barang,
margin,tenor,
grand total,
jumlah
angsuran(teri
si)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Terdapat
inputan
kosong ”
Sesuai
harapan
Valid
2 Klik transaksi
kemudian kode
barang tidak
diisi, klik
simpan
Kode
barang(koson
g) , No
Faktur,
tanggal,
margin,tenor,
grand total,
jumlah
angsuran(teri
si)
Sistem akan
menolak
akses dan
menampilkan
pesan
“Terdapat
inputan
kosong ”
Sesuai
harapan
Valid
2 Klik transaksi
kemudian
tenor tidak
diisi, klik
Tenor
(kosong) ,No
Faktur,
tanggal,kode
Sistem akan
menolak
akses dan
menampilkan
Sesuai
harapan
Valid
77
simpan barang,margi
n ,grand
total, jumlah
angsuran
(terisi data)
pesan
“Terdapat
inputan
kosong ”
2 Klik transaksi
kemudian
mengisi semua
data transaksi
penjualan, klik
tombol simpan
No Faktur,
tanggal,kode
barang,margi
n,tenor,grand
total, jumlah
angsuran
(terisi data)
Sistem akan
menerima
akses dan
menampilkan
pesan “ Data
berhasil
disimpan”
Sesuai
harapan
Valid
3.5.3. Spesifikasi Hardware dan Software
Spesifikasi Hardware yang digunakan adalah perangkat keras yang dipakai
dalam menjalankan sebuah sistem yang terkomputerisasi.
Spesifikasi Software yang digunakan adalah perangkat lunak yang dipakai
berupa program-program yang nantinya dapat memberikan kemudahan dalam
pengelolaan data.
Tabel III.16
Spesifikasi Hardware dan Software
Kebutuhan
Hardware Keterangan
Sistem Windows 8
Processor Intel (R) Celeron (R) 2957U 1.40 GHz
RAM 2 GB
Hardisk 100 GB
Monitor 14” LED
Keyboard 108 Key
Printer Injection
Mouse Wireless USB
Software
Kebutuhan menjalankan aplikasi secara local :
Bahasa script programming : Java NetBeans IDE 8.1
Web Server : Apache 3.2
DBMS : MySQL
JDK (Java Development Kit) versi 1.8
Xampp Control Panel versi 3.2.1
Browser (Google Chrome)
78