Update Praktik Budidaya

This commit is contained in:
2026-07-09 16:29:18 +07:00
parent 626fdba065
commit 6c95c462cb
6 changed files with 272 additions and 24 deletions
@@ -13,11 +13,11 @@ enum PenangananGulma: int
public function label(): string public function label(): string
{ {
return match($this) { return match($this) {
self::DIBIARKAN => 'Dibiarkan di kebun', self::DIBIARKAN => 'Dibiarkan saja, tidak pernah ditangani',
self::DICABUT => 'Dikumpulkan dan dibuang', self::DICABUT => 'Dicabut/dibersihkan sesekali, tidak terjadwal',
self::DISEMPROT => 'Dijadikan kompos', self::DISEMPROT => 'Disemprot herbisida sesekali, tidak terjadwal',
self::RUTIN_DICABUT_TANPA_JADWAL => 'Dikumpulkan dan dibuang', self::RUTIN_DICABUT_TANPA_JADWAL => 'Rutin dicabut/dipangkas, tapi tanpa jadwal yang jelas',
self::RUTIN_TERJADWAL => 'Dijadikan kompos', self::RUTIN_TERJADWAL => 'Rutin terjadwal dengan metode yang konsisten (dicabut/dipangkas/dikelola sebagai mulsa)',
}; };
} }
@@ -110,7 +110,7 @@ class PraktikBudidayaController extends Controller
$alasanTidakPenyerbukanLainnya = collect(explode(', ', $alasanTidakPenyerbukan)) $alasanTidakPenyerbukanLainnya = collect(explode(', ', $alasanTidakPenyerbukan))
->first(fn ($item) => !in_array($item, $defaultAlasanTidakPenyerbukan)); ->first(fn ($item) => !in_array($item, $defaultAlasanTidakPenyerbukan));
$frekuensiPemupukan = $praktikBudidaya->frekuensi_pemupukan ?? ''; $frekuensiPemupukan = $praktikBudidaya->frekuensi_pemberian_pupuk ?? '';
$frekuensiPemupukanLainnya = collect(explode(', ', $frekuensiPemupukan)) $frekuensiPemupukanLainnya = collect(explode(', ', $frekuensiPemupukan))
->first(fn ($item) => !in_array($item, $defaultFrekuensiPemupukan)); ->first(fn ($item) => !in_array($item, $defaultFrekuensiPemupukan));
@@ -201,6 +201,32 @@ class PraktikBudidayaController extends Controller
'cara_pemberian_pupuk' => ($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null), 'cara_pemberian_pupuk' => ($validatedData['cara_pemberian_pupuk'] ?? null) === 'Lainnya' ? ($validatedData['cara_pemberian_pupuk_lainnya'] ?? null) : ($validatedData['cara_pemberian_pupuk'] ?? null),
'created_by' => auth()->id(), 'created_by' => auth()->id(),
'updated_by' => auth()->id(), 'updated_by' => auth()->id(),
], [
'string' => ':attribute harus berupa teks.',
'integer' => ':attribute harus berupa angka.',
'array' => ':attribute harus berupa pilihan.',
'enum' => 'Pilihan :attribute tidak valid.',
], [
'tenaga_kerja' => 'tenaga kerja',
'frekuensi_pemangkasan_komoditas_utama' => 'frekuensi pemangkasan komoditas utama',
'teknik_pemangkasan' => 'teknik pemangkasan',
'teknik_pemangkasan_lainnya' => 'teknik pemangkasan lainnya',
'frekuensi_pemangkasan_pohon_penaung' => 'frekuensi pemangkasan pohon penaung',
'penyerbukan_manual' => 'penyerbukan manual',
'alasan_tidak_penyerbukan' => 'alasan tidak melakukan penyerbukan manual',
'alasan_tidak_penyerbukan_lainnya' => 'alasan lainnya tidak melakukan penyerbukan manual',
'tingkat_keberhasilan_penyerbukan' => 'tingkat keberhasilan penyerbukan',
'pemberian_pupuk' => 'pemberian pupuk',
'jenis_pupuk' => 'jenis pupuk',
'frekuensi_pemupukan' => 'frekuensi pemupukan',
'frekuensi_pemupukan_lainnya' => 'frekuensi pemupukan lainnya',
'estimasi_dosis_pupuk_organik' => 'estimasi dosis pupuk organik',
'estimasi_dosis_pupuk_anorganik' => 'estimasi dosis pupuk anorganik',
'waktu_pemberian_pupuk' => 'waktu pemberian pupuk',
'waktu_pemberian_pupuk_lainnya' => 'waktu pemberian pupuk lainnya',
'cara_pemberian_pupuk' => 'cara pemberian pupuk',
'cara_pemberian_pupuk_lainnya' => 'cara pemberian pupuk lainnya',
]); ]);
return redirect()->route('petani.praktik-budidaya.edit', [$petani->id , $praktikBudidaya->id]) return redirect()->route('petani.praktik-budidaya.edit', [$petani->id , $praktikBudidaya->id])
@@ -411,6 +437,106 @@ class PraktikBudidayaController extends Controller
'estimasi_kehilangan_akibat_opt' => ['nullable', 'string', new Enum(EstimasiKehilanganHasil::class)], 'estimasi_kehilangan_akibat_opt' => ['nullable', 'string', new Enum(EstimasiKehilanganHasil::class)],
'estimasi_kehilangan_akibat_hama' => ['nullable', 'string', new Enum(EstimasiKehilanganHasil::class)], 'estimasi_kehilangan_akibat_hama' => ['nullable', 'string', new Enum(EstimasiKehilanganHasil::class)],
], [
'string' => ':attribute harus berupa teks.',
'integer' => ':attribute harus berupa angka.',
'numeric' => ':attribute harus berupa angka.',
'array' => ':attribute harus berupa daftar pilihan.',
'boolean' => ':attribute harus bernilai ya atau tidak.',
'enum' => 'Pilihan :attribute tidak valid.',
'teknik_pemangkasan.*.string' => 'Setiap pilihan teknik pemangkasan harus berupa teks.',
'kebiasaan_konservasi_tanah.*.string' => 'Setiap pilihan kebiasaan konservasi tanah harus berupa teks.',
], [
// 2.2 Persiapan Lahan & Penanaman
'tenaga_kerja' => 'tenaga kerja',
// 2.3 Praktik Pemangkasan & Penyerbukan
'frekuensi_pemangkasan_komoditas_utama' => 'frekuensi pemangkasan komoditas utama',
'teknik_pemangkasan' => 'teknik pemangkasan',
'teknik_pemangkasan.*' => 'pilihan teknik pemangkasan',
'teknik_pemangkasan_lainnya' => 'teknik pemangkasan lainnya',
'frekuensi_pemangkasan_pohon_penaung' => 'frekuensi pemangkasan pohon penaung',
'penyerbukan_manual' => 'penyerbukan manual',
'alasan_tidak_penyerbukan' => 'alasan tidak melakukan penyerbukan manual',
'alasan_tidak_penyerbukan_lainnya' => 'alasan lainnya tidak melakukan penyerbukan manual',
'tingkat_keberhasilan_penyerbukan' => 'tingkat keberhasilan penyerbukan',
// 2.4 Praktik Pemupukan
'pemberian_pupuk' => 'pemberian pupuk',
'jenis_pupuk' => 'jenis pupuk',
'frekuensi_pemupukan' => 'frekuensi pemupukan',
'frekuensi_pemupukan_lainnya' => 'frekuensi pemupukan lainnya',
'estimasi_dosis_pupuk_organik' => 'estimasi dosis pupuk organik',
'estimasi_dosis_pupuk_anorganik' => 'estimasi dosis pupuk anorganik',
'waktu_pemberian_pupuk' => 'waktu pemberian pupuk',
'waktu_pemberian_pupuk_lainnya' => 'waktu pemberian pupuk lainnya',
'cara_pemberian_pupuk' => 'cara pemberian pupuk',
'cara_pemberian_pupuk_lainnya' => 'cara pemberian pupuk lainnya',
// 2.5 Pengendalian OPT
'metode_penanganan_hama_penyakit' => 'metode penanganan hama dan penyakit',
'jenis_hama' => 'jenis hama',
'jenis_penyakit' => 'jenis penyakit',
'intensitas_serangan' => 'intensitas serangan',
'waktu_kemunculan_terparah' => 'waktu kemunculan terparah',
'metode_paling_sering_dilakukan' => 'metode yang paling sering dilakukan',
'volume_obat_obatan_permusim' => 'volume obat-obatan per musim',
// 2.6 Sanitasi Kebun
'frekuensi_sanitasi_lahan' => 'frekuensi sanitasi lahan',
'penanganan_sisa_buah_ranting' => 'penanganan sisa buah dan ranting',
'penanganan_gulma' => 'penanganan gulma',
// 2.7 Pengelolaan Air & Irigasi
'kondisi_pengelolaan_air_irigasi' => 'kondisi pengelolaan air dan irigasi',
'sumber_air' => 'sumber air',
'sumber_air_lainnya' => 'sumber air lainnya',
'sistem_irigasi' => 'sistem irigasi',
'sistem_irigasi_lainnya' => 'sistem irigasi lainnya',
'kebutuhan_air_permusim' => 'kebutuhan air per musim',
'kebiasaan_konservasi_tanah' => 'kebiasaan konservasi tanah',
'kebiasaan_konservasi_tanah.*' => 'pilihan kebiasaan konservasi tanah',
'pemahaman_manfaat_konservasi' => 'pemahaman manfaat konservasi',
// Biaya Produksi
'upah_tenaga_kerja' => 'upah tenaga kerja',
'biaya_bibit' => 'biaya bibit',
'biaya_pupuk' => 'biaya pupuk',
'biaya_pestisida' => 'biaya pestisida',
'biaya_sewa_alat' => 'biaya sewa alat',
'biaya_penyediaan_air' => 'biaya penyediaan air',
'biaya_lainnya' => 'biaya lainnya',
'total_estimasi_biaya_produksi' => 'total estimasi biaya produksi',
// Panen
'dasar_penentuan_panen' => 'dasar penentuan panen',
'frekuensi_panen_pertahun' => 'frekuensi panen per tahun',
'bulan_panen_utama' => 'bulan panen utama',
'hasil_komoditas_utama_permusim' => 'hasil komoditas utama per musim',
'hasil_komoditas_lainnya_permusim' => 'hasil komoditas lainnya per musim',
'disimpan_untuk_sendiri' => 'disimpan untuk sendiri',
'hasil_panen_disimpan' => 'hasil panen yang disimpan',
'tujuan_disimpan' => 'tujuan disimpan',
// Sortasi & Reject
'praktik_sortasi' => 'praktik sortasi',
'bentuk_sortasi' => 'bentuk sortasi',
'tingkat_reject' => 'tingkat reject',
'hasil_panen_reject' => 'hasil panen reject',
'tindakan_hasil_reject' => 'tindakan terhadap hasil reject',
// Biaya Panen
'upah_tenaga_panen' => 'upah tenaga panen',
'biaya_pengangkutan' => 'biaya pengangkutan',
'biaya_wadah_kemasan' => 'biaya wadah kemasan',
'biaya_sewa_alat_panen' => 'biaya sewa alat panen',
'biaya_panen_lainnya' => 'biaya panen lainnya',
'total_estimasi_biaya_panen' => 'total estimasi biaya panen',
// Kehilangan Hasil
'estimasi_kehilangan_akibat_opt' => 'estimasi kehilangan akibat OPT',
'estimasi_kehilangan_akibat_hama' => 'estimasi kehilangan akibat hama',
]); ]);
$dataPraktikBudidaya = []; $dataPraktikBudidaya = [];
$dataSurveyPanen = []; $dataSurveyPanen = [];
@@ -473,7 +599,7 @@ class PraktikBudidayaController extends Controller
'upah_tenaga_kerja' => $validatedData['upah_tenaga_kerja'] ?? null, 'upah_tenaga_kerja' => $validatedData['upah_tenaga_kerja'] ?? null,
'biaya_bibit' => $validatedData['biaya_bibit'] ?? null, 'biaya_bibit' => $validatedData['biaya_bibit'] ?? null,
'biaya_pupuk' => $validatedData['biaya_pupuk'] ?? null, 'biaya_pupuk' => $validatedData['biaya_pupuk'] ?? null,
'biaya_pestisida' => $validatedData['biaya_pestisida'] ?? null, 'biaya_obat_obatan' => $validatedData['biaya_pestisida'] ?? null,
'biaya_sewa_alat_produksi' => $validatedData['biaya_sewa_alat'] ?? null, 'biaya_sewa_alat_produksi' => $validatedData['biaya_sewa_alat'] ?? null,
'biaya_penyediaan_air' => $validatedData['biaya_penyediaan_air'] ?? null, 'biaya_penyediaan_air' => $validatedData['biaya_penyediaan_air'] ?? null,
'biaya_produksi_lainnya' => $validatedData['biaya_lainnya'] ?? null, 'biaya_produksi_lainnya' => $validatedData['biaya_lainnya'] ?? null,
+3 -3
View File
@@ -53,16 +53,16 @@ class PraktikBudidaya extends Model
'kondisi_pengelolaan_air', 'kondisi_pengelolaan_air',
'sumber_air', 'sumber_air',
'sistem_irigasi', 'sistem_irigasi',
'kebutuan_air_permusim', 'kebutuhan_air_permusim',
'kebiasaan_konservasi_tanah', 'kebiasaan_konservasi_tanah',
'pemahaman_manfaat_konservasi_tanah', 'pemahaman_manfaat_konservasi_tanah',
'upah_tenaga_kerja', 'upah_tenaga_kerja',
'biaya_bibit', 'biaya_bibit',
'biaya_pupuk', 'biaya_pupuk',
'biaya_obat_obatan', 'biaya_obat_obatan',
'biaya_sewa_alat', 'biaya_sewa_alat_produksi',
'biaya_penyediaan_air', 'biaya_penyediaan_air',
'biaya_lainnya', 'biaya_produksi_lainnya',
'total_estimasi_biaya_produksi', 'total_estimasi_biaya_produksi',
'created_by', 'created_by',
'updated_by', 'updated_by',
File diff suppressed because one or more lines are too long
+1
View File
@@ -70,6 +70,7 @@
<script src="{{ asset('assets/vendor/libs/@form-validation/bootstrap5.js') }}"></script> <script src="{{ asset('assets/vendor/libs/@form-validation/bootstrap5.js') }}"></script>
<script src="{{ asset('assets/vendor/libs/@form-validation/auto-focus.js') }}"></script> <script src="{{ asset('assets/vendor/libs/@form-validation/auto-focus.js') }}"></script>
<script src="{{ asset('assets/vendor/libs/cleave-zen/cleave-zen.js') }}"></script> <script src="{{ asset('assets/vendor/libs/cleave-zen/cleave-zen.js') }}"></script>
<script src="{{ asset('assets/vendor/libs/jquery-repeater/jquery-repeater.js') }}"></script>
<!-- Main JS --> <!-- Main JS -->
@@ -561,7 +561,7 @@
@error('metode_penanganan_hama_penyakit')<div class="error invalid-feedback">{{ $message }}</div>@enderror @error('metode_penanganan_hama_penyakit')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div> </div>
<div class="col-md-4 mb-4 form-control-validation"> <div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block fw-medium">Jenis Hama<span class="text-danger">*</span></label> <label class="form-label d-block fw-medium">Jenis Hama</label>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror" <input class="form-check-input @error('jenis_hama') is-invalid @enderror"
@@ -617,7 +617,7 @@
@enderror @enderror
</div> </div>
<div class="col-md-4 mb-4 form-control-validation"> <div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block fw-medium">Jenis Penyakit<span class="text-danger">*</span></label> <label class="form-label d-block fw-medium">Jenis Penyakit</label>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_penyakit') is-invalid @enderror" <input class="form-check-input @error('jenis_penyakit') is-invalid @enderror"
@@ -926,7 +926,7 @@
<label class="form-label d-block fw-medium">Kebiasaan Konservasi Tanah<span class="text-danger">*</span></label> <label class="form-label d-block fw-medium">Kebiasaan Konservasi Tanah<span class="text-danger">*</span></label>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror" <input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox" type="checkbox"
name="kebiasaan_konservasi_tanah[]" name="kebiasaan_konservasi_tanah[]"
value="Membuat pematang atau tanggul tanah di lahan miring supaya tanah tidak longsor ke bawah" value="Membuat pematang atau tanggul tanah di lahan miring supaya tanah tidak longsor ke bawah"
@@ -936,7 +936,7 @@
</div> </div>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror" <input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox" type="checkbox"
name="kebiasaan_konservasi_tanah[]" name="kebiasaan_konservasi_tanah[]"
value="Menumpuk daun kering/sisa tanaman di sekitar pohon" value="Menumpuk daun kering/sisa tanaman di sekitar pohon"
@@ -946,7 +946,7 @@
</div> </div>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror" <input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox" type="checkbox"
name="kebiasaan_konservasi_tanah[]" name="kebiasaan_konservasi_tanah[]"
value="Menanam tanaman lain di sela-sela komoditas utama untuk menutupi tanah" value="Menanam tanaman lain di sela-sela komoditas utama untuk menutupi tanah"
@@ -956,7 +956,7 @@
</div> </div>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror" <input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox" type="checkbox"
name="kebiasaan_konservasi_tanah[]" name="kebiasaan_konservasi_tanah[]"
value="Membuat lubang atau parit kecil untuk menampung air hujan" value="Membuat lubang atau parit kecil untuk menampung air hujan"
@@ -966,7 +966,7 @@
</div> </div>
<div class="form-check mt-2"> <div class="form-check mt-2">
<input class="form-check-input @error('jenis_hama') is-invalid @enderror" <input class="form-check-input @error('kebiasaan_konservasi_tanah') is-invalid @enderror"
type="checkbox" type="checkbox"
name="kebiasaan_konservasi_tanah[]" name="kebiasaan_konservasi_tanah[]"
value="Tidak ada yang seperti itu di kebun saya" value="Tidak ada yang seperti itu di kebun saya"
@@ -974,7 +974,7 @@
{{ in_array('Tidak ada yang seperti itu di kebun saya', old('kebiasaan_konservasi_tanah', $praktikBudidaya->kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}> {{ in_array('Tidak ada yang seperti itu di kebun saya', old('kebiasaan_konservasi_tanah', $praktikBudidaya->kebiasaan_konservasi_tanah ?? [])) ? 'checked' : '' }}>
<label class="form-check-label" for="konservasi_tanah_tidak_ada">Tidak ada yang seperti itu di kebun saya</label> <label class="form-check-label" for="konservasi_tanah_tidak_ada">Tidak ada yang seperti itu di kebun saya</label>
</div> </div>
@error('jenis_hama') @error('kebiasaan_konservasi_tanah')
<div class="error invalid-feedback d-block">{{ $message }}</div> <div class="error invalid-feedback d-block">{{ $message }}</div>
@enderror @enderror
</div> </div>
@@ -1066,7 +1066,7 @@
class="form-control rupiah-input @error('biaya_pestisida') is-invalid @enderror" class="form-control rupiah-input @error('biaya_pestisida') is-invalid @enderror"
id="biaya-pestisida" id="biaya-pestisida"
name="biaya_pestisida" name="biaya_pestisida"
value="{{ old('biaya_pestisida', filled($praktikBudidaya->biaya_pestisida) ? number_format($praktikBudidaya->biaya_pestisida, 0, ',', '.') : '') }}" value="{{ old('biaya_pestisida', filled($praktikBudidaya->biaya_obat_obatan) ? number_format($praktikBudidaya->biaya_obat_obatan, 0, ',', '.') : '') }}"
placeholder="Contoh: 150.000"> placeholder="Contoh: 150.000">
</div> </div>
@error('biaya_pestisida') @error('biaya_pestisida')
@@ -1135,7 +1135,8 @@
id="total-estimasi-biaya-produksi" id="total-estimasi-biaya-produksi"
name="total_estimasi_biaya_produksi" name="total_estimasi_biaya_produksi"
value="{{ old('total_estimasi_biaya_produksi', filled($praktikBudidaya->total_estimasi_biaya_produksi) ? number_format($praktikBudidaya->total_estimasi_biaya_produksi, 0, ',', '.') : '') }}" value="{{ old('total_estimasi_biaya_produksi', filled($praktikBudidaya->total_estimasi_biaya_produksi) ? number_format($praktikBudidaya->total_estimasi_biaya_produksi, 0, ',', '.') : '') }}"
placeholder="Contoh: 150.000"> placeholder="Otomatis terhitung"
readonly>
</div> </div>
@error('total_estimasi_biaya_produksi') @error('total_estimasi_biaya_produksi')
<div class="invalid-feedback d-block">{{ $message }}</div> <div class="invalid-feedback d-block">{{ $message }}</div>
@@ -1240,6 +1241,12 @@
<div class="invalid-feedback d-block">{{ $message }}</div> <div class="invalid-feedback d-block">{{ $message }}</div>
@enderror @enderror
</div> </div>
@php
$disimpanUntukSendiri = old(
'disimpan_untuk_sendiri',
$surveyPanen?->disimpan_untuk_sendiri
) == 1;
@endphp
<div class="col-md-4 mb-4 form-control-validation"> <div class="col-md-4 mb-4 form-control-validation">
<label class="form-label d-block">Disimpan Untuk Diri Sendiri<span class="text-danger">*</span></label> <label class="form-label d-block">Disimpan Untuk Diri Sendiri<span class="text-danger">*</span></label>
@@ -1248,6 +1255,7 @@
<input <input
type="checkbox" type="checkbox"
class="switch-input" class="switch-input"
id="disimpan-untuk-sendiri"
name="disimpan_untuk_sendiri" name="disimpan_untuk_sendiri"
value="1" value="1"
{{ old('disimpan_untuk_sendiri', $surveyPanen?->disimpan_untuk_sendiri) ? 'checked' : '' }}> {{ old('disimpan_untuk_sendiri', $surveyPanen?->disimpan_untuk_sendiri) ? 'checked' : '' }}>
@@ -1262,12 +1270,14 @@
</span> </span>
<span class="switch-label"> <span class="switch-label">
<span id="switch-text">Tidak, Semua di Jual</span> <span id="switch-text">
{{ $disimpanUntukSendiri ? 'Ya, Sebagian Disimpan' : 'Tidak, Semua Dijual' }}
</span>
</span> </span>
</label> </label>
</div> </div>
</div> </div>
<div class="row"> <div class="row{{ $disimpanUntukSendiri ? '' : 'd-none' }}" id="detail-disimpan-wrapper">
<div class="col-md-4 mb-4 form-control-validation"> <div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="hasil_panen_disimpan"> <label class="form-label" for="hasil_panen_disimpan">
Hasil Panen Disimpan<span class="text-danger">*</span> Hasil Panen Disimpan<span class="text-danger">*</span>
@@ -1766,6 +1776,116 @@
trigger.addEventListener('change', toggleInput); trigger.addEventListener('change', toggleInput);
toggleInput(); toggleInput();
}); });
const biayaProduksiFields = [
'upah-tenaga-kerja',
'biaya-bibit',
'biaya-pupuk',
'biaya-pestisida',
'biaya-sewa-alat',
'biaya-penyediaan-air',
'biaya-lainnya'
];
const biayaPanenFields = [
'upah-tenaga-panen',
'biaya-pengangkutan',
'biaya-wadah-kemasan',
'biaya-sewa-alat-panen',
'biaya-panen-lainnya'
];
const totalBiayaProduksiField = document.getElementById('total-estimasi-biaya-produksi');
const totalBiayaPanenField = document.getElementById('total-estimasi-biaya-panen');
function parseRupiah(value) {
if (!value) return 0;
return parseInt(value.replace(/[^0-9]/g, '')) || 0;
}
function formatRupiah(value) {
return value.toLocaleString('id-ID');
}
function hitungTotal(fields, totalField) {
if (!totalField) return;
let total = 0;
fields.forEach(function (id) {
const field = document.getElementById(id);
if (field) {
total += parseRupiah(field.value);
}
});
totalField.value = total > 0 ? formatRupiah(total) : '';
}
function hitungTotalBiayaProduksi() {
hitungTotal(biayaProduksiFields, totalBiayaProduksiField);
}
function hitungTotalBiayaPanen() {
hitungTotal(biayaPanenFields, totalBiayaPanenField);
}
biayaProduksiFields.forEach(function (id) {
const field = document.getElementById(id);
if (field) {
field.addEventListener('input', hitungTotalBiayaProduksi);
field.addEventListener('change', hitungTotalBiayaProduksi);
}
});
biayaPanenFields.forEach(function (id) {
const field = document.getElementById(id);
if (field) {
field.addEventListener('input', hitungTotalBiayaPanen);
field.addEventListener('change', hitungTotalBiayaPanen);
}
});
hitungTotalBiayaProduksi();
hitungTotalBiayaPanen();
const switchInput = document.getElementById('disimpan-untuk-sendiri');
const switchText = document.getElementById('switch-text');
const detailWrapper = document.getElementById('detail-disimpan-wrapper');
const hasilPanenDisimpan = document.getElementById('hasil-panen-disimpan');
const tujuanDisimpan = document.getElementById('tujuan-disimpan');
function toggleDetailDisimpan() {
const isChecked = switchInput.checked;
if (isChecked) {
detailWrapper.classList.remove('d-none');
hasilPanenDisimpan.disabled = false;
tujuanDisimpan.disabled = false;
switchText.textContent = 'Ya, Sebagian Disimpan';
} else {
detailWrapper.classList.add('d-none');
hasilPanenDisimpan.disabled = true;
tujuanDisimpan.disabled = true;
hasilPanenDisimpan.value = '';
tujuanDisimpan.value = '';
switchText.textContent = 'Tidak, Semua Dijual';
}
}
switchInput.addEventListener('change', toggleDetailDisimpan);
toggleDetailDisimpan();
}); });
</script> </script>
<script> <script>