bab iii pembahasan - bina sarana informatika · catering, dibentuklah cv. insun medal tgl 12...
TRANSCRIPT
-
26
BAB III
PEMBAHASAN
3.1. Tinjauan Perusahaan
CV. Insun Medal adalah perusahaan yang bergerak dibidang jasa catering.
Perusahan ini fokus terhadap kualitas kebersihaan dan kualitas makanan yang akan
disajikan ke konsumen untuk mendapatkan image baik dan memberikan kepuasan
kepada konsumen.
3.1.1. Sejarah Perusahsaan
Zaman globalisasi dengan perkembangan teknologi yang sangat pesat ini, aroma
persaingan sangat terasa. Apabila ingin sukses dan tidak terlindas oleh kerasnya zaman,
seseorang harus memiliki kiat-kiat untuk menjadi sukses yaitu salah satu caranya
adalah dengan mengenal lebih dalam dan belajar dari seseorang yang telah sukses.
Seperti perusahaan jasa CV. INSUN MEDAL didirikan berawal dari berdirinya
RM. TAHU SUMEDANG di Lampung, seiring dengan berkembangnya rumah makan
tersebut, maka dibentuklah suatu badan hukum yang bergerak dibidang jasa makan dan
catering, dibentuklah CV. INSUN MEDAL tgl 12 Januari 2012 di notaris Zul April
SH di kota Bandar Jaya Lampung Tengah, dengan direktur utama Tauby Isdat.
Maksud dan tujuan dibentuknya CV. INSUN MEDAL untuk meningkatkan
eksistensi perusahaan supaya profesional dan terdaftar secara hukum. CV. INSUN
MEDAL telah banyak bekerja sama dengan perusahaan-perusahaan besar Nasional
untuk melayani jasa catering seperti perusahaan Gas Negara, Pertamina, Bank
Nasional, Pemda setempat, juga melayani pesanan perseorangan untuk Pesta
Pernikahan, Ulang Tahun, Seminar, Rapat, dll.
-
27
3.1.2. Struktur Organisasi dan Fungsi
Dalam suatu organisasi, terdapat hubungan diantara sumber daya manusia
dengan segala aktivitas bisnis yang ada. Makin banyak kegiatan yang dilakukan dalam
suatu organisasi, makin kompleks pula hubungan-hubungan yang ada. Untuk itu perlu
dibuat suatu bagan yang menggambarkan hubungan-hubungan tersebut yaitu dengan
struktur organisasi.
Berikut ini struktur organisasi dari CV. INSUN MEDAL dimana kekuasaan
tertinggi ditentukan oleh Direktur lalu diteruskan Manager Operational dan Manager
Keuangan, sedangkan Chef Executive memiliki otoritas penuh didalam mengelola
kebutuhan catering dengan dibantu dengan Koordinator Station yang memiliki peran
sama seperti Chef Executive.
-
28
STRUKTUR ORGANISASI CV. INSUN MEDAL
Deskripsi tugas, wewenang, serta tanggung jawab dari masing-masing bagian
menurut struktur organisasi CV. INSUN MEDAL adalah :
1. Direktur
a. Merencanakan, mengorganisasi, memimpin, dan mengendalikan
kebijakan-kebijakan pada perusahaan.
b. Mengevaluasi kegiatan yang berjalan agar tidak melenceng dari tujuan
yang telah ditetapkan.
c. Mengambil keputusan untuk menyelesaikan masalah yang ada didalam
perusahaan.
d. Menerima laporan dari manager tentang perkembangan station
perusahaan untuk dianalisa perkembangan usahanya.
e. Melakukan koordinasi dengan manager operasional untuk lebih
meningkatkan kegiatan operasional perusahaan.
-
29
2. Manager Operational
a. Menentukan sistem perencanaan, organisasi informasi, koordinasi dan
pengawasan station secara langsung.
b. Mengembangkan station perusahaan agar lebih maju dalam kegiatan
operasinya.
c. Mengawasi pelaksanaan operasional berdasarkan laporan-laporan yang
diterima maupun pengawasan secara langsung.
d. Bertanggung jawab kepada Direktur.
3. Manager Keuangan
a. Menyusun budget, profit planning, dan kontrol tahunan yang terdiri
dari cash flow, balance sheet, dan income statement.
b. Mengevaluasi laporan keuangan masing-masing station perusahaan.
c. Memeriksa dan mencocokkan laporan keuangan dengan pembukuan.
d. Membuat analisa laporan keuangan tahunan.
e. Bertanggung jawab kepada Direktur.
4. Chef Executive
a. Mengatur dan mengawasi bagian penjualan dan persediaan catering.
b. Memeriksa data dan informasi dari hasil penjualan.
c. Membuat rencana dan kebijakan penjualan catering.
d. Menganalisa dan mengawasi kinerja pegawai.
e. Bertanggung jawab kepada Manager Operational.
5. Koordinator Station
a. Mengatur dan mengawasi bagian penjualan dan persediaan catering.
b. Membuat rencana dan kebijakan penjualan catering.
c. Menganalisa dan mengawasi kinerja pegawai.
d. Bertanggung jawab kepada Manager Operational.
3.2. Tinjauan Kasus
Dalam kasus ini penulis memperoleh langsing informasi dari bagian
pemasaran serta data laporan pembelian pada CV. INSUN MEDAL.
-
30
3.2.1. Proses Bisnis Sistem Berjalan
1. Proses Pembuatan Kontrak
Pemilik membuat penawaran melalui email atau via telepon pada konsumen, setelah
itu konsumen dapat melakukan negosiasi harga dan paket catering. Setelah ditemui
kesepakatan, maka dibuatkan kontrak kerjasama oleh pemilik kepada perusahaan,
dimana di dalam kontrak tersebut terdapat paket yang dipesanm dan biaya tambahan
lainnya.
2. Proses Pengiriman Paket Catering
Setelah kontrak dibuat, konsumen melakukan permintaan pengiriman kepada admin,
kemudian admin akan meneruskan permintaan kepada bagian pengiriman untuk
menyiapkan dan mengirimkan. Admin menyertakan surat jalan sebagai bukti
pengiriman yang akan diserahkan kepada konsumen.
3. Proses Penagihan
Setelah kesepakatan selesai, maka admin membuat surat penagihan berdasarkan
kontrak, khusus perorangan maka wajib membayar 50% dari harga kesepakatan
kontrak.
4. Proses Pembayaran Tagihan
Setelah menerima surat penagihan, kemudian konsumen melakukan pembayaran
sesuai dengan surat penagihan yang telah dikirimkan kemudian mengirimkan bukti
pembayaran kepada pemilik, setelah itu bukti pembayaran diserahkan pada admin
untuk diarsipkan.
-
31
5. Proses Pembuatan Laporan
Setiap akhir bulan admin membuat laporan dengan melakukan rekapitulasi berdasarkan
transaksi yang telah dilakukan selama 1 bulan, kemudian memberikan laporan tersebut
pada pemilik.
-
32
3.2.2. Activity Diagram
1. Activity Diagram Proses Pembuatan Kontrak
Gambar III.2
Activity Diagram Proses Pembuatan Kontrak
act Proses Pembuatan Kontrak
KonsumenPemilik
Mulai
Membuat Penawaran
Mengirimkan Penawaran Melakukan Negosiasi
Setuju?
Mempertimbangkan
Negosiasi
Membuat Kontrak Menerima Kontrak
Selesai
Tidak
Ya
-
33
2. Activity Diagram Pengiriman Paket Catering
Gambar III.3
Activity Diagram Proses Pengiriman Paket Catering
act Proses Pengiriman Catering
PengirimanAdminKonsumen
Mulai
Melakukan Permintaan
Pengiriman
Menerima Permintaan
Pengiriman
Meneruskan Permintaan ke
Bagian Pengiriman dan
Menyiapkan surat Jalan
Menyiapkan Paket Catering
Mengirimkan Paket Catering
dan Surat Jalan
Menerima Paket Catering dan
Surat Jalan
Selesai
-
34
3. Activity Diagram Proses Penagihan
Gambar III.4
Activity Diagram Proses Penagihan
act Proses Penagihan
KonsumenAdmin
Mulai
Membuat Penagihan/Invoice
Sesuai Dengan Kontrak
Mengirimkan Penagihan Menerima Penagihan
Selesai
-
35
4. Activity Diagram Proses Pembayaran Tagihan
Gambar III.5
Activity Diagram Proses Pembayaran Tagihan
act Proses Pembayaran
AdminPemilikKonsumen
Mulai
Melakukan Pembayaran
Mengirimkan Bukti
Pembayaran
Menerima Bukti Pembayaran
Memberikan Pada Admin
Untuk Diarsipkan
Mengarsipkan Bukti dan
Mencatatnya
Selesai
-
36
5. Activity Diagram Proses Pembuatan Laporan
Gambar III.6
Activity Diagram Proses Pembuatan Laporan
3.2.3. Dokumen Masukan
1. Nama Dokumen : Data Paket
Fungsi : Untuk pilihan paket
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : -
Frekuensi : Setiap kali ada permintaan
Format : Lampiran A.1
act Proses Pembuatan Laporan
PemilikAdmin
Mulai
Membuat Rekap Transaksi
Membuat Laporan Memeriksa Laporan
Selesai
-
37
2. Nama Dokumen : Data Konsumen
Fungsi : Sebagai data konsumen catering
Sumber : Konsumen
Tujuan : Admin
Media : Kertas
Jumlah : -
Frekuensi : Setiap kali ada konsumen baru
Format : Lampiran A.2
3.2.4. Dokumen Keluaran
1. Nama Dokumen : Kontrak
Fungsi : sebagai bukti kesepakatan kerjasama
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : 1
Frekuensi : Setiap kali ada kontrak baru
Format : Lampiran B.1
2. Nama Dokumen : Surat jalan pengiriman
Fungsi : sebagai bukti pengiriman paket
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : 1
Frekuensi : Setiap kali ada pengiriman
Format : Lampiran B.2
-
38
3. Nama Dokumen : Invoice/Penagihan
Fungsi : sebagai surat penagihan pembayarn catering
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : 1
Frekuensi : Setiap kali ada penagihan
Format : Lampiran B.3
4. Nama Dokumen : Kwitansi Pembayaran
Fungsi : sebagai bukti pembayaran atas tagihan
Sumber : Admin
Tujuan : Konsumen
Media : Kertas
Jumlah : 1
Frekuensi : Setiap kali ada pembayarn
Format : Lampiran B.4
3.2.5. Permasalahan Pokok
Sebuah sistem yang dirancang oleh manusia tidak luput dari permasalahan terlebih lagi jika
sistem tersebut memiliki kompleksitas yang besar. Pada CV Insun Medal ada beberapa
permasalahan pokok yang dihadapi, antara lain:
1. Sistem yang berjalan masih konvensional dan belum memiliki sistem terkomputerisasi
yang saling terintegrasi.
-
39
2. Dokumen yang dibuat seperti kontrak, penagihan, dan kwitansi masih menggunakan
Microsoft Excel dimana akan sangat kesulitan untuk melacak transaksi sebab file yang
dibuat dapat lebih dari satu file.
3. Dalam pembuatan laporan bulanan, semua transaksi yang telah dilakukan harus di
rekap ulang dengan mengurutkan transaksi satu persatu, sehingga memerlukan waktu
yang lebih lama.
3.2.6. Pemecahan Masalah
Untuk mengatasi permasalahan yang dialami, dibutuhkan pemecahan masalah yang
tepat, berikut pemecahan masalah yang penulis berikan, antara lain:
1. Membuat sistem yang terkomputerisasi dan mengintegrasikan semua data terkait ke
dalam basis data.
2. Membuat sistem yang dapat menangani proses bisnis rutin dari perusahaan dan dapat
menghasilkan keluaran seperti penagihan dan kwitansi dengan cepat.
3. Membuat sistem yang dapat menangani pembuatan laporan dengan lebih efisien yaitu
dengan mengandalkan data yang telah masuk ke dalam basis data sebelumnya.
3.3. Analisis Kebutuhan Software
3.3.1. Analisa Kebutuhan
Sebuah sistem dapat berjalan dengan baik jika dalam analisa kebutuhan saat
perancangan sistem tepat sesuai permasalahan yang dihadapi, analisa ini meliputi,
perangkat lunak digunakan hingga kebutuhan pengguna. Berikut analisa kebutuhan
berdasarkan kebutuhan pengguna :
A. Admin
A.1. Melakukan Login
A.2. Mengelola Paket
-
40
A.3. Mengelola Konsumen
A.4. Mengelola Kontrak
A.5. Mengelola Penagihan
A.6. Melihat Laporan
B. Pemilik
B.1 Melakukan Login
B.2 Mengelola Pengguna
B.3 Mengelola Pembayaran
B.4 Melihat Laporan
-
41
3.3.2. Use Case Diagram
1. Use Case Diagram Pemilik
A. Gambar Use Case Diagram
Gambar III.7
Use Case Diagram Pemilik
uc Use Case Diagram Pemilik
Pemilik
Login
Mengelola
Pengguna
Menambah
Pengguna Mengubah
Pengguna
Menghapus
Pengguna
Melihat Pengguna
Mencari
Pengguna
Mengelola
Pembayaran
Menambah
Pembayaran
Mencetak
Kwitansi
Melihat
Pembayaran Mencari
Pembayaran
Melihat Laporan
Melihat Laporan
Penagihan
Melihat Laporan
Sewa Per
Penyewa
Melihat Laporan
Sewa
Menghapus
Pembayaran
Melihat Laporan
Pembayaran
Melihat Laporan
Jurnal
«include»
«include»
«include»
-
42
B. Deskripsi Use Case
1) Deskripsi Use Case Diagram Menambah Pengguna
Tabel III.1
Deskripsi Use Case Diagram Menambah Pengguna
Tujuan Pemilik dapat menambah data pengguna
Deskripsi Sistem ini memungkinkan aktor
menambah pengguna yang berbeda-beda
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data pengguna baru 2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data pengguna ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data pengguna baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data pengguna ke basis data
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data pengguna
baru
2) Deskripsi Use Case Diagram Mengubah Pengguna Tabel III.2
-
43
Deskripsi Use Case Diagram Mengubah Pengguna
Tujuan Pemilik dapat mengubah data pengguna
Deskripsi Sistem ini memungkinkan aktor
mengubah pengguna.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pengguna yang dicari
4. Melakukan perubahan pada data pengguna
2. Mencari data pengguna yang akan dibuah.
3. Menampilkan data pengguna
5. Melakukan validasi terhadap masukan.
6. Menyimpan data pengguna ke basis data
7. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan nama pengguna yang dicari
4. Melakukan perubahan pada data pengguna
7. Memperbaiki masukan yang salah
2. Mencari data pengguna yang akan dibuah.
3. Menampilkan data pengguna
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap masukan.
9. Menyimpan data pengguna ke basis data
10. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data pengguna
yang telah diubah
-
44
3) Deskripsi Use Case Diagram Mencari Pengguna Tabel III.3
Deskripsi Use Case Diagram Mencari Pengguna
Tujuan Pemilik dapat mencari data pengguna
Deskripsi Sistem ini memungkinkan aktor mencari
pengguna.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pengguna yang dicari
2. Mencari data pengguna di basis data. 3. Menampilkan daftar pengguna yang
sesuai.
Kondisi Akhir Sistem dapat mencari data pengguna
4) Deskripsi Use Case Diagram Menghapus Pengguna Tabel III.4
Deskripsi Use Case Diagram Menghapus Pengguna
Tujuan Pemilik dapat menghapus data pengguna
Deskripsi Sistem ini memungkinkan aktor
menghapus pengguna.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pengguna yang dicari
2. Klik hapus
5. Memilih Ya
2. Mencari data pengguna yang akan dibuah.
4. Konfirmasi Hapus
-
45
6. Menghapus data pengguna dari basis data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data pengguna
5) Deskripsi Use Case Diagram Menambah Pembayaran Tabel III.5
Deskripsi Use Case Diagram Menambah Pembayaran
Tujuan Pemilik dapat menambah data
pembayaran
Deskripsi Sistem ini memungkinkan aktor
menambah pembayaran.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data pembayaran baru
2. Memeriksa apakah valid tidaknya masukan
3. Menyimpan data pembayaran ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data pembayaran baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data pembayaran ke basis data
7. Menampilkan pesan berhasil disimpan
-
46
Kondisi Akhir Sistem dapat menyimpan data
pembayaran baru
6) Deskripsi Use Case Diagram Mencari Pembayaran Tabel III.6
Deskripsi Use Case Diagram Mencari Pembayaran
Tujuan Pemilik dapat mencari data pembayaran
Deskripsi Sistem ini memungkinkan aktor mencari
data pembayaran.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama pembayaran yang dicari
2. Mencari data pembayaran di basis data.
3. Menampilkan daftar pembayaran yang sesuai.
Kondisi Akhir Sistem dapat mencari data pembayaran
7) Deskripsi Use Case Diagram Menghapus Pembayaran Tabel III.7
Deskripsi Use Case Diagram Menghapus Pembayaran
Tujuan Pemilik dapat menghapus data
pembayaran
Deskripsi Sistem ini memungkinkan aktor
menghapus pembayaran.
Aktor Pemilik
Kondisi Awal Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode pembayaran yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data pembayaran yang akan dibuah.
4. Konfirmasi Hapus
-
47
6. Menghapus data pembayaran dari basis data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data pembayaran
8) Deskripsi Use Case Diagram Mencetak Kwitansi Pembayaran Tabel III.8
Deskripsi Use Case Diagram Mencetak Kwitansi Pembayaran
Tujuan Pemilik dapat mencetak kwitansi
pembayaran
Deskripsi Sistem ini memungkinkan aktor mencetak
kwitansi pembayaran.
Aktor Pemilik
Kondisi Awal
Pemilik sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode pembayaran yang dicari
3. Klik Cetak
2. Mencari data pembayaran yang akan dibuah.
4. Menampilkan kwitansi untuk dicetak
Kondisi Akhir Sistem dapat menghapus data pembayaran
-
48
2. Use Case Diagram Admin
A. Gambar Use Case Diagram
Gambar III.8
Use Case Diagram Admin
B. Deskripsi Use Case
1) Deskripsi Use Case Diagram Menambah Paket
Tabel III.9
Deskripsi Use Case Diagram Menambah Paket
uc Use Case Diagram Admin
Admin
Login
Mengelola
Konsumen
Mengubah
Konsumen
Menghapus
Konsumen
Mencari
Konsumen
Menambah
Konsumen
Melihat
Konsumen
Mengelola
Perkiraan
Mengubah
PerkiraanMenghapus
Perkiraan
Mencari
PerkiraanMenambah
Perkiraan
Melihat
Perkiraan
Melihat Laporan
Melihat Laporan
Pembayaran
Melihat Laporan
Jurnal
Mengelola
Kontrak
Menambah
Kontrak
Melihat Kontrak
Mencari KontraK
Mengelola
Penagihan
Menambah
Penagihan
Mencetak
Invoice
Mencari
Penagihan
Menghapus
Penagihan
Mengelola Jurnal
Umum
Menambah
Jurnal UmumMelihat Jurnal
Umum
Mencari Jurnal
Umum
Melihat Laporan
Penagihan
Mengelola Paket
Menambah Paket
Mengubah Paket
Melihat Paket Menghapus Paket Mencari Paket
«include»
«include»
«include»«include»
«include»
«include»
«include»
-
49
Tujuan Admin dapat menambah data paket
Deskripsi Sistem ini memungkinkan aktor
menambah paket yang berbeda-beda
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data paket baru 2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data paket ke basis data 4. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
1. Menginput data paket baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data paket ke basis data 7. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data paket baru
-
50
9) Deskripsi Use Case Diagram Mengubah Paket
Tabel III.10
Deskripsi Use Case Diagram Mengubah Paket
Tujuan Admin dapat mengubah data paket
Deskripsi
Sistem ini memungkinkan aktor
mengubah paket.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama paket yang
dicari
5. Melakukan perubahan pada
data paket
3. Mencari data paket yang akan dibuah.
4. Menampilkan data paket
6. Melakukan validasi terhadap
masukan.
7. Menyimpan data paket ke basis data
8. Menampilkan pesan berhasil
disimpan
Skenario Alternatif
-
51
1. Memasukkan nama paket yang dicari
4. Melakukan perubahan pada data paket
7. Memperbaiki masukan yang salah
2. Mencari data paket yang akan dibuah. 3. Menampilkan data paket
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap masukan.
9. Menyimpan data paket ke basis data 10. Menampilkan pesan berhasil
disimpan
Kondisi Akhir Sistem dapat menyimpan data paket yang
telah diubah
10) Deskripsi Use Case Diagram Mencari Paket
Tabel III.11
Deskripsi Use Case Diagram Mencari Paket
Tujuan Admin dapat mencari data paket
Deskripsi Sistem ini memungkinkan aktor mencari
paket.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama paket yang dicari
2. Mencari data paket di basis data. 3. Menampilkan daftar paket yang
sesuai.
Kondisi Akhir Sistem dapat mencari data paket
-
52
11) Deskripsi Use Case Diagram Menghapus Paket
Tabel III.12
Deskripsi Use Case Diagram Menghapus Paket
Tujuan Admin dapat menghapus data paket
Deskripsi Sistem ini memungkinkan aktor
menghapus paket.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama paket yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data paket yang akan dibuah.
4. Konfirmasi Hapus
6. Menghapus data paket dari basis data 7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data paket
12) Deskripsi Use Case Diagram Menambah Konsumen
Tabel III.13
Deskripsi Use Case Diagram Menambah Konsumen
Tujuan Admin dapat menambah data konsumen
Deskripsi Sistem ini memungkinkan aktor
menambah konsumen yang berbeda-beda
Aktor Admin
Kondisi Awal Admin sudah login
-
53
Aksi Aktor Reaksi Sistem
Skenario Normal
5. Menginput data konsumen baru 6. Memeriksa apakah valid tidaknya
masukan
7. Menyimpan data konsumen ke basis data
8. Menampilkan pesan berhasil disimpan
Skenario Alternatif
2. Menginput data konsumen baru
8. Memperbaiki masukan yang salah.
4. Memeriksa apakah valid tidaknya masukan
5. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
9. Memeriksa apakah valid tidaknya masukan
10. Menyimpan data konsumen ke basis data
11. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data konsumen
baru
13) Deskripsi Use Case Diagram Mengubah Konsumen
Tabel III.14
Deskripsi Use Case Diagram Mengubah Konsumen
Tujuan Admin dapat mengubah data konsumen
Deskripsi
Sistem ini memungkinkan aktor
mengubah konsumen.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
-
54
Skenario Normal
1. Memasukkan nama konsumen yang dicari
4. Melakukan perubahan pada data konsumen
2. Mencari data konsumen yang akan dibuah.
3. Menampilkan data konsumen
5. Melakukan validasi terhadap masukan.
6. Menyimpan data konsumen ke basis data
7. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan nama konsumen yang dicari
4. Melakukan perubahan pada data konsumen
7. Memperbaiki masukan yang salah
2. Mencari data konsumen yang akan dibuah.
3. Menampilkan data konsumen
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap masukan.
9. Menyimpan data konsumen ke basis data
10. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data konsumen
yang telah diubah
14) Deskripsi Use Case Diagram Mencari Konsumen
Tabel III.15
Deskripsi Use Case Diagram Mencari Konsumen
Tujuan Admin dapat mencari data konsumen
-
55
Deskripsi
Sistem ini memungkinkan aktor mencari
konsumen.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama konsumen
yang dicari
2. Mencari data konsumen di basis data.
3. Menampilkan daftar konsumen yang
sesuai.
Kondisi Akhir Sistem dapat mencari data konsumen
15) Deskripsi Use Case Diagram Menghapus Konsumen
Tabel III.16
Deskripsi Use Case Diagram Menghapus Konsumen
Tujuan Admin dapat menghapus data konsumen
Deskripsi Sistem ini memungkinkan aktor menghapus
konsumen.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
-
56
1. Memasukan nama konsumen yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data konsumen yang akan dibuah. 4. Konfirmasi Hapus 6. Menghapus data konsumen dari basis data 7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data konsumen
1) Deskripsi Use Case Diagram Menambah Penagihan
Tabel III.17
Deskripsi Use Case Diagram Menambah Penagihan
Tujuan Direktur dapat menambah data penagihan
Deskripsi Sistem ini memungkinkan aktor
menambah penagihan.
Aktor Direktur
Kondisi Awal Direktur sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data penagihan baru 2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data penagihan ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data penagihan baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data penagihan ke basis data
-
57
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data penagihan
baru
16) Deskripsi Use Case Diagram Mencari Penagihan
Tabel III.18
Deskripsi Use Case Diagram Mencari Penagihan
Tujuan Direktur dapat mencari data penagihan
Deskripsi
Sistem ini memungkinkan aktor mencari
data penagihan.
Aktor Direktur
Kondisi Awal Direktur sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
2. Memasukan nama penagihan
yang dicari
4. Mencari data penagihan di basis data.
5. Menampilkan daftar penagihan yang
sesuai.
Kondisi Akhir Sistem dapat mencari data penagihan
17) Deskripsi Use Case Diagram Menghapus Penagihan
Tabel III.19
-
58
Deskripsi Use Case Diagram Menghapus Penagihan
Tujuan Direktur dapat menghapus data penagihan
Deskripsi Sistem ini memungkinkan aktor
menghapus penagihan.
Aktor Direktur
Kondisi Awal Direktur sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
2. Memasukkan periode penagihan yang dicari
4. Klik hapus
6. Memilih Ya
3. Mencari data penagihan yang akan dibuah.
5. Konfirmasi Hapus
8. Menghapus data penagihan dari basis data
9. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data penagihan
18) Deskripsi Use Case Diagram Mencetak Invoice Penagihan
Tabel III.20
Deskripsi Use Case Diagram Mencetak Invoice Penagihan
Tujuan
Direktur dapat mencetak invoice
penagihan
Deskripsi
Sistem ini memungkinkan aktor mencetak
invoice penagihan.
Aktor Direktur
Kondisi Awal Direktur sudah login
-
59
Aksi Aktor Reaksi Sistem
Skenario Normal
2. Memasukkan periode penagihan yang dicari
4. Klik Cetak
3. Mencari data penagihan yang akan dibuah.
5. Menampilkan invoice untuk dicetak
Kondisi Akhir Sistem dapat menghapus data penagihan
19) Deskripsi Use Case Diagram Menambah Perkiraan
Tabel III.21
Deskripsi Use Case Diagram Menambah Perkiraan
Tujuan Admin dapat menambah data perkiraan
Deskripsi Sistem ini memungkinkan aktor
menambah perkiraan yang berbeda-beda
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
9. Menginput data perkiraan baru
10. Memeriksa apakah valid tidaknya masukan
11. Menyimpan data perkiraan ke basis data
12. Menampilkan pesan berhasil disimpan
Skenario Alternatif
3. Menginput data perkiraan baru
12. Memperbaiki masukan yang salah.
6. Memeriksa apakah valid tidaknya masukan
7. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
13. Memeriksa apakah valid tidaknya masukan
-
60
14. Menyimpan data perkiraan ke basis data
15. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data perkiraan
baru
20) Deskripsi Use Case Diagram Mengubah Perkiraan
Tabel III.22
Deskripsi Use Case Diagram Mengubah Perkiraan
Tujuan Admin dapat mengubah data perkiraan
Deskripsi Sistem ini memungkinkan aktor
mengubah perkiraan.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama perkiraan yang dicari
4. Melakukan perubahan pada data perkiraan
2. Mencari data perkiraan yang akan dibuah.
3. Menampilkan data perkiraan
5. Melakukan validasi terhadap masukan.
6. Menyimpan data perkiraan ke basis data
7. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Memasukkan nama perkiraan yang dicari
4. Melakukan perubahan pada data perkiraan
2. Mencari data perkiraan yang akan dibuah.
3. Menampilkan data perkiraan
-
61
7. Memperbaiki masukan yang salah
5. Melakukan validasi terhadap masukan.
6. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
8. Melakukan validasi terhadap masukan.
9. Menyimpan data perkiraan ke basis data
10. Menampilkan pesan berhasil disimpan
Kondisi Akhir
Sistem dapat menyimpan data perkiraan
yang telah diubah
21) Deskripsi Use Case Diagram Mencari Perkiraan
Tabel III.23
Deskripsi Use Case Diagram Mencari Perkiraan
Tujuan Admin dapat mencari data perkiraan
Deskripsi
Sistem ini memungkinkan aktor mencari
perkiraan.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama perkiraan yang dicari
2. Mencari data perkiraan di basis data. 3. Menampilkan daftar perkiraan yang
sesuai.
-
62
Kondisi Akhir Sistem dapat mencari data perkiraan
22) Deskripsi Use Case Diagram Menghapus Perkiraan
Tabel III.24
Deskripsi Use Case Diagram Menghapus Perkiraan
Tujuan Admin dapat menghapus data perkiraan
Deskripsi Sistem ini memungkinkan aktor
menghapus perkiraan.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan nama perkiraan yang dicari
3. Klik hapus
5. Memilih Ya
2. Mencari data perkiraan yang akan dibuah.
4. Konfirmasi Hapus
6. Menghapus data perkiraan dari basis data
7. Menampilkan pesan berhasil dihapus
Kondisi Akhir Sistem dapat menghapus data perkiraan
23) Deskripsi Use Case Diagram Menambah Jurnal Umum
Tabel III.25
Deskripsi Use Case Diagram Menambah Jurnal Umum
-
63
Tujuan Admin dapat menambah data jurnal
umum
Deskripsi
Sistem ini memungkinkan aktor
menambah jurnal umum yang berbeda-
beda
Aktor Admin
Kondisi Awal
Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data jurnal umum baru
2. Memeriksa apakah valid tidaknya masukan
3. Menyimpan data jurnal umum ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data jurnal umum baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data jurnal umum ke basis data
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data jurnal
umum baru
24) Deskripsi Use Case Diagram Mencari Jurnal Umum
Tabel III.26
Deskripsi Use Case Diagram Mencari Jurnal Umum
-
64
Tujuan Admin dapat mencari data jurnal umum
Deskripsi Sistem ini memungkinkan aktor mencari
jurnal umum.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode jurnal umum yang dicari
2. Mencari data jurnal umum di basis data.
3. Menampilkan daftar jurnal umum yang sesuai.
Kondisi Akhir Sistem dapat mencari data jurnal umum
25) Deskripsi Use Case Diagram Melihat Laporan
Tabel III.27
Deskripsi Use Case Diagram Melihat Laporan
Tujuan Admin dapat melihat laporan
Deskripsi Sistem ini memungkinkan admin melihat
laporan yang diinginkan
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput periode laporan 2. Klik Lihat
3. Menampilkan Laporan yang diminta
Kondisi Akhir Sistem dapat menampilkan laporan
26) Deskripsi Use Case Diagram Menambah Kontrak
Tabel III.28
Deskripsi Use Case Diagram Menambah Kontrak
-
65
Tujuan Admin dapat menambah data kontrak
Deskripsi Sistem ini memungkinkan aktor
menambah kontrak yang berbeda-beda
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Menginput data kontrak baru 2. Memeriksa apakah valid tidaknya
masukan
3. Menyimpan data kontrak ke basis data
4. Menampilkan pesan berhasil disimpan
Skenario Alternatif
1. Menginput data kontrak baru
4. Memperbaiki masukan yang salah.
2. Memeriksa apakah valid tidaknya masukan
3. Menampilkan pesan peringatan bahwa data yang diinput tidak valid
5. Memeriksa apakah valid tidaknya masukan
6. Menyimpan data kontrak ke basis data
7. Menampilkan pesan berhasil disimpan
Kondisi Akhir Sistem dapat menyimpan data kontrak
baru
27) Deskripsi Use Case Diagram Mencari Kontrak
Tabel III.29
Deskripsi Use Case Diagram Mencari Kontrak
Tujuan Admin dapat mencari data kontrak
-
66
Deskripsi
Sistem ini memungkinkan aktor mencari
kontrak.
Aktor Admin
Kondisi Awal Admin sudah login
Aksi Aktor Reaksi Sistem
Skenario Normal
1. Memasukkan periode kontrak
yang dicari
2. Mencari data kontrak di basis data.
3. Menampilkan daftar kontrak yang
sesuai.
Kondisi Akhir Sistem dapat mencari data kontrak
-
67
3.3.3. Activity Diagram
1. Activity Diagram Login
Gambar III.9
Activity Diagram Login
act Activity Login
SistemAdmin/Pemilik
Mulai
ID Pengguna dan Password
Klik Login Validasi Login
Valid?Tampilkan Pesan Error
Tampilkan Menu Utama
Selesai
Form Login
Ya
Tidak
-
68
2. Activity Diagram Mengelola Pengguna
Gambar III.10
Activity Diagram Pengguna
act Mengelola Pengguna
SistemPemilik
Mulai
Pilih
Tambah
Input Data Pengguna
Simpan
Input Nama Pengguna
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Pengguna
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Ya
Ya
Ya
Tidak
Tidak
Tidak
-
69
3. Activity Diagram Mengelola Konsumen
Gambar III.11
Activity Diagram Konsumen
act Mengelola Konsumen
SistemAdmin
Mulai
Pilih
Tambah
Input Data Konsumen
Simpan
Input Nama Konsumen
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Konsumen
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Ya
Tidak
Ya
Ya
Tidak
Tidak
-
70
4. Activity Diagram Mengelola Paket
Gambar III.12
Activity Diagram Paket
act Mengelola Paket
SistemAdmin
Mulai
Pilih
Tambah
Input Data Perkiraan
Simpan
Input Nama Akun
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Perkiraan
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Ya
YaTidak
Ya
Tidak
Tidak
-
71
5. Activity Diagram Mengelola Kontrak
Gambar III.13
Activity Diagram Kontrak
act Mengelola Kontrak
SistemAdmin
Mulai
Pilih
Tambah
Input Data Konsumen
Simpan
Input Periode
Validasi
Valid?
Simpan Data
Cari Data
Tampilkan Data
Simpan?
Batal
Selesai
Ada?
Input Data Paket
Input Lagi?
Cari
Tidak
Ya
Tidak
Tidak
Tidak
Ya
Ya
Ya
-
72
6. Activity Diagram Mengelola Penagihan
Gambar III.14
Activity Diagram Penagihan
act Mengelola Penagihan
SistemAdmin
Mulai
Pilih
Tambah
Input Data Penagihan
Simpan
Input Periode
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Penagihan
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pesan Error
Cetak
Cetak Invoice
Cari
Tidak
YaTidak
Ya
Ya
Tidak
-
73
7. Activity Diagram Mengelola Pembayaran
Gambar III.15
Activity Diagram Pembayaran
act Mengelola Pembayaran
SistemPemilik
Mulai
Pilih
Tambah
Input Data Pembayaran
Simpan
Input Periode
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Pembayaran
Simpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pesan Error
Cetak
Cetak Kwitansi
Cari
Tidak
[Ya]
Tidak
Ya
[Tidak]
Ya
-
74
8. Activity Diagram Mengelola Perkiraan
Gambar III.16
Activity Diagram Perkiraan
act Mengelola Perkiraan
SistemAdmin
Mulai
Pilih
Tambah
Input Data Perkiraan
Simpan
Input Nama Akun
Validasi
Valid?
Simpan Data
Cari Data
Pilh Data Perkiraan
Ubah
Ubah DataSimpan?
Batal
Selesai
Hapus Hapus Data
Ada
data?
Tampilkan Pessan Error
Cari
Tidak
Tidak
Ya
Ya
Tidak
Ya
-
75
9. Activity Diagram Mengelola Jurnal
Gambar III.17
Activity Diagram Jurnal
act Mengelola Jurnal
SistemAdmin
Mulai
Pilih
Tambah
Input Data Jurnal
Simpan
Input Periode
Validasi
Valid?
Simpan Data
Cari Data
Tampilkan Data
Simpan?
Batal
Selesai
Ada?
Cari
[Ya]
Tidak
Ya
[Tidak]
Tidak
[Ya]
-
76
3.4. Desain
3.4.1. Entity Relationship Diagram (ERD)
Gambar III.18
Entity Relationship Diagram
-
77
3.4.2. Logical Record Structure (LRS)
Gambar III.19
Logical Record Structure
-
78
3.4.3. Spesifikasi File
1. Spesifikasi File Tabel Pengguna
Nama Database : catering
Nama File : pengguna
Tipe File : File Master
Akses File : Random
Record Size : 95 Karakter
Field Key : id_pengguna
Tabel III.30
Spesifikasi File Tabel Pengguna
No Elemen Data Akronim Tipe Panjang Keterangan
1 Id Pengguna id_pengguna VARCHAR 15 Primary Key
2 Nama Pengguna nama_pengguna VARCHAR 35
3 Password password VARCHAR 35
4 Hak Akses hak_akses VARCHAR 10
2. Spesifikasi File Tabel Paket
Nama Database : catering
Nama File : paket
Tipe File : File Master
Akses File : Random
Record Size : 151 Karakter
Field Key : kode_paket
Tabel III.31
-
79
Spesifikasi File Tabel Paket
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Paket kode_paket CHAR 5 Primary Key
2 Nama Paket nama_paket VARCHAR 35
3 Jumlah Porsi jumlah_porsi INT 11
4 Harga Paket harga_paket DOUBLE
5 Rincian rincian VARCHAR 100
3. Spesifikasi File Tabel Konsumen
Nama Database : catering
Nama File : konsumen
Tipe File : File Master
Akses File : Random
Record Size : 460 Karakter
Field Key : kode_konsumen
Tabel III.32
Spesifikasi File Tabel Konsumen
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode Konsumen
kode_konsumen CHAR
5
PRIMARY
KEY
2 Nama Konsumen
nama_konsumen VARCHAR
35
-
80
3
Alamat
Konsumen
alamat_konsumen VARCHAR
100
4 Kontak Personal kontak_personal VARCHAR 35
5
Kategori
Konsumen
kategori_konsumen VARCHAR 15
6 No Telp no_telp VARCHAR 15
7 Email email VARCHAR 255
4. Spesifikasi File Tabel Perkiraan
Nama Database : catering
Nama File : perkiraan
Tipe File : File Master
Akses File : Random
Record Size : 65 Karakter
Field Key : kode_akun
Tabel III.33
Spesifikasi File Tabel Perkiraan
No Elemen Data Akronim Tipe Panjang Keterangan
1 Kode akun kode_akun CHAR 5 PRIMARY KEY
2 Nama Akun nama_akun VARCHAR 35
3 Jenis Akun jenis_akun VARCHAR 25
5. Spesifikasi File Tabel Kontrak
-
81
Nama Database : catering
Nama File : kontrak
Tipe File : File Transaksi
Akses File : Random
Record Size : 35 Karakter
Field Key : kode_kontrak
Tabel III.34
Spesifikasi File Tabel Kontrak
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Kontrak no_kontrak CHAR 15 PRIMARY KEY
2 Tanggal Kontrak tanggal_kontrak DATE
3 Kode Konsumen kode_konsumen CHAR 5
4 Nilai Kontrak nilai_kontrak DOUBLE
5 Ongkos Kirim ongkos_kirim DOUBLE
6 PPN ppn DOUBLE
7 Total Kontrak total_kontrak DOUBLE
8 Id Pengguna id_pengguna VARCHAR 15 FOREIGN KEY
-
82
6. Spesifikasi File Tabel Detail Kontrak
Nama Database : catering
Nama File : detail_kontrak
Tipe File : File Transaksi
Akses File : Random
Record Size : 24 Karakter
Field Key : -
Tabel III.35
Spesifikasi File Tabel Detail Kontrak
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Kontrak no_kontrak CHAR 15 PRIMARY KEY
2 Kode Paket kode_paket CHAR 5 FOREIGN KEY
3 Jumlah Paket jumlah_paket INT 4
4 Harga Paket harga_paket DOUBLE
7. Spesifikasi File Tabel Penagihan
Nama Database : catering
Nama File : penagihan
Tipe File : File Transaksi
Akses File : Random
Record Size : 46 Karakter
Field Key : no_penagihan
-
83
Tabel III.36
Spesifikasi File Tabel Penagihan
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Penagihan no_penagihan CHAR 15 PRIMARY KEY
2 Tgl Penagihan tgl_penagihan DATE
3 Tgl Jatuh Tempo tgl_jatuh_tempo DATE
4 No Kontrak no_kontrak CHAR 15 FOREIGN KEY
5 Nilai Kontrak nilai_kontrak DOUBLE
6 Ongkos Kirim ongkos_kirim DOUBLE
7 PPN Ppn DOUBLE
8 Total Penagihan total_penagihan DOUBLE
9 Id Pengguna id_pengguna VARCHAR 15 FOREIGN KEY
10 Status Bayar status_bayar TINYINT 1
-
84
8. Spesifikasi File Tabel Pembayaran
Nama Database : catering
Nama File : pembayaran
Tipe File : File Transaksi
Akses File : Random
Record Size : 45 Karakter
Field Key : no_pembayaran
Tabel III.37
Spesifikasi File Tabel Pembayaran
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Pembayaran no_pembayaran CHAR 15 Primary Key
2 Tgl Pembayaran tgl_pembayaran DATE
3 No Penagihan no_penagihan CHAR 15 Foreign Key
4 Id Pengguna id_pengguna VARCHAR 15 Foreign Key
5 Total Pembayaran total_pembayaran DOUBLE
9. Spesifikasi File Tabel Jurnal
Nama Database : catering
Nama File : jurnal
Tipe File : File Transaksi
Akses File : Random
Record Size : 142 Karakter
Field Key : no_jurnal
-
85
Tabel III.38
Spesifikasi File Tabel Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Jurnal no_jurnal CHAR 7 Primary Key
2 Tgl Jurnal tgl_jurnal DATE
3 Keterangan keterangan VARCHAR 100
4 No Reff no_reff VARCHAR 15
5 Id Pengguna id_pengguna VARCHAR 15 Foreign Key
10. Spesifikasi File Tabel Detail Jurnal
Nama Database : catering
Nama File : detail_jurnal
Tipe File : File Transaksi
Akses File : Random
Record Size : 142 Karakter
Field Key : -
-
86
Tabel III.39
Spesifikasi File Tabel Detail Jurnal
No Elemen Data Akronim Tipe Panjang Keterangan
1 No Jurnal no_jurnal CHAR 7 Foreign Key
2 Kode Akun kode_akun CHAR 5 Foreign Key
3 Debet Debet DOUBLE
4 Kredit Kredit DOUBLE
-
87
3.4.4. Sequence Diagram
1. Sequence Diagram Mengelola Pengguna
Gambar III.20
Sequence Diagram Mengelola Pengguna
sd Sequence Diagram Pengguna
PemilikForm Pengguna Control Pengguna
Pengguna
[Input Data Pengguna]:
FormPengguna()
«create»
[status="Tambah"]:
btntambahActionPerformed()
tambahPengguna()
[Buka Form Pengguna]:
[Validasi]:
btnsimpanActionPerformed()
aktifNonaktif()
bersihInputan()
«create»
[Tampil Error]:
[Set Data]:
-
88
2. Sequence Diagram Mengelola Paket
Gambar III.21
Sequence Diagram Mengelola Paket
sd Sequence Diagram Paket
AdminForm Paket Control Paket
Paket
[Set Data]:
[Input Data Paket]:
buatKodePaket()
[Kode Paket Baru]:
[Status= "Tambah"]:
buatKodePaket()
btntambahActionPerformed()
tambahPaket()
FormPaket()
«create»
[Validasi]:
btnsimpanActionPerformed()
[Tampilkan Kode Paket]:
aktifNonaktif()
[Buat Kode Paket Baru]:
bersihInputan()
Buka Form Paket()
«create»
[Tampil Error]:
-
89
3. Sequence Diagram Mengelola Konsumen
Gambar III.22
Sequence Diagram Mengelola Konsumen
sd Sequence Diagram Konsumen
AdminForm Konsumen Control Konsumen
Konsumen
[Input Data Konsumen]:
tambahKonsumen()
[Kode Konsumen Baru]:
[Validasi]:
buatKodeKonsumen()
btnsimpanActionPerformed()
aktifNonaktif()
bersihInputan()
[Buka Form Konsumen]:
«create»
[Tampilkan Kode Konsumen]:
[Tampil Error]:
[Buat Kode Konsumen Baru]:
[Set Data]:
buatKodeKonsumen()
[Status= "Tambah"]:
FormKonsumen
() «create»
btntambahActionPerformed()
-
90
4. Sequence Diagram Mengelola Kontrak
Gambar III.23
Sequence Diagram Mengelola Kontrak
sd Sequnce Diagram Kontrak
AdminForm Kontrak Control Kontrak
Kontrak
Paket
Detail Kontrak
loop Jika Masih Ada Paket
[Masih Ada Kendaraan Yang disewa]
[Buka Form Kontrak]:
[No Kontrak Baru]:
[Validasi]:
tambahKontrak()
buatNoKontrak()
btnsimpanActionPerformed()
aktifNonaktif()
[Tampil Data Paket]:
bersihInputan()
[Data Tarif]:
«create»
cariPaket()
«create»
[Tampilkan No Kontrak]:
FormKontrak()
«create»
tambahDetailKontrak()
[Buat No Kontrak Baru]:
[Set Data]:
[Tampil Pesan Error]:
buatNoKontrak()
btntambah_itemActionPerformed()
[status= "Tambah"]:
[Tampil Data Paket]:
btntambahActionPerformed()
cariKodePaket
()
«create»
[Pilih Paket]:
-
91
5. Sequence Diagram Mengelola Penagihan
Gambar III.24
Sequence Diagram Mengelola Penagihan
sd Sequence Diagram Penagihan
AdminForm Penagihan Control Penagihan
Penagihan
Kontrak
cariNoKontrak()
[Tampil Pesan Error]:
[Status="Tambah"]:
tno_kontrakKeyPressed()
[Tampil No Penagihan]:
FormPenagihan()
«create»
[Set Data]:
[Buat No Penagihan Baru]:
[Tampil Data Kontrak]:
buatNoPenagihan()
[Data Kontrak]:
tambahPenagihan()
bersihInputan()
cariKontrak()
btntambahActionPerformed()
[Input No Kontrak]:
[Validasi]:
[No Penagihan Baru]:
btnsimpanActionPerformed()
buatNoPenagihan()
[Tampil Data Kontrak]:
[Buka Form Penagihan]:
aktifNonaktif()
-
92
6. Sequence Diagram Mengelola Pembayaran
Gambar III.25
Sequence Diagram Mengelola Pembayarn
sd Sequence Diagram Pembayaran
PemilikForm Pembayaran Control Pembayaran
Pembayaran
Penagihan
tno_penagihanKeyPressed()
btntambahActionPerformed()
[Tampil No Bayar]:
setBayar()
[Buat No Bayar Baru]:
[Tampil Pesan Error]:
buatNoBayar()
[Set Data]:
bersihInputan()
[Tampil Data Penagihan]:
cariNoPenagihan()
[Status="Tambah"]:
[Data Penagihan]:
[Input No Penagihan]:
[Buka Form Pembayaran]:
[No Bayar Baru]:
FormPembayaran()
«create»
tambahBayar()
buatNoBayar()
[Validasi]:
aktifNonaktif()
btnsimpanActionPerformed()
cariNoPenagihan()
[Tampil Data Penagihan]:
-
93
7. Sequence Diagram Mengelola Perkiraan
Gambar III.26
Sequence Diagram Mengelola Perkiraan
sd Sequence Diagram Perkiraan
AdminForm Perkiraan Control Perkiraan
Perkiraan
aktifNonaktif()
[Buka Form Perkiraan]:
bersihInputan()
[Tampil Error]:
«create»
[Set Data]:
[Input Data Akun]:
[status="Tambah"]:
tambahPerkiraan()
btntambahActionPerformed()
FormPerkiraan()
«create»
[Validasi]:
btnsimpanActionPerformed()
-
94
8. Sequence Diagram Mengelola Jurnal
Gambar III.27
Sequence Diagram Mengelola Jurnal
sd Sequence Jurnal
AdminForm Jurnal Control Jurnal
Perkiraan
Jurnal
Detail Jurnal
FormJurnal()
[Input Data Jurnal]:
daftarAkun()
tambahJurnal()
[Tampil No Jurnal]:
«create»
[Validasi]:
[Buat No Jurnal Baru]:
btnsimpanActionPerformed()
buatNoJurnal()
bersihInputan()
«create»
[Status="Tambah"]:
btntambahActionPerformed()
tambahDetailJurnal()
daftarAkun()
[Tampil Pesan Error]:
[No Jurnal Baru]:
«create»
[Set Data]:
buatNoJurnal()
aktifNonaktif()
[Buka Form Jurnal]:
-
95
3.4.5. Deployment Diagram
Gambar III.28
Deployment Diagram
deployment Deployment
Aplikasi
Aplikasi Penerimaan
Pendapatan
Jasper Report
Database Server
MySQL Server
Java
Java Runtime Environment
catering
«use»
MySQL JDBC Driver
«use»
-
96
3.4.6. User Interface
1. Form Login
Gambar III.29
Form Login
2. Form Menu Utama
Gambar III.30
Form Menu Utama
-
97
3. Form Pengguna
Gambar III.31
Form Penguna
4. Form Konsumen
Gambar III.32
-
98
Form Konsumen
-
99
5. Form Paket
Gambar III.33
Form Paket
6. Form Kontrak
-
100
Gambar III.34
Form Kontrak
7. Form Penagihan
Gambar III.35
Form Penagihan
8. Form Pembayaran
-
101
Gambar III.36
Form Pembayaran
-
102
9. Form Perkiraan
Gambar III.37
Form Perkiraan
-
103
10. Form Jurnal
Gambar III.38
Form Jurnal
11. Form Laporan
Gambar III.39
-
104
Form Laporan
3.5. Implementasi
3.5.1. Code Generation
1. Model Kontrak
package model;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class Kontrak {
private Connection koneksi;
private String no_kontrak;
private Date tgl_kontrak;
private String id_konsumen;
private double nilai_kontrak;
private double ongkos_kirim;
-
105
private double ppn;
private double total_kontrak;
private String id_pengguna;
private String pesan_error;
public Kontrak() {
try {
Class.forName("com.mysql.jdbc.Driver");
koneksi = DriverManager.getConnection("jdbc:mysql://localhost/catering?",
"root", "");
} catch (ClassNotFoundException | SQLException ex) {
this.pesan_error = ex.getMessage();
}
}
public Connection getKoneksi() {
return koneksi;
}
public String getNo_kontrak() {
return no_kontrak;
}
public void setNo_kontrak(String no_kontrak) {
-
106
this.no_kontrak = no_kontrak;
}
public Date getTgl_kontrak() {
return tgl_kontrak;
}
public void setTgl_kontrak(Date tgl_kontrak) {
this.tgl_kontrak = tgl_kontrak;
}
public String getKode_konsumen() {
return id_konsumen;
}
public void setKode_konsumen(String id_konsumen) {
this.id_konsumen = id_konsumen;
}
public double getNilai_kontrak() {
return nilai_kontrak;
}
public void setNilai_kontrak(double nilai_kontrak) {
this.nilai_kontrak = nilai_kontrak;
-
107
}
public double getOngkos_kirim() {
return ongkos_kirim;
}
public void setOngkos_kirim(double ongkos_kirim) {
this.ongkos_kirim = ongkos_kirim;
}
public double getPpn() {
return ppn;
}
public void setPpn(double ppn) {
this.ppn = ppn;
}
public double getTotal_kontrak() {
return total_kontrak;
}
public void setTotal_kontrak(double total_kontrak) {
this.total_kontrak = total_kontrak;
}
-
108
public String getId_pengguna() {
return id_pengguna;
}
public void setId_pengguna(String id_pengguna) {
this.id_pengguna = id_pengguna;
}
public String getPesan_error() {
return pesan_error;
}
public String buatNoKontrak() {
String[] arrayBulan = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI",
"XII"};
SimpleDateFormat sdf = new SimpleDateFormat("MM-yyyy");
String[] now = sdf.format(new java.util.Date()).split("-");
try {
String Sql = "SELECT * FROM kontrak WHERE MONTH(tgl_kontrak)=? AND
YEAR(tgl_kontrak)=? ORDER BY no_kontrak DESC LIMIT 1";
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, now[0]);
ps.setString(2, now[1]);
-
109
ResultSet rs = ps.executeQuery();
if (rs.next()) {
String No = rs.getString("no_kontrak");
No = No.substring(0, 3);
No = String.format("%03d", Integer.parseInt(No) + 1) + "/IM/" +
arrayBulan[Integer.parseInt(now[0]) - 1] + "/" + now[1];
return No;
} else {
return "001/IM/" + arrayBulan[Integer.parseInt(now[0]) - 1] + "/" + now[1];
}
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return "";
}
}
public List daftarKontrak() {
try {
String Sql = "SELECT * FROM kontrak ORDER BY no_kontrak DESC";
List ls = new ArrayList();
Statement st = this.koneksi.createStatement();
ResultSet rs = st.executeQuery(Sql);
while (rs.next()) {
-
110
Kontrak kontrak = new Kontrak();
kontrak.setNo_kontrak(rs.getString("no_kontrak"));
kontrak.setTgl_kontrak(rs.getDate("tgl_kontrak"));
kontrak.setKode_konsumen(rs.getString("id_konsumen"));
kontrak.setNilai_kontrak(rs.getDouble("nilai_kontrak"));
kontrak.setOngkos_kirim(rs.getDouble("ongkos_kirim"));
kontrak.setPpn(rs.getDouble("ppn"));
kontrak.setTotal_kontrak(rs.getDouble("total_kontrak"));
kontrak.setId_pengguna(rs.getString("id_pengguna"));
ls.add(kontrak);
}
return ls;
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return null;
}
}
public List cariKontrak(Date tgl1, Date tgl2) {
try {
String Sql = "SELECT * FROM kontrak WHERE tgl_kontrak BETWEEN ? AND
? ORDER BY no_kontrak DESC";
List ls = new ArrayList();
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
-
111
ps.setDate(1, tgl1);
ps.setDate(2, tgl2);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Kontrak kontrak = new Kontrak();
kontrak.setNo_kontrak(rs.getString("no_kontrak"));
kontrak.setTgl_kontrak(rs.getDate("tgl_kontrak"));
kontrak.setKode_konsumen(rs.getString("id_konsumen"));
kontrak.setNilai_kontrak(rs.getDouble("nilai_kontrak"));
kontrak.setOngkos_kirim(rs.getDouble("ongkos_kirim"));
kontrak.setPpn(rs.getDouble("ppn"));
kontrak.setTotal_kontrak(rs.getDouble("total_kontrak"));
kontrak.setId_pengguna(rs.getString("id_pengguna"));
ls.add(kontrak);
}
return ls;
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return null;
}
}
public List cariKontrakPerKonsumen(String KodeKonsumen, Date tgl1,
Date tgl2) {
try {
-
112
String Sql = "SELECT * FROM kontrak WHERE id_konsumen=? AND
(tgl_kontrak BETWEEN ? AND ?) ORDER BY no_kontrak";
List ls = new ArrayList();
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, KodeKonsumen);
ps.setDate(2, tgl1);
ps.setDate(3, tgl2);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Kontrak kontrak = new Kontrak();
kontrak.setNo_kontrak(rs.getString("no_kontrak"));
kontrak.setTgl_kontrak(rs.getDate("tgl_kontrak"));
kontrak.setKode_konsumen(rs.getString("id_konsumen"));
kontrak.setNilai_kontrak(rs.getDouble("nilai_kontrak"));
kontrak.setOngkos_kirim(rs.getDouble("ongkos_kirim"));
kontrak.setPpn(rs.getDouble("ppn"));
kontrak.setTotal_kontrak(rs.getDouble("total_kontrak"));
kontrak.setId_pengguna(rs.getString("id_pengguna"));
ls.add(kontrak);
}
return ls;
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return null;
}
-
113
}
public Kontrak cariNoKontrak(String No) {
try {
String Sql = "SELECT * FROM kontrak WHERE UPPER(no_kontrak)=? ORDER
BY id_konsumen";
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, No.toUpperCase());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
this.setNo_kontrak(rs.getString("no_kontrak"));
this.setTgl_kontrak(rs.getDate("tgl_kontrak"));
this.setKode_konsumen(rs.getString("id_konsumen"));
this.setNilai_kontrak(rs.getDouble("nilai_kontrak"));
this.setOngkos_kirim(rs.getDouble("ongkos_kirim"));
this.setPpn(rs.getDouble("ppn"));
this.setTotal_kontrak(rs.getDouble("total_kontrak"));
this.setId_pengguna(rs.getString("id_pengguna"));
} else {
this.setNo_kontrak(null);
this.setTgl_kontrak(null);
this.setKode_konsumen(null);
this.setNilai_kontrak(0);
this.setOngkos_kirim(0);
-
114
this.setPpn(0);
this.setTotal_kontrak(0);
this.setId_pengguna(null);
}
return this;
} catch (SQLException ex) {
this.setNo_kontrak(null);
this.setTgl_kontrak(null);
this.setKode_konsumen(null);
this.setNilai_kontrak(0);
this.setOngkos_kirim(0);
this.setPpn(0);
this.setTotal_kontrak(0);
this.setId_pengguna(null);
this.pesan_error = ex.getMessage();
return this;
}
}
public int tambahKontrak() {
try {
String Sql = "INSERT INTO kontrak (no_kontrak, tgl_kontrak, id_konsumen,
nilai_kontrak, ongkos_kirim, ppn, total_kontrak, id_pengguna) VALUES (?,?,?,?,?,?,?,?)";
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
-
115
ps.setString(1, this.no_kontrak);
ps.setDate(2, this.tgl_kontrak);
ps.setString(3, this.id_konsumen);
ps.setDouble(4, this.nilai_kontrak);
ps.setDouble(5, this.ongkos_kirim);
ps.setDouble(6, this.ppn);
ps.setDouble(7, this.total_kontrak);
ps.setString(8, this.id_pengguna);
return ps.executeUpdate();
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return -1;
}
}
public int hapusKontrak(String NoKontrak) {
try {
String Sql = "DELETE FROM kontrak WHERE no_kontrak=?";
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, NoKontrak);
return ps.executeUpdate();
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return -1;
}
-
116
}
}
2. Mode Detail Kontrak
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class DetailKontrak {
private Connection koneksi;
private String no_kontrak;
private String id_paket;
private int jumlah_paket;
private double harga_paket;
private String pesan_error;
-
117
public DetailKontrak() {
try {
Class.forName("com.mysql.jdbc.Driver");
koneksi = DriverManager.getConnection("jdbc:mysql://localhost/catering?",
"root", "");
} catch (ClassNotFoundException | SQLException ex) {
this.pesan_error = ex.getMessage();
}
}
public Connection getKoneksi() {
return koneksi;
}
public String getNo_kontrak() {
return no_kontrak;
}
public void setNo_kontrak(String no_kontrak) {
this.no_kontrak = no_kontrak;
}
public String getKode_paket() {
return id_paket;
}
-
118
public void setKode_paket(String id_paket) {
this.id_paket = id_paket;
}
public int getJumlah_paket() {
return jumlah_paket;
}
public void setJumlah_paket(int jumlah_paket) {
this.jumlah_paket = jumlah_paket;
}
public double getHarga_paket() {
return harga_paket;
}
public void setHarga_paket(double harga_paket) {
this.harga_paket = harga_paket;
}
public String getPesan_error() {
return pesan_error;
}
-
119
public List daftarDetailKontrak(String NoKontrak) {
try {
String Sql = "SELECT * FROM detail_kontrak WHERE no_kontrak=? ORDER
BY no_kontrak";
List ls = new ArrayList();
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, NoKontrak);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
DetailKontrak penyewa = new DetailKontrak();
penyewa.setNo_kontrak(rs.getString("no_kontrak"));
penyewa.setKode_paket(rs.getString("id_paket"));
penyewa.setJumlah_paket(rs.getInt("jumlah_paket"));
penyewa.setHarga_paket(rs.getDouble("harga_paket"));
ls.add(penyewa);
}
return ls;
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return null;
}
}
public int tambahDetailKontrak() {
-
120
try {
String Sql = "INSERT INTO detail_kontrak (no_kontrak, id_paket, jumlah_paket,
harga_paket) VALUES (?,?,?,?)";
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, this.no_kontrak);
ps.setString(2, this.id_paket);
ps.setInt(3, this.jumlah_paket);
ps.setDouble(4, this.harga_paket);
return ps.executeUpdate();
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return -1;
}
}
public int hapusDetailKontrak(String NoKontrak) {
try {
String Sql = "DELETE FROM detail_kontrak WHERE n0_kontrak=?";
PreparedStatement ps = this.koneksi.prepareStatement(Sql);
ps.setString(1, NoKontrak);
return ps.executeUpdate();
} catch (SQLException ex) {
this.pesan_error = ex.getMessage();
return -1;
-
121
}
}
}
3. Form Kontrak
package forms;
import insunmedal.InsunMedal;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.ListIterator;
import java.util.Locale;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
-
122
import model.DetailKontrak;
import model.Konsumen;
import model.Kontrak;
import model.Paket;
public class FormKontrak extends javax.swing.JFrame {
/**
* Creates new form FormKontrak
*/
String status = "";
String id_paket = "";
Kontrak kontrak = new Kontrak();
Konsumen konsumen = new Konsumen();
DetailKontrak detail_konsumen = new DetailKontrak();
Paket paket = new Paket();
NumberFormat nf = NumberFormat.getCurrencyInstance(new Locale("id", "ID"));
DefaultComboBoxModel tm1 = null;
DefaultTableModel dtm = null;
DefaultTableModel dtm2 = null;
-
123
public FormKontrak() {
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);
tm1 = (DefaultComboBoxModel) tkonsumen.getModel();
dtm = (DefaultTableModel) tblkontrak.getModel();
dtm2 = (DefaultTableModel) tbldetail.getModel();
tblkontrak.getTableHeader().setFont(new Font("Calibri Light", 1, 16));
tblkontrak.setRowHeight(27);
DefaultTableCellRenderer rataKanan = new DefaultTableCellRenderer();
rataKanan.setHorizontalAlignment(JLabel.RIGHT);
tblkontrak.getColumnModel().getColumn(6).setCellRenderer(rataKanan);
tblkontrak.getColumnModel().getColumn(7).setCellRenderer(rataKanan);
tblkontrak.getColumnModel().getColumn(8).setCellRenderer(rataKanan);
tbldetail.getTableHeader().setFont(new Font("Calibri Light", 1, 16));
tbldetail.setRowHeight(27);
-
124
setLocation(x, y);
daftarKonsumen();
daftarKontrak();
bersihInputan();
aktifNonaktif();
MyTab.setSelectedIndex(1);
}
private void aktifNonaktif() {
btntambah.setEnabled("".equals(this.status));
btnsimpan.setEnabled(!"".equals(this.status));
btnbatal.setEnabled(!"".equals(this.status));
btncari.setEnabled("".equals(this.status));
btntambah_item.setEnabled(!"".equals(this.status) &&
!"".equals(tharga_paket.getText()));
MyTab.setEnabledAt(0, !"".equals(this.status));
MyTab.setEnabledAt(1, "".equals(this.status));
}
-
125
private void bersihInputan() {
tno_kontrak.setText("");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
ttgl_kontrak.setText(sdf.format(new java.util.Date()));
tkonsumen.setSelectedItem("");
talamat.setText("");
tid_paket.setText("");
tnama_paket.setText("");
trincian.setText("");
tharga_paket.setText("");
tjumlah_pesanan.setText("");
tnilai_kontrak.setText("0");
tongkos_kirim.setText("0");
tppn.setText("0");
ttotal_kontrak.setText("0");
dtm2.getDataVector().removeAllElements();
}
private void daftarKontrak() {
List listKontrak = kontrak.daftarKontrak();
ListIterator li = listKontrak.listIterator();
-
126
dtm.setRowCount(0);
tblkontrak.repaint();
String No = "";
double total = 0;
while (li.hasNext()) {
Kontrak kntrk = (Kontrak) li.next();
List listDetail =
detail_konsumen.daftarDetailKontrak(kntrk.getNo_kontrak());
ListIterator lIterator = listDetail.listIterator();
Object[] data = null;
while (lIterator.hasNext()) {
DetailKontrak dtl = (DetailKontrak) lIterator.next();
Paket trf = new Paket().cariKodePaket(dtl.getKode_paket());
Konsumen pny = new
Konsumen().cariKodeKonsumen(kntrk.getKode_konsumen());
if (No.equalsIgnoreCase(kntrk.getNo_kontrak())) {
Object[] jdata = {
"",
"",
"",
"",
dtl.getKode_paket(),
trf.getNama_paket(),
-
127
trf.getJumlah_porsi(),
nf.format(dtl.getHarga_paket()),
nf.format(dtl.getHarga_paket() * dtl.getJumlah_paket())
};
data = jdata;
} else {
Object[] jdata = {
kntrk.getNo_kontrak(),
kntrk.getTgl_kontrak(),
kntrk.getKode_konsumen(),
pny.getNama_konsumen(),
dtl.getKode_paket(),
trf.getNama_paket(),
trf.getJumlah_porsi(),
nf.format(dtl.getHarga_paket()),
nf.format(dtl.getHarga_paket() * dtl.getJumlah_paket())
};
data = jdata;
}
total += (dtl.getHarga_paket() * dtl.getJumlah_paket()) +
kntrk.getOngkos_kirim() + kntrk.getPpn();
dtm.addRow(data);
No = kntrk.getNo_kontrak();
}
Object[] jdata = {
-
128
"",
"",
"",
"",
"",
"",
"",
"Nilai Kontrak",
"" + nf.format(kntrk.getNilai_kontrak()) + ""
};
dtm.addRow(jdata);
Object[] jdata2 = {
"",
"",
"",
"",
"",
"",
"",
"Ongkos Kirim",
"" + nf.format(kntrk.getOngkos_kirim()) + ""
};
dtm.addRow(jdata2);
Object[] jdata3 = {
"",
-
129
"",
"",
"",
"",
"",
"",
"PPN",
"" + nf.format(kntrk.getPpn()) + ""
};
dtm.addRow(jdata3);
}
Object[] jdata = {
"",
"",
"",
"",
"",
"",
"",
"T O T A L",
"" + nf.format(total) + ""
};
dtm.addRow(jdata);
}
-
130
private void daftarKontrak(Date tgl1, Date tgl2) {
List listKontrak = kontrak.cariKontrak(new
java.sql.Date(tgl1.getTime()), new java.sql.Date(tgl2.getTime()));
ListIterator li = listKontrak.listIterator();
dtm.setRowCount(0);
tblkontrak.repaint();
String No = "";
double total = 0;
while (li.hasNext()) {
Kontrak kntrk = (Kontrak) li.next();
List listDetail =
detail_konsumen.daftarDetailKontrak(kntrk.getNo_kontrak());
ListIterator lIterator = listDetail.listIterator();
Object[] data = null;
while (lIterator.hasNext()) {
DetailKontrak dtl = (DetailKontrak) lIterator.next();
Paket trf = new Paket().cariKodePaket(dtl.getKode_paket());
Konsumen pny = new
Konsumen().cariKodeKonsumen(kntrk.getKode_konsumen());
if (No.equalsIgnoreCase(kntrk.getNo_kontrak())) {
Object[] jdata = {
"",
-
131
"",
"",
"",
dtl.getKode_paket(),
trf.getNama_paket(),
trf.getJumlah_porsi(),
nf.format(dtl.getHarga_paket()),
nf.format(dtl.getHarga_paket() * dtl.getJumlah_paket())
};
data = jdata;
} else {
Object[] jdata = {
kntrk.getNo_kontrak(),
kntrk.getTgl_kontrak(),
kntrk.getKode_konsumen(),
pny.getNama_konsumen(),
dtl.getKode_paket(),
trf.getNama_paket(),
trf.getJumlah_porsi(),
nf.format(dtl.getHarga_paket()),
nf.format(dtl.getHarga_paket() * dtl.getJumlah_paket())
};
data = jdata;
}
-
132
total += (dtl.getHarga_paket() * dtl.getJumlah_paket()) +
kntrk.getOngkos_kirim() + kntrk.getPpn();
dtm.addRow(data);
No = kntrk.getNo_kontrak();
}
Object[] jdata = {
"",
"",
"",
"",
"",
"",
"",
"Nilai Kontrak",
"" + nf.format(kntrk.getNilai_kontrak()) + ""
};
dtm.addRow(jdata);
Object[] jdata2 = {
"",
"",
"",
"",
"",
"",
"",
-
133
"Ongkos Kirim",
"" + nf.format(kntrk.getOngkos_kirim()) + ""
};
dtm.addRow(jdata2);
Object[] jdata3 = {
"",
"",
"",
"",
"",
"",
"",
"PPN",
"" + nf.format(kntrk.getPpn()) + ""
};
dtm.addRow(jdata3);
}
Object[] jdata = {
"",
"",
"",
"",
"",
"",
"",
-
134
"T O T A L",
"" + nf.format(total) + ""
};
dtm.addRow(jdata);
}
private void bersihInputan2() {
tid_paket.setText("");
tnama_paket.setText("");
trincian.setText("");
tharga_paket.setText("");
tjumlah_pesanan.setText("");
}
private void daftarKonsumen() {
List listKonsumen = konsumen.daftarKonsumen();
ListIterator li = listKonsumen.listIterator();
tm1.removeAllElements();
tkonsumen.addItem("");
while (li.hasNext()) {
Konsumen pny = (Konsumen) li.next();
tkonsumen.addItem(pny.getKode_konsumen() + "-" +
pny.getNama_konsumen());
-
135
}
}
private void tambahItem() {
// TODO add your handling code here:
int i;
paket = paket.cariKodePaket(tid_paket.getText());
for (i = 0; i < dtm2.getRowCount(); i++) {
String kode = dtm2.getValueAt(i, 0).toString();
if (kode.equalsIgnoreCase(paket.getKode_paket())) {
dtm.getDataVector().removeElementAt(i);
break;
}
}
Object[] data = {
paket.getKode_paket(),
paket.getNama_paket(),
tjumlah_pesanan.getText(),
(tharga_paket.getText()),
nf.format(paket.getHarga_paket() *
Double.parseDouble(tjumlah_pesanan.getText()))
};
dtm2.addRow(data);
-
136
bersihInputan2();
id_paket = "";
aktifNonaktif();
tid_paket.requestFocus();
}
private void hitungNilaiKontrak() {
double total = 0;
for (int i = 0; i < dtm2.getRowCount(); i++) {
total += Double.parseDouble(dtm2.getValueAt(i, 4).toString().replace(".",
"").replace(",00", "").replace("Rp", ""));
}
tnilai_kontrak.setText(nf.format(total));
hitungTotal();
}
private void hitungTotal() {
try {
double nilai = Double.parseDouble(tnilai_kontrak.getText().replace("Rp",
"").replace(".", "").replace(",00", ""));
double ongkir = Double.parseDouble(tongkos_kirim.getText().replace("Rp",
"").replace(".", "").replace(",00", ""));
double ppn = 0.1 * (nilai + ongkir);