'Panen Terakhir', '1_tahun' => 'Tahun Lalu', '2_tahun' => 'Dua Tahun Lalu']; public function dependencies(): array { $when = fn (string $field, array $values) => ['field' => $field, 'values' => $values, 'source' => 'form']; $buyers = array_values(array_map(fn ($case) => $case->value, array_filter( TujuanPenjualanKoperasi::cases(), fn ($case) => $case !== TujuanPenjualanKoperasi::BELUM_MENJUAL, ))); $rules = [ 'sumber_pasokan_lainnya' => [$when('sumber_pasokan', [SumberPasokanKoperasi::LAINNYA->value])], 'tujuan_penjualan_lainnya' => [$when('tujuan_penjualan', [TujuanPenjualanKoperasi::LAINNYA->value])], 'sifat_hubungan_lainnya' => [$when('sifat_hubungan_bisnis', [HubunganPemasokKoperasi::LAINNYA->value])], 'cara_menetapkan_harga_lainnya' => [$when('cara_menetapkan_harga_pasar', [PenetapanHargaKoperasi::LAINNYA->value])], 'bentuk_penjualan' => [$when('tujuan_penjualan', $buyers)], ]; foreach (array_keys(self::PERIODS) as $period) { $rules['volume_jual_'.$period] = [$when('tujuan_penjualan', $buyers)]; } return $rules; } public function requiredFields(): array { return ['sumber_pasokan_lainnya', 'tujuan_penjualan_lainnya', 'sifat_hubungan_lainnya', 'cara_menetapkan_harga_lainnya']; } protected function arrayFields(): array { return ['bentuk_penjualan']; } public function sectionFields(BagianRantaiNilaiKoperasi $section): array { if ($section === BagianRantaiNilaiKoperasi::HARGA) { $fields = ['cara_menetapkan_harga_pasar', 'cara_menetapkan_harga_lainnya']; foreach (BentukProdukKoperasi::cases() as $product) { foreach (array_keys(self::PERIODS) as $period) { $fields[] = 'harga_'.$product->pricePrefix().'_'.$period; } } return $fields; } $fields = [ 'sumber_pasokan', 'sumber_pasokan_lainnya', 'bentuk_pembelian', 'tujuan_penjualan', 'tujuan_penjualan_lainnya', 'bentuk_penjualan', 'sifat_hubungan_bisnis', 'sifat_hubungan_lainnya', 'mekanisme_pembayaran', 'status_perjanjian_tertulis', ]; foreach (array_keys(self::PERIODS) as $period) { $fields[] = 'volume_beli_'.$period; $fields[] = 'volume_jual_'.$period; } return $fields; } }