Logo Mediatama Portal Soal / Tema 08
LEMBAR SPESIFIKASI PROYEK PRAKTIK • TEMA 08

Sistem Faktur Penjualan & Distribusi Grosir Sembako

Penjualan Grosir Bahan Pokok, Konversi Satuan, Piutang Toko, dan Stok Gudang

KODE: MED-WEB-08
TINGKAT: Intermediate
Mata Uji Fullstack Web App
Estimasi Waktu 3 - 4 Jam / Take-home
Sifat Pengerjaan Open Book & Docs
Tech Stack Bebas Dipilih Peserta
Kebebasan Pilihan Teknologi: Anda dibebaskan memilih bahasa pemrograman, framework, arsitektur, dan database yang paling Anda kuasai (misalnya: Laravel, CodeIgniter, Express.js/Node.js, Next.js, Django, FastAPI, Go Gin/Fiber, PHP Native, Vue/React, serta database MySQL, PostgreSQL, MariaDB, atau SQLite). Penilaian menitikberatkan pada kelengkapan 4 modul utama, integritas alur transaksi, keamanan, dan pengalaman pengguna (UX).

Latar Belakang & Studi Kasus

Distributor bahan kebutuhan pokok 'Toko Berkah Grosir' menyuplai puluhan warung kelontong, toko retail, dan pedagang pasar. Operasional grosir menghadapi tantangan berupa barang yang dijual dalam multi-satuan (contoh: Beras sak 25kg dan eceran 5kg; Minyak goreng per dus isi 12 pouch atau eceran per pouch), transaksi faktur partai besar yang sering diutang dengan jatuh tempo 14 hari, dan kebingungan melacak stok fisik gudang akibat penjualan yang cepat. Diperlukan aplikasi web untuk pembuatan faktur penjualan grosir, pengurangan stok otomatis, pencatatan status jatuh tempo piutang, dan rekap laba kotor.

4 Modul Wajib yang Harus Dibangun

Pilar Inti Fungsionalitas
01

Modul Autentikasi & Hak Akses (Login System)

Pengamanan akun, sesi pengguna, dan pembatasan wewenang fitur

Role: Administrator / Kepala Gudang & Keuangan

Akses menyeluruh kelola master komoditas & harga bertingkat (grosir/ecer), setting limit kredit piutang warung, kelola user, dan laporan laba kotor serta mutasi stok barang.

Role: Kasir / Sales Admin

Penerbitan faktur penjualan baru, memilih pelanggan toko/warung, input multi-baris sembako, proses penerimaan uang tunai/transfer, cetak nota faktur pengiriman, dan pencatatan pelunasan piutang.

Ketentuan Keamanan & Teknis:
  • Form login dengan validasi input (penanganan username/email salah atau password tidak cocok).
  • Password wajib di-hash menggunakan algoritma aman (Bcrypt, Argon2, atau sejenisnya). Tidak boleh menyimpan password plaintext.
  • Proteksi route (Middleware / Guard): Halaman dashboard, transaksi, dan laporan tidak boleh dapat diakses tanpa login.
  • Mekanisme Logout yang menghancurkan sesi / token secara bersih dan mengarahkan kembali ke halaman login.
02

Modul Dashboard Eksekutif (Metrics & Overview)

Pusat pemantauan kinerja real-time dan ringkasan operasional

4 Indikator KPI Utama yang Wajib Ditampilkan:
Omset Penjualan Hari Ini
Akumulasi nilai penjualan grosir dari seluruh faktur yang diterbitkan hari ini
Total Faktur Diterbitkan
Jumlah transaksi faktur pesanan warung yang diproses hari ini
Piutang Dagang Belum Tertagih
Total tagihan penjualan tempo ke warung-warung langganan
Komoditas Stok Kritis
Bahan pokok yang jumlah stok gudangnya mendekati batas minimum pemesanan ulang
Komponen Visual Pendukung:
  • Grafik Visual: Tampilkan visualisasi tren transaksi (misal: grafik batang/garis 7 hari terakhir atau diagram distribusi kategori). Boleh menggunakan Chart.js, ApexCharts, SVG interaktif, atau visual bar CSS murni.
  • Tabel Riwayat Cepat: Daftar 5–10 transaksi paling baru beserta status singkatnya.
  • Tombol Aksi Cepat (Quick Action): Shortcut langsung untuk membuat transaksi baru tanpa harus membuka menu lain.
03

Modul Transaksi Inti (Core Business Transaction)

Pencatatan data dinamis master-detail dengan kalkulasi otomatis

Format Nomor Faktur / Invoice: FAK-GRO-YYYYMMDD-XXXX (Contoh: FAK-GRO-20261023-0078)
Nomor invoice harus dibuat otomatis oleh sistem saat form dibuka atau saat transaksi disimpan, dengan format teratur dan unik.
Alur & Elemen Input Form Transaksi:
  • •Pilihan Pelanggan: Toko / Warung Langganan (atau Pembeli Umum Tunai)
  • •Pilihan Jenis Transaksi: Tunai (Cash On Delivery) ATAU Kredit / Tempo (Wajib pilih tanggal jatuh tempo, misal +14 hari)
  • •Multi-item Rincian Produk Sembako: Pilih Komoditas (Beras Rojolele Sak, Minyak Sania Dus, Gula Pasir Karung, Tepung Terigu Dus), Satuan Terpilih, Kuantiti (Qty), Harga Jual Grosir Otomatis
  • •Kalkulasi: Subtotal per baris, Diskon Pembelian Partai (jika ada), Grand Total Faktur
  • •Status Pembayaran: Lunas, Tempo (Belum Lunas), Sebagian (Ada Titip DP)
  • •Pengurangan Stok Gudang: Sistem secara otomatis mengurangi stok komoditas sesuai jumlah dan satuan yang keluar
Validasi & Integritas Data Wajib:
  • ✓Pengecekan stok gudang; sistem wajib menolak transaksi jika kuantiti pesanan melebihi stok yang ada di gudang
  • ✓Validasi plafon kredit piutang: Jika total piutang warung bersangkutan melampaui limit kredit yang ditentukan admin, sistem memberi peringatan
  • ✓Transaksi database atomik untuk update saldo piutang dan kartu stok barang
  • ✓Cetak Faktur Penjualan & Surat Jalan Pengiriman Barang rangkap untuk supir dan pembeli
04

Modul Laporan & Ekspor Data (Reporting & Analytics)

Penyajian rekap data historis, filter periode, dan pencetakan dokumen

Parameter Filter Dinamis:

Rentang tanggal faktur, Toko Pelanggan, Status Pembayaran (Lunas / Tempo), dan Kategori Bahan Pokok

Ringkasan Statistik (Summary Bar):

Total Nilai Penjualan Kotor, Estimasi Harga Pokok Penjualan (HPP), Estimasi Laba Kotor, dan Total Piutang Jatuh Tempo

Struktur Kolom Tabel Laporan:

No. Faktur, Tanggal, Nama Toko/Warung, Total Item, Grand Total, Pembayaran, Jatuh Tempo, Status

Kemampuan Ekspor:

Ekspor ke format PDF faktur rekap dan file spreadsheet Excel/CSV

Rekomendasi Skema Basis Data (Database Design)

Dapat disesuaikan atau dikembangkan sesuai arsitektur pilihan Anda

6 Tabel
Nama Tabel Deskripsi & Saran Kolom Minimal
users Pengguna aplikasi (id, username, password_hash, nama_lengkap, role [admin/kasir], created_at)
customers Master pelanggan toko/warung (id, nama_toko, nama_pemilik, no_hp, alamat, plafon_kredit)
product_categories Kategori sembako (id, nama_kategori)
products Master komoditas (id, category_id, kode_sku, nama_produk, satuan, harga_pokok, harga_grosir, stok_gudang, stok_minimum)
sales_invoices Header faktur (id, no_faktur, customer_id, jenis_transaksi [tunai/tempo], tanggal_faktur, tanggal_jatuh_tempo, total_subtotal, diskon, grand_total, dibayar, sisa_piutang, status_bayar, user_id, created_at)
sales_invoice_details Detail baris faktur (id, invoice_id, product_id, satuan, harga_satuan, kuantiti, subtotal)

Rubrik Penilaian & Pembobotan

Total Nilai Maksimal: 100 Poin

Fungsionalitas & Kesesuaian Alur Bisnis 40 Poin

Semua 4 pilar (Login, Dashboard, Transaksi Master-Detail, Laporan) berfungsi utuh tanpa error saat diuji.

Integritas Data & Keamanan 25 Poin

Hashing password, proteksi route, pencegahan duplikasi data, validasi stok/kapasitas, dan transaction commit/rollback.

Desain Antarmuka (UI) & Pengalaman Pengguna (UX) 20 Poin

Tampilan rapi, responsif di mobile & desktop, feedback interaktif (notifikasi sukses/gagal), dan kemudahan navigasi.

Kualitas Kode & Dokumentasi 15 Poin

Struktur folder terorganisir (MVC / Clean Architecture), penamaan variabel deskriptif, dan panduan instalasi README.md.

Ketentuan Pengumpulan & Deliverables

Peserta wajib menyerahkan hasil pengerjaan berupa:

  1. Source Code Proyek: Diunggah ke repositori GitHub / GitLab publik atau diarsipkan dalam format .zip.
  2. Database Dump / Seeder: File database.sql atau seeder/migration yang sudah memuat data awal (sample demo data) untuk akun login dan master data.
  3. Dokumen README.md: Berisi daftar tech stack yang digunakan, langkah instalasi step-by-step, serta kredensial akun uji coba (email/username & password untuk masing-masing role).
Kembali ke Daftar 10 Tema