    # PRD Sistem Inventory Sarang Burung Walet

    ## 1. Ringkasan Produk
    Produk ini adalah sistem inventory sarang burung walet berbasis lot atau batch untuk bisnis perdagangan yang dimulai dari pembelian, bukan produksi. Sistem harus mampu menangani pembelian multi jenis dan multi grade, sortasi internal, penyimpanan lot, penjualan parsial dari banyak lot, costing berbasis allocation nyata, penyusutan per lot, dan traceability penuh dengan dukungan barcode atau QR code.

    ## 2. Latar Belakang Masalah
    Bisnis sarang burung walet memiliki kompleksitas yang tidak bisa ditangani inventory biasa karena:

    - satu pembelian bisa berisi banyak jenis dan grade
    - barang dari supplier bisa perlu diverifikasi atau disortir ulang
    - stok akhir harus ditrack per lot
    - satu penjualan bisa mengambil stok dari beberapa lot berbeda
    - HPP penjualan harus mengikuti lot yang benar-benar dipakai
    - penyusutan, kerusakan, regrade, dan retur harus tetap bisa ditelusuri
    - owner perlu tahu asal barang, margin, dan performa supplier

    ## 3. Tujuan Produk
    Tujuan produk ini:

    - membuat pencatatan pembelian dan penerimaan barang lebih rapi
    - menjaga traceability dari supplier sampai customer
    - menghitung costing dan margin secara akurat
    - mengurangi kehilangan histori lot
    - memudahkan proses sortasi dan regrade
    - memberi visibilitas stok per jenis-grade dan per lot
    - mendukung operasional gudang dengan barcode atau QR scan

    ## 4. Ruang Lingkup
    ### In Scope
    - master data supplier, customer, jenis, grade, gudang, user
    - pembelian dan penerimaan barang
    - pembuatan lot/batch
    - sortasi / klasifikasi / regrade
    - stok summary dan stok lot
    - sales order dan allocation lot
    - movement ledger
    - shrinkage / adjustment / damage / return
    - traceability report
    - barcode / QR label generation dan lookup

    ### Out of Scope untuk MVP
    - akuntansi umum penuh
    - integrasi marketplace
    - integrasi IoT
    - forecasting AI
    - multi currency kompleks
    - mobile app native terpisah, jika web mobile sudah cukup

    ## 5. User dan Role
    ### Owner / Management
    Kebutuhan:
    - melihat dashboard
    - memantau stok, nilai inventory, margin, susut
    - melihat traceability dan performa supplier

    ### Admin Purchasing
    Kebutuhan:
    - membuat pembelian
    - melihat histori pembelian dan harga beli

    ### Admin Gudang
    Kebutuhan:
    - menerima barang
    - membuat dan memindahkan lot
    - opname dan adjustment
    - cetak label QR/barcode

    ### Tim Sortasi / QC
    Kebutuhan:
    - melakukan sortasi
    - mengubah satu lot menjadi beberapa lot hasil
    - mencatat susut/reject/regrade

    ### Admin Sales
    Kebutuhan:
    - membuat sales order
    - melihat stok tersedia
    - memilih atau menyesuaikan alokasi lot
    - memproses picking dan invoice

    ## 6. Problem Statement
    Bagaimana membuat sistem yang mampu mengelola stok sarang walet secara detail sampai level lot, sambil tetap mudah dipakai untuk operasional harian, serta menjaga costing dan traceability tetap akurat walaupun penjualan diambil dari campuran beberapa lot?

    ## 7. Product Principles
    - lot adalah unit traceability utama
    - stock summary hanya agregasi, bukan sumber kebenaran utama
    - semua perubahan stok harus masuk movement ledger
    - costing penjualan harus berbasis alokasi lot nyata
    - barcode atau QR membantu scan, tetapi sumber trace tetap pada model data
    - sistem harus mendukung override manual jika operasional lapangan membutuhkannya

    ## 8. Business Flow Summary
    1. master setup
    2. create purchase
    3. receive goods
    4. create lots
    5. sort or verify if needed
    6. store and move lots
    7. sell and allocate lots
    8. ship and confirm quantity
    9. handle returns, shrinkage, regrade, adjustment
    10. monitor reports and traceability

    ## 9. Functional Requirements

    ### 9.1 Master Data
    Sistem harus menyediakan CRUD untuk:
    - suppliers, termasuk data nomor rekening dan nama bank
    - customers, termasuk data nomor rekening dan nama bank
    - item types
    - item grades
    - warehouses
    - warehouse locations
    - users
    - roles
    - adjustment reasons
    - units

    ### 9.2 Purchasing
    Sistem harus bisa:
    - membuat dokumen pembelian
    - menyimpan banyak line dalam satu pembelian
    - menyimpan jenis, grade, qty, harga beli, subtotal
    - menandai line apakah final atau provisional
    - menyimpan nomor invoice supplier
    - menampilkan histori harga beli per jenis-grade

    ### 9.3 Receiving
    Sistem harus bisa:
    - menerima barang dari pembelian
    - membandingkan qty ordered vs qty received
    - mencatat qty accepted dan rejected
    - membuat lot per receipt line atau per hasil penerimaan
    - menyimpan cost lot
    - mencetak QR/barcode label

    ### 9.4 Inventory Lot
    Sistem harus bisa:
    - menampilkan stok per lot
    - menampilkan stok summary per jenis-grade
    - menandai lot aktif, hold, closed, rejected
    - menyimpan parent-child lot
    - menyimpan gudang dan lokasi simpan
    - menampilkan aging lot

    ### 9.5 Sorting / Classification / Regrade
    Sistem harus bisa:
    - membuat sorting session dari source lot
    - menghasilkan banyak lot baru dari satu lot asal
    - mencatat qty input, qty output, dan shrinkage
    - melakukan regrade dari satu grade ke grade lain
    - mencatat reject

    ### 9.6 Sales
    Sistem harus bisa:
    - membuat sales order
    - menambah sales lines per jenis-grade
    - menampilkan stok tersedia
    - mengalokasikan kebutuhan sales line ke satu atau banyak lot
    - mendukung alokasi otomatis dan manual
    - menghitung costing_total dan gross_margin

    ### 9.7 Allocation Engine
    Sistem harus bisa:
    - memberi rekomendasi lot berdasarkan FIFO
    - memungkinkan override manual
    - menghitung total cost dari setiap allocation
    - memastikan qty allocation tidak melebihi stok available

    ### 9.8 Inventory Movement Ledger
    Sistem harus mencatat semua mutasi:
    - receipt in
    - sorting out/in
    - sales out
    - return in/out
    - transfer in/out
    - shrinkage
    - adjustment
    - regrade out/in

    ### 9.9 Returns & Adjustments
    Sistem harus bisa:
    - mencatat retur pembelian
    - mencatat retur penjualan
    - mencatat adjustment stok
    - mencatat damage dan shrinkage
    - mengaitkan semua ke lot tertentu

    ### 9.10 Traceability
    Sistem harus menyediakan:
    - backward trace, dari sales ke supplier
    - forward trace, dari supplier/lot ke customer
    - histori proses lot, termasuk sorting, regrade, transfer, shrinkage, sales

    ### 9.11 Barcode / QR
    Sistem harus bisa:
    - generate label QR/barcode untuk lot
    - print ulang label
    - scan lot untuk lookup data
    - scan saat transfer, picking, dan stock opname

    ## 10. Non-Functional Requirements
    - web-based dan mobile-friendly
    - audit trail untuk transaksi penting
    - performa query stok dan lot harus cepat
    - akses berbasis role
    - histori tidak boleh hilang walau lot sudah closed
    - data harus siap diekspor

    ## 11. Costing Rules
    - unit cost utama disimpan per lot
    - costing sales line dihitung dari gabungan allocation nyata
    - default allocation policy adalah FIFO
    - sistem boleh mendukung FEFO/manual/hybrid
    - shrinkage mengurangi qty dan memengaruhi balance lot
    - regrade harus memindahkan qty dan histori cost dengan jelas

    ## 12. Traceability Rules
    ### Backward Trace
    sales -> sales_allocations -> inventory_lots -> receipt_lines -> purchase_lines -> purchases -> suppliers

    ### Forward Trace
    suppliers -> purchases -> inventory_lots -> sales_allocations -> sales_lines -> sales -> customers

    ### Process Trace
    inventory_lots -> sorting_sessions -> sorting_results -> stock_adjustments -> inventory_movements

    ## 13. Key Screens
    - Dashboard
    - Purchase List
    - Purchase Detail/Form
    - Receipt Form
    - Receipt Detail
    - Stock Summary
    - Stock Lot List
    - Lot Detail
    - Sorting Session Form
    - Sales Form
    - Allocation Screen
    - Picking Screen
    - Adjustment Form
    - Regrade Form
    - Barcode Lookup
    - Reports

    ## 14. KPI / Success Metrics
    - akurasi stok per lot
    - kecepatan trace dari penjualan ke supplier
    - penurunan selisih opname
    - akurasi HPP penjualan
    - kecepatan receiving dan picking
    - visibilitas susut per lot dan supplier

    ## 15. MVP Recommendation
    ### Phase 1
    - master data
    - purchasing
    - receiving
    - inventory lot
    - stock summary
    - sales
    - sales allocation
    - movement ledger
    - QR label dasar

    ### Phase 2
    - sorting
    - regrade
    - stock adjustment detail
    - transfer gudang
    - stock opname scan

    ### Phase 3
    - analytics supplier quality
    - analytics margin dan shrinkage
    - mobile scanner workflow lebih maju
    - smarter allocation engine

    ## 16. Risiko Implementasi
    - user ingin proses cepat tetapi model data kompleks
    - salah desain costing akan merusak laporan margin
    - jika lot discipline tidak dijaga, traceability rusak
    - jika QR hanya kosmetik tanpa lot discipline, manfaatnya kecil

    ## 17. Keputusan Produk yang Direkomendasikan
    - jadikan lot sebagai sumber kebenaran traceability
    - pakai stock summary hanya sebagai view agregat
    - gunakan FIFO default dengan override manual
    - pakai QR code di level lot
    - prioritaskan lot detail, allocation, dan movement ledger di fase awal

    ## 18. Kesimpulan
    Produk ini adalah sistem inventory walet yang berorientasi pada lot, costing akurat, dan traceability penuh. Dengan desain ini, bisnis dapat mengelola pembelian multi jenis-grade, sortasi, penjualan campuran, susut, dan audit histori secara jauh lebih aman dibanding inventory biasa.