# Rencana Implementasi: Perbaikan Kalkulasi Umur Ayam

Rencana ini bertujuan untuk menyempurnakan cara sistem menghitung umur ayam agar sesuai dengan standar peternakan (hari pertama dihitung sebagai Hari ke-1) dan mendukung input umur awal jika ayam dibeli bukan sebagai DOC (Day Old Chick).

## User Review Required

> [!IMPORTANT]
> **Standar Hari Pertama**: Saat ini sistem menghitung selisih waktu murni, sehingga hari pertama muncul sebagai "0 Hari". Saya akan mengubahnya agar hari saat batch dimulai dihitung sebagai **"1 Hari"**.
> **Umur Awal (Initial Age)**: Jika ayam dibeli saat sudah berumur beberapa minggu (misal Pullet), sistem memerlukan data "Umur Awal" saat batch dibuat. Saya mengusulkan penambahan kolom `initial_age_days` pada pembuatan batch. Apakah Bapak setuju?

## Proposed Changes

### 1. Database & Skema

#### [MODIFY] `batches`
- Tambahkan kolom `initial_age_days` (INT UNSIGNED, default 1). 
  - *Catatan: Default 1 karena biasanya ayam datang sebagai DOC (Day 1).*

### 2. Backend & Logika

#### [MODIFY] [Batch.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/models/Batch.php)
- Update method `create` untuk menyimpan `initial_age_days`.
- (Opsional) Tambahkan method helper `calculateAge($startDate, $initialAge)`.

#### [MODIFY] [HarvestController.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/controllers/web/HarvestController.php)
- Update logika kalkulasi umur saat pendaftar panen:
  `$age = floor(($harvestDate - $startDate) / 86400) + $initialAge;`

### 3. Frontend & UI

#### [MODIFY] [admin/harvest/birds.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/views/admin/harvest/birds.php)
- Update tampilan umur di tabel: `floor($age) + $b['initial_age_days']`.
- Update logika Javascript di modal panen untuk menyertakan `initial_age_days`.

#### [MODIFY] [admin/batch/index.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/views/admin/batch/index.php)
- Tambahkan input "Umur Awal (Hari)" pada modal tambah/edit batch.

## Verification Plan

### Manual Verification
- Buat batch baru hari ini. Umur harus tampil **1 Hari**.
- Buat batch dengan umur awal 7 hari (ayam seminggu). Umur harus tampil **7 Hari** pada hari pertama kedatangan.
- Lakukan panen esok hari, umur harus tampil **2 Hari** (untuk DOC) atau **8 Hari** (untuk ayam seminggu).
