Sentra Automotive — Sparepart Module¶
Overview¶
Modul Sparepart mengelola inventaris gudang suku cadang bengkel secara end-to-end: dari penerimaan batch, pengeluaran via barcode scan FEFO, deteksi stok minimum untuk auto-reorder, hingga pemetaan substitusi part untuk mempercepat keputusan Service Advisor saat part orisinil habis.
11.1 Automatic Barcode Deductions & Pick-slip Allocation¶
graph TD
A[Mekanik Klik 'Minta Sparepart' di Tablet Bay] --> B[Generate Pick-slip Digital Terhubung No SPK]
B --> C[Layar Gudang Menampilkan Indikasi Pick-slip Baru]
C --> D[Petugas Gudang Mengambil Item di Rak Fisik]
D --> E[Scan Barcode Item Menggunakan Handheld Scanner]
E --> F{Apakah Barcode SKU Cocok?}
F -- Tidak --> G[Peringatan Audio Error: 'Item Salah Ambil']
F -- Ya --> H[Stok Gudang Utama Terpotong via FEFO]
H --> I[Sistem Otomatis Menambahkan Biaya Part ke Tagihan Kasir]
I --> J[Tanda Terima Sparepart Dicetak & Diserahkan Ke Mekanik]
FEFO Strategy: Saat storekeeper men-scan barcode item, sistem secara otomatis memilih batch dengan tanggal kadaluarsa terdekat (First Expired First Out) untuk mencegah pemborosan sparepart yang mendekati expired.
11.2 Parts Auto-Reorder and Minimum Stock Engine¶
Sistem melacak sisa stok harian untuk item fast-moving (misal: Kampas Rem Depan Avanza):
// Pseudo-code auto-reorder trigger engine
async function verifyMinimumStockAlert(sparepartId, branchId, trx) {
const currentStock = await trx('sparepart_batches')
.where('sparepart_id', sparepartId)
.sum('current_stock as total_stock')
.first();
const metadata = await trx('spareparts')
.where('id', sparepartId)
.first();
if (currentStock.total_stock <= metadata.min_stock_alert) {
// Generate automatic Purchase Requisition to supplier
await trx('purchase_requisitions').insert({
sparepart_id: sparepartId,
branch_id: branchId,
quantity_requested: metadata.min_stock_alert * 3, // Auto-restock multiplier
status: 'PENDING_SUPPLIER_APPROVAL',
reason: `Auto-trigger: Stock fell below minimum limit of ${metadata.min_stock_alert} units.`
});
// Trigger notification to Branch Manager
await sendNotification(`[LOW STOCK ALERT] Sparepart: ${metadata.name} at branch ${branchId} is below minimum stock.`);
}
}
Konfigurasi per SKU:
| Field | Keterangan |
|---|---|
min_stock_alert |
Threshold stok minimum — saat current_stock <= min_stock_alert, auto-reorder dipicu |
quantity_requested |
Auto-restock multiplier: min_stock_alert × 3 (configurable per SKU) |
| Notifikasi | Branch Manager menerima notifikasi in-app + WhatsApp saat purchase requisition dibuat |
11.3 Sparepart Substitution Matcher¶
Jika sparepart orisinil bernilai tinggi sedang habis stok, sistem secara otomatis merekomendasikan daftar part alternatif:
graph TD
A[SA Mencari Sparepart di Katalog] --> B{Stok Orisinil Tersedia?}
B -- Ya --> C[Tampilkan Stok & Harga Jual Orisinil]
B -- Tidak --> D[Cari Substitusi di Tabel sparepart_substitutions]
D --> E{Ada Substitusi Terdaftar?}
E -- Tidak Ada --> F[Tampilkan Alert: Stok Habis, Perlu PO ke Supplier]
E -- Ada --> G[Tampilkan Daftar Substitusi]
G --> H{compatibility_level?}
H -- EXACT --> I[Rekomendasi: Drop-in Replacement, Langsung Pakai]
H -- MODIFIED --> J[Rekomendasi: Butuh Penyesuaian Mekanis Tambahan]
Compatibility Levels:
| Level | Arti | Contoh |
|---|---|---|
EXACT |
Drop-in replacement — dapat langsung digunakan tanpa modifikasi | Filter oli dengan ukuran thread dan micron rating identik |
MODIFIED |
Kompatibel tapi membutuhkan penyesuaian mekanis | Kampas rem aftermarket yang butuh bedding-in atau penyesuaian bracket |
11.4 Stock Opname (Annual Physical Audit)¶
Proses reconciliasi stok fisik gudang dengan data sistem:
- Storekeeper memulai sesi "Stock Opname" di aplikasi gudang — sistem memfreezekan semua dispense transaction selama sesi berlangsung.
- Storekeeper men-scan setiap item di rak fisik dan memasukkan jumlah fisik aktual.
- Sistem membandingkan jumlah fisik vs
sparepart_batches.current_stock. - Selisih (shrinkage/overage) dicatat ke
inventory_adjustmentsdengan mandatory reason dan supervisor approval PIN. - Laporan hasil stock opname diterbitkan dengan nilai selisih rupiah total untuk laporan kerugian/keuntungan inventaris.