# Implementasi Finansial, Panen & Laporan (Milestone 3)

Tahapan ketiga (Milestone 3) adalah titik penentuan keberhasilan bisnis peternakan. Modul ini berfokus di *Hilir*, di mana populasi ayam yang telah selesai dipelihara akan **dipanen dan dijual (Harvest)**, diikuti dengan proses penghitungan **Harga Pokok Penjualan (HPP)** serta Laporan Akhir (Indeks Performa).

## User Review Required

> [!IMPORTANT]
> Milestone ini memiliki interaksi krusial terhadap **Metode Akuntansi**. Secara spesifik, dalam mengonversi jumlah pakan terkonsumsi (`kg`) menjadi Rupiah Biaya, kita dapat memakai sistem HPP standar di awal. Mohon berkenan membaca dan menyetujui detail implementasinya ini sebelum dieksekusi.

## Proposed Changes

### 1. Struktur Database Pendukung & Model
Mengembangkan arsitektur model pendataan uang dan penutupan populasi.

#### [NEW] Model `app/models/HarvestRecord.php`
Akan membungkus fungsionalitas tabel `harvest_sales` untuk hasil tangkap/panen per kandang, memuat variabel:
- Bobot Total Tangkapan (*Livebird*).
- Jumlah Ekor yang ditangkap.
- Nama Pembeli (Bakul) & Harga Kesepakatan.

#### [NEW] Model `app/models/FinancialLedger.php`
Akan membungkus fungsionalitas tabel `financial_ledgers` dengan variabel:
- Kategori Arus Uang (Pendapatan Jual / Pengeluaran Pakan / Overhead Opr).
- Penanda `transaction_type_id` untuk mengkategorikan tipe tagihannya.

### 2. Algoritma Performa & HPP (API Services)
Membangun Controller dengan beban komputasi matematika peternakan.

#### [NEW] `app/controllers/HarvestController.php`
- API Endpoint untuk men-*submit* form Panen.
- **Logika Sistem**: Menyimpan detail Panen, memasukkan entri *Revenue* (Uang Masuk) ke tabel LEDGER, dan mengubah Status Kandang (`batch_status_id`) menjadi *Harvested*.

#### [NEW] `app/controllers/ReportController.php` (Business Intelligence Analyst)
Pusat Endpoint kalkulator peternakan, yang mana dalam 1 request GET akan memberikan output:
- **FCR (Feed Conversion Ratio)** = Total Konsumsi Pakan / Total Bobot Ayam Hidup.
- **Mortalitas** = (Ayam Mati / Populasi Awal) x 100%.
- **Indeks Prestasi (IP)** = Performa standar ayam komersial. ((Livability x Rata-rata Berat) / (Umur Panen x FCR)) * 100.
  
#### [MODIFY] `api/index.php`
Menambahkan rute-rute *Harvest* dan *Report* tersebut dan menyematkannya di belakang auth API.

---

## Open Questions

> [!WARNING]
> Mohon konfirmasinya untuk memperlancar implementasi algoritma:
> 1. **Aturan Panen Tipe Parsial:** Seringkali di farm riil, panen berlangsung 3 malam berturut-turut *(panen parsial untuk melonggarkan kepadatan)* baru dilanjut panen habis *Clear Out*. Apakah di API nanti kita perbolehkan input *HarvestRecord* berkali-kali ke satu *Batch ID* yang sama?
> 2. **Nilai Rupiah Harga Pakan**: Agar penghitungan HPP (Kerugian / Keuntungan Ledger) bisa berfungsi di Endpoint Laporan tanpa harus rumit di fase ini, apakah Anda setuju kita pakai **Metode Harga Pokok Rata-Rata (Average Cost)** yang diasumsikan dari satu nilai variabel di awal (tanpa harus memusingkan fluktuasi harga pakan per *Invoice* masuk sementara waktu)?

## Verification Plan
1. Membuat API Panen (Harvest), dan saya akan melontarkan 1 data simulasi *panen* dengan persentase kematian rendah.
2. Memanggil Endpoint *Reporting*, untuk mendemonstrasikan bahwa sistem otomatis mem-print angka IP (Nilai normal > 350) dan mem-print FCR (normal sekitar 1.5).
