Type above and press Enter to search. Press Close to cancel.
# VERSI FLOW UNTUK USER - E-COMMERCE FASHION
## A. FITUR-FITUR APLIKASI
### Fitur untuk Customer (Pelanggan)
#### 1. Autentikasi
- **Registrasi**: Daftar akun baru dengan nama, email, password, dan nomor telepon
- **Login**: Masuk ke akun menggunakan email dan password
- **Logout**: Keluar dari sistem
#### 2. Manajemen Produk
- **Lihat Produk**: Melihat daftar semua produk fashion yang tersedia
- **Detail Produk**: Melihat informasi lengkap produk (nama, deskripsi, harga, kategori, gambar)
#### 3. Keranjang Belanja (Cart)
- **Tambah ke Keranjang**: Menambahkan produk ke keranjang belanja
- **Lihat Keranjang**: Melihat semua produk yang ada di keranjang
- **Update Quantity**: Menambah atau mengurangi jumlah produk di keranjang
- **Hapus dari Keranjang**: Menghapus produk dari keranjang
#### 4. Checkout dan Pembayaran
- **Checkout dari Keranjang**: Melakukan checkout dari keranjang belanja
- **Buy Now**: Langsung membeli produk tanpa menambahkan ke keranjang
- **Upload Bukti Pembayaran**: Mengupload bukti pembayaran (JPEG, PNG, JPG, atau PDF maksimal 10MB)
- **Input Alamat Pengiriman**: Mengisi alamat lengkap pengiriman (alamat, detail alamat, kota, provinsi, kode pos)
- **Diskon Otomatis**: Mendapat diskon otomatis berdasarkan:
- Diskon produk (jika ada)
- Diskon subscription (Basic: 5%, Premium: 15%, Eksklusif: 20%)
#### 5. Manajemen Pesanan
- **Lihat Pesanan**: Melihat semua pesanan yang pernah dibuat
- **Status Pesanan**: Melihat status pesanan (pending, delivered, arrived, completed, rejected)
- **Terima Pesanan**: Mengkonfirmasi bahwa pesanan telah diterima
- **Generate Invoice**: Mengunduh invoice pesanan dalam format PDF
#### 6. Subscription (Langganan)
- **Pilih Paket Subscription**: Memilih paket subscription:
- **Paket Basic**: Rp 199.000 (diskon 5% untuk setiap pembelian)
- **Paket Premium**: Rp 299.000 (diskon 15% untuk setiap pembelian)
- **Paket Eksklusif**: Rp 499.000 (diskon 20% untuk setiap pembelian)
- **Upload Bukti Pembayaran Subscription**: Mengupload bukti pembayaran untuk subscription
- **Status Subscription**: Melihat status subscription mereka
#### 7. Profil
- **Lihat Profil**: Melihat informasi profil
- **Update Profil**: Mengupdate nama, email, dan nomor telepon
- **Ubah Password**: Mengubah password dengan verifikasi password lama
### Fitur untuk Admin
#### 1. Dashboard
- **Dashboard Admin**: Melihat dashboard dengan ringkasan informasi
#### 2. Manajemen Produk
- **Lihat Daftar Produk**: Melihat semua produk dengan pagination
- **Tambah Produk**: Menambahkan produk baru (nama, deskripsi, harga, kategori, stok, diskon, gambar)
- **Edit Produk**: Mengedit informasi produk yang sudah ada
- **Hapus Produk**: Menghapus produk dari sistem
#### 3. Manajemen Pesanan
- **Lihat Pesanan Pending**: Melihat semua pesanan yang statusnya pending
- **Lihat Pesanan Lainnya**: Melihat pesanan dengan status selain pending
- **Kelola Pesanan**: Melihat detail pesanan (customer, item, bukti pembayaran, alamat)
- **Kirim Pesanan**: Mengirim pesanan dengan menambahkan nomor tracking dan mengurangi stok
- **Tolak Pesanan**: Menolak pesanan
#### 4. Manajemen Subscription
- **Lihat Subscription Pending**: Melihat semua permintaan subscription yang pending
- **Setujui Subscription**: Menyetujui subscription dan mengaktifkan diskon untuk customer
- **Tolak Subscription**: Menolak subscription
#### 5. Manajemen User
- **Lihat Daftar Customer**: Melihat semua customer yang terdaftar
#### 6. Profil Admin
- **Lihat Profil**: Melihat dan mengelola profil admin
---
## B. JENIS USER (PENGGUNA)
### 1. Customer (Pelanggan)
- **Role**: `customer`
- **Deskripsi**: Pengguna yang berbelanja produk fashion
- **Akses**:
- Dapat mengakses halaman home, produk, keranjang, checkout, pesanan, subscription, dan profil
- Tidak dapat mengakses dashboard admin
- **Fitur Utama**:
- Berbelanja produk fashion
- Mengelola keranjang belanja
- Melakukan checkout dan pembayaran
- Melihat dan mengelola pesanan
- Berlangganan paket subscription untuk mendapatkan diskon
- Mengelola profil pribadi
### 2. Admin
- **Role**: `admin`
- **Deskripsi**: Pengguna yang mengelola sistem e-commerce
- **Akses**:
- Dapat mengakses dashboard admin
- Dapat mengelola produk, pesanan, subscription, dan user
- Tidak dapat mengakses fitur customer seperti keranjang dan checkout
- **Fitur Utama**:
- Mengelola katalog produk
- Mengelola pesanan customer
- Mengelola subscription customer
- Melihat daftar customer
- Mengelola profil admin
---
## C. FLOW BISNIS (ALUR BISNIS)
### 1. Flow Registrasi dan Login
#### Flow Registrasi
```
1. User mengakses halaman registrasi (/daftar)
2. User mengisi form:
- Nama lengkap
- Email (harus unique)
- Password (minimal 8 karakter)
- Konfirmasi password
- Nomor telepon (harus unique)
3. Sistem melakukan validasi:
- Email harus unique (belum terdaftar)
- Password minimal 8 karakter
- Konfirmasi password harus sama dengan password
- Nomor telepon harus unique
4. Jika valid:
- User baru dibuat di database
- User otomatis login
- User diarahkan ke halaman home
5. Jika tidak valid:
- Tampilkan pesan error
- User tetap di halaman registrasi
```
#### Flow Login
```
1. User mengakses halaman login (/masuk)
2. User mengisi email dan password
3. Sistem verifikasi kredensial:
- Cek apakah email terdaftar
- Cek apakah password sesuai
4. Jika valid:
- Session dibuat
- Session ID di-regenerate untuk keamanan
- Redirect berdasarkan role:
* Admin → Dashboard Admin (/dashboard)
* Customer → Halaman Home (/)
5. Jika tidak valid:
- Tampilkan pesan error "Kredensial tidak cocok"
- Email tetap terisi (untuk kemudahan user)
```
### 2. Flow Berbelanja (Customer)
#### 2.1 Flow Belanja Normal (dari Keranjang)
```
STEP 1: Melihat Produk
- Customer mengakses halaman produk (/produk)
- Sistem menampilkan daftar produk dengan pagination (8 produk per halaman)
- Setiap produk menampilkan: nama, gambar, harga, kategori
STEP 2: Menambahkan ke Keranjang
- Customer klik "Tambah ke Keranjang" pada produk
- Sistem mengecek:
* Apakah produk sudah ada di keranjang user ini?
- Jika YA → Tambah quantity +1
- Jika TIDAK → Buat item keranjang baru dengan quantity = 1
- Tampilkan pesan sukses "Produk berhasil ditambahkan ke keranjang"
STEP 3: Mengelola Keranjang
- Customer mengakses halaman keranjang (/keranjang)
- Sistem menampilkan:
* Semua produk di keranjang
* Quantity setiap produk
* Harga per produk
* Total harga keseluruhan
- Customer dapat:
* Menambah quantity (+)
* Mengurangi quantity (-) - minimum 1
* Menghapus produk dari keranjang
STEP 4: Checkout
- Customer klik "Checkout"
- Sistem mengecek apakah keranjang kosong
- Jika kosong → Redirect ke keranjang dengan pesan error
- Jika tidak kosong:
* Hitung total harga:
- Harga produk setelah diskon produk
- Dikurangi diskon subscription (jika customer punya subscription aktif)
* Tampilkan halaman checkout dengan:
- Daftar produk yang akan dibeli
- Total harga
- Form alamat pengiriman
- Form upload bukti pembayaran
STEP 5: Mengisi Form Checkout
- Customer mengisi:
* Alamat lengkap
* Detail alamat (opsional)
* Kota
* Provinsi
* Kode pos
* Upload bukti pembayaran (JPEG, PNG, JPG, PDF, max 10MB)
- Sistem validasi semua field
STEP 6: Proses Checkout
- Customer klik "Bayar"
- Sistem:
1. Gabungkan alamat menjadi satu string
2. Simpan bukti pembayaran ke storage
3. Hitung total harga dengan diskon
4. Buat Order baru:
- Status: "pending"
- Total price: harga setelah semua diskon
- Shipping address: alamat lengkap
5. Buat OrderItem untuk setiap produk di keranjang
6. Buat Payment:
- Status: "pending"
- Receipt image: path ke file bukti pembayaran
7. Hapus semua item di keranjang
8. Redirect ke halaman pesanan dengan pesan sukses
```
#### 2.2 Flow Buy Now (Langsung Beli)
```
STEP 1: Melihat Produk
- Customer melihat detail produk
STEP 2: Buy Now
- Customer klik "Buy Now" (bukan "Tambah ke Keranjang")
- Sistem langsung menampilkan halaman checkout untuk 1 produk
- Tidak ada proses keranjang
STEP 3: Mengisi Form Checkout
- Sama seperti flow normal (alamat + bukti pembayaran)
STEP 4: Proses Checkout
- Sistem:
1. Buat Order baru untuk 1 produk
2. Buat OrderItem untuk produk tersebut
3. Buat Payment
4. Redirect ke halaman pesanan
- Catatan: Keranjang tidak terpengaruh
```
### 3. Flow Pengelolaan Pesanan (Admin)
```
STEP 1: Melihat Daftar Pesanan
- Admin mengakses halaman pesanan (/dashboard/pesanan)
- Sistem menampilkan 2 kategori:
* Pesanan Pending (status = "pending")
* Pesanan Lainnya (status != "pending")
- Setiap pesanan menampilkan:
* Nomor pesanan
* Nama customer
* Total harga
* Status
* Tanggal
STEP 2: Mengelola Pesanan Pending
- Admin klik "Kelola" pada pesanan pending
- Sistem menampilkan detail lengkap:
* Informasi customer (nama, email, telepon)
* Daftar item yang dipesan (produk, quantity, harga)
* Bukti pembayaran (dapat dilihat/diunduh)
* Alamat pengiriman lengkap
* Total harga
STEP 3A: Opsi - Kirim Pesanan
- Admin mengisi nomor tracking pengiriman
- Admin klik "Kirim Pesanan"
- Sistem:
1. Mengubah status order menjadi "delivered"
2. Mengubah status payment menjadi "paid"
3. Mengurangi stok produk sesuai quantity yang dipesan
4. Membuat record Shipping dengan tracking number
- Customer akan melihat:
* Status pesanan: "delivered"
* Nomor tracking pengiriman
STEP 3B: Opsi - Tolak Pesanan
- Admin klik "Tolak Pesanan"
- Sistem:
1. Mengubah status order menjadi "rejected"
2. Status payment tetap "pending" (tidak diubah)
- Customer akan melihat:
* Status pesanan: "rejected"
```
### 4. Flow Penerimaan Pesanan (Customer)
```
STEP 1: Melihat Pesanan
- Customer mengakses halaman pesanan (/pesanan)
- Customer melihat pesanan dengan status "delivered"
- Customer melihat nomor tracking pengiriman
STEP 2: Menerima Pesanan
- Setelah barang diterima, customer klik "Terima Pesanan"
- Sistem mengubah status order menjadi "arrived"
- Tampilkan pesan sukses "Order berhasil diterima"
STEP 3: Generate Invoice
- Customer dapat mengklik "Unduh Invoice" kapan saja
- Sistem generate PDF invoice dengan:
* Informasi customer
* Detail pesanan
* Item-item yang dibeli
* Total harga
* Alamat pengiriman
- Invoice diunduh dalam format PDF
```
### 5. Flow Subscription (Langganan)
#### 5.1 Flow Customer Membeli Subscription
```
STEP 1: Memilih Paket
- Customer memilih paket subscription:
* Paket Basic: Rp 199.000 → diskon 5% untuk setiap pembelian
* Paket Premium: Rp 299.000 → diskon 15% untuk setiap pembelian
* Paket Eksklusif: Rp 499.000 → diskon 20% untuk setiap pembelian
STEP 2: Validasi
- Sistem mengecek apakah customer masih memiliki pesanan yang belum lengkap
- Jika ada pesanan dengan shipping_address = NULL (subscription pending):
* Redirect ke halaman pesanan dengan error
* Customer harus menyelesaikan subscription yang pending dulu
STEP 3: Halaman Pembayaran
- Jika valid, customer diarahkan ke halaman pembayaran subscription
- Customer melihat:
* Paket yang dipilih
* Harga paket
* Form upload bukti pembayaran
STEP 4: Upload Bukti Pembayaran
- Customer upload bukti pembayaran (JPEG, PNG, JPG, PDF, max 10MB)
- Customer klik "Bayar"
STEP 5: Proses Pembayaran
- Sistem:
1. Simpan bukti pembayaran
2. Buat Order baru:
* Total price: sesuai paket (199k/299k/499k)
* Status: "pending"
* Shipping address: NULL (karena ini subscription, bukan produk fisik)
3. Buat Payment:
* Status: "pending"
* Receipt image: path ke file bukti pembayaran
4. Redirect ke halaman home dengan pesan sukses
```
#### 5.2 Flow Admin Menyetujui Subscription
```
STEP 1: Melihat Subscription Pending
- Admin mengakses halaman subscription (/dashboard/langganan)
- Sistem menampilkan semua order dengan:
* Shipping address = NULL (menandakan ini subscription)
* Status = "pending"
STEP 2: Setujui Subscription
- Admin klik "Setujui" pada subscription
- Sistem:
1. Mengubah status order menjadi "completed"
2. Mengubah status payment menjadi "paid"
3. Mengaktifkan subscription_status user menjadi 1
4. Membuat record Subscription:
* Type: basic/premium/eksklusif (dari total_price order)
* Status: "active"
* Start date: hari ini
* End date: 30 hari dari start date
5. Tampilkan pesan sukses
STEP 3: Customer Mendapat Diskon
- Setelah disetujui, customer memiliki subscription aktif
- Setiap kali customer checkout, sistem akan:
* Cek subscription_status user
* Jika aktif, ambil type subscription
* Terapkan diskon sesuai type (5%/15%/20%)
```
#### 5.3 Flow Admin Menolak Subscription
```
STEP 1: Melihat Subscription Pending
- Admin mengakses halaman subscription
STEP 2: Tolak Subscription
- Admin klik "Tolak" pada subscription
- Sistem:
1. Mengubah status order menjadi "rejected"
2. Mengubah status payment menjadi "failed"
3. Tampilkan pesan sukses
STEP 3: Customer Melihat Status
- Customer melihat status subscription: "rejected"
- Customer tidak mendapat diskon
```
### 6. Flow Diskon
```
STEP 1: Customer Checkout
- Customer mengisi form checkout dan klik "Bayar"
STEP 2: Sistem Mengecek Subscription
- Sistem mengecek:
* Apakah user memiliki subscripti> * Jika ya, ambil subscription terbaru yang aktif
* Ambil type subscription (basic/premium/eksklusif)
STEP 3: Hitung Diskon Produk
- Untuk setiap produk:
* Harga setelah diskon produk = price - (price × discount / 100)
STEP 4: Hitung Total Sebelum Diskon Subscription
- Total = Σ(harga setelah diskon produk × quantity)
STEP 5: Terapkan Diskon Subscription
- Jika customer punya subscription aktif:
* Basic: diskon 5%
* Premium: diskon 15%
* Eksklusif: diskon 20%
- Total akhir = Total - (Total × diskon_subscription / 100)
- Jika tidak punya subscription:
* Total akhir = Total (tanpa diskon subscription)
STEP 6: Simpan Order
- Order disimpan dengan total_price = total akhir
```
### 7. Flow Update Profil
```
STEP 1: Mengakses Profil
- Customer/Admin mengakses halaman profil (/profile atau /dashboard/profile)
STEP 2: Update Informasi Profil
- User mengisi form:
* Nama
* Email (harus unique, kecuali email sendiri)
* Nomor telepon (harus unique, kecuali nomor sendiri)
- User klik "Update Profil"
- Sistem validasi dan update
- Tampilkan pesan sukses
STEP 3: Ubah Password
- User mengisi form:
* Password lama
* Password baru (minimal 8 karakter)
* Konfirmasi password baru
- User klik "Ubah Password"
- Sistem:
1. Verifikasi password lama
2. Jika benar, update password baru (di-hash)
3. Jika salah, tampilkan error
- Tampilkan pesan sukses/error
```
---
## RINGKASAN FLOW UTAMA
### Untuk Customer:
1. **Registrasi/Login** → **Lihat Produk** → **Tambah ke Keranjang** → **Checkout** → **Upload Bukti Pembayaran** → **Tunggu Admin** → **Terima Pesanan**
2. **Beli Subscription** → **Upload Bukti Pembayaran** → **Tunggu Admin Setujui** → **Dapat Diskon**
3. **Update Profil** → **Ubah Password** (opsional)
### Untuk Admin:
1. **Login** → **Dashboard** → **Kelola Produk/Pesanan/Subscription**
2. **Lihat Pesanan Pending** → **Verifikasi Bukti Pembayaran** → **Kirim Pesanan** atau **Tolak**
3. **Lihat Subscription Pending** → **Setujui** atau **Tolak**
---
## CATATAN PENTING
1. **Status Pesanan**:
- `pending`: Menunggu admin verifikasi
- `delivered`: Admin sudah kirim, menunggu customer terima
- `arrived`: Customer sudah terima
- `completed`: Selesai (untuk subscription)
- `rejected`: Ditolak admin
2. **Status Pembayaran**:
- `pending`: Bukti pembayaran sudah diupload, menunggu verifikasi
- `paid`: Admin sudah verifikasi dan setujui
- `failed`: Admin tolak pembayaran
3. **Subscription**:
- Hanya bisa punya 1 subscription aktif
- Harus selesaikan subscription pending sebelum beli yang baru
- Diskon berlaku untuk semua pembelian selama subscription aktif
4. **Stok Produk**:
- Stok dikurangi saat admin kirim pesanan (status = "delivered")
- Stok tidak dikurangi saat pesanan dibuat (pending)