bab iii pembahasan - repository.bsi.ac.id · transaksi pembiayaan sepeda motor honda, yaitu sekitar...
TRANSCRIPT
34
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
PT.Federal International Finance (FIF) adalah perusahaan pembiayaan yang
dimiliki sepenuhnya oleh Astra, bisnis FIF awalnya difokuskan pada pembiayaan
konvensional untuk mendukung penjualan ritel sepeda motor Honda. Selanjutnya
telah dikembangkan produk pembiayaan sepeda motor bekas dan SPEKTRA
sebagai kredit barang konsumsi umum, termasuk elektronik dan peralatan rumah
tangga. Salah satu prioritas utama dalam focus kerja FIF adalah intensifikasi
jaringan distribusi dengan mengutamakan sinergi dan hubungan antar fungsi
dengan mitra kerja, baik dalam lingkungan jaringan bisnis Astra, Honda Sales
Operation, dealer otomotif dan lainnya untuk pengembangan operasional dan
produk, di antaranya produk joint financing. Inovasi produk seperti SPEKTRA card
bertujuan ekspansi dan diversifikasi basis pelanggan, FIF juga menyelenggarakan
program pemasaran yang terfokus dan mengingkatkan kemampuan untuk
memantau perkembangan industry dengan baik sebagai dasar penyelarasan inernal
perusahaan dengan kondisi eksternal untuk memenangkan persaingan. Untuk
menunjang seluruh upaya tersebut, pelayanan yang maksimal bagi nasabah juga
menjadi prioritas utama dalam penanganan keluhan nasabah, yang dilakukan
berdasarkan fokus di tingkat cabang atau departemen terkait sehingga respon dan
penyelesaian dapat ditindak lanjuti dengan cepat dan tepat, umumnya dalam jangka
waktu 2x24 jam.
35
Secara keseluruhan FIF tetap berhasil mempertahankan posisinya dalam
transaksi pembiayaan sepeda motor Honda, yaitu sekitar 46% dari total pembiayaan
motor Honda Baru di Indonesia.
3.1.1. Sejarah Perusahaan
PT. FIF didirikan dengan nama PT Mitrapusaka Artha Finance pada bulan
Mei 1989. Berdasarkan ijin usaha yang diperolehnya maka Perseroan bergerak di
bidang Sewa Guna Usaha, anjak piutang dan pembiayaan konsumen. Pada tahun
1991, Perseroan merubah nama perusahaan menjadi PT Federal International
Finance, namun seiring dengan perkembangan waktu dan guna yang memenuhi
permintaan pasar, Perseroan mulai memfokuskan diri pada bidang pembiayaan
konsumen secara retail pada tahun 1996.Ketika krisis mulai terjadi pada tahun 1997
Perseroan melakukan konsolidasi internal dalam rangka persiapan menuju ke suatu
sistem komputerisasi yang tersentralisasi dan terintegrasi. Perseroan yang mayoritas
sahamnya dimiliko oleh PT.Astra International Tbk telah mengembangkan
usahanya dan membuka cabang di' seluruh Indonesia sampai saat ini PT FIF telah
memiliki cabang sebanyak 306 cabang. Dalam menjalankan bisnisnya.FIFGroup
mempunyai visi dan misi yang harus dipahami oleh setiap karyawan. Visi dan Misi
FIFGroup :
Visi : “Pemimpin industri yang dikagumi secara nasional “
Misi: “Membawa kehidupan yang lebih baik untuk masyarakat”
36
3.1.2. Struktur Organisasi dan Fungsi
UH
Sarda Hadiwinata
CAP
Winda Novilia
ADH
Nesti Nurul
MCE
Dian
MCE
Johan
MCE
Fajar
MCE
Ivan
Sumber : Struktur Organisasi PT. FIFGROUP Kios Wadas Cab Cikampek (2019)
Gambar III.1
Struktur Organisasi PT. FIFGROUP Kios Wadas Cab Cikampek
Fungsi struktur diagram :
1. Tugas UH adalah memimpin dan mengelola kegiatan usaha/bisnis perusahaan di
kios, mengontrol pencapaian target Harian produksi, melaporkan hasil kerja atau
pencapaian kerja dari bawahannya setiap hari. Peran UH sangatlah penting dalam
kios karna tanpa UH sistem kerja karyawan sangat berpengaruh pada pencapaian
target.
2. Tugas CAP yaitu meginput data konsumen pengajuan pemijaman dana tunai, dan
kasir pembayaran angsuran motor/ spektra.
37
3. Tugas ADH yaitu pencairan dana tunai, berperan penting dalam masalah pencairan
karena ADH memegang keuangan di kios, mereport data pencairan konsumen
perhari ke dealer, untuk masalah pencairan di kios ini FIF bekerjasama dengan
dealer PSU untuk masalah financial pencairan dengan melalui perantara ADH
untuk memproses jalannya Pemasukan dan pengeluaran kios setiap harinya.
4. MCE yaitu team Survei lapangan yang di tugas kan untuk mencari konsumen untuk
meminjam uang dengan target sesuai komitmen pada saat awal bulan, Bukan Hanya
itu MCE juga bertanggung jawab atas pembayaran angsuran konsumen selama 3
bulan terhitung saat MCE closing.
3.2. Tinjauan Kasus
PT. FIF kios Wadas cab Cikampek merupakan salah satu usaha yang
bergerak di bidang pembiayaan. Proses akuntansi dilakukan secara manual, dengan
proses secara berulang ulang yang dilakukan di ms.excel, Sehingga proses
akuntansi menjadi tidak cepat dan akurat.
Permasalahan yang dihadapi selama ini adalah sering terjadi pengangandaan
transaksi dan tidak terarsip dengan baik di kios Wadas. Dikarenakan semua bukti
transaksi akan dikirim setiap bulannya ke kantor pusat, sehingga jika kios
membutuhkan bukti transaksi terdahulu atau nomer referensi jika terjadi selisih
dikemudian hari akan memakan proses yang cukup lama untuk mencari,
Pemaparan masalah diatas, dapat disimpulkan suatu perusahaan
menginginkan adanya kemajuan baik dalam kinerja maupun sistem agar dapat
menunjang proses kegiatan perusahaan yang lebih baik. Diperlukan adanya suatu
sistem pengelolaan data yang sebelumnya secara manual menjadi terkomputerisasi,
penulis mencoba merekomendasikan software akuntansi Netbean Versi 8.1 dengan
38
tujuan dapat membantu dan mempermudah dalam proses pengolahan data alur kas
pada PT. Federal International Finance Kios Wadas Cabang Cikampek yang
digunakan oleh bagian keuangan.
3.2.1. Proses Bisnis Sistem Berjalan
Sesuai dengan metode Observasi secara langsung yang dilakukan penulis
mengenai pencairan dana tunai pada FIF Group Kios Wadas Cab cikampek. Dan
sesuai dengan ruang lingkup dalam penyusunan Tugas Akhir ini, maka penulis akan
menguraikan secara umum prosedur sistem berjalan pada Analisa Sistem Informasi
Akuntansi Pengajuan Pinjaman Dana Tuni Pada PT. Federal International Finance
Group Kios Wadas Cabang Cikampek.
1. Prosedur Pengecekan Data Konsumen
Konsumen mempersiapkan persyaratan pengajuan pinjaman dan menyerahkan
persyaratan data pengajuan peminjaman seperti kk,ktp,bpkb,stnk ke MCE (team
survei). Lalu MCE (team survei) mengisi data tersebut di form checklist verifikasi,
selanjutnya form checklist verifikasi tersebut di serahkan kepada CAP (Credit
Application Processor) untuk di lakukan pengecekan terlebih dahulu, setelah
pengecekan selesai dan data konsumen bisa di proses maka akan di lanjutkan
penginputan data. Tetapi jika data tidak sesuai, maka persayaratan data tersebut di
kembalikan ke konsumen dan selanjutnya akan di lakukan pengecekan motor oleh
UH (Unit Head) dengan menggesekan no rangka dan no mesin, setelah pengecekan
selesai maka akan di lakukan penginputan data konsumen.
2. Proses Penginputan Data Konsumen
Setelah pegisian data di form checklist verifikasi selesai maka akan di lakukan
penginputan data oleh CAP (Credit Application Processor) jika penginputan
39
selesai dilakukan maka no PO secara otomatis dapat di tercetak dan langsung
bisa di lakukan pencairan dana tunai.
3. Prosedur pencairan dan perekapan data
CAP (Credit Application Processor) menyerahkan no PO kepada ADH (Admin
Head), setelah itu ADH (Admin Head) melakukan pengisian data konsumen di
surat kuasa, lwitansi serah terima dana,keitansi penagihan dan buku besar, serta
di lakukanlah pencairan dana tunai kepada konsumen yang bersangkutan.
3.2.2. Activity Diagram
Activity diagram adalah diagram yang menggambarkan proses alur kerja
(workflow) dari sebuah sistem. Activity diagram menguraikan proses bisnis sistem
berjalan yang sedang di pelajari berdasarkan urutan waktu aktifitasnya. Berikut adalah
activity diagram dari prosedur pencairan dana tunai pada PT. Federal International
Finance Kios Wadas Cabang Cikampek.
40
1. Activity diagram Prosedur Pengecekan Data Konsumen
Sumber : PT. FIFGROUP Kios Wadas Cab Cikampek (2019)
Gambar III.2
Activity diagram Prosedur Pengecekan Data Konsumen
act activity diagram proses pengecekan data konsumen
UH ( Unit Head)CAP (Credit Application Processor)MCE ( Team Survei)KONSUMEN
Mulai
Konsumen mempersiapkan
persyaratan pengajuan pinjaman
dan menyerahkan persyaratan
data pengajuan peminjaman
seperti kk,ktp,bpkb,stnk ke MCE
(team survei).
Menerima data persyaratan
pengajuan dari konsumen
mengisi data tersebut di form
checklist verifikasi, selanjutnya
form checklist verifikasi tersebut
di serahkan kepada CAP (Credit
Application Processor)
Menerima data form checklist
verifikasi dari MCE ( team survei)
untuk di lakukan pengecekan
terlebih dahulu
Melakukan pengecekan
motor oleh UH (Unit Head)
dengan menggesekan no
rangka dan no mesin,
Selesai
Tidak Sesuai
Sesuai
41
2. Activity diagram Prosedur Penginputan Data Konsumen
Sumber : PT. FIFGROUP Kios Wadas Cab Cikampek (2019)
Gambar III.3
Activity diagram Prosedur Penginputan Data Konsumen
act Proses Penginputan Data Konsumen
SystemCAP (Credit Application Processor)
Memulai
Penginputan data konsumen
dari form checklist verifikasi
no PO secara otomatis dapat di
tercetak dan langsung bisa di
lakukan pencairan dana tunai
Selesai
42
3. Activity diagram Prosedur pencairan dan perekapan data
Sumber : PT. FIFGROUP Kios Wadas Cab Cikampek (2019)
Gambar III.4
Activity diagram Prosedur pencairan dan perekapan data
act Prosedur pencairan dan perekapan data
ADH (Admin Head)CAP (Credit Application Processor)
Mulai
menyerahkan no PO
kepada ADH (Admin
Head),
Melakukan pengisian data
konsumen di surat kuasa, kwitansi
serah terima dana,kwitansi
penagihan dan buku besar, serta di
lakukanlah pencairan dana tunai
kepada konsumen yang
bersangkutan.
Selesai
43
3.2.3. Dokumen Masukan
Dokumen Masukan adalah segala bentuk dokumen yang berasal dari
lingkungan luar sistem yang berupa dokumen-dokumen akan di olah dalam suatu
proses. Adapun dokumen-dokumen masukan tersebut adalah sebagai berikut.
1. Nama Dokumen : Aplikasi Rangkap 3
Fungsi : Sebagai Data Konsumen
Sumber : Konsumen
Tujuan : Admin
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap Hari Saat Pencatatan Pencairan Dana Tunai
Format : Lampiran A-1
3.2.4. Dokumen Keluaran
Dokumen keluaran adalah segala bentuk dokumen yang akan mendukung
kegiatan manajemen serta merupakan dokumen dari hasil catatan laporan. Adapun
dokumen keluaran yang di gunakan adalah sebagai berikut :
1. Nama Dokumen : Kwitansi Rangkap 2
Fungsi : Sebagai Penagihan Angsuran
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap Pencairan Dana Tunai
Format : Lampiran B-1
44
2. Nama Dokumen : Kwitansi Rangkap 3
Fungsi : Sebagai Tanda Terima Dana Pencairan
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : 1 Lembar
Frekuensi : Setiap Pencairan dana Tunai
Format : Lampiran B-2
3.2.5. Permasalahan Pokok
Berdasarkan pengamatan penulis, permasalahan yang ada di PT. Federal
International Finance Kios Wadas Cabang Cikampek yaitu :
1. Konsumen sering sekali terjadinya kekurangan data atau persyaratan pengajuan
dana tunai, sehingga banyak kekurangan pada saat penginputan data dan perekapan
data dan harus menunggu hari berikutnya untuk melengkapi aplikasi tersebut.
2. Sering terjadi keterlambatan dana droping atau kas masuk untuk pencairan,
sehingga konsumen lama menunggu.
3. Proses pencairan masih manual tidak ada sistem transfer untuk memudahkan
pekerjaan dan meminimalisir waktu pencairan.
45
3.2.6. Pemecah Masalah
Berdasarkan pengamatan penulis, pemecah masalah yang ada di PT Federal
International Finance Kios Wadas Cabang Cikampek yaitu :
1. Perlu di rancang sebuah sistem yang dapat menangani pencatatan arus kas pada
pencairan.
2. Pencairan seharusnya di lakukan melalui transfer oleh pusat unuk menanggulangi
terjadinya hal-hal yang tidak di inginkan.
3. Di perlukan adanya pencatatan laporan arus kas yang efektif untuk memudahkan
pengecekan laporan setiap harinya.
3.3. Analisis Kebutuhan Software
Proses pengembangan sebuah software langkah awal yang perlu dilakukan
yaitu menganalisa berbagai kebutuhan yang akan dijadikan sebagai masukan atau
acuan dalam pembangunan software tersebut. Kebutuhan-kebutuhan tersebut antara
lain seperti input yang diperlukan, output yang diharapkan dan pembuatan design user
interface yang mudah digunakan dan mudah dipahami oleh user. Berikut adalah
kebutuhan-kebutuhan yang diperlukan pada sistem arus kas pencairan dana tunai pada
PT. Federal International Finance Kios Wadas Cabang Cikampek.
3.3.1. Analisa Kebutuhan
Analisa kebutuhan di lakukan untuk mengetahui hal apa saja yang di
perlukan dalam pengembangan sistem yang ada. Kebutuhan fungsional adalah
kebutuhan-kebutuhan yang memiliki keterkaian langsung dengan proses yang di
lakukan pengguna (user). Berikut analisa kebutuhan fungsional yang di usulkan :
46
A. Unit Head (UH) / Kepala Kios
A.1. Unit Head berhak melakukan login
A.2. Unit Head berhak mengelola laporan kas
A.3. Unit Head berhak mengelola laporan saldo
A.4. Unit Head berhak mengelola pengguna
B. Admin
B.1. Admin berhak melakukan login
B.2. Admin berhak mengelola Saldo
B.3. Admin berhak mengelola kas masuk
B.4. Admin berhak mengelola kas keluar
B.5. Admin berhak mengelola reset saldo
B.6. Admin berhak mengelola laporan kas
B.7. Admin berhak mengelola laporan saldo
B.8. Admin berhak mengelola pengguna
3.2.2. Use Case Diagram
Use Case Diagram digunakan untuk menggambarkan interaksi yang terjadi
antara aktor inisiator dari interaksi sistem itu sendiri dengan sistem yang ada. Berikut
adalah use case diagram sistem usulan dari aktor yang berperan dalam arus kas FIF
GROUP kios Wadas.
47
A.1. Usecase Diagram Usulan Dalam Bentuk Login
Gambar III.5
Use Case Diagram Usulan Admin Melakukan Login
Tabel III.1 Deskripsi Use Case Halaman Admin
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di
dalam sistem halaman admin
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman yang di dalamnya dapat
melakukan login, mengelola perkiraan,
saldo, kas masuk, kas keluar,reset saldo,
laporan kas, laporan saldo
48
A.2. Usecase Diagram Usulan dalam bentuk Perkiraan
Gambar III.6
Use Case Diagram Usulan Perkiraan
Tabel III.2 Deskripsi Use Case Halaman Perkiraan
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman mengelola perkiraan
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola perkiraan
49
A.3. Usecase Diagram Usulan Dalam Bentuk Saldo
Gambar III.7
Use Case Diagram Usulan Saldo
Tabel III.3 Deskripsi Use Case Halaman Saldo
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman mengelola saldo
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola saldo
50
A.4. Usecase Diagram Usulan Dalam Bentuk Kas Masuk
Gambar III.8
Use Case Diagram Usulan Kas Masuk
Tabel III.4 Deskripsi Use Case Halaman Kas Masuk
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman mengelola kas masuk
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola kas masuk
51
A.5. Usecase Diagram Usulan Dalam Bentuk Kas Keluar
Gambar III.9
Use Case Diagram Usulan Kas Keluar
Tabel III.5 Deskripsi Use Case Halaman Kas Keluar
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di
dalam sistem halaman mengelola kas keluar
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola kas keluar
52
A.6. Usecase Diagram Usulan Dalam Bentuk Reset Saldo
Gambar III.10
Use Case Diagram Usulan Reset Saldo
Tabel III.6 Deskripsi Use Case Halaman Reset Saldo
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di
dalam sistem halaman mengelola reset saldo
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola reset saldo
53
A.7. Usecase Diagram Usulan Dalam Bentuk Laporan Kas
Gambar III.11
Use Case Diagram Usulan Laporan Kas
Tabel III.7 Deskripsi Use Case Halaman Laporan Kas
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman mengelola laporan kas
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola laporan kas
54
A.8. Usecase Diagram Usulan Dalam Bentuk Laporan Saldo
Gambar III.12
Use Case Diagram Usulan Laporan Saldo
Tabel III.8 Deskripsi Use Case Halaman Laporan Saldo
Use Case Narative Halaman Admin
Tujuan Admin dapat melihat data yang ada di dalam
sistem halaman mengelola laporan saldo
Deskripsi Sistem ini memungkinkan admin untuk
masuk ke halaman mengelola laporan saldo
55
B.1. Usecase Diagram Usulan UH melakukan Login
Gambar III.13
Use Case Diagram Usulan UH Melakukan Login
Tabel III.9 Deskripsi Use Case Halaman UH Melakukan Login
Use Case Narative Halaman UH
Tujuan Admin dapat melihat data yang ada di
dalam sistem halaman UH
Deskripsi Sistem ini memungkinkan UH untuk
masuk ke halaman yang di dalamnya
dapat melakukan login, mengelola
laporan kas, laporan saldo dan pengguna
56
B.2. Usecase Diagram Usulan UH Mengelola Pengguna
Gambar III.14
Use Case Diagram Usulan UH Mengelola Pengguna
Tabel III.10 Deskripsi Use Case Halaman UH Mengelola Pengguna
Use Case Narative Halaman UH
Tujuan Admin dapat melihat data yang ada di
dalam sistem halaman UH mengelola
pengguna
Deskripsi Sistem ini memungkinkan UH untuk
masuk ke halaman yang di dalamnya
dapat mengelola pengguna
57
Tabel 111.11 Deskripsi Skenario Utama Admin
Skenario Utama
Aktor Admin
Kondisi Awal Aktor membuka aplikasi halaman
admin
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu Login
2. Aktor memilih menu Perkiraan
3. Aktor memilih menu Saldo
4. Aktor memilih menu Kas masuk
5. Aktor memilih menu Kas keluar
6. Aktor memilih menu Reset Saldo
7. Aktor memilih menu Laporan Kas
8. Aktor memilih menu Laporan
Saldo
Sistem akan menampilkan informasi
menu login
Sistem akan menampilkan informasi
form perkiraan
Sistem akan menampilkan informasi
form saldo
Sistem akan menampilkan informasi
form kas masuk
Sistem akan menampilkan informasi
form kas keluar
Sistem akan menampilkan informasi
form reset saldo
Sistem akan menampilkan informasi
form laporan kas
Sistem akan menampilkan informasi
form laporan saldo
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan sesuai keinginan
Tabel 111.12 Deskripsi Skenario Utama UH (Unit Head)
Skenario Utama
Aktor UH (Unit Head)
Kondisi Awal Aktor membuka aplikasi halaman UH
Aksi Aktor Reaksi Sistem
1. Aktor memilih menu Login
2. Aktor memilih menu laporan
Kas
3. Aktor memilih menu laporan
Saldo
4. Aktor memilih menu
Pengguna
Sistem akan menampilkan infomasi
menu login
Sistem akan menampilkan informasi
menu laporan kas
Sistem akan menampilkan informasi
menu laporan saldo
Sistem akan menampilkan informasi
menu pengguna
Kondisi Akhir Jika perintah sesuai maka sistem akan
menampilkan sesuai keinginan
58
3.3.3. Activity Diagram Usulan
1. Activity Diagram Usulan Admin Melakukan Login
Gambar III.15
Activity Diagram Usulan Admin Melakukan Login
59
2. Activity Diagram Usulan Admin Mengelola Perkiraan
Gambar III.16
Activity Diagram Usulan Admin Mengelola Perkiraan
60
3. Activity Diagram Usulan Admin Mengelola Saldo
Gambar III.17
Activity Diagram Usulan Admin Mengelola Saldo
61
4. Activity Diagram Usulan Admin Mengelola Kas Masuk
Gambar III.18
Activity Diagram Usulan Admin Mengelola Kas Masuk
62
5. Activity Diagram Usulan Admin Mengelola Kas Keluar
Gambar III.19
Activity Diagram Usulan Admin Mengelola Kas Keluar
63
6. Activity Diagram Usulan Admin Mengelola Reset Saldo
Gambar III.20
Activity Diagram Usulan Admin Mengelola Reset Saldo
64
7. Activity Diagram Usulan Admin Mengelola Laporan Kas
Gambar III.21
Activity Diagram Usulan Admin Mengelola Laporan Kas
65
8. Activity Diagram Usulan Admin Mengelola Laporan Saldo
Gambar III.22
Activity Diagram Usulan Admin Mengelola Laporan Saldo
66
9. Activity Diagram Usulan UH Melakukan Login
Gambar III.23
Activity Diagram Usulan UH Melakukan Login
67
10. Activity Diagram UH Mengelola Pengguna
Gambar III.24
Activity Diagram Usulan UH Mengelola Pengguna
68
11. Activity Diagram UH Mengelola Laporan Kas
Gambar III.25
Activity Diagram Usulan UH Mengelola Laporan Kas
69
12. Activity Diagram UH Mengelola Laporan Saldo
Gambar III.26
Activity Diagram Usulan UH Mengelola Laporan Saldo
70
3.4. Desain
Desain merupakan suatu perencanaan atau gambar yang di buat untuk
menunjukkan tampilan dan fungsi atau cara kerja suatu bangunan, pakaian, atau benda
lain sebelum di buat.
3.4.1 Entity Relationship Diagram Usulan (ERD)
Gambar III.27
Entity Relationship Diagram (ERD) Usulan
Admin
Mengelola
Id Pengguna
Nama Admin Kata Sandi
Hak Ases
Arus Kas
No Kas
Tanggal Kas
Id Admin
Dari
Keterangan
Nominal
Menerima
Detail
No Kas
Kode Akun
Debet
Kredit
Berisi Perkiraan
Kode Akun
Nama Akun
Jenis Akun
Saldo Normal
Melakukan Saldo
Id SaldoBulan
Kode Akun
Tahun
Saldo Awal
Saldo Masuk
Saldo Keluar
1
M
1
M
M
1
1
M
71
3.4.2 Logical Record Structure Usulan (LRS)
Gambar III.28
Logical Record Structure (LRS) Usulan
Admin
*id_admin
nama_admin
kata_sandi
hak_akses
Arus Kas
*no_kas
tgl_kas
id_admin
dari
ketrangan
nominal
1
1
Saldo
*id_saldo
kode_akun
bulan
tahun
saldo_awal
saldo_masuk
saldo_keluar
Perkiraan
*kode_akun
nama_akun
jenis_akun
saldo_normal
Detail
no_kas
kode_akun
Debet
kredit
M
1 1
M
M
1
M
72
3.4.3. Spesifikasi File
Program ini menggunakan database dengan nama arus kas dan di dalam nya
terdapat tabel-tabel sebagai berikut :
1. Speifikasi File Admin
Nama Data base : Arus kas
Nama File : Admin
Tipe File : Master
Akses File : Random
Panjang Record : 110 Karakter
Field Key : id_admin
Software : My SQL
Tabel 111.13
Spesifikasi File Admin
No Elemen Data Akronim Type Panjang Keterangan
1 Idadmin Id_admin Char 20 Primary Key
2 Namaadmin nama_admin Varchar 20
3 Katasandi kata_sandi Varchar 50
4 Hakakses hak_akses Varchar 20
73
2. Spesifikasi File Perkiraan
Nama Data base : Arus kas
Nama File : Perkiraan
Tipe File : Master
Akses File : Random
Panjang Record : 81 Karakter
Field Key : kode_akun
Software : My SQL
Tabel 111.14
Spesifikasi File Pekiraan
No Elemen Data Akronim Type Panjang Keterangan
1 Kodeakun kode_akun Char 5 Primary Key
2 namaakun nama_akun Varchar 30
3 Jenisakun jenis_akun Varchar 40
4 saldonormal saldo_normal Varchar 6
74
3. Spesifikasi File Saldo
Nama Data base : Arus kas
Nama File : Saldo
Tipe File : Transaksi
Akses File : Random
Panjang Record : 55 Karakter
Field Key : id_saldo
Software : My SQL
Tabel 111.15
Spesifikasi File Saldo
No Elemen Data Akronim Type Panjang Keterangan
1 Idsaldo id_saldo Int 11 Primary Key
2 kodeakun kode_akun Char 5
3 Bulan bulan Char 2
4 Tahun tahun Char 4
5 saldoawal saldo_awal Int 11
6 saldomasuk saldo_masuk Int 11
7 saldokeluar saldo_keluar Int 11
75
4. Spesifikasi File Kas
Nama Data base : Arus kas
Nama File : Kas
Tipe File : Transaksi
Akses File : Random
Panjang Record : 148 Karakter
Field Key : no_kas
Software : My SQL
Tabel 111.16
Spesifikasi File Kas
No Elemen Data Akronim Type Panjang Keterangan
1 Nokas no_kas Char 8 Primary Key
2 Tglkas tgl_kas Date
3 Idadmin id_admin Char 20
4 Dari dari Varchar 20
5 Keterangan keterangan Char 100
76
5. Spesifikasi File Kas Detail
Nama Data base : Arus kas
Nama File : Kas Detail
Tipe File : Transaksi
Akses File : Random
Panjang Record : 33 Karakter
Field Key : no_kas
Software : My SQL
Tabel 111.17
Spesifikasi File Kas Detail
No Elemen Data Akronim Type Panjang Keterangan
1 Nokas no_kas Char 8 Primary Key
2 Kodeakun kode_akun Char 5
3 Debet debet Int 10
4 Kredit kredit Int 10
77
3.4.4. Sequence Diagram Usulan Transaksi Kas Masuk
Gambar III.29
Sequence Diagram Usulan Transaksi Kas Masuk
78
3.4.5. Deployment Diagram Usulan
Gambar III.30
Deployment Diagram Usulan
3.4.6. User Interface
1. User Interface Admin Melakukan Login
Gambar III.31
User Interface Admin Melakukan Login
79
2. User Interface UH Melakukan Login
Gambar III.32
User Interface UH Melakukan Login
3. User Interface Menu Admin
Gambar III.33
User Interface Menu Utama Admin
80
4. User Interface Menu Utama UH
Gambar III.34
User Interface Menu Utama Unit Head
5. User Interface Form Admin
Gambar III.35
User Interface Form Admin
81
6. User Interface Form Perkiraan
Gambar III.36
User Interface Form Perkiraan
7. User Interface Form Saldo
Gambar III.37
User Interface Form Saldo
82
8. User Interface Form Kas Masuk
Gambar III.38
User Interface Form Kas Masuk
9. User Interface Form Kas Keluar
Gambar III.39
User Interface Form Kas Keluar
83
10. User Interface Form Reset Saldo
Gambar III.40
User Interface Form Reset Saldo
11. User Interface Form Laporan Kas
Gambar III.41
User Interface Form Laporan Kas
84
12. User Interface Form Laporan Saldo
Gambar III.42
User Interface Form Laporan Saldo
3.5. Implementasi
Implementasi merupakan pelaksanaan tindak oleh individu, pejabat, intansi
pemerintah maupun perintah dengan tujuan untuk menggapai cita-cita yang telah
digariskan dalam keputusan tertentu. Berikut ini implementasi pada aplikasi Arus kas
pada PT. Federal International Finance Kios Wadas Cabang Cikampek.
3.5.1. Code Generation
Package Transaksi Kas Masuk
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package form;
85
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Date;
import java.util.List;
import java.util.ListIterator;
import javax.swing.DefaultCellEditor;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import model.Perkiraan;
import model.DetailKasMasuk;
import model.KasMasuk;
import fifaruskas.FIFArusKas;
import java.text.SimpleDateFormat;
import model.Saldo;
/**
*
* @author cucu
*/
public class FormKasMasuk extends javax.swing.JFrame {
86
/**
* Creates new form FormKasMasuk
*/
String KodePerkiraan = "";
String Status = "";
int row = -1;
int total = 0;
Perkiraan perkiraan = new Perkiraan();
KasMasuk kas_masuk = new KasMasuk();
DetailKasMasuk detail_kas_masuk = new DetailKasMasuk();
Saldo saldo = new Saldo();
DefaultTableModel model, modelData;
TableColumn cKode, cNominal;
JTextField textKode = new JTextField();
JTextField textNominal = new JTextField();
NumberFormat nf = new DecimalFormat("#");
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String[] now = sdf.format(new java.util.Date()).split("-");
String bln = now[1];
String thn = now[2];
public FormKasMasuk() {
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);
87
setLocation(x, y);
model = (DefaultTableModel) tbldetail.getModel();
modelData = (DefaultTableModel) tbldata.getModel();
textKode.setFont(new Font("BellGothic BT", 0, 16));
textNominal.setFont(new Font("BellGothic BT", 0, 16));
tbldetail.getTableHeader().setFont(new Font("BellGothic BT", 1, 16));
tbldetail.setRowHeight(30);
tbldata.getTableHeader().setFont(new Font("BellGothic BT", 1, 16));
tbldata.setRowHeight(30);
cKode = (TableColumn) tbldetail.getColumnModel().getColumn(0);
cNominal = (TableColumn) tbldetail.getColumnModel().getColumn(3);
cKode.setCellEditor(new DefaultCellEditor(textKode));
cNominal.setCellEditor(new DefaultCellEditor(textNominal));
textKode.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
row = tbldetail.getSelectedRow();
textKode.setText(textKode.getText().toUpperCase());
if (!"".equals(textKode.getText())) {
getDataPerkiraan(textKode.getText(), row);
for (int i = 0; i < model.getRowCount() - 1; i++) {
String kode = model.getValueAt(i, 0).toString();
if (kode.equalsIgnoreCase(textKode.getText()) && row != i) {
model.setValueAt(null, row, 0);
model.setValueAt(null, row, 1);
model.setValueAt(null, row, 2);
model.setValueAt(null, row, 3);
88
textKode.setText(null);
JOptionPane.showMessageDialog(rootPane, "Data sudah ada!",
"Info", JOptionPane.ERROR_MESSAGE);
break;
}
}
}
}
if (e.getKeyCode() == KeyEvent.VK_F1) {
textKode.setText(new FormCariPerkiraan(null, true).cariPerkiraan());
row = tbldetail.getSelectedRow();
textKode.setText(textKode.getText().toUpperCase());
if (!"".equals(textKode.getText())) {
getDataPerkiraan(textKode.getText(), row);
for (int i = 0; i < model.getRowCount() - 1; i++) {
try{
String kode = model.getValueAt(i, 0).toString();
if (kode.equalsIgnoreCase(textKode.getText()) && row != i) {
model.setValueAt(null, row, 0);
model.setValueAt(null, row, 1);
model.setValueAt(null, row, 2);
model.setValueAt(null, row, 3);
textKode.setText(null);
JOptionPane.showMessageDialog(rootPane, "Data sudah ada!",
"Info", JOptionPane.ERROR_MESSAGE);
break;
}
89
}catch(Exception e{
}
}
}
}
}
});
textNominal.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
if (!Character.isDigit(e.getKeyChar()) && e.getKeyChar() !=
KeyEvent.VK_BACK_SPACE && e.getKeyChar() != KeyEvent.VK_DELETE &&
e.getKeyChar() != '-') {
textNominal.setEditable(false);
JOptionPane.showMessageDialog(rootPane, "Input hanya boleh berupa
angka!", "Error", JOptionPane.ERROR_MESSAGE);
} else {
textNominal.setEditable(true);
//getDataPerkiraan(model.getValueAt(row, 0).toString(), row);
}
if (textNominal.getText().equals("")) {
textNominal.setText("0");
}
}
});
tbldetail.setSelectionBackground(Color.lightGray);
aktif();
ttglkas.setDate(new java.util.Date());
90
tabs.setSelectedIndex(1);
daftarKasMasuk();
aktif();
}
private void aktif() {
bbatal.setEnabled(!"".equals(Status));
bsimpan.setEnabled(!"".equals(Status));
btambah.setEnabled("".equals(Status));
tabs.setEnabledAt(0, !"".equals(Status));
tabs.setEnabledAt(1, "".equals(Status));
}
private void bersihForm() {
tno.setText("");
tkode_akun.setText("");
tnama_akun.setText("");
tdari.setText("");
tketerangan.setText("");
tnominal.setText("");
model.setRowCount(0);
tbldetail.repaint();
}
private void hitungTotal() {
for (int i = 0; i < model.getRowCount(); i++) {
// total + = (double) model.getValueAt(i, 4);
try {
total += Integer.parseInt(model.getValueAt(i, 3).toString());
} catch (Exception ex) {
91
}
}
}
private void getDataPerkiraan(String kode, int row) {
perkiraan = perkiraan.cariKodePerkiraan(kode);
if (perkiraan.getNama_akun() == null) {
JOptionPane.showMessageDialog(rootPane, "Data perkiraan yang anda cari tidak
ada!", "Error", JOptionPane.ERROR_MESSAGE);
model.setValueAt(null, row, 0);
model.setValueAt(null, row, 1);
model.setValueAt(null, row, 2);
model.setValueAt(null, row, 3);
} else {
model.setValueAt(kode.toUpperCase(), row, 0);
model.setValueAt(perkiraan.getNama_akun(), row, 1);
model.setValueAt(perkiraan.getJenis_akun(), row, 2);
model.setValueAt(0, row, 3);
}
hitungTotal();
}
private void daftarKasMasuk() {
List<KasMasuk> lp = kas_masuk.daftarKasMasuk();
ListIterator<KasMasuk> li = lp.listIterator();
modelData.setRowCount(0);
tbldata.repaint();
String No = "";
Object[] data;
92
while (li.hasNext()) {
kas_masuk = li.next();
List<DetailKasMasuk> ld =
detail_kas_masuk.daftarDetail(kas_masuk.getNo_kas_masuk());
ListIterator<DetailKasMasuk> it = ld.listIterator();
while (it.hasNext()) {
DetailKasMasuk dtl = it.next();
perkiraan = perkiraan.cariKodePerkiraan(dtl.getKode_akun());
if (!No.equals(kas_masuk.getNo_kas_masuk())) {
Object[] jdata = {
kas_masuk.getNo_kas_masuk(),
kas_masuk.getTgl_kas_masuk(),
kas_masuk.getDari(),
kas_masuk.getKeterangan(),
dtl.getKode_akun(),
perkiraan.getNama_akun(),
dtl.getDebet(),
dtl.getKredit()
};
data = jdata;
} else {
Object[] jdata = {
"",
"",
"",
"",
dtl.getKode_akun(),
93
perkiraan.getNama_akun(),
dtl.getDebet(),
dtl.getKredit()
};
data = jdata;
}
modelData.addRow(data);
No = kas_masuk.getNo_kas_masuk();
}
}
}
private void daftarKasMasuk(Date tgl1, Date tgl2) {
List<KasMasuk> lp = kas_masuk.cariKasMasukPeriode(new
java.sql.Date(tgl1.getTime()), new java.sql.Date(tgl2.getTime()));
ListIterator<KasMasuk> li = lp.listIterator();
modelData.setRowCount(0);
tbldata.repaint();
String No = "";
Object[] data;
while (li.hasNext()) {
kas_masuk = li.next();
List<DetailKasMasuk> ld =
detail_kas_masuk.daftarDetail(kas_masuk.getNo_kas_masuk());
ListIterator<DetailKasMasuk> it = ld.listIterator();
while (it.hasNext()) {
DetailKasMasuk dtl = it.next();
perkiraan = perkiraan.cariKodePerkiraan(dtl.getKode_akun());
94
if (!No.equals(kas_masuk.getNo_kas_masuk())) {
Object[] jdata = {
kas_masuk.getNo_kas_masuk(),
kas_masuk.getTgl_kas_masuk(),
kas_masuk.getDari(),
kas_masuk.getKeterangan(),
dtl.getKode_akun(),
perkiraan.getNama_akun(),
dtl.getDebet(),
dtl.getKredit()
};
data = jdata;
} else {
Object[] jdata = {
"",
"",
"",
"",
dtl.getKode_akun(),
perkiraan.getNama_akun(),
dtl.getDebet(),
dtl.getKredit()
};
data = jdata;
}
modelData.addRow(data);
No = kas_masuk.getNo_kas_masuk();
95
}
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jTextField8 = new javax.swing.JTextField();
jDateChooser2 = new com.toedter.calendar.JDateChooser();
tabs = new javax.swing.JTabbedPane();
jPanel2 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jScrollPane2 = new javax.swing.JScrollPane();
tbldetail = new javax.swing.JTable();
tno = new javax.swing.JTextField();
jLabel13 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
tkode_akun = new javax.swing.JTextField();
96
tnama_akun = new javax.swing.JTextField();
ttglkas = new com.toedter.calendar.JDateChooser();
tdari = new javax.swing.JTextField();
tnominal = new javax.swing.JTextField();
jLabel16 = new javax.swing.JLabel();
tketerangan = new javax.swing.JTextField();
jLabel17 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jLabel12 = new javax.swing.JLabel();
bcari = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
tbldata = new javax.swing.JTable();
tgl1 = new com.toedter.calendar.JDateChooser();
tgl2 = new com.toedter.calendar.JDateChooser();
btutup = new javax.swing.JButton();
bbatal = new javax.swing.JButton();
bsimpan = new javax.swing.JButton();
btambah = new javax.swing.JButton();
jSeparator1 = new javax.swing.JSeparator();
jLabel14 = new javax.swing.JLabel();
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
97
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(jTable1);
jTextField8.setText("jTextField8");
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
tabs.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel7.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel7.setText("No Kas");
jLabel8.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel8.setText("Tanggal");
jLabel10.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel10.setText("Dari");
tbldetail.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tbldetail.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Kode Akun", "Nama Akun", "Jenis Akun", "Nominal"
}
) {
boolean[] canEdit = new boolean [] {
true, false, false, true
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
98
}
});
tbldetail.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
tbldetailFocusGained(evt);
}
});
tbldetail.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
tbldetailMouseClicked(evt);
}
});
tbldetail.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tbldetailKeyPressed(evt);
}
});
jScrollPane2.setViewportView(tbldetail);
tno.setEditable(false);
tno.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tno.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tnoActionPerformed(evt);
}
});
jLabel13.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel13.setText("Tekan [DEL] untuk hapus");
99
jLabel11.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel11.setText("Tekan [F1] untuk pencarian");
jLabel15.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel15.setText("Akun Kas'");
tkode_akun.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tkode_akun.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tkode_akunActionPerformed(evt);
}
});
tkode_akun.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
tkode_akunKeyPressed(evt);
}
});
tnama_akun.setEditable(false);
tnama_akun.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tnama_akun.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tnama_akunActionPerformed(evt);
}
});
ttglkas.setFont(new java.awt.Font("BellGothic BT", 0, 14)); // NOI18N
tdari.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tdari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tdariActionPerformed(evt);
100
}
});
tnominal.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tnominal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tnominalActionPerformed(evt);
}
});
jLabel16.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel16.setText("Nominal");
tketerangan.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tketerangan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tketeranganActionPerformed(evt);
}
});
jLabel17.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel17.setText("Keterangan'");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(jPanel2Layout.createSequentialGroup()
101
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE,
926, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addGroup(jPanel2Layout.createSequentialGro()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addComponent(jLabel10)
.addComponent(jLabel8)
.addComponent(jLabel16)
.addComponent(jLabel17))
.addGap(18, 18, 18)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING, false)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(tkode_akun,
javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tnama_akun))
102
.addComponent(ttglkas,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tdari, javax.swing.GroupLayout.DEFAULT_SIZE,
307, Short.MAX_VALUE)
.addComponent(tnominal,
javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)
.addComponent(tketerangan,
javax.swing.GroupLayout.DEFAULT_SIZE, 307, Short.MAX_VALUE)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel11)
.addGap(27, 27, 27)
.addComponent(jLabel13)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(tno, javax.swing.GroupLayout.PREFERRED_SIZE, 205,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel15)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
103
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA
SELINE)
.addComponent(tno, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(15, 15, 15)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(tkode_akun, javax.swing.GroupLayout.PREFERRED_SIZE,
30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE,
30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tnama_akun,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE,
30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
104
.addComponent(jLabel10,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tdari, javax.swing.GroupLayout.PREFERRED_SIZE,
30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(jLabel16,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tnominal,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
.addComponent(jLabel17,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tketerangan,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.BASELINE)
105
.addComponent(jLabel11,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel13,
javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(7, 7, 7)
.addComponent(jScrollPane2,
javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(ttglkas, javax.swing.GroupLayout.PREFERRED_SIZE,
30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 322, Short.MAX_VALUE)))
.addContainerGap())
);
tabs.addTab("Input Kas Masuk", jPanel2);
jLabel12.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
jLabel12.setText("Tanggal Kas");
bcari.setFont(new java.awt.Font("BellGothic BT", 0, 15)); // NOI18N
bcari.setText("Cari");
bcari.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bcariActionPerformed(evt);
}
});
tbldata.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tbldata.setModel(new javax.swing.table.DefaultTableModel(
106
new Object [][] {
},
new String [] {
"No Kas", "Tanggal Kas", "Dari", "Kerterangan", "Kode Akun", "Nama Akun",
"Debet", "Kredit"
}
) {
boolean[] canEdit = new boolean [] {
false, false, false, false, false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane3.setViewportView(tbldata);
tgl1.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
tgl2.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
107
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE,
926, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(jLabel12)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(tgl1, javax.swing.GroupLayout.PREFERRED_SIZE, 123,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tgl2, javax.swing.GroupLayout.PREFERRED_SIZE, 123,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(bcari, javax.swing.GroupLayout.PREFERRED_SIZE, 81,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment
.LEADING)
.addComponent(tgl1, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tgl2, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)
108
.addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE,
30, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(bcari, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE,
392, Short.MAX_VALUE)
.addContainerGap())
);
tabs.addTab("Data Kas Masuk", jPanel1);
btutup.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
btutup.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/form/images/keluar.png"))); //
NOI18N
btutup.setText("Tutup");
btutup.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btutupActionPerformed(evt);
}
});
bbatal.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
bbatal.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/form/images/batal.png"))); //
NOI18N
bbatal.setText("Batal");
bbatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
109
bbatalActionPerformed(evt);
}
});
bsimpan.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
bsimpan.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/form/images/save.png"))); //
NOI18N
bsimpan.setText("Simpan");
bsimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bsimpanActionPerformed(evt);
}
});
btambah.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N
btambah.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/form/images/tambah.png"))); //
NOI18N
btambah.setText("Tambah");
btambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btambahActionPerformed(evt);
}
});
jLabel14.setFont(new java.awt.Font("BellGothic BT", 0, 48)); // NOI18N
jLabel14.setText(".:: Kas Masuk ::.");
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
110
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI
NG)
.addComponent(jSeparator1)
.addComponent(tabs)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addComponent(btambah, javax.swing.GroupLayout.PREFERRED_SIZE,
110, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bsimpan, javax.swing.GroupLayout.PREFERRED_SIZE,
110, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(bbatal, javax.swing.GroupLayout.PREFERRED_SIZE,
110, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(btutup, javax.swing.GroupLayout.PREFERRED_SIZE,
110, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel14)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
111
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 60,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(44, 44, 44)
.addComponent(tabs)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE,
10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(9, 9, 9)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASEL
INE)
.addComponent(btutup, javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btambah, javax.swing.GroupLayout.PREFERRED_SIZE,
45, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(bsimpan, javax.swing.GroupLayout.PREFERRED_SIZE,
45, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(bbatal, javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(14, 14, 14))
);
pack();
}// </editor-fold>
private void tnoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
112
}
private void btutupActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose();
}
private void tbldetailKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_DELETE) {
if (!"".equals(KodePerkiraan)) {
row = tbldetail.getSelectedRow();
model.removeRow(row);
tbldetail.repaint();
hitungTotal();
if (model.getRowCount() < 5) {
model.setRowCount(5);
}
}
}
if (evt.getKeyCode() == KeyEvent.VK_TAB) {
try {
int subtotal = Integer.parseInt(model.getValueAt(model.getRowCount() - 1,
3).toString());
if (subtotal != 0) {
model.setRowCount(model.getRowCount() + 1);
tbldetail.repaint();
}
} catch (Exception ex) {
113
}
}
if (evt.getKeyCode() == KeyEvent.VK_UP || evt.getKeyCode() ==
KeyEvent.VK_DOWN) {
System.out.println(row);
}
}
private void tbldetailMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
try {
row = tbldetail.getSelectedRow();
KodePerkiraan = (String) model.getValueAt(row, 0);
} catch (Exception e) {
}
}
private void bbatalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Status = "";
tno.setText("");
ttglkas.setDate(new java.util.Date());
tabs.setSelectedIndex(1);
bersihForm();
aktif();
}
private void btambahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.Status = "Tambah";
114
bersihForm();
tno.setText(kas_masuk.noAuto());
aktif();
tabs.setSelectedIndex(0);
model.setRowCount(5);
}
private void bsimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if ("".equals(tnama_akun.getText())) {
JOptionPane.showMessageDialog(rootPane, "Akun Kas belum dipilih", "Galat",
JOptionPane.ERROR_MESSAGE);
return;
}
if ("".equals(tdari.getText())) {
JOptionPane.showMessageDialog(rootPane, "Kepada belum dipilih", "Galat",
JOptionPane.ERROR_MESSAGE);
return;
}
if ("".equals(tnominal.getText())) {
JOptionPane.showMessageDialog(rootPane, "Nominal elum dipilih", "Galat",
JOptionPane.ERROR_MESSAGE);
return;
}
if ("".equals(tketerangan.getText())) {
JOptionPane.showMessageDialog(rootPane, "Keterangan belum dipilih", "Galat",
JOptionPane.ERROR_MESSAGE);
return;
115
}
if (model.getRowCount() == 0) {
JOptionPane.showMessageDialog(rootPane, "Belum ada akun yang dipilih",
"Galat", JOptionPane.ERROR_MESSAGE);
return;
}
if (!FIFArusKas.validasiInput(tdari.getText(), "^[a-zA-Z\\s]{2,35}$")) {
JOptionPane.showMessageDialog(rootPane, "Nama penerima tidak valid",
"Galat", JOptionPane.ERROR_MESSAGE);
return;
}
if (!FIFArusKas.validasiInput(tnominal.getText(), "^[0-9]{1,10}$")) {
JOptionPane.showMessageDialog(rootPane, "Nominal stidak valid", "Galat",
JOptionPane.ERROR_MESSAGE);
return;
}
kas_masuk.setNo_kas_masuk(tno.getText());
kas_masuk.setNo_kas_masuk(tno.getText());
kas_masuk.setTgl_kas_masuk(new java.sql.Date(new java.util.Date().getTime()));
kas_masuk.setDari(tdari.getText());
kas_masuk.setKeterangan(tketerangan.getText());
kas_masuk.setNominal(Integer.parseInt(tnominal.getText()));
kas_masuk.setId_admin(FIFArusKas.id_admin);
kas_masuk.tambahKasMasuk();
detail_kas_masuk.setNo_kas_masuk(tno.getText());
detail_kas_masuk.setKode_akun(tkode_akun.getText());
detail_kas_masuk.setDebet(Integer.parseInt(tnominal.getText()));
116
detail_kas_masuk.setKredit(0);
detail_kas_masuk.tambahKasDetail();
saldo = saldo.cariSaldo(bln, thn, tkode_akun.getText());
perkiraan = perkiraan.cariKodePerkiraan(tkode_akun.getText());
if (Integer.parseInt(tnominal.getText()) > 0) {
if ("Debet".equalsIgnoreCase(perkiraan.getSaldo_normal())) {
saldo.setSaldo_masuk(saldo.getSaldo_masuk() +
Integer.parseInt(tnominal.getText()));
} else {
saldo.setSaldo_keluar(saldo.getSaldo_keluar() +
Integer.parseInt(tnominal.getText()));
}
}
saldo.ubahSaldo(saldo.getId_saldo());
for (int i = 0; i < model.getRowCount(); i++) {
try {
String Kode = (String) model.getValueAt(i, 0);
int Nominal = Integer.parseInt(model.getValueAt(i, 3).toString());
saldo = saldo.cariSaldo(bln, thn, Kode);
perkiraan = perkiraan.cariKodePerkiraan(Kode);
if (saldo.getKode_akun() == null) {
saldo.setKode_akun(perkiraan.getKode_akun());
saldo.setBulan(bln);
saldo.setTahun(thn);
saldo.setSaldo_awal(0);
saldo.setSaldo_masuk(0);
saldo.setSaldo_keluar(0);
117
saldo.tambahSaldo();
}
saldo = saldo.cariSaldo(bln, thn, Kode);
if (Nominal > 0) {
detail_kas_masuk.setNo_kas_masuk(tno.getText());
detail_kas_masuk.setKode_akun(Kode);
detail_kas_masuk.setKredit(Nominal);
detail_kas_masuk.setDebet(0);
if ("Kredit".equalsIgnoreCase(perkiraan.getSaldo_normal())) {
saldo.setSaldo_keluar(saldo.getSaldo_keluar() + Nominal);
} else {
saldo.setSaldo_masuk(saldo.getSaldo_masuk() + Nominal);
}
} else {
detail_kas_masuk.setNo_kas_masuk(tno.getText());
detail_kas_masuk.setKode_akun(Kode);
detail_kas_masuk.setKredit(0);
detail_kas_masuk.setDebet(Math.abs(Nominal));
if ("Debet".equalsIgnoreCase(perkiraan.getSaldo_normal())) {
saldo.setSaldo_keluar(saldo.getSaldo_keluar() + Math.abs(Nominal));
} else {
saldo.setSaldo_masuk(saldo.getSaldo_masuk() + Math.abs(Nominal));
}
}
saldo.ubahSaldo(saldo.getId_saldo());
detail_kas_masuk.tambahKasDetail();
118
} catch (Exception ex) {
ex.printStackTrace();
}
}
tno.setText("");
model.getDataVector().removeAllElements();
tbldetail.repaint();
JOptionPane.showMessageDialog(rootPane, "Kas Masuk berhasil disimpan", "Info",
JOptionPane.INFORMATION_MESSAGE);
tabs.setSelectedIndex(1);
Status = "";
aktif();
daftarKasMasuk();
}
private void tbldetailFocusGained(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
}
private void bcariActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if (tgl1.getDate() == null || tgl2.getDate() == null) {
daftarKasMasuk();
} else {
daftarKasMasuk(tgl1.getDate(), tgl2.getDate());
}
}
private void tkode_akunActionPerformed(java.awt.event.ActionEvent evt) {
119
// TODO add your handling code here:
}
private void tnama_akunActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tdariActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tnominalActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tketeranganActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void tkode_akunKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_F1) {
tkode_akun.setText(new FormCariPerkiraan(null, true).cariPerkiraan());
tkode_akun.setText(tkode_akun.getText().toUpperCase());
if (!"".equalsIgnoreCase(tkode_akun.getText())) {
perkiraan = perkiraan.cariKodePerkiraan(tkode_akun.getText());
if (perkiraan.getNama_akun() != null) {
tnama_akun.setText(perkiraan.getNama_akun());
} else {
tkode_akun.setText("");
tnama_akun.setText("");
}
120
}
}
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
if (!"".equalsIgnoreCase(tkode_akun.getText())) {
perkiraan = perkiraan.cariKodePerkiraan(tkode_akun.getText());
if (perkiraan.getNama_akun() != null) {
tnama_akun.setText(perkiraan.getNama_akun());
} else {
tkode_akun.setText("");
tnama_akun.setText("");
}
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional)
">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and
feel.
* For details see
http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
121
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(FormKasMasuk.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormKasMasuk.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FormKasMasuk.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormKasMasuk.class
.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormKasMasuk().setVisible(true);
}
122
});
}
// Variables declaration - do not modify
private javax.swing.JButton bbatal;
private javax.swing.JButton bcari;
private javax.swing.JButton bsimpan;
private javax.swing.JButton btambah;
private javax.swing.JButton btutup;
private com.toedter.calendar.JDateChooser jDateChooser2;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField8;
123
private javax.swing.JTabbedPane tabs;
private javax.swing.JTable tbldata;
private javax.swing.JTable tbldetail;
private javax.swing.JTextField tdari;
private com.toedter.calendar.JDateChooser tgl1;
private com.toedter.calendar.JDateChooser tgl2;
private javax.swing.JTextField tketerangan;
private javax.swing.JTextField tkode_akun;
private javax.swing.JTextField tnama_akun;
private javax.swing.JTextField tno;
private javax.swing.JTextField tnominal;
private com.toedter.calendar.JDateChooser ttglkas;
// End of variables declaration
}
Package Model Transaksi Kas Masuk
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author cucu
*/
public class KasMasuk {
private Connection Koneksi;
private String no_kas;
124
private Date tgl_kas;
private String keterangan;
private String dari;
private int nominal;
private String id_admin;
private String PesanError;
public KasMasuk() {
try {
Class.forName("com.mysql.jdbc.Driver");
Koneksi = DriverManager.getConnection("jdbc:mysql://localhost/fif_arus_kas?",
"root", "");
} catch (ClassNotFoundException | SQLException ex) {
this.PesanError = ex.getMessage();
System.out.println(this.PesanError);
}
}
public Connection getKoneksi() {
return Koneksi;
}
public String getNo_kas_masuk() {
return no_kas;
}
public void setNo_kas_masuk(String no_kas) {
this.no_kas = no_kas;
}
public Date getTgl_kas_masuk() {
return tgl_kas;
}
public void setTgl_kas_masuk(Date tgl_kas) {
this.tgl_kas = tgl_kas;
}
public int getNominal() {
return nominal;
}
public void setNominal(int nominal) {
this.nominal = nominal;
}
public String getId_admin() {
return id_admin;
}
public void setId_admin(String id_admin) {
this.id_admin = id_admin;
}
public String getKeterangan() {
return keterangan;
}
public void setKeterangan(String keterangan) {
this.keterangan = keterangan;
}
125
public String getDari() {
return dari;
}
public void setDari(String dari) {
this.dari = dari;
}
public String getPesanError() {
return PesanError;
}
public List<KasMasuk> daftarKasMasuk() {
try {
this.PesanError = "";
String Cmd = "SELECT * FROM kas WHERE SUBSTR(no_kas,1,2)='KM'";
List<KasMasuk> lkm = new ArrayList();
Statement st = Koneksi.createStatement();
ResultSet rs = st.executeQuery(Cmd);
while (rs.next()) {
KasMasuk km = new KasMasuk();
km.setNo_kas_masuk(rs.getString("no_kas"));
km.setTgl_kas_masuk(rs.getDate("tgl_kas"));
km.setId_admin(rs.getString("id_admin"));
km.setDari(rs.getString("dari"));
km.setKeterangan(rs.getString("keterangan"));
km.setNominal(rs.getInt("nominal"));
lkm.add(km);
}
return lkm;
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return null;
}
}
public List<KasMasuk> cariKasMasukPeriode(Date tgl1, Date tgl2) {
try {
this.PesanError = "";
String Cmd = "SELECT * FROM kas WHERE tgl_kas BETWEEN ? AND ? AND
SUBSTR(no_kas,1,2)='KM'";
List<KasMasuk> lkm = new ArrayList();
PreparedStatement ps = Koneksi.prepareStatement(Cmd);
ps.setDate(1, tgl1);
ps.setDate(2, tgl2);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
KasMasuk km = new KasMasuk();
km.setNo_kas_masuk(rs.getString("no_kas"));
km.setTgl_kas_masuk(rs.getDate("tgl_kas"));
km.setId_admin(rs.getString("id_admin"));
km.setDari(rs.getString("dari"));
km.setKeterangan(rs.getString("keterangan"));
km.setNominal(rs.getInt("nominal"));
126
lkm.add(km);
}
return lkm;
} catch (SQLException ex) {
ex.printStackTrace();
this.PesanError = ex.getMessage();
return null;
}
}
public int tambahKasMasuk() {
try {
this.PesanError = "";
String Cmd = "INSERT INTO kas (no_kas, tgl_kas, dari, keterangan, nominal,
id_admin) VALUES (?,?,?,?,?,?)";
PreparedStatement ps = Koneksi.prepareStatement(Cmd);
ps.setString(1, this.no_kas);
ps.setDate(2, this.tgl_kas);
ps.setString(3, this.dari);
ps.setString(4, this.keterangan);
ps.setInt(5, this.nominal);
ps.setString(6, this.id_admin);
return ps.executeUpdate();
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
System.out.println(this.PesanError);
return -1;
}
}
public int hapusKasMasuk(String No) {
try {
this.PesanError = "";
String Cmd = "DELETE FROM kas WHERE no_kas=?";
PreparedStatement ps = Koneksi.prepareStatement(Cmd);
ps.setString(1, No);
return ps.executeUpdate();
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return -1;
}
}
public KasMasuk cariNoKasMasuk(String No) {
this.PesanError = "";
try {
String Cmd = "SELECT * FROM kas WHERE no_kas=?";
PreparedStatement ps = Koneksi.prepareStatement(Cmd);
ps.setString(1, No);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
this.setNo_kas_masuk(rs.getString("no_kas"));
this.setTgl_kas_masuk(rs.getDate("tgl_kas"));
127
this.setId_admin(rs.getString("id_admin"));
this.setKeterangan(rs.getString("id_admin"));
this.setNominal(rs.getInt("nominal"));
} else {
this.setNo_kas_masuk(null);
this.setTgl_kas_masuk(null);
this.setId_admin(null);
this.setKeterangan(null);
this.setNominal(0);
}
return this;
} catch (SQLException ex) {
ex.printStackTrace();
this.PesanError = ex.getMessage();
return null;
}
}
public String noAuto() {
try {
String Cmd = "SELECT * FROM kas WHERE SUBSTR(no_kas,1,2)='KM' ORDER
BY SUBSTR(no_kas,3,8) * 1 DESC LIMIT 1";
Statement st = Koneksi.createStatement();
ResultSet rs = st.executeQuery(Cmd);
if (rs.next()) {
String No = rs.getString("no_kas");
No = No.substring(2, 8);
System.out.println(No);
No = "KM" + String.format("%06d", Integer.parseInt(No) + 1);
return No;
} else {
return "KM000001";
}
} catch (SQLException ex) {
this.PesanError = ex.getMessage();
return "";
}
}
}
128
3.5.2. Blackbox Testing
1. Form Login
Tabel III.18
Hasil Pengujian Blackbox Testing Form Login
No Skenario
Penguji
Test Case Hasil yang
di harapkan
Hasil
pengujian
Kesimpulan
1 Mengetikkan
Id Admin di isi
dan Kata sandi
tidak di isi atau
kosong
kemudian klik
tombol login
Id Admin:
(cucu.aja)
Kata sandi:
(Kosong)
Sistem akan
menolak
akses dan
menampilka
n pesan “Id
admin
Keliru
Sesuai harapan Valid
2 Mengetikkan
Username dan
password
dengan data
yang benar
kemudian klik
tombol login
Username:
cucu.aja
Kata sandi:
12345678
Sistem akan
menerima
dan masuk
kehalaman
menu utama
Sesuai harapan Valid
129
2. Form Transaksi
Tabel III.19
Hasil Pengujian Blackbox Testing Form Transaksi
NO Skenario
Pengujian
Test Case Hasil yang di
harapkan
Hasil
pengujian
Kesimpulan
1 Akun kas tidak
di isi klik oke
Kode akun
(Kosong)
Sistem akan
menolak dan
menampilkan
“Akun kas
belum di
pilih”
Sesuai
Harapan
Valid
2 Dari atau
kepada tidak di
isi klik simpan
Kode akun
(Kosong)
Sistem akan
menolak dan
menampilkan
pesan “
Kepada
belum di
pilih”
Sesuai
Harapan
Valid
3 Kode akun dan
nama akun
diisi semua
klik simpan
Kode akun
(10010)
Nama akun
(Kas)
Sistem akan
menerima
dan
menyimpan
data lalu
menampilkan
bukti
penambahan
Sesuai
Harapan
Valid
4 No kas,
tanggal, dari,
keterangan,
kode akun,
nama akun,
debet, kredit,
diisi semua
klik simpan
No kas
(KM000001)
Tanggal kas
(16-12-2019)
Dari
(Anto)
Keterangan
(Pembayaran)
Kode akun
(10010)
Nama akun
(Kas)
Debet
(1.000.000)
Kredit
(0)
Sistem akan
menerima
dan
menyimpan
data lalu
menampilkan
bukti
penambahan
Sesuai
Harapan
Valid
130
3.5.3. Spesifikasi Hardware dan Software
Tabel III.20
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Windows 10 pro 64-bit
Processor Intel(R) Celeron (R) CPU N3050 @ 1.60GHZ
RAM 2 GB
Harddisk 500 GB
Monitor 15 “LED
Keyboard 101/102-key
Printer Inject
Mouse Standar
Software Kebutuhan menjalankan aplikasi secara local
Bahasa Script programming : Netbeans.8.1
Web Server : XAMPP Control panel v.3.2.1
DBMS : MYSQL
Web Browser : Google Chome