• Tidak ada hasil yang ditemukan

BAB III PEMBAHASAN. dan penyaluran sediaan farmasi serta pembekalan kesehatan lainnya kepada

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PEMBAHASAN. dan penyaluran sediaan farmasi serta pembekalan kesehatan lainnya kepada"

Copied!
92
0
0

Teks penuh

(1)

23

BAB III

PEMBAHASAN

3.1 Tinjauan Perusahaan

Apotek adalah suatu tempat tertentu, tempat dilakukan pekerjaan kefarmasian dan penyaluran sediaan farmasi serta pembekalan kesehatan lainnya kepada masyarakat (Keputusan Menteri Kesehatan Republik Indonesia Nomor 1027/MENKES/SK/IX/2004). Seorang apoteker bertanggung jawab atas pengelolaan apotek, sehingga pelayanan obat kepada mayarakat akan lebih terjamin keamanannya, baik kualitas maupun kuantitas.

Dalam Apotek ini masih banyak kegiatan yan g mengguanakan sistem sederhana masih ditulis dalam buku, khususnya dalam proses penerimaan kas (pendapatan) yang belum dapat berjalan secara optimal. Untuk membantu semua kegiatan yang ada dalam Apotek ini dan untuk mengurangi terjadinya kesalahan, maka salah satu langkah yang harus diciptakan adalah dengan menggunakan sistem komputerisasi guna membantu dan meningkatkan kinerja perusahaan agar lebih efektif dan efesien. Selain itu juga dengan menggunakan media komputer dapat diperoleh informasi yang cepat dan akurat.

3.1.1 Sejarah Perusahaan

Apotek BTJ didirikan pada tanggal 13 juli 2016 oleh Ibu Eko Sri Wahyuningsih dengan Apoteker Pengelola Apotek Ibu Eko Sri Wahyuningsih,SSi;Apt. Dengan no.SIPA: 503/8264/74/SIPA/VIII/BPMPT/2016,

(2)

no.STRA: 19790602/STRA-USB/2004/215738. Apotek BTJ sendiri sudah mempunyai Surat Izin Usaha Perdagangan (SIUP) Kecil dengan Nomor: 503/9001/2184/PK/IX/BMPT/2016. Apotek BTJ beralamat di Perum Bumi Telukjambe Blok I No 17 Desa Sukaluyu Kecamatan Telukjambe Timur Kabupaten Karawang. Apotek BTJ buka mulai pukul 08.00 WIB sampai dengan pukul 21.00 WIB. Apotek BTJ menjual berbagai macam jenis obat, baik obat bebas dan tidak bebas baik ang dari resep dokter maupun tanpa resep dokter.

Sebagai sarana pelayanan kesehatan yang beroperasi sejak 2016, apotek BTJ senantiasa berupaya memberikan pelayanan kesehatan secara cepat, tepat dan efesien dengan fokus kepada kepuasan konsumen. Hal ini terlihat pada visi dan misi Apotek BTJ.

1. Visi

a. Menyediakan obat-obatan dengan kualitas yang baik

b. Memberikan pelayanan kesehatan yang optimal

2. Misi

Pengelolaan apotek sesuai dengan tugas dan fungsinya dengan menjaga keseimbangan anatar fungsi social dan bisnis, dan mengembangkan peran apotek dibidang kesehatan sebagai mitra pemerintahan dan masyarakat.

(3)

3.1.2 Struktur Organisasi dan Fungsi

1. Struktur Organisasi Apotek BTJ

Di dalam suatu organisasi atau perusahaan, masalah organisasi memegang peran yang sangat penting. Setiap perusahaan harus mempunyai organisasi yang baik agar koordinasi dan tata kerja dapat tergambar dengan jelas, sehingga dapat berfungsi dengan maksimal.

Struktur Organisasi yang baik harus dapat menggambarkan fungsi-fungsi, pengelompokan kerja masing-masing personil atau bagian. Peranan dari struktur organisasi menunjukan tipe atau bentuk organisasi yang dipergunakan, juga merupakan perwujudan hubungan fungsi-fungsi wewenang dan tanggung jawab terhadap pelaksanaan tugas masing-masing personal atau bagian.

Sumber: Pemilik Apotek

Gambar III.1. Struktur Organisasi

2. Fungsi dari Struktur Organisasi Apotek BTJ

a. Pemilik Apotek

Bertugas untuk mengatur ruang lingkup seluruh kegiatan ditoko

Pemilik Apotek

(4)

b. Bagian Apoteker

Bertugas sebagai penanggung jawab segala hal yang berhubungan dengan obat-obatan dan segala kegiatan apotek.

Memastikan bahwa jumlah dan jenis produk tersediayang dibuthkan senantiasa tersedia dan diserahkan kepada yang membutuhkan.

c. Bagian Asisten Apoteker

Bertugas menggantikan pekerjaan Apoteker di Apotek ketika Asisten tidak ada ditempat dalam meracik dan memberikan pelayanan informasi obat.

d. Bagian Kasir

Bertugas melayani pembeli dan pembayaran dari pembeli.

3.2 Tinjauan Kasus

Tinjauan kasus disini penulis menjelaskan tentang proses-proses yang terjadi pada saat penerimaan kas.

3.2.1 Proses Bisnis Sistem Berjalan

1. Proses Pemesanan

Konsumen memberikan resep atau menanyakan obat kepada Kasir. Lalu Kasir menerima pertanyaandan resep obat. Kasir mengecek stok obat. Jika stok tersedia maka Kasir akan memberikan informasi obat tersedia. Jika tidak tersedia maka Kasir akan mengembalikan resep obat. Setelah itu Kasir akan memberikan informasi dan resep obat. Lalu Konsumen menerima informasi dan resep obat.

(5)

Lalu konsumen bisa melakukan ke proses awal jika obat tidak tersedia dan jika obat tersedia konsumen bisa langsung melakukan pemesanan obat. Kasir menerima pemesanan obat. Setelah itu kasir memberikan resep obat kepada Apoteker. Apoteker menerima resep obat. Setelah itu Apoteker melakukan meracik obat dan setelah itu menyiapkan obat dan informasi obat.

2. Proses Pembayaran

Konsumen menerima Obat dan informasi obat. Lalu Konsumen melakukan pembayaran kepada Kasir. Kasir menerima pembayaran. Setelah itu Kasir membuat Nota rangkap dua. Lalu memberikan Nota putih kepada Konsumen dan Nota merah disimpan untuk diarsipkan. Konsumen menerima nota putih, salinan resep dan obat yang dipesannya.

3. Proses Pembuatan Laporan

Kasir akan membuat laporan data obat dan penerimaan kas Apotek. Kemudian laporan-laporan tersebut diserahkan kepada pemilik Apotek setiap harinya.

(6)

3.2.2 Activity Diagram

<Activity Diagram>

Kasir Apoteker Pimpinan

Pelanggan

Memberikan Resep atau Menanyakan Obat

Menerima pertanyaan dan Resep Obat

Mengecek Stok Obat Memberikan Informasi Obat Tesedia Mengembalikan Resep Obat Memberikan Informasi dan Resep

Obat Tersedia Tidak tersedia Menerima Informasi dan Resep obat Melakukan Pemesanan Obat Menerima Pemesanan Obat Memberikan Resep Obat Menerima Resep Obat Melakukan Meracik Obat Menyiapkan Obat Memberikan Obat dan Informasi Obat Menerima Obat Dan Informasi Obat Melakukan Pembayaran Menerima Pembayaran Membuat Nota Dua Rangkap

Menerima Laporan Data Obat Dan Laporan Penerimaan Kas

Selesai Mulai Stok Obat Menyimpan Nota Merah Untuk diarsipkan Memberikan Nota Putih sebagai Tanda bukti Pembayaran Memberikan nota Pembayaran, salinan resep

dan obat Meneriman Nota

Pembayaran, salinan resep Dan obat

Membuat Laporan Data Obat Dan Laporan penerimaan kas

Memberikan Data Obat Dan Laporan Penerimaan Kas Selesai

Sumber: Data Olahan Penulis

(7)

3.2.3 Spesifikasi Dokumen Masukan

Spesifikasi bentuk dokumen masukan adalah segala bentuk masukan yang dibentk oleh sistem, dimana setiap masukkan dirinci sebagai berikut:

1. Nama Dokumen : Resep

Fungsi : Sebagai petunjuk pemintaan obat

Sumber : Konsumen

Tujuan : Apotek

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap ada pembelian konsumen

Format : Lampiran A-1

2. Nama Dokumen : Daftar Stok Obat Fungsi : Sebagai Data perediaan

Sumber : Apoteker

Tujuan : Kasir

Media : Kertas

Jumlah : 1-2 Lembar

Frekuensi : Setiap melihat stock obat

Format : Lampiran A-2

3.2.4 Spesifikasi Dokumen Keluaran

Berisikan mengenai gambaran keluaran yang dikeluarkan oleh sistem, dimana setiap keluaran dirinci sebagai berikut:

(8)

Fungsi : Sebagai Pengganti resep dengan deskripsi yang sama

Sumber : Apotek

Tujuan : Konsumen

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap pembelian obat

Format : Lampiran B-1

2. Nama Dokumen : Nota Penjualan

Fungsi : Sebagai bukti pembayaran

Sumber : Apotek

Tujuan : Konsumen

Media : Kertas

Jumlah : Satu Lembar

Frekuensi : Setiap ada transaksi pembelian

Format : Lampiran B-2

3. Nama Dokumen : Laporan Penjualan Obat

Fungsi : Sebagai laporan Penjualan obat

Sumber : Kasir

Tujuan : B.Keuangan atau Pemilik

Media : Kertas

Jumlah : 1-2 Lembar

Frekuensi : Setiap hari

(9)

3.2.5 Permasalahan Pokok

Pada proses bisnis berjalan penerimaan kas obat pada Apotek BTJ ini sudah tertata cukup baik, namun penulis menyimpulkan bahwa proses bisnis berjalan dan pelaksanaannya belum efesien karena sistem yang digunakan masih menggunakan sistem manual dan belum terkomputerisasi. Adapun permasalahan yang terdapat pada Apotek BTJ adalah sebagai berikut:

1. Sistem pencatatan transaksi dan pembuatan laporan masih manual dengan menggunakan kertas.

2. Penyimpanan data atau file yang ada pada apotek BTJ masih tercampur menumpuk dengan data yang lain sehingga menyulitkan dalam pencarian data yang dibutuhkan.

3. Pembuatan laporan dilakukan tiap hari pada saat adanya proses pembayaran obat di kertas.

3.2.6 Pemecahan Masalah

Dari permasalahan yang terkait dengan penerimaan ka yang ada pada Apotek BTJ adapun penyelesaian permasalahan adalah sebagai berikut:

1. Mengubah sistem pencatatan transaksi dan pembuatan laporan menjadi sistem yang terkomputerisasi. Agar dapat lebih efesien dan efektif dalam pencatatan transaksi dan pembuatan laporan

2. Mengubah sistem yang manual menjadi sistem yang terkomputerisasi Java dengan menggunakan aplikasi Netbeans IDE 8.1 dengan Database

(10)

keamanan, lebih efesien, dan efektif dibanding penyimpanan secara manual.

3. Dengan adanya sistem yang terkomputerisasi dapat meminimalisir adanya kesalahan dan tidak harus menulis laporan penerimaan kas obat setiap harinya di kertas.

3.3 Analisa Kebutuhan Sofware

Berdasarkan proses bisnis pada Apotek BTJ, maka tahapan berikutnya adalah analisa kebutuhan, berikut ini spesifikasi kebutuhan (system requiment) dari sistem penerimaan kas.

Bagian Kasir dapat masuk kedalam master data, transaksi, dan cetak. Bagian Kasir membuka master data. Didalam master data Kasir dapat menginput data obat, data Konsumen, dan data kasir. Didalam sistem menu transaksi Kasir dapat melakukan penginputan pembayaran dan semua data tranksaksi keuangan. Kasir dapat mencetak hasil dari penginputan transaksi. Kasir dapat mencetak laporan penerimaan kas yang akan diberikan kepada Pemilik Apotek.

3.3.1 Analisis Kebutuhan

A. Hak Akses Kasir akan sistem adalah sebagai berikut

A1. Kasir Login

A2. Kasir Masuk ke Menu Utama

A3. Kasir Input Data Obat

(11)

A5. Kasir Input Resep

A6. Kasir Input Penjualan

A7. Kasir Input Jurnal

A8. Kasir Mencetak Resep

A9. Kasir Mencetak Penjualan

A10. Kasir Logout

B. Hak Akses Pemilik akan sistem adalah sebagai berikut :

B1. Pemilik Login

B2. Pemilik ke Menu Utama

B3. Pemilik Melihat Laporan Data Obat

B4. Pemilik Melihat Laporan Data Pengguna

B5. Pemilik Melihat Laporan Resep

B6. Pemilik Melihat Laporan Penjualan

B7. Pemilik Logout

3.3.2 Use Case Diagram

A. Kasir

(12)

Sumber: Data Olahan Penulis

Gambar III.3 Use Case Diagram Login

Tabel III.1

Diskripsi Use Case Diagram Login

Use Case Narative Login

Tujuan Melakukan Login dan masuk ke sistem apotek Deskripsi Use case ini menggambarkan kegiatan login

untuk masuk kedalam sistem dengan memasukkan kode pengguna dan password untuk masuk kedalam menu utama

Skenario Utama

Aktor Kasir

Kondisi Awal Aktor membuka Aplikasi Apotek Aksi Aktor Reaksi Sistem

1. Memasukan

KodePengguna dan

password

2. Pilih tombol ”Login” Validasi ID user dan password Menampilkan halaman Utama

Kondisi Akhir Jika perintah sesuai maka sistem akan masuk kedalam aplikasi apotek dan dapat memilih aktivitas didalam sistem.

(13)

2. Use Case Diagram Masuk ke Menu Utama

Sumber: Data Olahan Penulis

Gambar III.4 Use Case Diagram Menu Utama

Tabel III.2

Diskripsi Use Case Diagram Menu Utama

Use Case Narrative Menu Utama

Tujuan Kasir dapat menginput data obat, data akun, resep, penjualan, jurnal dan dapat mencetak resep dan penjualan

Deskripsi Use case ini menggambarkan user masuk ke menu utama

Skenario Utama

Aktor Kasir

Kondisi Awal Aktor membuka tampilan Menu Utama Aksi Aktor Reaksi Sistem

1. Aktor menginput data obat

2. Aktor menginput data akun 3. Aktor menginput resep 4. Aktor menginput penjualan 5. Aktor menginput

Sistem ini menampilkan halaman input obat Sistem ini menampilkan halaman input akun Sistem ini menampilkan halaman input resep Sistem ini menampilkan halaman input penjualan

(14)

jurnal

6. Aktor mencetak resep 7. Aktor mencetak

penjualan 8. Aktor Logout

Sistem ini menampilkan halaman cetak resep Sistem ini menampilkan halaman cetak penjualan

Sistem keluar dari sistem

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

3. Use Case Diagram Input Data Obat

Sumber: Data Olahan Penulis

Gambar III.5 Use Case Diagram Input Data Obat

Tabel III.3

Diskripsi Use Case Diagram Input Data Obat

Use Case Narrative Menu Obat

Tujuan Kasir dapat melakukan pengolahan

yang terdapat pada menu obat

Deskripsi Sistem ini memungkinkan aktor

mengelola menu obat, mulai dari menambah, menyimpan, membatalkan, mencari, mengupdate, dan keluar dari sistem

Skenario Utama

Aktor Kasir

Kondisi Awal Aktor membuka menu master kemudian membuka menu obat

(15)

1. Aktor menambah data obat 2. Aktor menyimpan data obat 3. Aktor membatalkan data obat 4. Aktor akan mencari data obat 5. Aktor menghapus data obat 6. Aktor mengubah data obat 7. Aktor mengupdate data obat 8. Aktor keluar dari data obat

Sistem akan menambah data obat Sistem akan menyimpan data obat Sistem akan membatalkan data obat Sistem akan mencari data obat Sistem akan menghapus data obat Sistem akan mengubah data obat Sistem akan mengupdate data obat Sistem akan keluar dari menu obat Kondisi Akhir Jika perintah sesuai maka sistem akan

menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

4. Use Case Diagram Input Data Akun

Sumber: Data Olahan Penulis

Gambar III.6 Use Case Diagram Input Data Akun

Tabel III.4

Diskripsi Use Case Diagram Input Data Akun

Use Case Narrative Input Data Akun

Tujuan Kasir dapat melakukan pengolahan

yang terdapat pada menu akun

Deskripsi Sistem ini memungkinkan aktor

mengelola menu akun, mulai dari menambah,menyimpan, membatalkan, mencari,menghapus, mengupdate, keluar dari menu akun

Skenario Utama

Aktor Kasir

(16)

kemudian membuka menu akun Aksi Aktor Reaksi Sistem

1. Aktor menambah data akun 2. Aktor menyimpan data akun 3. Aktor membatalkan data akun 4. Aktor akan mencari data akun 5. Aktor menghapus data akun 6. Aktor mengubah data akun 7. Aktor mengupdate data akun 8. Aktor keluar dari data akun

Sistem akan menambah data akun Sistem akan menyimpan data akun Sistem akan membatalkan data akun Sistem akan mencari data akun Sistem akan menghapus data akun Sistem akan mengubah data akun Sistem akan mengupdate data akun Sistem akan keluar dari menu akun Kondisi Akhir Jika perintah sesuai maka sistem akan

menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

5. Use Case Diagram Input Resep

Sumber: Data Olahan Penulis

Gambar III.7 Use Case Diagram Input Data Resep

Tabel III.5

Diskripsi Use Case Diagram Input Data Resep

Use Case Narrative Input Resep

Tujuan Kasir dapat melakukan pengolahan

yang terdapat pada menu resep

Deskripsi Sistem ini memungkinkan aktor

mengelola menu resep, mulai dari menambah,menyimpan, membatalkan, mencari,menghapus, mengupdate, keluar dari menu resep

(17)

Aktor Kasir

Kondisi Awal Aktor membuka menu transaksi kemudian membuka menu resep Aksi Aktor Reaksi Sistem 1. Aktor menambah resep

2. Aktor menyimpan resep 3. Aktor membatalkan resep 4. Aktor akan mencari resep 5. Aktor menghapus reep 6. Aktor mengupdate resep 7. Aktor keluar dari resep

Sistem akan menambah resep Sistem akan menyimpan resep Sistem akan membatalkan resep Sistem akan mencari resep Sistem akan menghapus resep Sistem akan mengupdate resep Sistem akan keluar dari menu resep Kondisi Akhir Jika perintah sesuai maka sistem akan

menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

6. Use Case Diagram Input Penjualan

Sumber: Data Olahan Penulis

Gambar III.8 Use Case Diagram Input Data Penjualan

Tabel III.6

Diskripsi Use Case Diagram Input Data Penjualan

Use Case Narrative Menu Penjualan

Tujuan Kasir dapat melakukan pengolahan

yang terdapat pada menu penjualan

Deskripsi Sistem ini memungkinkan aktor

mengelola menu penjualan, mulai dari menambah,menyimpan, membatalkan, mencari,menghapus, mengupdate, keluar dari menu penjualan

(18)

Aktor Kasir

Kondisi Awal Aktor membuka menu transaksi kemudian membuka menu penjualan Aksi Aktor Reaksi Sistem

1. Aktor menambah penjualan 2. Aktor menyimpan penjualan 3. Aktor membatalkan penjualan 4. Aktor akan mencari penjualan 5. Aktor menghapus penjualan 6. Aktor mengupdate penjualan 7. Aktor keluar dari penjualan

Sistem akan menambah penjualan Sistem akan menyimpan penjualan Sistem akan membatalkan penjualan Sistem akan mencari penjualan Sistem akan menghapus penjualan Sistem akan mengupdate penjualan Sistem akan keluar dari menu penjualan

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

7. Use Case Diagram Input Jurnal

Sumber: Data Olahan Penulis

Gambar III.9 Use Case Diagram Input Data Jurnal

Tabel III.7

Diskripsi Use Case Diagram Input Data Jurnal

Use Case Narrative Menu Jurnal

Tujuan Kasir dapat melakukan pengolahan

yang terdapat pada menu jurnal

Deskripsi Sistem ini memungkinkan aktor

mengelola menu jurnal, mulai dari menambah,menyimpan, membatalkan, , dan keluar dari menu jurnal

Skenario Utama

(19)

Kondisi Awal Aktor membuka menu transaksi kemudian membuka menu jurnal Aksi Aktor Reaksi Sistem

1. Aktor menambah jurnal 2. Aktor menyimpan jurnal 3. Aktor membatalkan jurnal 4. Aktor keluar dari jurnal

Sistem akan menambah jurnal Sistem akan menyimpan jurnal Sistem akan membatalkan jurnal Sistem akan keluar dari menu jurnal Kondisi Akhir Jika perintah sesuai maka sistem akan

menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

8. Use Case Diagram Mencetak Resep

Sumber: Data Olahan Penulis

Gambar III.10 Use Case Diagram Mencetak Resep

Tabel III.8

Diskripsi Use Case Diagram Cetak Resep

Use Case Narrative Menu Cetak Resep

Tujuan Kasir dapat melakukan proses cetak Resep Deskripsi Sistem ini memungkinkan aktor mencari kode

resep, menampilkan resep, melakukan proses cetak, keluar proses cetak resep.

Skenario Utama

Aktor Kasir

Kondisi Awal Aktor membuka menu cetak kemudian membuka menu cetak resep

Aksi Aktor Reaksi Sistem 1. Aktor memilih tombol

tampilkan

2. Aktor memilih tombol

Sistem akan menampilkan form cetak resep Sistem akan mencetak resep

(20)

cetak

3. Aktor memilih tombol keluar

Sistem akan keluar dari menu cetak resep

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

9. Use Case Diagram Mencetak Penjualan

Sumber: Data Olahan Penulis

Gambar III.11 Use Case Diagram Mencetak Penjualan

Tabel III.9

Diskripsi Use Case Diagram Cetak Penjualan

Use Case Narrative Menu Cetak Penjualan

Tujuan Kasir dapat melakukan proses cetak penjualan Deskripsi Sistem ini memungkinkan aktor mencari kode penjualan, menampilkan penjualan, melakukan proses cetak, keluar proses cetak penjualan.

Skenario Utama

Aktor Kasir

Kondisi Awal Aktor membuka menu cetak kemudian membuka menu cetak penjualan

Aksi Aktor Reaksi Sistem 1. Aktor memilih tombol

tampilkan

Sistem akan menampilkan form cetak penjualan

(21)

2. Aktor memilih tombol cetak

3. Aktor memilih tombol keluar

Sistem akan mencetak penjualan

Sistem akan keluar dari menu cetak penjualan

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

10. Use Case Diagram Logout

Sumber: Data Olahan Penulis

Gambar III.12 Use Case Diagram Logout

Tabel III.10

Diskripsi Use Case Diagram Logout

Use Case Narrative Menu Logout

Tujuan Kasir dapat melakukan melakukan logout dan keluar dari sistem

Deskripsi Sistem ini memungkinkan aktor menutup sistem

Skenario Utama

Aktor Kasir

Kondisi Awal Aktor membuka aplikasi Apotek Aksi Aktor Reaksi Sistem

1. Aktor memilih tombol

logout

Sistem akan utup semua menu dan aplikasi Apotek

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

(22)

B. Pemilik

1. Use Case Diagram Login

Sumber: Data Olahan Penulis

Gambar III.13 Use Case Diagram Login Tabel III.11

Diskripsi Use Case Diagram Login

Use Case Narative Login

Tujuan Melakukan Login dan masuk ke sistem apotek

Deskripsi Use case ini menggambarkan kegiatan login untuk masuk kedalam sistem dengan memasukkan kode pengguna dan password untuk masuk kedalam menu utama

Skenario Utama

Aktor Pemilik

Kondisi Awal Aktor membuka Aplikasi Apotek Aksi Aktor Reaksi Sistem

1. Memasukan Kode Pengguna dan password

2. Pilih tombol ”Login”

Validasi Kode Pengguna dan password Menamilkan halaman Utama

Kondisi Akhir Jika perintah sesuai maka sistem akan masuk kedalam aplikasi apotek dan dapat memilih aktivitas didalam sistem. Sumber: Data Olahan Penulis

(23)

2. Use Case Diagram ke Menu Utama

Sumber: Data Olahan Penulis

Gambar III.14 Use Case Diagram Menu Utama Tabel III.12

Diskripsi Use Case Diagram Menu Utama

Use Case Narrative Menu Utama

Tujuan Kasir dapat menginput data pengguna, dan melihat laporan data obat, pengguna, resep dan penjualan

Deskripsi Use case ini menggambarkan user masuk ke menu utama

Skenario Utama

Aktor Pemilik

Kondisi Awal Aktor membuka tampilan Menu Utama Aksi Aktor Reaksi Sistem

1. Aktor menginput data pengguna

2. Aktor melihat laporan data obat

3. Aktor melihat laporan data pengguna

4. Aktor melihat laporan resep

5. Aktor melihat laporan penjualan

6. Aktor Logout

Sistem ini menampilkan form input pengguna Sistem ini menampilkan form laporan data obat Sistem ini menampilkan form laporan data pengguna

Sistem ini menampilkan form laporan resep Sistem ini menampilkan form laporan penjualan

Sistem keluar dari sistem

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

(24)

3. Use Case Diagram Input Data Pengguna

Sumber: Data Olahan Penulis

Gambar III.15 Use Case Diagram Input Data Pengguna

Tabel III.13

Diskripsi Use Case Diagram Input Data Pengguna

Use Case Narrative Menu Data Pengguna

Tujuan Pemilik dapat melakukan pengolahan

yang terdapat pada menu penguna

Deskripsi Sistem ini memungkinkan aktor

mengelola menu penguna, mulai dari menambah,menyimpan,

membatalkan, mencari,menghapus, mengupdate, keluar dari menu penguna

Skenario Utama

Aktor Pemilik

Kondisi Awal Aktor membuka menu master

kemudian membuka menu penguna Aksi Aktor Reaksi Sistem

1. Aktor menambah data pengguna 2. Aktor menyimpan data pengguna 3. Aktor membatalkan data pengguna 4. Aktor akan mencari data pengguna 5. Aktor menghapus data pengguna 6. Aktor mengubah data pengguna

Sistem akan menambah data pengguna

Sistem akan menyimpan data pengguna

Sistem akan membatalkan data pengguna

Sistem akan mencari data penguna Sistem akan menghapus data pengguna

Sistem akan mengubah data pengguna

(25)

7. Aktor mengupdate data pengguna 8. Aktor keluar dari data pengguna

pengguna

Sistem akan keluar dari menu pengguna

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

4. Use Case Diagram Laporan Data Obat

Sumber: Data Olahan Penulis

Gambar III.16 Use Case Diagram Laporan Data Obat

Tabel III.14

Diskripsi Use Case Diagram Laporan Data Obat

Use Case Narrative Menu Laporan Data Obat

Tujuan Pemilik dapat mengakses laporan

data obat

Deskripsi Sistem ini memungkinkan aktor

melakukan proses tampil, cetak dan keluar dari laporan data obat

Skenario Utama

Aktor Pemilik

Kondisi Awal Aktor membuka menu laporan

kemudian membuka menu laporan data obat

Aksi Aktor Reaksi Sistem 1. Aktor milih tampilkan

2. Aktor memilih cetak

Sistem akan menampilkan form laporan data obat

(26)

3. Aktor memilih keluar

obat

Sistem akan keluar dari form laporan data obat

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

5. Use Case Diagram Laporan Resep

Sumber: Data Olahan Penulis

Gambar III.17 Use Case Diagram Menu Laporan Resep

Tabel III.14

Diskripsi Use Case Diagram Menu Laporan Resep

Use Case Narrative Menu Laporan Resep

Tujuan Pemilik dapat mengakses laporan

data resep

Deskripsi Sistem ini memungkinkan aktor

melakukan proses pilih laporan perperiode, laporan perbulan, tampil, cetak dan keluar dari laporan data resep

Skenario Utama

Aktor Pemilik

Kondisi Awal Aktor membuka menu laporan

kemudian membuka menu laporan data resep

(27)

1. Aktor memilih laporan perperiode 2. Aktor memilih laporan perbulan

3. Aktor memilih cetak 4. Aktor memilih keluar

Sistem akan menampilkan form laporan perperiode data resep

Sistem akan menampilkan form laporan perbulan data resep

Sistem akan mencetak laporan data resep

Sistem akan keluar dari form laporan data resep

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

6. Use Case Diagram Laporan Penjualan

Sumber: Data Olahan Penulis

Gambar III.18 Use Case Diagram Laporan Penjualan

Tabel III.16

Diskripsi Use Case Diagram Laporan Penjualan

Use Case Narrative Menu Laporan Penjualan

Tujuan Pemilik dapat mengakses laporan

data penjualan

Deskripsi Sistem ini memungkinkan aktor

melakukan proses pilih laporan perperiode, laporan perbulan, tampil, cetak dan keluar dari laporan data penjualan

Skenario Utama

(28)

Kondisi Awal Aktor membuka menu laporan kemudian membuka menu laporan data penjualan

Aksi Aktor Reaksi Sistem 1. Aktor memilih laporan perperiode

2. Aktor memilih laporan perbulan 3. Aktor memilih cetak

4. Aktor memilih keluar

Sistem akan menampilkan form laporan perperiode data penjualan Sistem akan menampilkan form laporan perbulan data penjualan Sistem akan mencetak laporan data penjualan

Sistem akan keluar dari form laporan data penjualan

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

7. Use Case Diagram Logout

Sumber: Data Olahan Penulis

Gambar III.19 Use Case Diagram Logout

Tabel III.17

Diskripsi Use Case Diagram Logout

Use Case Narrative Menu Logout

Tujuan Kasir dapat melakukan melakukan logout dan keluar dari sistem

Deskripsi Sistem ini memungkinkan aktor menutup sistem

Skenario Utama

(29)

Kondisi Awal Aktor membuka aplikasi Apotek Aksi Aktor Reaksi Sistem

3. Aktor memilih tombol

logout

Sistem akan utup semua menu dan aplikasi Apotek

Kondisi Akhir Jika perintah sesuai maka sistem akan menampilkan seperti yang diinginkan oleh aktor.

Sumber: Data Olahan Penulis

3.3.3 Activity Diagram

1. Activity Diagram Melakukan Login

Activity Diagram Login

Sistem Kasir Melakukan Login Masukkan Kode Pengguna Masukkan Password

Mengecek Kode Pengguna Dan Password Menampilkan Data Tidak Ditemukan Masuk ke Menu Utama Start Selesai Apakah ada kesalaha?

Tak Ada

Ada

Sumber: Data Olahan Penulis

(30)

2. Activity Diagram Menu Utama

Activity Diagram Kasir Menu Utama

Sistem Kasir

Masuk Kedalam

Menu Utama Menu Utama

Menu Master

Menu

Transaksi Menu Cetak

Tekan tombol logout

Keluar dari Menu Utama

Sumber: Data Olahan Penulis

(31)

3. Activity Diagram Kasir Input Data Obat

Activity Diagram Menu Obat

Sistem Kasir

Klik Menu Obat

Menampilkan Form Master Obat

Tambah Masukkan Kode Obat Masukkan Nama Obat Masukkan Harga Jual Cari

Keluar dari Menu Data Obat Selesai Masukkan Stok Batal Simpan Ubah Menampilkan Data Obat Masukkan

Kode Obat Update

Hapus

Menampilkan Data Obat

Sumber: Data Olahan Penulis

(32)

4. Activity Diagram Kasir Input Data Akun

Activity Diagram Menu Akun

Sistem Kasir

Klik Menu Akun

Menampilkan Form Input Data Akun

Tambah Masukkan Kode Akun Masukkan Nama Akun Masukkan Saldo Norma Cari

Keluar Form Data Akun

Selesai Masukkan Stok Batal Simpan Menampilkan Form Data Akun Masukkan Kode Akun Hapus Ubah Update Menampilkan Form Data Akun

Sumber: Data Olahan Penulis

(33)

5. Activity Diagram Kasir Input Resep

Activity Diagram Menu Resep

Sistem Kasir Klik Menu Resep Menampilkan Form Resep Tambah Masukkan Kode Resep Masukkan Tanggal Masukkan Umur Selesai Masukkan Alamat Batal Simpan Hapus Masukkan Apoteker Masukkan Jumlah Beli Nama Obat Harga Obat Subtotal Cetak Masukkan Uang Bayar Masukkan Nama Pengguna Keluar Form Menu Resep Update Menampilkan Form Cetak Resep

Menampilkan Form Resep

Sumber: Data Olahan Penulis

(34)

8. Activity Diagram Kasir Input Penjualan

Activity Diagram Menu Penjualan

Sistem Kasir Klik Menu Penjualan Menampilkan Form Penjualan Tambah Masukkan Kode Penjualan Masukkan Tanggal Keluar Form Penjualan Selesai Batal Simpan Masukkan Jumlah Beli Nama Obat Harga Obat Subtotal Cetak Masukkan Uang Bayar Masukkan Nama Pengguna

Update Menampilkan Form

Cetak Penjualan Hapus

Menampilkan Form Penjualan

Sumber: Data Olahan Penulis

(35)

9. Activity Diagram Kasir Input Jurnal

Activity Diagram Menu Jurnal

Sistem Kasir

Klik Menu Jurnal

Menampilkan Form Input Jurnal

Tambah Masukkan Kode Jurnal Masukkan Tanggal Keluar Form Jurnal Batal Simpan Masukkan Nama Akun Masukkan Debet Masukkan Kredit Selesai

Sumber: Data Olahan Penulis

(36)

10. Activity Diagram Kasir Cetak Resep

Activity Diagram Menu Cetak Resep

Sistem Kasir

Klik Menu Cetak Resep

Tampil Form Menu Cetak Resep

Masukkan Kode Resep Start Cari Kode Resep Selesai Cetak

Keluar dari Form Cetak Resep Tampil Form Cetak

Resep

Sumber: Data Olahan Penulis

(37)

11. Activity Diagram Kasir Cetak Penjualan

Activity Diagram Menu Cetak Penjualan

Sistem Kasir

Klik Menu Cetak Penualan

Tampil Form Menu Cetak Penjualan

Masukkan Kode Penjualan Start Cari Kode Penjualan Selesai Cetak

Keluar dari Form Cetak Penjualan Tampil Form Cetak

Penjualan

Sumber: Data Olahan Penulis

(38)

12. Activity Diagram Pemilik Apotek Menu Utama

Activity Diagram Menu Utama

Sistem PA Masuk kedalam Sistem Menu Utama Menu Utama Menu Master Keluar dari Fom Menu utama Start

Selesai

Menu Laporan

Sumber: Data Olahan Penulis

Gambar III.29Activity Diagram Pemilik Apotek Menu Utama

12. Activity Diagram Pemilik Apotek Menu Master Activity Diagram Menu Master

Sistem PA Tekan Menu Master Menampilkan Menu Master Menu Pengguna

Keluar dari Form Menu Master

Selesai Start

Sumber: Data Olahan Penulis

(39)

13. Activity Diagram Pemilik Apotek Menu Input Data Pengguna

Activity Diagram Input Pengguna

Sistem Pemilik Apotek

Klik Menu Pengguna

Menampilkan Form Master Pengguna

Tambah Masukkan Kode pengguna Masukkan Nama pengguna Masukkan Password Cari

Keluar Form Master Pengguna

Selesai Masukkan level Batal Simpan Ubah Masukkan Kode pengguna Menampilkan Form Pengguna Update Hapus

Sumber: Data Olahan Penulis

(40)

14. Activity Diagram Pemilik Apotek Menu Laporan

Activity Diagram Menu Lapoan

Sistem Pemilik Apotek Klik Menu Laporan Tampil Form Menu Laporan Keluar dari Form Menu Laporan Start Laporan Data Obat Laporan Penjualan Selesai Laporan Resep Pilih Periode Laporan Pilih Periode Laporan Tampil Form Laporan Data Pengguna Tampil Form Periode Laporan Penjualan Tampil Form Periode Laporan Resep Cetak Cetak Cetak

Sumber: Data Olahan Penulis

(41)

3.4 Desain

3.4.1 Entity Relationship Diagram (ERD)

Pengguna kode_pengguna level password nama_pengguna Mengisi Obat stok harga_jual jenis_obat nama_obat kode_obat Mengisi Jurnal Menghasilkan Menghasilkan Resep Penjualan Detail Jurnal Akun kode_resep tanggal totalbayar

kode_pengguna nama_pengguna umur

alamat dokter totalbayar kode_penjualan tanggal kode_pengguna kode_akun nama_akun Saldo_normal keterangan tanggal kode_jurnal

Sumber: Data Olahan Penulis

(42)

3.4.2 Logical Record Structure (LRS) Pengguna PK kode_pengguna nama_pengguna password level Obat PK kode_obat nama_obat jenis_obat harga_jual stok Akun PK kode_akun nama_akun saldo_normal Resep PK kode_resep tanggal totalbayar kode_pengguna [FK] nama_pasien umur alamat dokter Detail Resep kode_resep [FK] kode_obat [FK] jumlahbeli subtotal Penjualan PK kode_penjualan tanggal totalbayar kode_pengguna [FK] Detail Penjualan kode_penjualan [FK] kode_obat [FK] jumlahbeli subtotal Jurnal PK kode_jurnal tanggal keterangan Detail Jurnal kode_jurnal [FK] kode_akun [FK] debet kredit

(43)

Gambar III.34 Logical Record Structure (LRS)

3.4.3 Spesifikasi File

1. Spesifikasi File Pengguna

Nama Database : db_apotek_btj Nama File : pengguna

Fungsi : Untuk menambah pengguna

Akronim : pengguna.sql

Tipe File : File Master Akses File : Root Panjang Record : 53 byte Kunci Field : kd_pengguna

Tabel III.18

Spesifikasi File Pengguna

No. Elemen Data Nama File Tipe Panjang Keterangan

1 Kode

Pengguna

kode_pengguna Varchar 8 Primary Key

2 Nama

Pengguna

nama_pengguna Varchar 5

3 Password password Varchar 30

4 Level level Varchar 10

Sumber: Data Olahan Penulis

2. Spesifikasi File Obat

Nama Database : db_apotek_btj Nama File : obat

Fungsi : Untuk menambah obat

Akronim : obat.sql

(44)

Akses File : Root Panjang Record : 90 byte Kunci Field : kd_obat

Tabel III.19 Spesifikasi File Obat

No. Elemen Data Nama File Tipe Panjang Keterangan 1. Kode Pasien kode_pasien varchar 8 Primary Key 2 Nama Obat Nama_obat Varchar 30

3 Jenis Obat jenis_obat Varchar 30

4 Harga Jual harga_jual Int 11

5 Stok stok Int 11

Sumber: Data Olahan Penulis

3. Spesifikasi File Akun

Nama Database : db_apotek_btj Nama File : akun

Fungsi : Untuk menambah akun

Akronim : akun.sql

Tipe File : File Master Akses File : Root Panjang Record : 42 byte Kunci Field : kd_akun

Tabel III.20 Spesifikasi File Akun

No. Elemen Data Nama File Tipe Panjang Keterangan 1 Kode Akun kode_akun Varchar 8 Primary Key 2 Nama Akun nama_akun Varchar 30

3 Saldo Normal saldo_normal Varchar 6 Sumber: Data Olahan Penulis

(45)

3. Spesifikasi File Resep

Nama Database : db_apotek_btj Nama File : resep

Fungsi : Untuk menambah resep

Akronim : resep.sql

Tipe File : File Transaksi Akses File : Root

Panjang Record : 127 byte Kunci Field : kd_resep

Tabel III.21 Spesifikasi File Resep

No. Elemen Data Nama File Tipe Panjang Keterangan 1 Kode Resep kode_resep Varchar 15 Primary key

2 Tanggal tanggal Varchar 30

3 Total Bayar totalbayar Int 11

4 Kode Pengguna kode_pengguna Varchar 8 5 Nama Pasien nama_pasien Varchar 30

6 Umur umur Varchar 3

7 Alamat alamat Text

8 Dokter dokter Varchar 30

Sumber: Data Olahan Penulis

4. Spesifikasi File Penjualan

Nama Database : db_apotek_btj Nama File : penjualan

Fungsi : Untuk menambah penjualan Akronim : penjualan.myd

(46)

Akses File : Root Panjang Record : 64 byte Kunci Field : kd_penjualan

Tabel III.22

Spesifikasi File Penjualan

No. Elemen Data Nama File Tipe Panjang Keterangan 1 Kode

Penjualan

kode_penjualan Varchar 15 Primary Key

2 Tanggal tanggal Varchar 30 3 Total Bayar totalbayar Int 11 4 Kode

Pengguna

kode_pengguna Varchar 8

Sumber: Data Olahan Penulis

5. Spesifikasi File Jurnal

Nama Database : db_apotek_btj

Nama File : jurnal

Fungsi : Untuk menambah jurnal

Akronim : jurnal.sql

Tipe File : File Transaksi

Akses File : Root

Panjang Record : 75 byte

Kunci Field : kd_jurnal

Tabel III.23 Spesifikasi File Jurnal

No. Elemen Data Nama File Tipe Panjang Keterangan 1 Kode Jurnal kode_jurnal Varchar 15 Primary Key

(47)

2 Tanggal tanggal Varchar 30 3 Keterangan keterangan Varchar 30 Sumber: Data Olahan Penulis

3.4.4 Sequence Diagram

1. Sequence Diagram Penjualan

Kasir Form Penjualan tambah Control Penjualan Message1 Display kode_penjualan Penjualan get(totalbayar) get(kode_pengguna) get(kode_penjualan) get(tanggal) get(kode_pengguna) get(totalbayar) get(tanggal) simpan batal cetak keluar

Sumber: Data Olahan Penulis

(48)

3.4.5 Deployment Diagram Main <<ArchiveXcontrol>> Netbeans IDE 8.1 <<device>> Database <<DBMS>>MSQL <<Database>> Db_apotek_btj <<device>> <<Aplication>> Program Penjualan

Sumber: Data Olahan Penulis

Gambar III.36 Deployment Diagram 3.4.6 User Interface

1. Form Login

Sumber: Data Olahan Penulis

(49)

2.Form Menu Utama Kasir

Sumber: Data Olahan Penulis

Gambar III.38 Form Menu Utama Kasir

3. Form Menu Utama Pemilik Apotek

Sumber: Data Olahan Penulis

(50)

4. Form Sub Menu Obat

Sumber: Data Olahan Penulis

Gambar III.40 Form Sub Menu Obat 5. Form Sub Menu Akun

Sumber: Data Olahan Penulis

(51)

6. Form Sub Menu Pengguna

Sumber: Data Olahan Penulis

Gambar III.42 Form Sub Menu Pengguna 7. Form Sub Menu Resep

Sumber: Data Olahan Penulis

(52)

8. Form Sub Menu Penjualan

Sumber: Data Olahan Penulis

Gambar III.44 Form Sub Menu Penjualan

9. Form Sub Menu Jurnal

Sumber: Data Olahan Penulis

(53)

10. Form Sub Menu Cetak Penjualan

Sumber: Data Olahan Penulis

Gambar III.46 Form Sub Menu Cetak Penjualan

11. Form Sub Menu Cetak Resep

Sumber: Data Olahan Penulis

(54)

12. Form Sub Menu Laporan Data Obat

Sumber: Data Olahan Penulis

Gambar III.47 Form Sub Menu Laporan Data Obat

13. Form Sub Menu Laporan Penerimaan Kas Atas Penjualan Obat

Sumber: Data Olahan Penulis

(55)

14. Form Sub Menu Laporan Data Resep

Sumber: Data Olahan Penulis

Gambar III.50 Form Sub Menu Laporan Resep

3.5 Implementasi

3.5.1 Code Generation

Form Data Penjualan

package apotek_btj; import java.awt.event.KeyEvent; import java.util.Date; import java.sql.*; import java.text.SimpleDateFormat; import java.util.HashMap; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager;

(56)

import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.view.JasperViewer;

public class menuPenjualan extends javax.swing.JFrame { koneksi kon = new koneksi();

private Object[][] datasementara = null;

private String[] labelsementara = {"Kode obat", "Nama obat", "Harga", "Jumlah Beli", "Subtotal"};

/**

* Creates new form menupenjualan */ public menuPenjualan() { initComponents(); kon.setKoneksi(); setTanggal(); awal(); kode_pengguna.setVisible(false); }

public Date date = new Date();

public SimpleDateFormat noformat = new SimpleDateFormat("yyMM"); public String Kodeobat;

public String Namaobat; public String Hargaobat; public String KodeUser; public String NamaUser; public String getKodeobat() { return Kodeobat;

}

public String getNamaobat() { return Namaobat;

(57)

}

public String getHargaobat() { return Hargaobat;

}

public String getKodeUser() { return KodeUser;

}

public String getNamaUser() { return NamaUser;

}

private void bersih() { kode.setText(""); nama_obat.setText(""); jumlahbeli.setText(""); tsubtotal.setText(""); tbayar.setText(""); tkembali.setText(""); ltotal.setText("0"); }

private void nonaktif() { kode.setEditable(false); tgl.setEditable(false);

nama_obat.setEditable(false); kode_obat.setEditable(false); jumlahbeli.setEditable(false);

(58)

tsubtotal.setEditable(false); harga_jual.setEditable(false); tbayar.setEditable(false); tkembali.setEditable(false); nama_pengguna.setEditable(false); }

private void aktif() {

kode_obat.setEditable(true); jumlahbeli.setEditable(true); tbayar.setEditable(true); }

private void setTanggal() {

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

java.text.SimpleDateFormat kal = new java.text.SimpleDateFormat("yyyy-MM-dd");

tgl.setText(kal.format(skrg)); }

private void awal() { nonaktif();

}

public String nomor() { String urutan = null; try {

kon.rs = kon.st.executeQuery("select right(kode_penjualan,3)+1 from penjualan");

(59)

kon.rs.last();

urutan = kon.rs.getString(1); while (urutan.length() < 3) { urutan = "0" + urutan; }

urutan = "NO-" + noformat.format(date) + urutan;

} else {

urutan = "NO-" + noformat.format(date) + "001"; }

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, "Mungkin Database Anda: " + e); }

return urutan;

}

private void tampilTabelSementara() { try {

String sql = "Select * from sementara order by kode_obat"; kon.rs = kon.st.executeQuery(sql);

ResultSetMetaData m = kon.rs.getMetaData(); int kolom = m.getColumnCount();

int baris = 0;

while (kon.rs.next()) { baris = kon.rs.getRow(); }

(60)

int x = 0; kon.rs.beforeFirst(); while (kon.rs.next()) { datasementara[x][0] = kon.rs.getString("kode_obat"); datasementara[x][1] = kon.rs.getString("nama_obat"); datasementara[x][2] = kon.rs.getString("harga_jual"); datasementara[x][3] = kon.rs.getString("jumlahbeli"); datasementara[x][4] = kon.rs.getString("subtotal"); x++; } tbpenjualan.setModel(new DefaultTableModel(datasementara, labelsementara)); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }

private void tampilDataobat() { try {

String sql = "select * from obat where kode_obat ='" + kode_obat.getText() + "'"; kon.rs = kon.st.executeQuery(sql); if (kon.rs.next()) { nama_obat.setText(kon.rs.getString("nama_obat")); harga_jual.setText(kon.rs.getString("harga_jual")); jumlahbeli.requestFocus(); } else {

JOptionPane.showMessageDialog(null, "Kode " + kode_obat.getText() + "tidak ditemukan");

(61)

}

} catch (SQLException e) {

JOptionPane.showMessageDialog(null, e); }

}

private void simpanSementara() { try {

String sql = "insert into sementara values ('" + kode_obat.getText() + "','" + nama_obat.getText() + "','" + harga_jual.getText() + "','" + jumlahbeli.getText() + "','" + tsubtotal.getText() + "')"; kon.st.executeUpdate(sql); tampilTabelSementara(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } } }

private void hapusIsiSementara() {

int row = tbpenjualan.getSelectedRow(); int x;

int total = Integer.parseInt(ltotal.getText());

x = Integer.parseInt((String) tbpenjualan.getValueAt(row, 4)); total = total - x;

ltotal.setText(Integer.toString(total)); try {

(62)

String sql = "delete from sementara where kode_obat ='" + (String) tbpenjualan.getValueAt(row, 0) + "'"; kon.st.executeUpdate(sql); tampilTabelSementara(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }

private void simpanpenjualan() { try {

String sql = "insert into penjualan values('" + kode.getText() + "','"

+ tgl.getText() + "','" + ltotal.getText() + "','" + kode_pengguna.getText() + "')";

kon.st.executeUpdate(sql); } catch (SQLException e) {

System.out.println("Koneksi Gagal " + e.toString()); }

}

private void simpanDetailpenjualan() { try {

String sql = "insert into detailpenjualan select '" + kode.getText() + "',kode_obat,jumlahbeli,subtotal from sementara";

kon.st.executeUpdate(sql); } catch (SQLException e) {

System.out.println("Koneksi Gagal " + e.toString()); }

(63)

private void hapusTabelSementara() { try {

String sql = "Delete from sementara"; kon.st.executeUpdate(sql); tampilTabelSementara(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); } }

private void cetakStruk() {

cetakPenjualan mt = new cetakPenjualan(); mt.setLocationRelativeTo(null);

mt.setVisible(true);

mt.Kodeobat = kode.getText(); }

/**

* This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

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

jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel();

(64)

kode = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); tgl = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel();

nama_pengguna = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel();

jPanel3 = new javax.swing.JPanel(); jLabel4 = new javax.swing.JLabel(); kode_obat = new javax.swing.JTextField(); btbrowse = new javax.swing.JButton(); jLabel5 = new javax.swing.JLabel();

nama_obat = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel();

harga_jual = new javax.swing.JTextField(); jLabel7 = new javax.swing.JLabel();

jumlahbeli = new javax.swing.JTextField(); jLabel8 = new javax.swing.JLabel();

tsubtotal = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); tbpenjualan = new javax.swing.JTable(); jPanel4 = new javax.swing.JPanel(); jLabel9 = new javax.swing.JLabel(); ltotal = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); tbayar = new javax.swing.JTextField(); jLabel12 = new javax.swing.JLabel(); tkembali = new javax.swing.JTextField(); bttambah = new javax.swing.JButton();

(65)

btsimpan = new javax.swing.JButton(); btbatal = new javax.swing.JButton(); btkeluar = new javax.swing.JButton(); kode_pengguna = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOS E);

setTitle("Penjualan");

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowActivated(java.awt.event.WindowEvent evt) { formWindowActivated(evt); } }); getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); jPanel1.setBackground(new java.awt.Color(0, 153, 153)); jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); jPanel1.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

jLabel1.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jLabel1.setText("Kode Penjualan");

kode.setBackground(new java.awt.Color(0, 255, 153));

kode.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

jLabel2.setBackground(new java.awt.Color(0, 153, 153));

(66)

jLabel2.setText("Tanggal");

tgl.setBackground(new java.awt.Color(0, 255, 153));

tgl.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

jLabel3.setBackground(new java.awt.Color(0, 153, 153));

jLabel3.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jLabel3.setText("Nama Pengguna");

nama_pengguna.setBackground(new java.awt.Color(0, 255, 153));

nama_pengguna.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel2) .addGap(18, 18, 18)

(67)

.addComponent(tgl, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(nama_pengguna, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(26, 26, 26) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.BASELINE) .addComponent(jLabel1) .addComponent(kode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2) .addComponent(tgl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3) .addComponent(nama_pengguna, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

(68)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 680, -1)); jPanel2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.bo rder.EtchedBorder.RAISED)); jLabel4.setBackground(new java.awt.Color(0, 153, 153));

jLabel4.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel4.setText("Kode Obat");

kode_obat.setBackground(new java.awt.Color(0, 255, 153));

kode_obat.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N kode_obat.addContainerListener(new java.awt.event.ContainerAdapter() { public void componentAdded(java.awt.event.ContainerEvent evt) { kode_obatComponentAdded(evt);

} });

kode_obat.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { kode_obatActionPerformed(evt);

(69)

});

btbrowse.setBackground(new java.awt.Color(0, 255, 153)); btbrowse.setText("...");

btbrowse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btbrowseActionPerformed(evt);

} });

jLabel5.setBackground(new java.awt.Color(0, 153, 153));

jLabel5.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel5.setText("Nama Obat");

nama_obat.setBackground(new java.awt.Color(0, 255, 153));

nama_obat.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

jLabel6.setBackground(new java.awt.Color(0, 153, 153));

jLabel6.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel6.setText("Harga Obat");

harga_jual.setBackground(new java.awt.Color(0, 255, 153));

harga_jual.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

jLabel7.setBackground(new java.awt.Color(0, 153, 153));

(70)

jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel7.setText("Jumlah Beli");

jumlahbeli.setBackground(new java.awt.Color(0, 255, 153));

jumlahbeli.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jumlahbeli.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jumlahbeliActionPerformed(evt);

} });

jumlahbeli.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { jumlahbeliKeyTyped(evt);

} });

jLabel8.setBackground(new java.awt.Color(0, 153, 153));

jLabel8.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel8.setText("Sub Total");

tsubtotal.setBackground(new java.awt.Color(0, 255, 153));

tsubtotal.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

tbpenjualan.setBackground(new java.awt.Color(0, 255, 153));

tbpenjualan.setFont(new java.awt.Font("Comic Sans MS", 0, 11)); // NOI18N

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

(71)

{null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, 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", "Title 5" }

));

tbpenjualan.setCursor(new

java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));

tbpenjualan.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { tbpenjualanKeyPressed(evt);

} });

jScrollPane1.setViewportView(tbpenjualan);

javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup(

(72)

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING, false) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(kode_obat) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btbrowse)) .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 112, Short.MAX_VALUE)) .addGap(18, 18, 18) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING) .addComponent(nama_obat) .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING, false) .addComponent(harga_jual) .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

(73)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING) .addComponent(jumlahbeli, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING, false) .addComponent(tsubtotal) .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 670, Short.MAX_VALUE) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING) .addGroup(jPanel3Layout.createSequentialGroup()

(74)

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.BASELINE) .addComponent(jLabel4) .addComponent(jLabel5)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.LEADING) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.BASELINE) .addComponent(kode_obat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btbrowse)) .addComponent(nama_obat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel3Layout.createSequentialGroup() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.BASELINE) .addComponent(jLabel8) .addComponent(jLabel7) .addComponent(jLabel6)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignm ent.BASELINE) .addComponent(tsubtotal, javax.swing.GroupLayout.PREFERRED_SIZE,

(75)

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jumlahbeli, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(harga_jual, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel4.setBorder(javax.swing.BorderFactory.createEtchedBorder());

jLabel9.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N jLabel9.setText("Rp.");

ltotal.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N ltotal.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); ltotal.setText("Total");

jLabel11.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel11.setText("Uang Bayar");

(76)

tbayar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tbayarActionPerformed(evt);

} });

tbayar.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(java.awt.event.KeyEvent evt) { tbayarKeyTyped(evt);

} });

jLabel12.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel12.setText("Uang Kembali");

tkembali.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

Gambar

Gambar III.3 Use Case Diagram Login
Gambar III.4 Use Case Diagram Menu Utama
Gambar III.8 Use Case Diagram Input Data Penjualan
Tabel III.8
+7

Referensi

Dokumen terkait

Penelitian ini bertujuan untuk mempelajari infektivitas dan efektivitas mikoriza dari sumber tanah ultisol, entisol, inceptisol, dan histosol terhadap serapan

Kusnardi dan Harmaily Ibrahim, 1988Pengantar Hukum Tata Negara, Pusat Studi Hukum Tata Negara Fakultas Hukum Unlversltas Indonesia, Jakarta, Mariam Darus Badrulzaman, Mencari

Proses hutang piutang emas kepada Bu Emi dengan tujuan untuk dijual kembali adalah pihak debitur mengajukan permohonan hutang kepada kreditur (Bu Emi), kemudian

Hasil analisa menunjukkan bahwa secara keseluruhan terdapat pengaruh yang signifikan motivasi kerja dan persepsi efektivitas pelatihan kerja ( individual reaction )

Untuk mengurangi risiko terjadinya keluhan MSDs, maka disarankan kepada pekerja agar desain alat pengayakan perlu diubah sehingga dalam pengerjaannya bisa dilakukan

Kurniawati Agustina, E0009185, 2009, PELAKSANAAN PERLINDUNGAN KESEJAHTERAAN TERHADAP PEKERJA DI PT PETROKIMIA GRESIK, Fakultas Hukum Universitas Sebelas Maret

bahwa pengaturan penilaian kinerja pegawai dan pemberian tunjangan kinerja di lingkungan Pemerintah Kota Bandung telah ditetapkan berdasarkan Peraturan Wali Kota

juga berkaitan dengan peningkatan total bakteri asam laktat yaitu Lactobacillus, yang memiliki aktivitas antioksidan yang tinggi sehingga dapat meningkatkan