Sistem Faktur Penjualan & Distribusi Grosir Sembako
Penjualan Grosir Bahan Pokok, Konversi Satuan, Piutang Toko, dan Stok Gudang
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 FungsionalitasModul Autentikasi & Hak Akses (Login System)
Pengamanan akun, sesi pengguna, dan pembatasan wewenang fitur
Akses menyeluruh kelola master komoditas & harga bertingkat (grosir/ecer), setting limit kredit piutang warung, kelola user, dan laporan laba kotor serta mutasi stok barang.
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.
- 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.
Modul Dashboard Eksekutif (Metrics & Overview)
Pusat pemantauan kinerja real-time dan ringkasan operasional
- 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.
Modul Transaksi Inti (Core Business Transaction)
Pencatatan data dinamis master-detail dengan kalkulasi otomatis
- •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
- ✓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
Modul Laporan & Ekspor Data (Reporting & Analytics)
Penyajian rekap data historis, filter periode, dan pencetakan dokumen
Rentang tanggal faktur, Toko Pelanggan, Status Pembayaran (Lunas / Tempo), dan Kategori Bahan Pokok
Total Nilai Penjualan Kotor, Estimasi Harga Pokok Penjualan (HPP), Estimasi Laba Kotor, dan Total Piutang Jatuh Tempo
No. Faktur, Tanggal, Nama Toko/Warung, Total Item, Grand Total, Pembayaran, Jatuh Tempo, Status
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
| 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
Semua 4 pilar (Login, Dashboard, Transaksi Master-Detail, Laporan) berfungsi utuh tanpa error saat diuji.
Hashing password, proteksi route, pencegahan duplikasi data, validasi stok/kapasitas, dan transaction commit/rollback.
Tampilan rapi, responsif di mobile & desktop, feedback interaktif (notifikasi sukses/gagal), dan kemudahan navigasi.
Struktur folder terorganisir (MVC / Clean Architecture), penamaan variabel deskriptif, dan panduan instalasi README.md.
Ketentuan Pengumpulan & Deliverables
Peserta wajib menyerahkan hasil pengerjaan berupa:
- Source Code Proyek: Diunggah ke repositori GitHub / GitLab publik atau diarsipkan dalam format
.zip. - Database Dump / Seeder: File
database.sqlatau seeder/migration yang sudah memuat data awal (sample demo data) untuk akun login dan master data. - 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).