Studi Kasus - Sistem Aplikasi Kasir
Kelas: PPL A
Tahun: 2023/2024 (Genap)
- Muhammad Razan Athallah (5025211008)
- Muhammad Hafidh Rosyadi (5025211013)
High Level Design
Functional Requirements
- Pemrosesan Transaksi Penjualan: Memindai produk melalui kode barang (id barang) atau entri manual dan menghitung total biaya.
- Manajemen Produk: Menambahkan produk baru ke sistem, termasuk nama, harga, kategori, stok. Selain itu, Memperbarui detail produk yang ada.
- Pelaporan: Menghasilkan laporan penjualan untuk periode tertentu.
Non-Functional Requirements
- Usability : Aplikasi harus memiliki antarmuka yang intuitif dan mudah digunakan untuk memastikan adopsi yang cepat oleh kasir baru.
- Performance: Responsibilitas tinggi dengan minimnya delay dalam pemrosesan transaksi untuk menangani penjualan jam sibuk dengan efisien.
- Reliability: Pemrosesan transaksi yang akurat untuk memastikan penetapan harga yang benar dan penyesuaian inventaris.
- Maintainability: Mudah diperbarui dan dipelihara dengan gangguan minimal.
Asumsi Kapasitas
- Jumlah Produk di Toko: Asumsikan minimarket menyimpan sekitar 10.000 item unik.
- Transaksi Harian: Transaksi harian rata-rata = 5.000 transaksi. Transaksi puncak (mempertimbangkan hari-hari khusus atau promosi) = 10.000 transaksi per hari.
- Rata-rata Item per Transaksi: 10 item.
Estimasi Penyimpanan
- Data Produk: Asumsikan setiap rekaman produk mengonsumsi sekitar 512 byte (nama, kategori, harga, barcode, dll.).
- Data Transaksi: Asumsikan setiap rekaman transaksi mengonsumsi sekitar 1 KB, mengingat mencakup beberapa item, total harga, jumlah pembayaran, tipe pembayaran, dan tanggal/waktu transaksi jika berlaku.
Menghitung Total Penyimpanan
- Produk: 10.000 produk x 512 byte per produk = 5 MB.
- Transaksi: Penyimpanan harian: 5.000 transaksi/hari x 1 KB per transaksi = 5 GB/hari. Asumsikan data disimpan selama 5 tahun (untuk penyesuaian atau analisis): 5 GB/hari x 365 hari/tahun x 5 tahun = 9.125 GB, atau sekitar 9 TB.
- Transaksi Puncak: Penyimpanan harian puncak: 10.000 transaksi/hari x 1 KB per transaksi = 10 GB/hari (hanya relevan untuk perencanaan kapasitas pada hari-hari puncak).
- Data Produk: 5 MB (dampaknya tidak signifikan terhadap total penyimpanan).
- Transaksi: Sampai dengan 9 sampai 10 TB selama 5 tahun.
Service
Layanan Kasir sebagai layanan Utama.
Kasir melakukan login/register kedalam system. Kasir dapat melakukan transaksi untuk melayani pelanggan dengan cara scan barcode ataupun input secara manual dan mengeluarkan total perbelanjaan. Selain itu, kasir dapat menambah/mengubah barang. Terakhir kasir dapat melihat report dari transaksi yang sudah terjadi.
Bagian yang dibutuhkan:
Antarmuka Kasir
Kasir berinteraksi dengan sistem melalui aplikasi desktop atau antarmuka web.
Layanan Otentikasi dan Registrasi
Mengelola otentikasi dan proses registrasi kasir untuk memastikan akses aman ke sistem.
Database
Menyimpan data kasir, detail transaksi dan informasi produk/barang. Berfungsi sebagai repositori sentral untuk sistem.
Layanan Pembayaran
Mengelola semua data dan layanan terkait pembayaran untuk transaksi yang diproses oleh kasir.
Layanan Pengolahan Transaksi
Bertanggung jawab untuk memproses transaksi yang diinisiasi oleh kasir, memperbarui inventaris, dan menghasilkan struk.
Layanan Manajemen Inventaris
Mengelola inventaris, termasuk menambahkan produk baru, memperbarui tingkat stok, dan menangani informasi produk.
Layanan Cadangan dan Pemulihan
Menyediakan mekanisme cadangan dan pemulihan untuk melindungi data jika terjadi kegagalan sistem atau kehilangan data.
Database Design
- Kasir: terdiri dari kolom id sebagai unique identifier, kolom nama yang menyimpan nama kasir, kolom email menyimpan email kasir, dan kolom password menyimpan password yang dibuat kasir. Kolom email dan password ini nantinya dapat digunakan untuk kasir login ke aplikasi.
- Transaksi: terdiri dari kolom id sebagai unique identifier, kolom tanggal yang menyimpan tanggal dan waktu terjadinya transaksi, kolom total_harga yang menyimpan total harga dari produk yang dibeli, kolom jumlah_pembayaran menyimpan uang yang dibayarkan oleh konsumen yang bertransaksi, dan kolom tipe_pembayaran menyimpan tipe pembayaran seperti tunai, e-wallet, dll.
- Barang: terdiri dari kolom id sebagai unique identifier, kolom nama yang menyimpan nama barang, kolom harga yang menyimpan harga dari satuan barang tersebut, kolom stok yang menyimpan jumlah barang yang tersedia, dan kolom detail menyimpan detail barang.
- Kategori: terdiri dari kolom id sebagai unique identifier, dan kolom nama yang menyimpan nama dari kategori.
Communicating with Server
Registrasi kasir
Endpoint: POST /kasir/register
Request:
{
“nama”: “Ben White”,
“email”: “bnbwt@example.com”,
“password”: “test123”
}
Response:
{
“status”: “success”,
“message”: “berhasil melakukan registrasi kasir.”,
“id”: 123,
“token”: “auth_token”
}
Autentikasi kasir
Endpoint: POST /kasir/login
Request:
{
“email”: “bnbwt@example.com”,
“password”: “test123”
}
Response:
{
“status”: “success”,
“message”: “berhasil melakukan log in.”,
“id”: 123,
“token”: “auth_token”
}
Menambah kategori baru
Endpoint: POST /kategori
Request:
{
“nama”: “Pewangi Pakaian”
}
Response:
{
“status”: “success”,
“message”: “berhasil menambahkan kategori.”,
“id”: 20
}
Menambah barang baru
Endpoint: POST /barang
Request:
{
“nama”: “Molto”,
“harga”: 35000,
“stok”: 10,
“detail”: “molto warna biru”,
“id_kategori”: 20
}
Response:
{
“status”: “success”,
“message”: “berhasil menambahkan barang.”,
“id”: 13
}
Menambah transaksi
Endpoint: POST /transaksi
Request:
{
“id_kasir”: 123,
“tanggal”: "2024-04-21T18:25:43-05:00",
“items”:
[
{
“id”: 13,
“jumlah”: 3
},
{
“id”: 17,
“Jumlah”: 2
}
],
“total_harga”: 135000,
“total_pembayaran”: 150000,
“tipe_pembayaran”: “tunai”
}
Response:
{
“status”: “success”,
“message”: “berhasil melakukan transaksi.”
“id”: 134
}
Melihat riwayat transaksi
Endpoint: GET /transactions?month=2024-05
Response:
{
"status": "success",
"data": [
{
"id": 234,
“id_kasir”: 123,
"tanggal": "2024-05-01T12:34:56",
“items”:
[
{
“id”: 13,
“jumlah”: 3
},
{
“id”: 17,
“Jumlah”: 2
}
],
"total_harga": 50000,
"jumlah_pembayaran": 60000,
"tipe_pembayaran": "tunai"
},
{
"id": 235,
“id_kasir”: 123,
"tanggal": "2024-05-15T08:30:45",
“items”:
[
{
“id”: 13,
“jumlah”: 5
},
{
“id”: 17,
“Jumlah”: 4
}
],
"total_harga": 75000,
"jumlah_pembayaran": 75000,
"tipe_pembayaran": "e-wallet"
}
],
"message": "Daftar transaksi pada bulan Mei 2024 berhasil diambil."
}
Workflow of The System
Berikut adalah langkah-langkah dari proses transaksi:
Kasir registrasi ke aplikasi kasir, kemudian jika akun kasir sudah dibuat maka kasir harus login.
Kasir memilih menu tambah transaksi pada dashboard, kemudian melakukan input barang yang dibeli, baik dengan scan maupun input manual.
Kasir mencatat total pembayaran dan tipe pembayaran konsumen, kemudian menyelesaikan transaksi, data transaksi terkirim ke database server.
Berikut adalah langkah-langkah dari proses menambah barang:
Kasir registrasi ke aplikasi kasir, kemudian jika akun kasir sudah dibuat maka kasir harus login.
Kasir memilih menu tambah barang, kemudian mengisikan nama, harga, stok, detail, dan kategori barang.
Kasir menyelesaikan proses menambah barang, data barang terkirim ke database server.
Untuk menambah kategori workflownya kurang lebih sama dengan menambah barang, hanya saja menu yang dipilih adalah tambah kategori, dan data yang dimasukkan berupa nama kategori.
Berikut adalah langkah-langkah untuk melihat histori transaksi:
Kasir registrasi ke aplikasi kasir, kemudian jika akun kasir sudah dibuat maka kasir harus login.
Kasir memilih menu histori transaksi pada dashboard, langkah ini akan mengirim request ke database server dan diresponse dengan data transaksi.
Kasir dapat melakukan filter seperti menampilkan transaksi pada bulan tertentu.
Komentar
Posting Komentar