Update BUMDes

This commit is contained in:
2026-11-05 19:20:05 +07:00
parent 9cdd178297
commit c55ff109a0
73 changed files with 6699 additions and 1548 deletions
+237 -15
View File
@@ -2,15 +2,49 @@
namespace App\Models\Bumdes;
use App\Enums\Bumdes\BentukProdukBumdes;
use App\Enums\Bumdes\CakupanLayananBumdes;
use App\Enums\Bumdes\DukunganDesaBumdes;
use App\Enums\Bumdes\FormatPembukuanBumdes;
use App\Enums\Bumdes\HambatanUsahaBumdes;
use App\Enums\Bumdes\HubunganPemasokBumdes;
use App\Enums\Bumdes\KemitraanEksternalBumdes;
use App\Enums\Bumdes\KeterlibatanKoordinasiBumdes;
use App\Enums\Bumdes\KondisiKeuanganBumdes;
use App\Enums\Bumdes\KontribusiPadesBumdes;
use App\Enums\Bumdes\LayananPetaniBumdes;
use App\Enums\Bumdes\MekanismePembayaranBumdes;
use App\Enums\Bumdes\ModelFermentasiBumdes;
use App\Enums\Bumdes\PencatatanPetaniBumdes;
use App\Enums\Bumdes\PenetapanHargaBeliBumdes;
use App\Enums\Bumdes\PengalamanOfftakerBumdes;
use App\Enums\Bumdes\PeranRantaiNilaiBumdes;
use App\Enums\Bumdes\PerjanjianPetaniBumdes;
use App\Enums\Bumdes\PertanggungjawabanMusdesBumdes;
use App\Enums\Bumdes\SaluranPenjualanBumdes;
use App\Enums\Bumdes\SifatAuditBumdes;
use App\Enums\Bumdes\StatusAdArtBumdes;
use App\Enums\Bumdes\StatusBadanHukumBumdes;
use App\Enums\Bumdes\StatusFermentasiBumdes;
use App\Enums\Bumdes\StatusKeaktifanBumdes;
use App\Enums\Bumdes\StatusKepemilikanAsetBumdes;
use App\Enums\Bumdes\StatusPembukuanBumdes;
use App\Enums\Bumdes\StatusPengeringanBumdes;
use App\Enums\Bumdes\StatusSortasiBumdes;
use App\Enums\Bumdes\StatusUnitKomoditasBumdes;
use App\Enums\Bumdes\SumberPasokanBumdes;
use App\Enums\Bumdes\UnitUsahaBumdes;
use App\Models\Concerns\CatatAktivitas;
use App\Models\Concerns\HasDeletedBy;
use App\Models\User;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
class KelembagaanAktorBumdes extends Model
{
use SoftDeletes, CatatAktivitas;
use CatatAktivitas, HasDeletedBy, SoftDeletes;
protected $table = 'bumdes_kelembagaan_aktor';
@@ -40,25 +74,213 @@ class KelembagaanAktorBumdes extends Model
'status_kepemilikan_aset',
'infrastruktur_pascapanen',
'infrastruktur_pascapanen_lainnya',
'ada_alokasi_desa',
'jumlah_alokasi_desa',
'dukungan_desa',
'dukungan_desa_lainnya',
'keterlibatan_koordinasi_desa',
'kemitraan_eksternal',
'kemitraan_eksternal_lainnya',
'status_pembukuan',
'format_pembukuan',
'pernah_audit',
'sifat_audit',
'pelaksana_audit',
'tahun_audit',
'pertanggungjawaban_musdes',
'tahun_laporan_musdes',
'kondisi_keuangan',
'kontribusi_pades',
'nominal_kontribusi_pades',
'cakupan_layanan',
'desa_lain_dilayani',
'jumlah_petani_desa_sendiri',
'jumlah_petani_desa_lain',
'pencatatan_petani',
'layanan_petani',
'layanan_petani_lainnya',
'peran_rantai_nilai',
'pengalaman_offtaker',
'nama_offtaker',
'tahun_mulai_offtaker',
'alasan_berhenti_offtaker',
'hambatan_usaha',
'hambatan_usaha_lainnya',
'melakukan_jual_beli',
'sumber_pasokan',
'sumber_pasokan_lainnya',
'bentuk_produk_dibeli',
'volume_pembelian',
'saluran_penjualan',
'saluran_penjualan_lainnya',
'bentuk_produk_dijual',
'volume_penjualan',
'hubungan_petani_pemasok',
'hubungan_petani_pemasok_lainnya',
'mekanisme_pembayaran_petani',
'mekanisme_pembayaran_lainnya',
'perjanjian_petani',
'harga_beli_petani',
'penetapan_harga_beli',
'penetapan_harga_beli_lainnya',
'melakukan_pengolahan_pascapanen',
'status_sortasi',
'kriteria_sortasi',
'status_pengeringan',
'cara_tempat_pengeringan',
'status_fermentasi',
'model_fermentasi',
'proses_fermentasi',
'premium_harga_pascapanen',
'created_by',
'updated_by',
'deleted_by',
];
protected $casts = [
'tahun_dasar_hukum' => 'integer',
'tahun_ad_art' => 'integer',
'unit_usaha' => 'array',
'pengurus_inti' => 'array',
'memiliki_staf' => 'boolean',
'jumlah_staf' => 'integer',
'modal_awal' => 'decimal:2',
'tahun_modal_awal' => 'integer',
'pernah_penambahan_modal' => 'boolean',
'penambahan_modal' => 'array',
'aset_produktif' => 'array',
'infrastruktur_pascapanen' => 'array',
];
protected function casts(): array
{
return [
'melakukan_pengolahan_pascapanen' => 'boolean',
'status_sortasi' => StatusSortasiBumdes::class,
'status_pengeringan' => StatusPengeringanBumdes::class,
'status_fermentasi' => StatusFermentasiBumdes::class,
'model_fermentasi' => AsEnumCollection::of(ModelFermentasiBumdes::class),
'premium_harga_pascapanen' => 'decimal:2',
'melakukan_jual_beli' => 'boolean',
'sumber_pasokan' => AsEnumCollection::of(SumberPasokanBumdes::class),
'bentuk_produk_dibeli' => AsEnumCollection::of(BentukProdukBumdes::class),
'volume_pembelian' => 'array',
'saluran_penjualan' => AsEnumCollection::of(SaluranPenjualanBumdes::class),
'bentuk_produk_dijual' => AsEnumCollection::of(BentukProdukBumdes::class),
'volume_penjualan' => 'array',
'hubungan_petani_pemasok' => AsEnumCollection::of(HubunganPemasokBumdes::class),
'mekanisme_pembayaran_petani' => MekanismePembayaranBumdes::class,
'perjanjian_petani' => PerjanjianPetaniBumdes::class,
'harga_beli_petani' => 'array',
'penetapan_harga_beli' => PenetapanHargaBeliBumdes::class,
'status_pembukuan' => StatusPembukuanBumdes::class,
'format_pembukuan' => FormatPembukuanBumdes::class,
'pernah_audit' => 'boolean',
'sifat_audit' => AsEnumCollection::of(SifatAuditBumdes::class),
'tahun_audit' => 'integer',
'pertanggungjawaban_musdes' => PertanggungjawabanMusdesBumdes::class,
'tahun_laporan_musdes' => 'integer',
'kondisi_keuangan' => KondisiKeuanganBumdes::class,
'kontribusi_pades' => KontribusiPadesBumdes::class,
'nominal_kontribusi_pades' => 'decimal:2',
'cakupan_layanan' => CakupanLayananBumdes::class,
'jumlah_petani_desa_sendiri' => 'integer',
'jumlah_petani_desa_lain' => 'integer',
'pencatatan_petani' => PencatatanPetaniBumdes::class,
'layanan_petani' => AsEnumCollection::of(LayananPetaniBumdes::class),
'peran_rantai_nilai' => PeranRantaiNilaiBumdes::class,
'pengalaman_offtaker' => PengalamanOfftakerBumdes::class,
'tahun_mulai_offtaker' => 'integer',
'hambatan_usaha' => AsEnumCollection::of(HambatanUsahaBumdes::class),
'ada_alokasi_desa' => 'boolean',
'jumlah_alokasi_desa' => 'decimal:2',
'dukungan_desa' => AsEnumCollection::of(DukunganDesaBumdes::class),
'keterlibatan_koordinasi_desa' => KeterlibatanKoordinasiBumdes::class,
'kemitraan_eksternal' => AsEnumCollection::of(KemitraanEksternalBumdes::class),
'status_badan_hukum' => StatusBadanHukumBumdes::class,
'status_keaktifan' => StatusKeaktifanBumdes::class,
'status_unit_komoditas' => StatusUnitKomoditasBumdes::class,
'status_ad_art' => StatusAdArtBumdes::class,
'status_kepemilikan_aset' => StatusKepemilikanAsetBumdes::class,
'tahun_dasar_hukum' => 'integer',
'tahun_ad_art' => 'integer',
'unit_usaha' => AsEnumCollection::of(UnitUsahaBumdes::class),
'pengurus_inti' => 'array',
'memiliki_staf' => 'boolean',
'jumlah_staf' => 'integer',
'modal_awal' => 'decimal:2',
'tahun_modal_awal' => 'integer',
'pernah_penambahan_modal' => 'boolean',
'penambahan_modal' => 'array',
'aset_produktif' => 'array',
'infrastruktur_pascapanen' => 'array',
];
}
public static function sectionFields(string $section): array
{
if ($section === 'rantai-nilai') {
return [
'melakukan_pengolahan_pascapanen',
'status_sortasi',
'kriteria_sortasi',
'status_pengeringan',
'cara_tempat_pengeringan',
'status_fermentasi',
'model_fermentasi',
'proses_fermentasi',
'premium_harga_pascapanen',
'melakukan_jual_beli',
'sumber_pasokan',
'sumber_pasokan_lainnya',
'bentuk_produk_dibeli',
'volume_pembelian',
'saluran_penjualan',
'saluran_penjualan_lainnya',
'bentuk_produk_dijual',
'volume_penjualan',
'hubungan_petani_pemasok',
'hubungan_petani_pemasok_lainnya',
'mekanisme_pembayaran_petani',
'mekanisme_pembayaran_lainnya',
'perjanjian_petani',
'harga_beli_petani',
'penetapan_harga_beli',
'penetapan_harga_beli_lainnya',
];
}
if ($section === 'profil') {
return [
'status_keaktifan', 'alasan_tidak_aktif', 'pengurus_inti', 'memiliki_staf',
'jumlah_staf', 'unit_usaha_staf',
];
}
return $section === 'operasional' ? [
'modal_awal', 'tahun_modal_awal',
'pernah_penambahan_modal', 'penambahan_modal', 'aset_produktif',
'aset_produktif_lainnya', 'status_kepemilikan_aset', 'infrastruktur_pascapanen',
'infrastruktur_pascapanen_lainnya',
'ada_alokasi_desa', 'jumlah_alokasi_desa', 'dukungan_desa',
'dukungan_desa_lainnya', 'keterlibatan_koordinasi_desa',
'kemitraan_eksternal', 'kemitraan_eksternal_lainnya',
'status_pembukuan',
'format_pembukuan',
'pernah_audit',
'sifat_audit',
'pelaksana_audit',
'tahun_audit',
'pertanggungjawaban_musdes',
'tahun_laporan_musdes',
'kondisi_keuangan',
'kontribusi_pades',
'nominal_kontribusi_pades',
'cakupan_layanan',
'desa_lain_dilayani',
'jumlah_petani_desa_sendiri',
'jumlah_petani_desa_lain',
'pencatatan_petani',
'layanan_petani',
'layanan_petani_lainnya',
'peran_rantai_nilai',
'pengalaman_offtaker',
'nama_offtaker',
'tahun_mulai_offtaker',
'alasan_berhenti_offtaker',
'hambatan_usaha',
'hambatan_usaha_lainnya',
] : [
'status_badan_hukum', 'nomor_dasar_hukum', 'tahun_dasar_hukum', 'unit_usaha',
'unit_usaha_jasa_lainnya', 'status_unit_komoditas', 'nama_unit_komoditas',
'status_ad_art', 'tahun_ad_art',
];
}
public function pengurusBumdes(): BelongsTo
{