Risiko kedaluwarsa: menilai stok yang punya tenggat sebelum tenggatnya tiba
Barang yang akan kedaluwarsa tidak berubah wujud sampai hari terakhir. Cara menilai stok berisiko per gudang dan rentang waktu, lalu menguji apakah FEFO saja cukup untuk menghabiskannya.
Stok yang punya tanggal kedaluwarsa berperilaku berbeda dari stok biasa dalam satu hal yang menentukan: nilainya tidak menurun perlahan, ia jatuh ke nol pada satu tanggal tertentu.
Barang lambat yang biasa masih bisa dijual tahun depan dengan harga lebih rendah. Barang bertenggat tidak punya opsi itu. Yang tersisa setelah tanggalnya lewat bukan barang bermargin tipis, melainkan biaya pemusnahan.
Ini membuat pertanyaannya bergeser. Untuk stok biasa, yang ditanyakan adalah seberapa lama modal tertahan. Untuk stok bertenggat, yang ditanyakan adalah apakah masih ada cukup waktu — dan pertanyaan itu punya jawaban yang bisa dihitung sebelum jawabannya menjadi kenyataan.
Relevansinya bukan cuma untuk pangan. Kategori perawatan tubuh dan kosmetik yang kini umum dijual berdampingan dengan pakaian membawa tenggat yang sama, begitu pula sebagian besar barang yang mencantumkan masa simpan pada kemasannya.
Yang dilacak adalah batch, bukan artikel
Tanggal kedaluwarsa melekat pada sekumpulan unit yang diproduksi bersama, bukan pada artikelnya. Satu SKU bisa punya beberapa batch di rak dengan tenggat yang berbeda-beda.
Konsekuensinya: saldo per artikel tidak bisa menjawab satu pun pertanyaan di tulisan ini. Yang dibutuhkan adalah saldo per batch per lokasi, di mana setiap batch membawa tanggal kedaluwarsanya sendiri.
Ini juga berarti pencatatan harus dimulai dari penerimaan. Batch yang masuk tanpa tanggal tercatat akan menjadi lubang permanen dalam laporan — dan pada praktiknya, membacanya kembali dari kemasan setelah barang tercampur di rak jarang benar-benar terjadi.
Matriks nilai berisiko
Bentuk laporannya sama seperti aging stok, tapi sumbunya menghadap ke depan bukan ke belakang.
- Baris — gudang atau lokasi
- Kolom — rentang sisa waktu: sudah lewat, di bawah 30 hari, 30–90, 90–180, di atas 180
- Isi sel — nilai modal stok yang jatuh di rentang itu
Bedanya dengan aging bukan cuma arah. Aging mengukur sesuatu yang sudah terjadi; matriks ini mengukur sesuatu yang akan terjadi kecuali ada yang bertindak. Angka di kolom "di bawah 30 hari" adalah nilai yang akan hilang bulan depan kalau tidak ada yang berubah.
Pemisahan per gudang bukan formalitas. Ia sering langsung menunjukkan solusinya: satu lokasi menumpuk batch yang mendekati tenggat sementara lokasi lain menjual artikel yang sama dengan cepat. Kalau sisa waktunya masih cukup untuk transfer, itu pemulihan nilai penuh — tanpa markdown, tanpa kehilangan.
Rentang kolom perlu disesuaikan dengan masa simpan barangnya. Untuk barang bermasa simpan pendek, kolom bulanan terlalu kasar; yang berarti mungkin mingguan. Untuk barang bermasa simpan tahunan, kolom di bawah 30 hari sudah terlambat untuk semua tindakan kecuali membuang.
Kolom "sudah lewat" perlu tetap ada dan tetap terlihat. Nilainya nol pada operasi yang sehat, dan kalau tidak nol, ia sekaligus mengukur berapa lama barang kedaluwarsa dibiarkan berada di rak tempat ia masih bisa terjual.
Cek kelayakan: cukupkah waktunya?
Matriks di atas menyatakan berapa banyak yang berisiko. Ia belum menjawab pertanyaan yang sebenarnya menentukan tindakan: apakah stok ini masih bisa habis dengan sendirinya sebelum tenggatnya?
Perhitungannya langsung. Untuk tiap batch:
Kecepatan yang dibutuhkan = jumlah unit dalam batch ÷ sisa hari sampai kedaluwarsa
Bandingkan dengan kecepatan penjualan aktual artikel itu di lokasi itu — unit per hari, dari riwayat beberapa periode terakhir.
Kalau kecepatan aktual lebih besar dari yang dibutuhkan, batch itu akan habis tepat waktu tanpa intervensi. Kalau lebih kecil, selisihnya bisa diubah menjadi angka yang konkret:
Perkiraan sisa yang tidak terjual = jumlah batch − (kecepatan aktual × sisa hari)
Angka inilah yang layak dibawa ke keputusan, karena ia menyatakan risiko dalam unit dan rupiah, bukan dalam perasaan bahwa sesuatu perlu segera dijual.
Beberapa hal yang perlu dijaga supaya perhitungan ini tidak menyesatkan:
Kecepatan diambil per lokasi. Rata-rata lintas gudang akan menyimpulkan aman untuk lokasi yang sebenarnya tidak aman.
Sisa hari bukan sampai tanggal kedaluwarsa. Sebagian besar barang tidak layak dijual sampai hari terakhir — pembeli menolaknya, dan untuk sebagian kategori ada batas yang lebih awal dari itu. Yang dipakai seharusnya tanggal batas jual, bukan tanggal kedaluwarsa.
Batch yang antre diperhitungkan. Kalau ada batch lain dari artikel yang sama yang tenggatnya lebih awal, batch itulah yang akan terjual lebih dulu di bawah FEFO. Kecepatan penjualan artikel tidak boleh diklaim penuh oleh setiap batch secara terpisah — ia dibagi menurut antreannya.
Poin terakhir yang paling sering membuat perhitungan naif terlihat optimistis. Dua batch yang masing-masing "aman" bila dihitung sendiri-sendiri bisa berarti yang kedua pasti tersisa, karena keduanya berebut aliran penjualan yang sama.
Membaca hasilnya
Hasil cek kelayakan memisahkan stok bertenggat menjadi beberapa kondisi yang tindakannya jelas berbeda.
Aman dengan selisih lebar. Tidak perlu apa-apa selain memastikan rotasinya benar-benar berjalan.
Aman tipis. Rentan terhadap penurunan penjualan kecil. Layak masuk daftar pantau, bukan daftar tindakan.
Tidak cukup, waktu masih panjang. Kondisi terbaik untuk bertindak. Semua opsi masih terbuka: transfer ke lokasi yang lebih cepat, penempatan yang lebih baik, penggabungan dengan barang lain, atau penurunan harga kecil yang tidak perlu merusak persepsi harga.
Tidak cukup, waktu pendek. Pilihannya menyempit ke penurunan harga yang berarti atau penyaluran ke jalur lain. Yang perlu dihitung: berapa pemulihan yang mungkin, dibanding nol yang pasti.
Sudah tidak mungkin. Nilainya sudah hilang; yang tersisa keputusan operasional tentang penarikan dan pencatatannya.
Pergeseran antar kondisi ini dari periode ke periode lebih informatif daripada potretnya. Batch yang berpindah dari "aman tipis" ke "tidak cukup" memberi peringatan pada saat tindakan masih murah.
FEFO menjaga urutan, bukan kecukupan
Ada kesimpulan yang perlu dinyatakan terang, karena sering disalahpahami.
Menerapkan FEFO — mengeluarkan yang paling cepat kedaluwarsa lebih dulu — memastikan bahwa kalau ada yang tersisa, yang tersisa adalah yang tenggatnya paling panjang. Itu bernilai nyata dan mengurangi kerugian.
Yang tidak dilakukannya: menciptakan permintaan. Kalau total stok melebihi apa yang bisa terjual dalam masa simpannya, FEFO hanya menentukan unit mana yang akan terbuang, bukan mencegah pembuangan.
Karena itu cek kelayakan di atas berperan sebagai pemeriksa atas rotasi yang sudah berjalan. Rotasi yang sempurna dengan pembelian yang terlalu besar tetap berakhir dengan barang terbuang, dan laporan yang hanya memantau kepatuhan FEFO tidak akan pernah menunjukkannya.
Umpan balik ke hulu
Seperti dead stock, akar masalah stok kedaluwarsa hampir selalu berada di keputusan pembelian — dengan satu perbedaan penting: batasnya lebih keras.
Untuk barang bertenggat, jumlah pesanan yang wajar dibatasi bukan oleh berapa lama Anda bersedia menahan modal, melainkan oleh berapa banyak yang benar-benar bisa terjual sebelum masa simpannya habis. Diskon kuantitas yang menggoda pada barang seperti ini bisa menghasilkan harga per unit yang lebih murah dan biaya total yang lebih tinggi.
Ada juga variabel yang tidak dimiliki barang biasa: sisa masa simpan saat barang diterima. Dua kiriman dengan harga sama tidak setara kalau yang satu datang dengan masa simpan tersisa jauh lebih pendek. Mencatat sisa masa simpan saat penerimaan, lalu membandingkannya antar supplier dan antar waktu, memunculkan pola yang tidak akan terlihat di mana pun lagi — dan itu hal yang bisa dinegosiasikan, karena sepenuhnya berada dalam kendali pemasok.