Lewati ke isi

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:

  1. Storekeeper memulai sesi "Stock Opname" di aplikasi gudang — sistem memfreezekan semua dispense transaction selama sesi berlangsung.
  2. Storekeeper men-scan setiap item di rak fisik dan memasukkan jumlah fisik aktual.
  3. Sistem membandingkan jumlah fisik vs sparepart_batches.current_stock.
  4. Selisih (shrinkage/overage) dicatat ke inventory_adjustments dengan mandatory reason dan supervisor approval PIN.
  5. Laporan hasil stock opname diterbitkan dengan nilai selisih rupiah total untuk laporan kerugian/keuntungan inventaris.