• Tidak ada hasil yang ditemukan

BAB III PEMBAHASAN. yang didirikan oleh perorangan maupun kelompok. Salah satu usaha yang

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PEMBAHASAN. yang didirikan oleh perorangan maupun kelompok. Salah satu usaha yang"

Copied!
76
0
0

Teks penuh

(1)

PEMBAHASAN

3.1. Tinjauan Perusahaan

Perusahaan yang ada di indonesia memiliki 2 jenis perusahaan yaitu usaha

yang didirikan oleh perorangan maupun kelompok. Salah satu usaha yang mempunyai kelebihan yaitu dengan modal kecil adalah perusahaan perorangan seperti dalam perdagangan. Kelebihan dari perusahaan perorangan adalah tidak dibutuhkannya modal besar serta bertanggungjawab pada diri sendiri. Toko Bangunan Cahaya Mutiara sebagai salah satu usaha dalam bidang perdagangan dengan menyediakan bahan bangunan berkualitas. Pada bagian ini akan dipaparkan sejarah perusahaan berserta struktur organisasi dan fungsinya.

3.1.1. Sejarah Perusahaan

Toko Bangunan Cahaya Mutiara merupakan toko perbelanjaan bahan bangunan terlengkap. Toko Bangunan Cahaya Mutiara ini didirikan, oleh bapak Edy Hermawan pada tanggal 20 Januari 1972 kurang lebih sudah 39 tahun yang berlokasi di Jl. Cikampek Baru Pundong Blok 3/17 Cikampek Karawang sini salah satu toko perbelanjaan bahan bangunan yang lengkap. Berawal dari sebuah toko bahan bangunan material biasa hingga kini menjadi toko perbelanjaan bahan bangunan lengkap yang bergerak dibidang retail distribusi dan pemasok untuk proyek-proyek besar di Karawang. Toko Bangunan Cahaya Mutiara selalu mengutamakan mutu dan pelayanan serta memberikan banyak keuntungan dan kelebihan bagi pelanggannya .

(2)

3.1.2. Struktur Organisasi dan Fungsi

Struktur organisasi merupakan pembagian kegiatan kerja, menunjukkan bagaimana fungsi atau kegiatan syang berbeda-beda dihubungkan sampai batas tertentu, menunjukkan hierarki dan struktur wewenang organisasi serta memperlihatkan hubungan pelapornya. Dengan struktur organisasi yang baik, tugas-tugas digolongkan sedemikian rupa sehingga dapat dilaksanakan secara efektif, terarah dan hasil-hasilnya dapat terkendali.

Bentuk struktur organisasi:

Sumber: Toko Bangunan Cahaya Mutiara adalah

Gambar III.1

Struktur Organisasi Toko Cahaya Mutiara

Fungsi dari tiap-tiap bagian adalah sebagai berikut : 1. Pemilik

a. Mengatur dan mengawasi kerja karyawan.

b. Berkoordinasi dengan karyawan dan mencari solusi atas masalah. c. Memastikan barang layak untuk dijual.

(3)

2. Bagian Admin

a. Mengontrol pemasukan dan pengeluaran keuangan perusahaan b. Menyusun hasil usaha dalam satu periode tertentu

3. Bagian Pengiriman

a. Mengecek ketersediaan barang

b. Menyiapkan barang yang akan dibeli oleh pelanggan. c. Melakukan pengiriman barang ke pelanggan

4. Kasir

a. Bertanggung jawab atas segala transaksi penjualan barang.

b. Memberikan pertanggungjawaban kepada pemilik atas segala transaksi yang telah terjadi dalam bentuk pembuatan laporan.

c. Melayani pelanggan

3.2. Tinjauan Kasus

Berbagai masalah timbul dalam sebuah perusahaan, dengan adanya permasalahan tersebut maka diperlukan tinjauan kasus untuk mengetahui lebih jelas atau lebih detailnya suatu permasalahan yang terjadi. Pada bagian ini akan dipaparkan tinjauan kasus, di mana pada bagian ini akan dijabarkan proses sistem berjalan, permasalahan pokok, hingga pemecahan masalah.

3.2.1. Proses Bisnis Sistem Berjalan

1. Proses Pemesanan Barang

pelanggan datang langsung ke toko, kemudian menanyakan ketersediaan barang yang akan dibeli beserta menanyakan harga, kemudian bagian kasir akan

(4)

memberikan daftar barang beserta harga yang dimaksud, setelah terjadi kesepakatan, pelanggan melakukan pemesanan semua barang yang diinginkan. 2. Proses Pembayaran

Setelah pelanggan melakukan pemesanan, kasir kemudian membuat daftar pemesanan dalam sebuah nota transaksi beserta total yang harus dibayarkan oleh pelanggan kemudian menyerahkan nota tersebut ke pelanggan. Setelah menerima nota transaksi tersebut pelanggan melakukan pembayaran di tempat secara tunai. 3. Proses Pengiriman Barang

Jika barang yang dipesan tidak dapat dibawa sendiri oleh pelanggan, maka toko akan mengantarkan barang melalui bagian pengiriman ke alamat yang dituju dengan memberikan salinan nota transaksi kepada bagian pengiriman untuk memastikan semua barang yang dipesan dapat diantarkan.

4. Proses Pembuatan Laporan

Pada akhir bulan, bagian kasir melakukan pengumpulan nota transaksi dan mencocokkan dengan data yang ada pada logbook, kemudian membuat rekapitulasi semua nota transaksi dan menyalinnya semua dalam sebuah laporan.

(5)

3.2.2. Activity Diagram

1. Activity Diagram Proses Pemesanan Barang

act Pemesanan

Kasir Pelanggan

Mulai

Menanyakan Ketersediaan Barang dan Harga

Memberikan Daftar Barang dan Harga

Melakukan Pemesanan Barang

Selesai

Gambar III.2

Activity Diagram Proses Pemesanan Barang

2. Activity Diagram Proses Pembayaran

act Pembayaran Pelanggan Kasir Mulai Membuat Nota Pemesanan Memberikan Nota Ke

Pelanggan Menerima Nota

Melakukan Pembayaran Menerima Pembayaran

Selesai

Gambar III.3

(6)

3. Activity Diagram Proses Pengiriman Barang act Pengiriman Pelanggan Petugas Kasir Mulai

Memberikan Salinan Nota Transaksi Ke Petugas

Memuat Barang Sesuai Nota Transaksi Mengirimkan Barang Ke Konsumen Menerima Barang Pesanan Selesai Gambar III.4

Activity Diagram Proses Pengiriman Barang

4. Activity Diagram Proses Pembuatan Laporan

act Laporan Pemilik Kasir Mulai Mengumpulkan Nota Transaksi Mencocokan dengan catatan di logbook Membuat Laporan Penjualan Menerima dan Memeriksa Rekap Penjualan Selesai Menyerahkan Laporan Penjualan ke Pemilik Gambar III.5

(7)

3.2.3. Dokumen Masukan

1. Nama Dokumen : Daftar Barang dan Harga

Fungsi : Untuk mengetahui daftar barang yang tersedia dan harga

Sumber : Kasir

Tujuan : Pelanggan

Media : Kertas

Frekuensi : Setiap ada permintaan

Jumlah : -

Bentuk : Lampiran A-1

3.2.4. Dokumen Keluaran

1. Nama Dokumen : Nota Transaksi

Fungsi : Sebagai Bukti Transaksi

Sumber : Kasir

Tujuan : Pelanggan

Media : Kertas

Frekuensi : Setiap ada transaksi

Jumlah : 3 Rangkap

Bentuk : Lampiran B-1

2. Nama Dokumen : Laporan Penjualan

Fungsi : Sebagai rekap penjualan barang selama 1 bulan

Sumber : Kasir

Tujuan : Pemilik

Media : Kertas

(8)

Jumlah : -

Bentuk : Lampiran B-2

3. Nama Dokumen : Logbook

Fungsi : Mencatat transaksi harian toko

Sumber : Kasir

Tujuan : Internal

Media : Kertas

Frekuensi : Setiap ada transaksi

Jumlah : -

Bentuk : Lampiran B-3

3.2.5. Permasalahan Pokok

Semakin meningkatnya kuantitas transaksi bisnis yang terjadi setiap harinya, maka dibutuhkan kecepatan dan ketepatan dalam proses transaksi tersebut, namun, hal itu tidak lepas dari permasalahan yang dihadapi sehari-harinya oleh toko. Berikut beberapa permasalahan yang dihadapi oleh toko:

1. Pencatatan transaksi masih ditulis tangan oleh kasir dan ditulis dalam logbook catatan transaksi.

2. Nota transaksi belum tersusun dengan baik sehingga untuk mencocokkan transaksi dalam logbook, kasir masih harus mencari nota transaksi yang dimaksud.

3. Stok barang masuk dan keluar tidak dapat diketahui secara real-time sebab, ketika barang keluar tidak dicatat dalam kartu stok.

4. Pembuatan laporan penjualan masih relatif memakan waktu lama sebab kasir harus melakukan rekapitulasi ulang semua transaksi.

(9)

3.2.6. Pemecahan Masalah

Perlu ada pemecahan masalah untuk meminimalkan kesalahan dan memberikan solusi terhadap permasalahan yang terjadi. Adapun pemecahan masalah yang disarankan, antara lain:

1. Transaksi dicatat dalam sistem komputer dengan menggunakan sistem basis data agar data terorganisasi dengan baik serta dapat dengan mudah dikelola.

2. Melakukan penyusunan nota transaksi ke dalam ordner atau sejenisnya dikelompokkan per bulan agar memudakan kasir dalam pencarian nota transaksi. 3. Dibuatkan sebuah sistem yang dapat menambahkan atau mengurangi stok secara

real-time.

4. Dibuatkan sebuah aplikasi yang dapat mencatat transaksi secara real-time dan dapat menghasilkan keluaran berupa laporan pada waktu yang sama.

3.3. Analisis Kebutuhan Software

Dalam merancang sebuah sistem informasi diperlukan sebuah analisis kebutuhan sistem terlebih dahulu agar kebutuhan sistem informasi dapat sesuai dengan ekspektasi. Pada bagian ini akan dipaparkan beberapa hal, antara lain: analisis kebutuhan, use case diagram dan activity diagram.

3.3.1. Analisis Kebutuhan

Analisis kebutuhan merupakan bagian terpenting dari sebuah perancangan sistem, proses ini dimaksudkan agar kebutuhan sistem dapat sesuai dengan yang diharapkan oleh end-user atau pengguna. Berikut analisis kebutuhan pengguna dalam perancangan sistem informasi penjualan tunai pada Toko Bangunan Cahaya Mutiara:

(10)

1. Pemilik a. Login

b. Mengelola Pengguna c. Melihat Laporan Transaksi d. Melihat Laporan Stok Barang e. Melihat Laporan Jurnals 2. Kasir

a. Login

b. Mengelola Barang c. Mengelola Penjualan d. Mencetak Nota Transaksi e. Melihat Laporan Transaksi f. Melihat Laporan Stok Barang

(11)

3.3.2. Use Case Diagram

1. Use Case Diagram Pemilik A. Gambar Use Case

uc Use Case Diagram Pemilik

Pemilik Login Mengelola Pengguna Melihat Laporan Melihat Laporan Stok Barang Melihat Laporan Transaksi Logout Melihat Laporan Jurnal «include» «include» Gambar III.6

(12)

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

Aktor Pemilik

Kondisi Awal Pemilik sudah login dan sudah membuka

form pengguna

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan data pengguna

2. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 3. Menyimpan data pengguna ke basis

data

4. Menampilkan pesan berhasil

disimpan

Skenario Alternatif

1. Memasukkan data pengguna baru

4. Memperbaiki masukan yang salah.

2. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

3. Menampilkan pesan peringatan

kesalahan bahwa data yang

dimasukkan tidak sesuai yang

diharapkan

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 6. Menyimpan data pengguna ke basis

data

7. Menampilkan pesan berhasil

disimpan

Kondisi Akhir Sistem dapat menyimpan data pengguna

(13)

2) Deskripsi Use Case Diagram Mengubah Pengguna

Tabel III.2

Deskripsi Use Case Diagram Mengubah Pengguna

Tujuan Pemilik dapat mengubah data pengguna

Deskripsi Sistem ini memungkinkan aktor

mengubah pengguna.

Aktor Pemilik

Kondisi Awal Pemilik sudah login dan sudah membuka

form pengguna

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama pengguna yang dicari

4. Melakukan perubahan pada data pengguna

2. Mencari data pengguna yang akan diubah.

3. Menampilkan data pengguna

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 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 diubah.

3. Menampilkan data pengguna

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

6. Menampilkan pesan peringatan

bahwa data yang dimasukkan tidak valid

8. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 9. Menyimpan data pengguna ke basis

data

(14)

disimpan

Kondisi Akhir Sistem dapat menyimpan data pengguna

yang telah diubah 3) Deskripsi Use Case Diagram Mencari Pengguna

Tabel III.3

Deskripsi Use Case Diagram Mencari Pengguna

Tujuan Pemilik dapat mencari data pengguna

Deskripsi Sistem ini memungkinkan aktor mencari

pengguna.

Aktor Pemilik

Kondisi Awal Pemilik sudah login dan sudah membuka

form pengguna

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 dan sudah membuka

form pengguna

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama pengguna yang dicari

(15)

3. Memilih data pengguna 5. Memilih Ya

2. Mencari data pengguna yang akan diubah.

4. Menampilkan konfirmasi hapus 6. Menghapus data pengguna dari basis

data

7. Menampilkan pesan berhasil dihapus

Kondisi Akhir Sistem dapat menghapus data pengguna

5) Deskripsi Use Case Diagram Melihat Laporan

Tabel III.5

Deskripsi Use Case Diagram Melihat Laporan

Tujuan Pemilik dapat melihat laporan

Deskripsi Sistem ini memungkinkan admin melihat

laporan yang diinginkan

Aktor Pemilik

Kondisi Awal Pemilik sudah login

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan periode laporan 2. Klik Lihat

(16)

2. Use Case Diagram Kasir A. Gambar Use Case

uc Use Case Diagram Kasir

Pemilik Login Mengelola Barang Melihat Laporan Melihat Laporan Stok Barang Melihat Laporan Transaksi Logout Mengelola Transaksi Penjualan Cetak Nota Transaksi Mengelola Akun

Perkiraan Mengelola Jurnal

Melihat Laporan Jurnal «include» «include» «include» «include» «include» «extend» Gambar III.7

Use Case Diagram Kasir 2. Deskripsi Use Case

1) Deskripsi Use Case Diagram Menambah Barang

Tabel III.6

Deskripsi Use Case Diagram Menambah Barang

Tujuan Kasir dapat menambah data barang

Deskripsi Sistem ini memungkinkan aktor

menambah barang baru.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form barang

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan data barang

2. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 3. Menyimpan data barang ke basis

data

(17)

disimpan 5.

Skenario Alternatif

1. Memasukkan data barang baru

4. Memperbaiki masukan yang salah.

2. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

3. Menampilkan pesan peringatan

kesalahan bahwa data yang

dimasukkan tidak sesuai yang

diharapkan

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 6. Menyimpan data barang ke basis

data

7. Menampilkan pesan berhasil

disimpan

Kondisi Akhir Sistem dapat menyimpan data barang

baru

2) Deskripsi Use Case Diagram Mengubah Barang

Tabel III.7

Deskripsi Use Case Diagram Mengubah Barang

Tujuan Kasir dapat mengubah data barang

Deskripsi Sistem ini memungkinkan aktor

mengubah barang.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form barang

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama barang

yang dicari

4. Melakukan perubahan pada data barang

2. Mencari data barang yang akan diubah.

3. Menampilkan data barang

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 6. Menyimpan data barang ke basis

(18)

7. Menampilkan pesan berhasil disimpan

Skenario Alternatif

1. Memasukkan nama barang

yang dicari

4. Melakukan perubahan pada

data barang

7. Memperbaiki masukan yang salah

2. Mencari data barang yang akan diubah.

3. Menampilkan data barang

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

6. Menampilkan pesan peringatan

bahwa data yang dimasukkan tidak valid

8. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 9. Menyimpan data barang ke basis data

10. Menampilkan pesan berhasil

disimpan

Kondisi Akhir Sistem dapat menyimpan data barang

yang telah diubah 3) Deskripsi Use Case Diagram Mencari Barang

Tabel III.8

Deskripsi Use Case Diagram Mencari Barang

Tujuan Kasir dapat mencari data barang

Deskripsi Sistem ini memungkinkan aktor mencari

barang.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form barang

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama barang

yang dicari

2. Mencari data barang di basis data. 3. Menampilkan daftar barang yang

sesuai.

(19)

4) Deskripsi Use Case Diagram Menghapus Barang

Tabel III.9

Deskripsi Use Case Diagram Menghapus Barang

Tujuan Kasir dapat menghapus data barang

Deskripsi Sistem ini memungkinkan aktor

menghapus barang.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form barang

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama barang

yang dicari

3. Memilih data barang 5. Memilih Ya

2. Mencari data barang yang akan diubah.

4. Menampilkan konfirmasi hapus 6. Menghapus data barang dari basis

data

7. Menampilkan pesan berhasil dihapus

Kondisi Akhir Sistem dapat menghapus data barang

5) Deskripsi Use Case Diagram Menambah Akun Perkiraan

Tabel III.10

Deskripsi Use Case Diagram Menambah Akun Perkiraan

Tujuan Kasir dapat menambah akun perkiraan

Deskripsi Sistem ini memungkinkan aktor

menambah akun perkiraan baru.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form akun perkiraan

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan data akun

perkiraan

2. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

(20)

3. Menyimpan data akun perkiraan ke basis data

4. Menampilkan pesan berhasil

disimpan

Skenario Alternatif

1. Memasukkan data akun

perkiraan baru

4. Memperbaiki masukan yang salah.

2. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

3. Menampilkan pesan peringatan

kesalahan bahwa data yang

dimasukkan tidak sesuai yang

diharapkan

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 6. Menyimpan data akun perkiraan ke

basis data

7. Menampilkan pesan berhasil

disimpan

Kondisi Akhir Sistem dapat menyimpan data akun

perkiraan baru

6) Deskripsi Use Case Diagram Mengubah Akun Perkiraan

Tabel III.11

Deskripsi Use Case Diagram Mengubah Akun Perkiraan

Tujuan Kasir dapat mengubah data akun

perkiraan

Deskripsi Sistem ini memungkinkan aktor

mengubah akun perkiraan.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form akun perkiraan

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama akun

perkiraan yang dicari

4. Melakukan perubahan pada data akun perkiraan

2. Mencari data akun perkiraan yang akan diubah.

3. Menampilkan data akun perkiraan

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

(21)

6. Menyimpan data akun perkiraan ke basis data

7. Menampilkan pesan berhasil

disimpan

Skenario Alternatif

1. Memasukkan nama akun

perkiraan yang dicari

4. Melakukan perubahan pada

data akun perkiraan

7. Memperbaiki masukan yang salah

2. Mencari data akun perkiraan yang akan diubah.

3. Menampilkan data akun perkiraan

5. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 6. Menampilkan pesan peringatan bahwa

data yang dimasukkan tidak valid

8. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 9. Menyimpan data akun perkiraan ke

basis data

10. Menampilkan pesan berhasil disimpan

Kondisi Akhir Sistem dapat menyimpan data akun

perkiraan yang telah diubah 7) Deskripsi Use Case Diagram Mencari Akun Perkiraan

Tabel III.12

Deskripsi Use Case Diagram Mencari Akun Perkiraan

Tujuan Kasir dapat mencari data akun perkiraan

Deskripsi Sistem ini memungkinkan aktor mencari

akun perkiraan.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form akun perkiraan

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama akun

perkiraan yang dicari

2. Mencari data akun perkiraan di basis data.

3. Menampilkan daftar akun perkiraan yang sesuai.

(22)

Kondisi Akhir Sistem dapat mencari data akun perkiraan 8) Deskripsi Use Case Diagram Menghapus Akun Perkiraan

Tabel III.13

Deskripsi Use Case Diagram Menghapus Akun Perkiraan

Tujuan Kasir dapat menghapus data akun

perkiraan

Deskripsi Sistem ini memungkinkan aktor

menghapus akun perkiraan.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form akun perkiraan

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan nama akun

perkiraan yang dicari

3. Memilih data akun perkiraan 5. Memilih Ya

2. Mencari data akun perkiraan yang akan diubah.

4. Menampilkan konfirmasi hapus 6. Menghapus data akun perkiraan dari

basis data

7. Menampilkan pesan berhasil dihapus

Kondisi Akhir Sistem dapat menghapus data akun

perkiraan

9) Deskripsi Use Case Diagram Menambah Transaksi Penjualan

Tabel III.14

Deskripsi Use Case Diagram Menambah Transaksi Penjualan

Tujuan Kasir dapat menambah transaksi

penjualan

Deskripsi Sistem ini memungkinkan aktor

menambah transaksi penjualan baru.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form transaksi penjualan

Aksi Aktor Reaksi Sistem

Skenario Normal

(23)

penjualan

2. Masukkan barang yang dibeli

3. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 4. Menyimpan data transaksi penjualan

ke basis data

5. Menampilkan pesan berhasil

disimpan

Skenario Alternatif

1. Memasukkan data transaksi

penjualan baru

2. Masukkan barang yang dibeli

5. Memperbaiki masukan yang salah.

3. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

4. Menampilkan pesan peringatan

kesalahan bahwa data yang

dimasukkan tidak sesuai yang

diharapkan

6. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 7. Menyimpan data transaksi penjualan

ke basis data

8. Menampilkan pesan berhasil

disimpan

Kondisi Akhir Sistem dapat menyimpan data transaksi

penjualan

10) Deskripsi Use Case Diagram Mencari Transaksi Penjualan

Tabel III.15

Deskripsi Use Case Diagram Mencari Transaksi Penjualan

Tujuan Kasir dapat mencari data transaksi

penjualan

Deskripsi Sistem ini memungkinkan aktor mencari

transaksi penjualan.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form transaksi penjualan

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan periode transaksi penjualan yang dicari

2. Mencari data transaksi penjualan di basis data.

(24)

3. Menampilkan daftar transaksi penjualan yang sesuai.

Kondisi Akhir Sistem dapat mencari data transaksi

penjualan

11) Deskripsi Use Case Diagram Mencetak Nota Transaksi Penjualan

Tabel III.16

Deskripsi Use Case Diagram Mencetak Nota Transaksi Penjualan

Tujuan Kasir dapat mencetak nota transaksi

penjualan

Deskripsi Sistem ini memungkinkan aktor

mencetak nota transaksi penjualan.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form transaksi penjualan

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Pilih transaksi penjualan

2. Tampilkan nota transaksi.

Kondisi Akhir Sistem dapat mencetak nota transaksi

penjualan

12) Deskripsi Use Case Diagram Menambah Jurnal

Tabel III.17

Deskripsi Use Case Diagram Menambah Jurnal

Tujuan Kasir dapat menambah jurnal

Deskripsi Sistem ini memungkinkan aktor

menambah jurnal baru.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form jurnal

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan data jurnal 2. Masukkan akun terkait

3. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

(25)

4. Menyimpan data jurnal ke basis data

5. Menampilkan pesan berhasil

disimpan

Skenario Alternatif

1. Memasukkan data jurnal baru 2. Masukkan akun terkait

5. Memperbaiki masukan yang salah.

3. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak

4. Menampilkan pesan peringatan

kesalahan bahwa data yang

dimasukkan tidak sesuai yang

diharapkan

6. Memeriksa apakah masukan sesuai dengan yang diharapkan atau tidak 7. Menyimpan data jurnal ke basis data

8. Menampilkan pesan berhasil

disimpan

Kondisi Akhir Sistem dapat menyimpan data jurnal

13) Deskripsi Use Case Diagram Mencari Jurnal

Tabel III.18

Deskripsi Use Case Diagram Mencari Jurnal

Tujuan Kasir dapat mencari data jurnal

Deskripsi Sistem ini memungkinkan aktor mencari

jurnal.

Aktor Kasir

Kondisi Awal Kasir sudah login dan sudah membuka

form jurnal

Aksi Aktor Reaksi Sistem

Skenario Normal

1. Memasukkan periode jurnal yang dicari

2. Mencari data jurnal di basis data. 3. Menampilkan daftar jurnal yang

sesuai.

(26)

3.3.3. Activity Diagram

1. Activity Diagram Login

act Activity Diagram Login

Sistem Pemilik/ Kasir

Mulai

ID Pengguna dan Password

Klik Login Validasi Login

Sesuai?

Tampilkan Pesan Kesalahan

Tampilkan Form Menu Utama Selesai Form Login Tidak Ya Gambar III.8

(27)

2. Activity Diagram Mengelola Pengguna

act Activity Diagram Mengelola Pengguna

Sistem Pemilik

Mulai

Buka Form Pengguna

Pilih

Cari Data Mencari Data di Basis Data

Data Ada?

Pilih Data

Pilih

Hapus Hapus Data Pengguna

Ubah Tampilkan Data

Input Data Validasi Valid? Pesan Kesalahan Simpan Data Tambah Pilih Simpan Batal Selesai Ya Ya Tidak Tidak Gambar III.9

(28)

3. Activity Diagram Mengelola Barang

act Activity Diagram Mengelola Barang

Sistem Kasir

Mulai

Buka Form Barang

Pilih

Cari Data Mencari Data di Basis Data

Data Ada?

Pilih Data

Pilih Hapus Hapus Data Barang

Ubah Tampilkan Data

Input Data Validasi Valid? Pesan Kesalahan Simpan Data Tambah Pilih Simpan Batal Selesai Tidak Tidak Ya Ya Gambar III.10

(29)

4. Activity Diagram Mengelola Akun Perkiraan

act Activity Diagram Mengelola Akun Perkiraan

Sistem Kasir

Mulai

Buka Form Akun

Pilih

Cari Data Mencari Data di Basis Data

Data Ada?

Pilih Data

Pilih Hapus Hapus Data Akun

Ubah Tampilkan Data

Input Data Validasi Valid? Pesan Kesalahan Simpan Data Tambah Pilih Simpan Batal Selesai Ya Ya Tidak Tidak Gambar III.11

(30)

5. Activity Diagram Mengelola Transaksi Penjualan

act Activity Diagram Mengelola Transaksi

Sistem Kasir

Mulai

Pilih

Tambah

Input Data Transaksi

Simpan

Cari

Validasi

Valid?

Simpan Data Cari Data di Basis Data

Tampilkan Data

Batal

Selesai

Data Ada? Buka Form Transaksi

Pesan Kesalahan Input Barang Yang

Dijual

Input Lagi?

Pilih

Pillih Data Transaksi

Cetak Bukti Cetak Bukti Ke Printer

Tidak Tidak

Ya Ya

Gambar III.12

(31)

6. Activity Diagram Mengelola Jurnal act Activity Diagram Mengelola Jurnal

Sistem Kasir

Mulai

Pilih

Tambah

Input Data Jurnal

Simpan

Cari

Validasi

Valid?

Simpan Data Cari Data di Basis Data

Tampilkan Data

Batal

Selesai Data Ada? Buka Form Jurnal

Pesan Kesalahan Input Akun Input Lagi? Pilih Tidak Tidak Ya Ya Tidak Ya Gambar III.13

(32)

7. Activity Diagram Melihat Laporan act Activity Diagram Melihat Laporan

Sistem Pemilik

Mulai

Input Periode Laporan

Klik Lihat Tampilkan Laporan

Selesai Cetak Laporan Form Laporan

Gambar III.14

Activity Diagram Melihat Laporan

3.4. Desain

Setelah melakukan analisis kebutuhan sistem, tahap selanjutnya yang dilakukan adalah desain. Design ini mencakup perancangan database, antara lain

entity relationship diagram, logical record structure, serta spesifikasi file, rancangan

UML meliputi class diagram, sequence diagram, component diagram, serta

deployment diagram. Setelah itu baru melakukan implementasi dengan melakukan

(33)

3.4.1. Entity Relationship Diagram (ERD)

Gambar III.15

(34)

3.4.2. Logical Record Structure (LRS)

Gambar III.16

Logical Record Structure

3.4.3. Spesifikasi File

1. Spesifikasi File Pengguna

Nama File : Pengguna

Akronim : Pengguna

Fungsi : Menyimpan data pengguna

Tipe File : File Master

Organisasi File : Index Suquential

Akses File : Random

Media : Hardisk

Panjang Record : 100 Karakter

(35)

Software : MySQL

Tabel III.19

Spesifikasi File Pengguna

No Elemen Data Akronim Tipe Panjang Keterangan

1. Id pengguna id_pengguna CHAR 20 Primary Key

2. Nama

pengguna

nama_pengguna VARCHAR 35

3 Password password VARCHAR 30

4 Hak akses hak_akses VARCHAR 15

2. Spesifikasi File Barang

Nama File : barang

Akronim : barang

Fungsi : Menyimpan data barang

Tipe File : File Master

Organisasi File : Index Suquential

Akses File : Random

Media : Hardisk

Panjang Record : 157 Karakter

Kunci Field : kode_brg

Software : MySQL

Tabel III.20 Spesifikasi File Barang

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Barang kode_brg CHAR 5 Primary Key

2. Nama Barang nama_brg VARCHAR 35

3 Stok Barang stok_brg INT 5

4 Satuan Satuan VARCHAR 4

5 Ukuran ukuran VARCHAR 100

(36)

3. Spesifikasi File Penjualan

Nama File : penjualan

Akronim : penjualan

Fungsi : Menyimpan data barang yang dijual

Tipe File : File Transaksi

Organisasi File : Index Suquential

Akses File : Random

Media : Hardisk

Panjang Record : 170 Karakter

Kunci Field : no_penjualan

Software : MySQL

Tabel III.21

Spesifikasi File Penjualan

No Elemen Data Akronim Tipe Panjang Keterangan

1. No Penjualan no_penjualan CHAR 15 Primary Key

2. Tanggal

Penjualan

tgl_penjualan DATE

3 Nama Pembeli Nama_pembeli VARCHAR 35

4 Alamat Pembeli Alamat_pembeli VARCHAR 100

5 Id Pengguna id_pengguna CHAR 20 Foreign Key

4. Spesifikasi File Detail Penjualan

Nama File : detail_penjualan

Akronim : detail_penjualan

Fungsi : Menyimpan data detail barang yang dijual

Tipe File : File Transaksi

Organisasi File : Index Suquential

Akses File : Random

(37)

Panjang Record : 28 Karakter

Kunci Field : -

Software : MySQL

Tabel III.22

Spesifikasi File Detail Penjualan

No Elemen Data Akronim Tipe Panjang Keterangan

1. No Penjualan no_penjualan CHAR 12 Foreign Key

2. Kode Barang kode_brg CHAR 5 Foreign Key

3 Junlah Jual jml_jual INT 4

4. Harga Jual harga_jual INT 7

5. Spesifikasi File Akun Perkiraan

Nama File : Akun Perkiraan

Akronim : akun_perkiraan

Fungsi : Menyimpan data akun perkiraan

Tipe File : File Master

Organisasi File : Index Suquential

Akses File : Random

Media : Hardisk

Panjang Record : 66 Karakter

Kunci Field : kode_akun

Software : MySQL

Tabel III.23

Spesifikasi File Akun Perkiraan

No Elemen Data Akronim Tipe Panjang Keterangan

1. Kode Akun kode_akun CHAR 5 Primary Key

2. Nama Akun nama_akun VARCHAR 30

3 Jenis Akun jenis_akun VARCHAR 25

(38)

6. Spesifikasi File Jurnal

Nama File : jurnal

Akronim : jurnal

Fungsi : Menyimpan data jurnal umum

Tipe File : File Transaksi

Organisasi File : Index Suquential

Akses File : Random

Media : Hardisk

Panjang Record : 148 Karakter

Kunci Field : no_jurnal

Software : MySQL

Tabel III.24 Spesifikasi File Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1. No Jurnal no_jurnal CHAR 8 Primary Key

2. Tanggal Jurnal tgl_jurnal DATE

3 No Referensi no_ref VARCHAR 20

4 Keterangan keterangan VARCHAR 100

5 Id pengguna id_pengguna CHAR 20 Foreign Key

7. Spesifikasi File Detail Jurnal

Nama File : detail_jurnal

Akronim : detail_jurnal

Fungsi : Menyimpan data detail jurnal umum

Tipe File : File Transaksi

Organisasi File : Index Suquential

Akses File : Random

(39)

Panjang Record : 31 Karakter

Kunci Field : -

Software : MySQL

Tabel III.25

Spesifikasi File Detail Jurnal

No Elemen Data Akronim Tipe Panjang Keterangan

1. No Jurnal no_jurnal CHAR 8 Foreign Key

2. Kode Akun kode_akun CHAR 5 Foreign Key

3 Debet Debet INT 9

4. Kredit Kredit INT 9

3.4.4. Class Diagram

Gambar III.17

Class Diagram

class Class Model

AkunPerkiraan - jenis_akun: String - kode_akun: String - Koneksi: Connection - nama_akun: String - PesanError: String - saldo_normal: String + AkunPerkiraan() + cariAkunByKode(String): AkunPerkiraan + cariAkunByNama(String): List<AkunPerkiraan> + getJenis_akun(): String + getKode_akun(): String + getNama_akun(): String + getSaldo_normal(): String + hapusAkun(String): Integer + listPerkiraan(): List<AkunPerkiraan> + setJenis_akun(String): void + setKode_akun(String): void + setNama_akun(String): void + setSaldo_normal(String): void + tambahAkun(): Integer + ubahAkun(String): Integer «property get» + getKoneksi(): Connection + getPesanError(): String Barang - harga_brg: Integer - jml_brg: Integer - kode_brg: String - Koneksi: Connection - nama_brg: String - PesanError: String - satuan: String - stok_brg: Integer + Barang() + cariBarangByKode(String): Barang + cariBarangByNama(String): List<Barang> + getHarga_brg(): Integer + getJml_brg(): Integer + getKode_brg(): String + getNama_brg(): String + getSatuan(): String + getStok_brg(): Integer + hapusBarang(String): Integer + kodeBarangBaru(): String + listBarang(): List<Barang> + setHarga_brg(Integer): void + setJml_brg(Integer): void + setKode_brg(String): void + setNama_brg(String): void + setSatuan(String): void + setStok_brg(Integer): void + tambahBarang(): Integer + ubahBarang(String): Integer «property get» + getKoneksi(): Connection + getPesanError(): String «property set» + setKoneksi(Connection): void DetailPenjualan - harga_jual: Integer - jml_jual: Integer - kode_brg: String - Koneksi: Connection - no_penjualan: String - PesanError: String + DetailPenjualan() + getHarga_jual(): Integer + getJml_jual(): Integer + getKode_brg(): String + getNo_penjuaalan(): String + getNo_penjualan(): String + listDetailPenjualan(String): List<DetailPenjualan> + setHarga_jual(Integer): void + setJml_jual(Integer): void + setKode_brg(String): void + setNo_penjualan(String): void + tambahDetailPenjualan(): Integer «property get» + getKoneksi(): Connection + getPesanError(): String «property set» + setKoneksi(Connection): void JurnalDetail - debet: double - kode_akun: String - Koneksi: Connection - kredit: double - no_jurnal: String - PesanError: String + getDebet(): double + getKode_akun(): String + getKredit(): double + getNo_jurnal(): String + JurnalDetail() + listDetailJurnal(String): List<JurnalDetail> + setDebet(double): void + setKode_akun(String): void + setKredit(double): void + setNo_jurnal(String): void + tambahDetailJurnal(): Integer «property get» + getKoneksi(): Connection + getPesanError(): String Jurnal - id_pengguna: String - keterangan: String - koneksi: Connection - no_jurnal: String - no_ref: String - PesanError: String - tgl_jurnal: Date + cariJurnalByNo(String): Jurnal + cariJurnalPeriode(Date, Date): List<Jurnal> + getId_pengguna(): String + getKeterangan(): String + getKoneksi(): Connection + getNo_jurnal(): String + getNo_ref(): String + getTgl_jurnal(): Date + Jurnal() + listJurnal(): List<Jurnal> + noJurnalBaru(): String + setId_pengguna(String): void + setKeterangan(String): void + setNo_jurnal(String): void + setNo_ref(String): void + setTgl_jurnal(Date): void + tambahJurnal(): Integer «property get» + getPesanError(): String «property set» + setPesanError(String): void Pengguna - hak_akses: String - id_pengguna: String - Koneksi: Connection - nama_pengguna: String - password: String - PesanError: String + cariPenggunaById(String): Pengguna + cariPenggunaByNama(String): List<Pengguna> + getHak_akses(): String + getId_pengguna(): String + getNama_pengguna(): String + getPassword(): String + hapusPengguna(String): Integer + listPengguna(): List<Pengguna> + Pengguna() + setHak_akses(String): void + setId_pengguna(String): void + setNama_pengguna(String): void + setPassword(String): void + tambahPengguna(): Integer + ubahPengguna(String): Integer «property get» + getKoneksi(): Connection + getPesanError(): String Penjualan - alamat_pembeli: String - id_pengguna: String - Koneksi: Connection - nama_pembeli: String - no_penjualan: String - PesanError: String - tgl_penjualan: Date + cariPenjuaalanByNo(String): Penjualan + cariPenjualanPeriode(Date, Date): List<Penjualan> + getAlamat_pembeli(): String + getId_pengguna(): String + getNama_pembeli(): String + getNo_penjualan(): String + getTgl_penjualan(): Date + listPenjualan(): List<Penjualan> + noPenjualanBaru(): String + Penjualan() + setAlamat_pembeli(String): void + setId_pengguna(String): void + setNama_pembeli(String): void + setNo_penjualan(String): void + setTgl_penjualan(Date): void + tambahPenjualan(): int «property get» + getKoneksi(): Connection + getPesanError(): String 0..* 1 1 0..* 1 0..* 1 1..* 0..* 1 1..* 1

(40)

3.4.5. Sequence Diagram

1. Sequence Diagram Login

sd Sequence Diagram Login

Pengguna

Form Login Controller Login

Pengguna

Form Utama

opt Error

[Pesan Kesalahan]:

[Buka Form Utama]: FormLogin()

[Result cariPenggunaById]: bloginActionPerformed(evt)

[Input Id dan Password]:

cariPenggunaById(Id) [Klik Login]:

«create» [Buka Form Login]:

Gambar III.18

(41)

2. Sequence Diagram Mengelola Pengguna sd Sequence Diagram Mengelola Pengguna

Pemilik

Form Pengguna Control Pengguna

Pengguna

opt Error opt Error

alt Ubah Data

alt Hapus Data

ubahPengguna(Id) cariPenggunaById(Id) [Klik Tambah]: [Perbaharui Data]: bsimpanActionPerformed(evt) bsimpanActionPerformed(evt) [Input Data Pengguna]:

[Buka Form Pengguna]:

[Klik Hapus]: tampilData() aktif() [Validasi Data]: [Klik Edit]: [Klik Simpan]: bhapusActionPerformed(evt) bubahActionPerformed(evt) FormPengguna() «create» setData() [Validasi Data]: «create» hapusPengguna(Id) [Result cariIdPengguna]: [Pesan Kesalahan]: [Klik Simpan]: setData()

[Pilih Data Pengguna]: [Pilih Data Pengguna]:

btambahActionPerformed(evt)

[Pesan Kesalahan]:

tambahPengguna() bersihForm()

Gambar III.19

(42)

3. Sequence Diagram Mengelola Barang sd Sequence Diagram Mengelola Barang

Kasir

Form Barang Control Barang

Barang

alt Ubah Data

alt Hapus Data

opt Error opt Error

[Pilih Data Barang]: [Klik Simpan]: setData() [Validasi Data]: aktif() tampilData() [Klik Edit]:

[Tampil Kode Barang]:

bubahActionPerformed(evt)

[Pilih Data Barang]:

kodeBarangBaru() FormBarang()

«create»

[Klik Simpan]: [Input Data Barang]:

hapusBarang(kode) [Result cariBarangByKode]: bersihForm() [Klik Hapus]: [Result kodeBarangBaru]: setData() bsimpanActionPerformed(evt) bsimpanActionPerformed(evt) tambahBarang() [Buka Form Barang]:

[Perbaharui Data]: [Pesan Kesalahan]: bhapusActionPerformed(evt) [Klik Tambah]: [Validasi Data]: ubahBarang(kode) «create» cariBarangByKode(kode) btambahActionPerformed(evt) [Pesan Kesalahan]: Gambar III.20

(43)

4. Sequence Diagram Mengelola Akun Perkiraan sd Sequence Diagram Mengelola Akun Perkiraan

Kasir

Form Akun Control Akun

Akun

alt Ubah Data

alt Hapus Data

opt Error opt Error

[Perbaharui Data]:

[Result cariAkunByKode]:

bhapusActionPerformed(evt) [Pilih Data Akun]:

[Buka Form Akun]:

aktif() bsimpanActionPerformed(evt) bubahActionPerformed(evt) ubahAkun(kode) [Validasi Data]: setData() setData() [Klik Simpan]: bsimpanActionPerformed(evt) btambahActionPerformed(evt) cariAkunByKode(kode) [Input Data Akun]:

tambahAkun() hapusAkun(kode) [Validasi Data]: [Klik Tambah]: tampilData() [Klik Hapus]: [Klik Edit]: «create» [Pesan Kesalahan]: FormAkun() «create» [Klik Simpan]: bersihForm()

[Pilih Data Barang]:

[Pesan Kesalahan]:

Gambar III.21

(44)

5. Sequence Diagram Mengelola Penjualan

sd Sequence Diagram Mengelola Penjualan

Kasir

Form Penjualan Control Penjualan

Barang

Penjualan

Detail Penjualan

loop Input Data Barang [Tambah Lagi?]

loop [Data barang = 0]

opt Error

ubahBarang(kode) [Input Kode Barang]:

[Validasi Data]:

tambahDetailBarangMasuk() [Input Data Penjualan]:

[Buka Form Penjuaan]:

[Tampil Data Barang]:

bsimpanActionPerformed(evt) [Tampil No Penjualan]: [Klik Simpan]: bersihForm() tambahBarangMasuk() btambahActionPerformed(evt) [Result noPenjualanBaru]: FormPenjualan() «create» cariKodeBarang(kode) setDataPenjualan() «create» noPenjualanBaru() setDataDetail() [Klik Tambah]: «create» [Pesan Kesalahan]: aktif() [Result cariKodeBarang]: keyPressed(evt) «create» [Input Jumlah]: Gambar III.22

(45)

3.4.6. Component Diagram cmp Component Model Penjualan Barang Pengguna Jurnal Akun Aplikasi Penjualan Tunai Entry Penjualan Jurnal Detail Penjualan Detail Entry Jurnal Gambar III.23 Component Diagram 3.4.7. Deployment Diagram deployment Deployment Aplikasi Aplikasi Penjualan Tunai Jasper Report Database Server MySQL Server Java

Java Runtime Environment Versi 8.1 tb_cahaya_mutiara «use» <<dependency>> MySqlJDBC Driver Gambar III.24 Deployment Diagram

(46)

3.4.8. User Interface 1. Form Login

Gambar III.25

Form Login

2. Form Menu Utama

Gambar III.26

(47)

3. Form Pengguna Gambar III.27 Form Pengguna 4. Form Barang Gambar III.28 Form Barang

(48)

5. Form Akun

Gambar III.29

Form Akun

6. Form Tampil Penjualan

Gambar III.30

(49)

7. Form Input Penjualan

Gambar III.31

Form Penjualan Input

8. Form Jurnal

Gambar III.32

(50)

9. Form Laporan

Gambar III.33

Form Laporan

3.5. Implementasi

Tahapan terakhir dalam perancangan sistem informasi ini adalah implementasi. Implementasi merupakan tahapan paling terpenting, sebab pada tahapan dapat diketahui sistem informasi yang diimplementasikan apakah bersesuaian atau tidak dengan rancangan yang telah dibuat.

3.5.1. Code Generation 1. Model Penjualan package models; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List;

public class Penjualan {

(51)

private String no_penjualan; private Date tgl_penjualan; private String nama_pembeli; private String alamat_pembeli; private String id_pengguna; private String PesanError; public Penjualan() { try { Class.forName("com.mysql.jdbc.Driver"); Koneksi = DriverManager.getConnection("jdbc:mysql://localhost/tb_cahaya_mutiara", "root", "");

} catch (ClassNotFoundException | SQLException ex) { this.PesanError = ex.getMessage();

} }

public Connection getKoneksi() { return Koneksi;

}

public String getNo_penjualan() { return no_penjualan;

}

public void setNo_penjualan(String no_penjualan) { this.no_penjualan = no_penjualan;

}

public Date getTgl_penjualan() { return tgl_penjualan;

}

public void setTgl_penjualan(Date tgl_penjualan) { this.tgl_penjualan = tgl_penjualan;

}

public String getNama_pembeli() { return nama_pembeli;

}

public void setNama_pembeli(String nama_pembeli) { this.nama_pembeli = nama_pembeli;

(52)

public String getAlamat_pembeli() { return alamat_pembeli;

}

public void setAlamat_pembeli(String alamat_pembeli) { this.alamat_pembeli = alamat_pembeli;

}

public String getId_pengguna() { return id_pengguna;

}

public void setId_pengguna(String id_pengguna) { this.id_pengguna = id_pengguna;

}

public String getPesanError() { return PesanError;

}

public List<Penjualan> listPenjualan() { Statement st = null;

ResultSet rs = null; try {

this.PesanError = "";

String Cmd = "SELECT * FROM penjualan"; List<Penjualan> lpb = new ArrayList(); st = Koneksi.createStatement();

rs = st.executeQuery(Cmd); while (rs.next()) {

Penjualan pb = new Penjualan();

pb.setNo_penjualan(rs.getString("no_penjualan")); pb.setTgl_penjualan(rs.getDate("tgl_penjualan")); pb.setNama_pembeli(rs.getString("nama_pembeli")); pb.setAlamat_pembeli(rs.getString("alamat_pembeli")); pb.setId_pengguna(rs.getString("id_pengguna")); lpb.add(pb); } st.close(); rs.close(); return lpb;

} catch (SQLException ex) {

this.PesanError = ex.getMessage(); return null;

} }

(53)

public List<Penjualan> cariPenjualanPeriode(Date tgl1, Date tgl2) { PreparedStatement ps = null;

ResultSet rs = null; try {

this.PesanError = "";

String Cmd = "SELECT * FROM penjualan WHERE tgl_penjualan BETWEEN ? AND ?";

List<Penjualan> lpb = new ArrayList(); ps = Koneksi.prepareStatement(Cmd); ps.setDate(1, tgl1);

ps.setDate(2, tgl2); rs = ps.executeQuery();

Penjualan pb = new Penjualan(); while (rs.next()) { pb.setNo_penjualan(rs.getString("no_penjualan")); pb.setTgl_penjualan(rs.getDate("tgl_penjualan")); pb.setNama_pembeli(rs.getString("nama_pembeli")); pb.setId_pengguna(rs.getString("id_pengguna")); lpb.add(pb); } ps.close(); rs.close(); return lpb;

} catch (SQLException ex) { ex.printStackTrace();

this.PesanError = ex.getMessage(); return null;

} }

public int tambahPenjualan() { PreparedStatement ps = null; try {

this.PesanError = "";

String Cmd = "INSERT INTO penjualan (no_penjualan, tgl_penjualan, nama_pembeli, id_pengguna) VALUES (?,?,?,?)";

ps = Koneksi.prepareStatement(Cmd); ps.setString(1, this.no_penjualan); ps.setDate(2, this.tgl_penjualan); ps.setString(3, this.nama_pembeli); ps.setString(4, this.id_pengguna);

(54)

Integer res = ps.executeUpdate(); ps.close();

return res;

} catch (SQLException ex) {

this.PesanError = ex.getMessage(); return -1;

} }

public Penjualan cariPenjuaalanByNo(String No) { this.PesanError = "";

try {

String Cmd = "SELECT * FROM penjualan WHERE no_penjualan=?"; PreparedStatement ps = Koneksi.prepareStatement(Cmd); ps.setString(1, No); ResultSet rs = ps.executeQuery(); if (rs.next()) { this.setNo_penjualan(rs.getString("no_penjualan")); this.setTgl_penjualan(rs.getDate("tgl_penjualan")); this.setNama_pembeli(rs.getString("nama_pembeli")); this.setAlamat_pembeli(rs.getString("alamat_pembeli")); this.setId_pengguna(rs.getString("id_pengguna")); } else { this.setNo_penjualan(null); this.setTgl_penjualan(null); this.setNama_pembeli(""); } return this;

} catch (SQLException ex) { ex.printStackTrace(); this.PesanError = ex.getMessage(); return null; } }

public String noPenjualanBaru(){ try {

SimpleDateFormat sdf = new SimpleDateFormat("MM-yyyy");

String now[] = sdf.format(new java.util.Date()).split("-"); String bulan = now[0];

String tahun = now[1];

String Cmd = "SELECT * FROM penjualan WHERE

MONTH(tgl_penjualan)=? AND YEAR(tgl_penjualan)=? ORDER BY

SUBSTRING(no_penjualan, 1,4) DESC LIMIT 1"; this.PesanError = "";

(55)

PreparedStatement ps = Koneksi.prepareStatement(Cmd); ps.setString(1, bulan); ps.setString(2, tahun); ResultSet rs = ps.executeQuery(); if (rs.next()) { String Id = rs.getString("no_penjualan").substring(0, 4); Id = String.format("%04d", Integer.parseInt(Id) + 1) + "/PJ/" +bulan+"/"+tahun; return Id; } else { return "0001/PJ/" +bulan+"/"+tahun; }

} catch (SQLException ex) {

this.PesanError = ex.getMessage(); return ""; } } } 2. Form Penjualan package forms; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Toolkit; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; import javax.swing.DefaultCellEditor; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.table.TableColumn; import models.DetailPenjualan; import models.Barang; import tb_cahaya_mutiara.TB_Cahaya_Mutiara; import javax.swing.table.DefaultTableModel; import models.Penjualan;

(56)

/**

* Creates new form FormPenjualan */

String NoPenjualan = ""; String Status = "";

int total = 0; int row = -1;

Barang barang = new Barang();

Penjualan penjualan = new Penjualan();

DetailPenjualan detail_penjualan = new DetailPenjualan(); DefaultTableModel model;

TableColumn cKode, cJumlah;

JTextField textKode = new JTextField(); JTextField textJumlah = new JTextField();

NumberFormat nf = new DecimalFormat("Rp #,#00.00");

public FormPenjualanInput(java.awt.Frame parent, boolean modal) { super(parent, modal);

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); setLocation(x, y);

model = (DefaultTableModel) tbldetail.getModel(); textKode.setFont(new Font("BellGothic BT", 0, 16)); textJumlah.setFont(new Font("BellGothic BT", 0, 16));

tbldetail.getTableHeader().setFont(new Font("BellGothic BT", 1, 16)); tbldetail.setRowHeight(30);

cKode = (TableColumn) tbldetail.getColumnModel().getColumn(0); cJumlah = (TableColumn) tbldetail.getColumnModel().getColumn(4); cKode.setCellEditor(new DefaultCellEditor(textKode));

cJumlah.setCellEditor(new DefaultCellEditor(textJumlah)); textKode.addKeyListener(new KeyAdapter() {

(57)

if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_F1) {

if (e.getKeyCode() == KeyEvent.VK_F1) {

textKode.setText(new FormCariBarang(null, true).getBarang()); }

row = tbldetail.getSelectedRow();

textKode.setText(textKode.getText().toUpperCase()); if (!"".equals(textKode.getText())) {

getDataBarang(textKode.getText(), row);

for (int i = 0; i < model.getRowCount() - 1; i++) { String kode = model.getValueAt(i, 0).toString();

if (kode.equalsIgnoreCase(textKode.getText()) && row != i) { model.setValueAt(null, row, 0); model.setValueAt(null, row, 1); model.setValueAt(null, row, 2); model.setValueAt(null, row, 3); model.setValueAt(null, row, 4); model.setValueAt(null, row, 5); textKode.setText(null);

JOptionPane.showMessageDialog(rootPane, "Data sudah ada!", "Info", JOptionPane.ERROR_MESSAGE); break; } } } } } }); textJumlah.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) {

if (!Character.isDigit(e.getKeyChar()) && e.getKeyChar() !=

KeyEvent.VK_BACK_SPACE && e.getKeyChar() != KeyEvent.VK_DELETE) { textJumlah.setEditable(false);

JOptionPane.showMessageDialog(rootPane, "Input hanya boleh berupa angka!", "Error", JOptionPane.ERROR_MESSAGE);

} else {

textJumlah.setEditable(true); }

}

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_TAB) {

try {

(58)

int subtotal = Integer.parseInt(textJumlah.getText()) * Integer.parseInt(model.getValueAt(row, 3).toString()); model.setValueAt(subtotal, row, 5); hitungTotal(); if (textJumlah.getText().equals("")) { textJumlah.setText("1"); }

} catch (Exception ex) { } } } }); tbldetail.setSelectionBackground(new Color(255, 117, 67)); tbldetail.setSelectionForeground(Color.white);

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); java.util.Date dt = new java.util.Date();

ttgl_penjualan.setText(df.format(dt));

tno_penjualan.setText(penjualan.noPenjualanBaru()); model.setRowCount(1);

}

private void getDataBarang(String kode, int row) { barang = barang.cariBarangByKode(kode); if (barang.getNama_brg() == null) {

JOptionPane.showMessageDialog(rootPane, "Data barang yang anda cari tidak ada!", "Error", JOptionPane.ERROR_MESSAGE);

model.setValueAt(null, row, 0); model.setValueAt(null, row, 1); model.setValueAt(null, row, 2); model.setValueAt(null, row, 3); model.setValueAt(null, row, 4); } else { model.setValueAt(kode.toUpperCase(), row, 0); model.setValueAt(barang.getNama_brg(), row, 1); model.setValueAt(barang.getUkuran(), row, 2); model.setValueAt(barang.getHarga_brg(), row, 3); } }

(59)

java.util.Date dt = new java.util.Date();

java.sql.Date sdate = new java.sql.Date(dt.getTime()); penjualan.setNo_penjualan(tno_penjualan.getText()); penjualan.setNo_penjualan(tno_penjualan.getText()); penjualan.setTgl_penjualan(sdate); penjualan.setNama_pembeli(tnama_pembeli.getText()); penjualan.setAlamat_pembeli(talamat_pembeli.getText()); penjualan.setId_pengguna(TB_Cahaya_Mutiara.id_pengguna); }

private void hitungTotal() { int total = 0;

for (int i = 0; i < model.getRowCount(); i++) { try {

total += Integer.parseInt(model.getValueAt(i, 5).toString()); } catch (Exception ex) {

} } this.total = total; ttotal.setText(nf.format(total)); } @SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable();

jTextField8 = new javax.swing.JTextField();

jDateChooser2 = new com.toedter.calendar.JDateChooser(); jPanel3 = new javax.swing.JPanel();

jLabel1 = new javax.swing.JLabel();

jScrollPane2 = new javax.swing.JScrollPane(); tbldetail = new javax.swing.JTable();

ttotal = new javax.swing.JTextField(); jLabel14 = new javax.swing.JLabel(); jLabel13 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel10 = new javax.swing.JLabel();

talamat_pembeli = new javax.swing.JTextField(); tnama_pembeli = new javax.swing.JTextField(); ttgl_penjualan = new javax.swing.JTextField(); tno_penjualan = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel();

(60)

jLabel9 = new javax.swing.JLabel(); bsimpan = new javax.swing.JButton(); bbatal = new javax.swing.JButton();

jSeparator1 = new javax.swing.JSeparator();

jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] {

{null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} },

new String [] {

"Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane1.setViewportView(jTable1); jTextField8.setText("jTextField8"); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); jPanel3.setBackground(new java.awt.Color(216, 67, 21));

jLabel1.setFont(new java.awt.Font("BellGothic BT", 0, 48)); // NOI18N jLabel1.setForeground(new java.awt.Color(255, 255, 255));

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); jLabel1.setText("Input Penjualan Barang");

javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING ) .addGroup(jPanel3Layout.createSequentialGroup()

(61)

.addContainerGap() .addComponent(jLabel1)

.addContainerGap(20, Short.MAX_VALUE)) );

tbldetail.setFont(new java.awt.Font("BellGothic BT", 0, 16)); // NOI18N tbldetail.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] { },

new String [] {

"Kode Barang", "Nama Barang", "Ukuran", "Harga", "Jumlah Jual", "Subtotal"

} ) {

boolean[] canEdit = new boolean [] { true, false, false, false, true, false };

public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex];

} });

tbldetail.addFocusListener(new java.awt.event.FocusAdapter() { public void focusGained(java.awt.event.FocusEvent evt) { tbldetailFocusGained(evt);

} });

tbldetail.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { tbldetailMouseClicked(evt);

} });

tbldetail.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { tbldetailKeyPressed(evt); } }); jScrollPane2.setViewportView(tbldetail); ttotal.setEditable(false); ttotal.setBackground(new java.awt.Color(255, 255, 255));

ttotal.setFont(new java.awt.Font("BellGothic BT", 0, 40)); // NOI18N ttotal.setHorizontalAlignment(javax.swing.JTextField.RIGHT);

jLabel14.setFont(new java.awt.Font("BellGothic BT", 1, 24)); // NOI18N jLabel14.setText("T O T A L");

Gambar

Gambar III.2
Tabel III.12
Tabel III.18
Gambar III.12
+7

Referensi

Dokumen terkait

Data terakhir (Kaskus, 2010) menyebutkan bahwa jumlah anggota yang terdaftar di database Kaskus sebesar 2.321.399 jiwa dan lebih dari separuhnya melakukan

Dalam tulisan ini akan dibahas lebih lanjut mengenai keterlambatan perkembangan pada anak-anak yang akan disebut dengan terminologi baik GDD ataupun KPG yang

Penghargaan terhadap keikutsertaan mahasiswa dalam setiap kegiataan organisasi kemahasiswaan baik sebagai pengurus maupun sebagai panitia yang diselenggarakan oleh

Dosis konsentrasi insektisida Decis yang akan digunakan untuk perlakuan pada uji toksisitas sangat toksis terhadap ikan nila merah galur Cangkringan, maka dari data

Temuan yang tidak konsisten juga ditemukan ketika persepsi media yang menilai humas universitas memiliki kendali bersama yang cukup baik dan persepsi humas yang menyatakan

PERUBAHAN MUTU MINYAK SAWIT SELAMA PENYIMPANAN CODEX Alimentarius Comission (CAC) (2005) dalam panduan penyimpanan dan transportasi lemak dan minyak pada skala besar

Hasil penelitian ini mempunyai prediksi kejadian TB Paru berdasarkan status umur responden dengan prediksi umur &lt;15 tahun terjadi penurunan kejadian TB paru di

Pada tingkatan awal, apabila aborsi dilakukan ketika nutfah (paduan antara air sperma dan sel telur) telah menetap di dalam rahim dan telah bercampur dengan air (sel telur)