Resep kaitkan menu ke bahan baku. Setiap order paid kurangi inventory sesuai resep — tidak ada lagi end-of-shift stock-take manual yang panjang.
1 Latte = 18g espresso bean + 200ml fresh milk + 1 paper cup. Saat order paid, trigger PostgreSQL kurangi tiap bahan dari inventory_item.qty_remaining. Refund-with-restore option re-add stok kalau item dikembalikan.
Setiap inventory_item bisa di-set par level (misal: minimum 2kg coffee bean). Saat qty_remaining ≤ par, dashboard tampilkan alert merah. Procurement bisa lihat list item yang perlu re-order pagi-pagi.
Setiap cabang punya inventory pool sendiri. Senopati boleh kehabisan croissant tanpa mempengaruhi Dago. Resep & menu master di pusat, tapi stok dihitung outlet-level.
Stock-take kuartalan? Tap "Adjust" pada inventory_item, masukkan qty fisik, beri alasan (misal: "Spoilage Mar 2026"). Setiap adjust tulis audit row supaya owner tahu siapa rubah, kapan, kenapa.
Saat terima stok, isi opsional harga per unit (mis. Rp 145.000/kg) — Posz hitung ulang harga rata-rata tertimbang otomatis. Hasilnya: laporan Profit (gross / COGS / gross-profit) di Dashboard pakai cost yang akurat lintas batch, bukan harga terakhir saja.