Final Project Pemrograman Berbasis Kerangka Kerja

Final Project 

Pemrograman Berbasis Kerangka Kerja

Nama : Ilham Insan Wafi
NRP : 5025211255
Kelas : PBKK (A)


Link Repository Code Github : GITHUB APLIKASI KASIR BURAK COFFEE

Studi Kasus : Burak Coffee

Deskripsi Studi Kasus Aplikasi Burak Coffee Ditinjau dari MVC nya

        Studi kasus ini mengidentifikasi masalah sistem toko kopi yang belum memiliki pencatatan transaksi yang efektif. Solusi yang diusulkan adalah pengembangan aplikasi kasir berbasis web menggunakan framework CodeIgniter dan MySQL. MVC digunakan untuk memahami dan mengelola peran masing-masing komponen (Model, View, dan Controller) dalam pengembangan aplikasi kasir. Model menangani data dan logika, Controller mengelola input dan proses, sedangkan View menyajikan informasi kepada pengguna. Solusi ini diharapkan dapat meningkatkan efisiensi dan akurasi pencatatan transaksi toko kopi. 

Berikut merupakan analisis lebih detailnya:
  • Model (Analisis Masalah Sistem Yang Berjalan):
    • Toko Burak Kopi: Merupakan representasi dari Model dalam MVC. Ini mencakup semua data dan logika terkait dengan aplikasi.
    • Permasalahan Sistem: Toko Burak Kopi mengalami kesulitan dalam pencatatan transaksi. Dikarenakan belum ada sistem pencatatan yang teratur.
    • Analisis Masalah: Pencatatan transaksi belum teratur, baik secara manual (nota kertas) maupun otomatis (aplikasi).
  • Model (Analisis Hasil Solusi):
    • Solusi yang Diajukan: Menyediakan alat pencatatan yang efektif, khususnya untuk transaksi yang sering terjadi. Dibutuhkan sistem pencatatan yang dapat membantu dalam pencatatan penjualan.
    • Analisis Solusi: Diperlukan aplikasi kasir toko berbasis web untuk memfasilitasi pencatatan transaksi secara efisien.
  • Controller (Analisis Kebutuhan Sistem Usulan):
    • Analisis Kebutuhan Sistem: Aplikasi kasir toko berbasis web yang dapat mencetak transaksi. Menggunakan framework CodeIgniter dan MySQL sebagai basis data.
    • Peran Controller: Bertanggung jawab untuk menerima input dari pengguna (seperti transaksi penjualan), memproses data, dan mengirimkan instruksi ke Model atau View.
    • Kebutuhan Sistem Usulan:
      • Aplikasi kasir berbasis web.
      • Mampu mencetak transaksi.
      • Menggunakan CodeIgniter sebagai framework.
      • Menggunakan MySQL sebagai basis data.
  • View (Analisis Kebutuhan Sistem Usulan):
    • Tampilan Sistem: Melibatkan antarmuka pengguna, seperti halaman web atau formulir, yang memungkinkan pengguna berinteraksi dengan aplikasi.
    • Kebutuhan Sistem Usulan untuk View:
      • Antarmuka web yang intuitif untuk pengguna.
      • Kemampuan mencetak transaksi.
      • Menampilkan informasi transaksi dengan jelas.


Rancangan Umum Arsitektur atau Fitur yang ada Dalam Aplikasi

  • Use Case Diagram

  • Activity Diagram Login Kasir

Pada gambar diagram diatas kasir melakukan login terlebih dahulu yaitu dengan memasukkan username dan password, apabila username dan password benar maka sistem akan menampilkan halaman utama aplikasi, tetapi apabila username dan password salah sistem akan memberitahu bahwa username dan password yang dimasukkan salah.
  • Activity Diagram Kelola Data Barang

Pada Activity Diagram Kelola data barang, kasir bisa menambah barang yang tersedia di toko untuk dipakai sebagai data pada saat melakukan transaksi penjualan. Lalu Ketika kasir menyimpan data barang maka sistem akan menyimpannya ke dalam database.
  • Activity Diagram Kelola Data Kategori Barang

Dalam Kelola data kategori barang kasir bisa menambah, hapus atau bahkan memperbaharui kategori barang yang disediakan ditoko. Lalu sistem akan otomatis menyimpan kategori barang sesuai dengan saat kasir memperbaharui kategori barang.
  • Activity Diagram Kelola Transaksi Penjualan

Activity Diagram Transaksi Penjualan diatas merupakan proses pencatatan transaksi penjualan barang, dimana kasir memasukkan kode barang sesuai dengan barang yang dibeli lalu memasukkan jumlah banyaknya barang yang dibeli setelah itu sistem akan otomatis menampilkan nama, jumlah dan harga barang. Selanjutnya kasir memasukkan jumlah uang yang dibayar lalu sistem otomatis menghitung apakah ada kembalian atau tidak. Setelah itu kasir bisa mencetak hasil dari perhitungan yang dilakukan oleh sistem.
  • Activity Diagram Laporan Penjualan

Pada halaman laporan penjualan, kasir bisa mencetak laporan penjualan yang pernah terjadi di toko, yaitu dengan mencari kata kunci data transaksi yang pernah terjadi. Lalu kasir bisa mencetak laporan laporan tersebut.
  • Activity Diagram Logout Kasir

Pada saat melakukan logout, kasir memilih tombol logout yang ada pada aplikasi, lalu sistem akan memberikan notifikasi bahwa pengguna telah logout. Selanjutnya sistem akan menampilkan halaman login aplikasi.

Rancang Desain Database


  • Tabel Produk(Barang) : Menyimpan data barang, berupa ID, Barcode, Nama Produk, Kategori, Stok, Harga, Satuan Barang dan Jumlah barang terjual.
  • Tabel Transaksi : Menyimpan data Transaksi berupa, berupa ID, Tanggal transaksi, barcode, total bayar, jumlah uang, diskon, data pelanggan yang melakukan transaksi, dan data kasir yang melakukan transaksi.
  • Tabel Supplier : Menyimpan data supplier barang. Berupa ID, Nama, Alamat, Nomor telepon supplier dan Keterangan.
  • Tabel Toko : Menyimpan data toko, berupa ID toko, Nama Toko, dan Alamat Toko.
  • Tabel Kasir : Menyimpan data kasir, berupa ID kasir, Username dan Password.
  • Tabel Kategori Produk : Menyimpan data ID Barang dan Kategori Barang.
  • Tabel Satuan Produk : Menyimpan data Satuan Barang seperti pcs, bungkus, dll.
  • Tabel Pelanggan : Menyimpan data pelanggan, berupa ID, Nama, Jenis Kelamin, Alamat, dan Nomor telepon.
  • Tabel Stok Masuk : Menyimpan pendataan perihal stok barang yang masuk.
  • Tabel Stok Keluar : Menyimpan pendataan perihal stok barang yang keluar.

Desain Front End Aplikasi

  • Desain Sidebar

  • Desain Dashboard

  • Desain Bagian Data Barang

  • Desain Bagian Data Pelanggan

  • Desain Bagian Data Kasir

  • Desain Bagian Transaksi

  • Desain Bagian Laporan Penjualan

Control yang akan Menghandle Logika Back End

  • Mengelola Otentikasi Pengguna (Login & Logout)
Metode login :

- Mengecek apakah pengguna sudah login. Jika sudah, maka redirect ke halaman utama.
- Jika tidak, maka melakukan pengecekan apakah terdapat data yang dikirimkan melalui metode POST (dari form login).
- Jika ada, mengambil nilai username dan mencari pengguna dengan username tersebut melalui metode getUser pada auth_model.
- Jika pengguna ditemukan, membandingkan password yang diinputkan dengan password hashed dari database menggunakan password_verify.
- Jika password benar, membuat data sesi (session) berisi informasi pengguna (ID, username, password, nama, peran/role, status login, dan informasi toko).
- Mengembalikan respons JSON 'sukses' jika login berhasil, 'passwordsalah' jika password salah, dan 'tidakada' jika pengguna tidak ditemukan.
- Jika tidak ada data yang dikirim melalui POST, menampilkan halaman login.

Metode logout :

- Menghancurkan semua data sesi (session) menggunakan $this->session->sess_destroy().
- Redirect ke halaman utama setelah logout.
  • Controller Dashboard
Pengecekan Status Login :

- Menggunakan $this->session->userdata('status') == 'login' untuk memeriksa apakah pengguna sudah login.
- Jika status login adalah 'login', maka pengguna dianggap sudah login, dan halaman dashboard (dashboard) akan dimuat.
- Jika status login tidak sama dengan 'login', maka pengguna dianggap belum login, dan akan diarahkan ke halaman login (login).
  • Mengelola Kategori Barang
Menghandle beberapa logika back end pada bagian kategori barang, diantaranya :

- Read : Mengambil dan menampilkan data kategori produk dari database menggunakan metode read dari model. 
- Add : Mengambil data kategori yang dikirim, lalu Menyimpan data kategori baru ke dalam database menggunakan metode create dari model.
- Delete : Menghapus kategori dari database menggunakan metode delete dari model.
- Edit : Mengupdate data kategori di database menggunakan metode update dari model.
- Search : Mengambil data kategori yang sesuai dengan kata kunci menggunakan metode search dari model.
  • Mengelola Bagian Pelanggan
Menghandle beberapa logika back end pada bagian kategori barang, diantaranya adalah 
- Untuk mengambil dan menampilkan data pelanggan.
- Menyimpan data pelanggan baru ke dalam database.
- Menghapus pelanggan dari database.
- Mengupdate data pelanggan di database.
  • Mengelola Pengaturan
Menghandle beberapa logika back end pada bagian pengaturan, diantaranya adalah
- Mengambil data toko dari tabel 'toko' dalam database.
- Memuat tampilan pengaturan dengan meneruskan data toko sebagai parameter.
- Memperbarui data toko dalam tabel 'toko' dengan data yang baru.
  • Mengelola Pengguna
Menghandle beberapa logika back end pada bagian pengguna, diantaranya adalah : 
- Untuk mengambil dan menampilkan data kasir.
- Menyimpan data kasir baru ke dalam database.
- Menghapus data kasir dari database.
- Mengupdate data kasir di database.
  • Mengelola Barang
Menghandle beberapa logika back end pada bagian barang, diantaranya adalah :
- Untuk mengambil dan menampilkan data barang.
- Menyimpan data barang baru ke dalam database.
- Menghapus data barang dari database.
- Mengupdate data barang di database.
- Mengambil data stok barang.
  • Mengelola Satuan Barang
Menghandle beberapa logika back end pada bagian satuan barang, diantaranya adalah :
- Untuk mengambil dan menampilkan data satuan barang.
- Menyimpan data satuan barang baru ke dalam database.
- Menghapus data satuan barang dari database.
- Mengupdate data satuan barang di database.
  • Mengelola Stok Keluar
Menghandle beberapa logika back end pada bagian stok keluar, diantaranya adalah :
- Untuk mengambil dan menampilkan data stok keluar.
- Mengambil data stok terkini dari database
- Menghitung stok baru setelah keluar menggunakan rumus max($stok - $jumlah, 0).
- Memperbarui stok di database menggunakan metode addStok dari model.
  • Mengelola Stok Masuk
Menghandle beberapa logika back end pada bagian stok masuk, diantaranya adalah :
- Untuk mengambil dan menampilkan data stok keluar.
- Mengambil data stok terkini dari database.
- Menghitung stok baru setelah masuk menggunakan rumus max($stok + $jumlah,0).
- Memperbarui stok di database menggunakan metode addStok dari model.
- Mengambil data laporan stok masuk dari database menggunakan metode laporan dari model.
- Mengambil total stok masuk untuk hari ini menggunakan metode stokHari dari model.
  • Mengelola Supplier
Menghandle beberapa logika back end pada bagian supplier, diantaranya adalah 
- Untuk mengambil dan menampilkan data supplier.
- Menyimpan data supplier baru ke dalam database.
- Menghapus supplier dari database.
- Mengupdate data supplier di database.
  • Mengelola Transaksi
- Menampilkan data produk dengan menggunakan tabel untuk menampilkan nama produk dan jumlah yang dibeli.
- Mengupdate stok produk di database menggunakan metode removeStok dari model.
- Mengupdate jumlah produk yang terjual di database menggunakan metode addTerjual dari model.
- Menyimpan data transaksi baru ke dalam database.
- Menghapus transaksi dari database.
- Menghasilkan laporan cetak transaksi dengan menampilkan informasi seperti nota, tanggal, produk yang dibeli, total bayar, jumlah uang, kembalian, dan kasir.
- Menghitung total penjualan setiap hari menggunakan metode penjualanBulan dari model.
- Mengambil total transaksi terakhir untuk hari ini menggunakan metode transaksiTerakhir dari model.

Demo Implementasi Aplikasi Kasir Dengan Menggunakan CodeIgniter


Komentar

Postingan Populer