O1
Budidaya tidak berhenti saat PO berjalan
Sesuai desain
PetaniPetugas Lapang
Petani terus menambah data tanam dan laporan kondisi, lewat web maupun bot WhatsApp (n8n). Data tanam baru masuk berstatus menunggu dan baru bisa dialokasikan setelah diverifikasi. Kapasitas yang bisa dialokasikan ke PO berubah selama PO berjalan.
Api/TanamController.php:57 · Petani/TanamController.php:57
O2
Alokasi dan serah terima berjalan bergantian
Sesuai desain
ManagerPetugas Gudang
Manager boleh menambah alokasi selama PO disetujui atau sebagian_terpenuhi. Gudang bisa sudah menerima panen petani A saat manager baru mengalokasikan petani B.
Petugas/PreOrderController.php:110 (alokasi)
O3
PO terkunci di dalam_proses sebelum kuantitas terpenuhi
Perlu dicek
ManagerPetugas Gudang
Status dihitung dari jumlah alokasi, bukan kuantitas PO. Jika semua alokasi yang ada sudah diserahterimakan, PO langsung dalam_proses walaupun total alokasi masih di bawah pesanan. Setelah itu alokasi baru ditolak dan PO dikirim kurang.
Services/StokService.php:42–56
O4
Satu serah terima per alokasi, kekurangan hilang
Perlu dicek
PetaniPetugas Gudang
Setiap alokasi hanya bisa diserahterimakan sekali dan langsung ditandai selesai berapa pun kg yang diterima. Petani yang dialokasikan 60 kg lalu menyerahkan 40 kg tidak bisa menyusulkan sisanya. Sisa 20 kg juga tidak kembali ke kebutuhan PO, karena sisa kebutuhan dihitung dari kg alokasi.
SerahTerimaController.php:28, :81 · StokService::sisaKebutuhanPO
O5
Beberapa PO berebut estimasi panen yang sama
Sesuai desain
ManagerBuyer lain
Sisa estimasi panen per lahan dihitung dari semua alokasi komoditas yang sama, lintas PO. PO yang dialokasikan lebih dulu mengambil kapasitas, tanpa antrian atau prioritas. Catatan: jika lahan tidak punya data tanam terverifikasi, pengecekan kapasitas dilewati di server. Pembatasnya hanya dropdown di form.
Petugas/PreOrderController.php:133–149
O6
PO ditutup saat barang masih di gudang
Perlu dicek
BuyerPetugas Distribusi
Status PO dan status pengiriman tidak saling mengunci. Buyer bisa menandai selesai begitu PO dikirim, walaupun pengiriman masih disiapkan.
Di database produksi: PO-BUY-202604-00002 dan -00003 sudah selesai dengan pengiriman masih disiapkan. PO-BUY-202604-00001 selesai tanpa data pengiriman sama sekali.
Buyer/PreOrderController.php:129–133
O7
Hanya satu pengiriman per PO
Sesuai desain
Petugas Distribusi
Pengiriman hanya bisa dibuat saat PO dalam_proses dan belum punya pengiriman. Pengiriman bertahap (dua truk atau dua jadwal) belum didukung. Total kg diambil otomatis dari semua serah terima.
PengirimanController.php:20–21
O8
Wewenang persetujuan tumpang tindih
Perlu dicek
LapangGudangDistribusiManager
Setujui/tolak PO dan verifikasi tanam terbuka untuk semua role petugas dan manager, termasuk gudang dan distribusi. Notifikasi PO baru hanya dikirim ke petugas lapang. Sistem tidak menentukan siapa yang seharusnya menyetujui.
routes/web.php:117 · Petugas/PreOrderController.php:71, :88
O9
Batas koperasi tidak ditegakkan di aksi petugas
Celah
Petugas koperasi AData koperasi B
Middleware koperasi.scope hanya memastikan user punya koperasi_id dan tidak memfilter data. Daftar PO sudah difilter, tapi halaman detail, setujui, tolak, dan alokasi menerima PO koperasi mana pun jika ID-nya diketahui. Daftar verifikasi tanam juga menampilkan tanam semua koperasi.
EnsureKoperasiScope.php:24 · Petugas/PreOrderController.php:40–110 · TanamVerifikasiController.php:12