bab iii pembahasan - bina sarana informatika · catering, dibentuklah cv. insun medal tgl 12...

132
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.

Upload: others

Post on 20-Oct-2020

15 views

Category:

Documents


0 download

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);