Update Koperasi

This commit is contained in:
2026-11-06 22:38:45 +07:00
parent 6232b28e11
commit cb36682d9e
79 changed files with 4639 additions and 1378 deletions
+107 -13
View File
@@ -2,27 +2,60 @@
namespace App\Models\Koperasi;
use App\Enums\Koperasi\AlasanPinjamanKoperasi;
use App\Enums\Koperasi\BentukPembayaranKoperasi;
use App\Enums\Koperasi\BentukProdukKoperasi;
use App\Enums\Koperasi\EfektivitasSanksiKoperasi;
use App\Enums\Koperasi\FaktorManajemenKoperasi;
use App\Enums\Koperasi\FasilitasKoperasi;
use App\Enums\Koperasi\FokusKomoditasKoperasi;
use App\Enums\Koperasi\FormatPembukuanKoperasi;
use App\Enums\Koperasi\FrekuensiPertemuanKoperasi;
use App\Enums\Koperasi\HubunganPemasokKoperasi;
use App\Enums\Koperasi\JawabanYaTidakKoperasi;
use App\Enums\Koperasi\KetersediaanKoperasi;
use App\Enums\Koperasi\KomoditasAgregasiKoperasi;
use App\Enums\Koperasi\LayananKoperasi;
use App\Enums\Koperasi\MekanismePembayaranKoperasi;
use App\Enums\Koperasi\ModelFermentasiKoperasi;
use App\Enums\Koperasi\PenetapanHargaKoperasi;
use App\Enums\Koperasi\PeranRantaiNilaiKoperasi;
use App\Enums\Koperasi\PerjanjianPetaniKoperasi;
use App\Enums\Koperasi\PosisiKoperasi;
use App\Enums\Koperasi\PraktikFermentasiKoperasi;
use App\Enums\Koperasi\PraktikPengeringanKoperasi;
use App\Enums\Koperasi\PraktikSortasiKoperasi;
use App\Enums\Koperasi\SkalaOperasiKoperasi;
use App\Enums\Koperasi\StatusAdArtKoperasi;
use App\Enums\Koperasi\StatusPembukuanKoperasi;
use App\Enums\Koperasi\SumberPasokanKoperasi;
use App\Enums\Koperasi\TingkatKreditMacetKoperasi;
use App\Enums\Koperasi\TujuanPenjualanKoperasi;
use App\Models\Concerns\CatatAktivitas;
use App\Models\User;
use App\Models\Wilayah\DesaKelurahan;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class PengurusKoperasi extends Model
{
use CatatAktivitas;
protected $table = 'pengurus_koperasi';
protected $fillable = [
// Profil Dassar
'nama_lengkap', 'posisi_dalam_koperasi', 'tahun_bergabung',
'no_hp', 'alamat_tinggal',
// Profil responden
'nama_lengkap', 'posisi_dalam_koperasi', 'tahun_bergabung',
'no_hp', 'alamat_tinggal',
// Profil Koperasi
'nama_koperasi', 'jenis_koperasi', 'alamat_koperasi',
'nama_koperasi', 'jenis_koperasi', 'alamat_koperasi', 'desa_kelurahan_id', 'created_by',
'skala_operasi', 'tahun_berdiri',
// Anggota & Pengurus
'jumlah_anggota_awal', 'jumlah_anggota_dewasa', 'jumlah_anggota_anak', 'jumlah_pengurus',
// SHU
'shu_2025', 'shu_2024', 'shu_2023',
@@ -44,14 +77,14 @@ class PengurusKoperasi extends Model
'tujuan_penjualan', 'tujuan_penjualan_lainnya', 'bentuk_penjualan',
'volume_jual_sekarang', 'volume_jual_1_tahun', 'volume_jual_2_tahun',
'sifat_hubungan_bisnis', 'sifat_hubungan_lainnya', 'mekanisme_pembayaran', 'status_perjanjian_tertulis',
// Harga Komoditas
'harga_segar_sekarang', 'harga_segar_1_tahun', 'harga_segar_2_tahun',
'harga_basah_sekarang', 'harga_basah_1_tahun', 'harga_basah_2_tahun',
'harga_kering_sekarang', 'harga_kering_1_tahun', 'harga_kering_2_tahun',
'harga_fermentasi_sekarang', 'harga_fermentasi_1_tahun', 'harga_fermentasi_2_tahun',
'cara_menetapkan_harga_pasar', 'cara_menetapkan_harga_lainnya',
'cara_menetapkan_harga_pasar', 'cara_menetapkan_harga_lainnya',
// Praktik Kualitas & Pascapanen
'praktik_sortasi', 'standar_sortasi', 'praktik_pengeringan', 'cara_pengeringan',
'praktik_fermentasi', 'model_fermentasi', 'proses_fermentasi',
@@ -63,6 +96,67 @@ class PengurusKoperasi extends Model
'bentuk_pembayaran_barang', 'bentuk_pembayaran_lainnya', 'perhitungan_harga_pasar', 'alasan_bukan_harga_pasar',
// PENILAIAN ENUMERATOR
'enum_potensi', 'enum_alasan_potensi', 'enum_kebutuhan', 'enum_kebutuhan_lain', 'enum_keterbukaan'
'enum_potensi', 'enum_alasan_potensi', 'enum_kebutuhan', 'enum_kebutuhan_lain', 'enum_keterbukaan',
];
}
protected function casts(): array
{
return [
'alasan_pinjaman' => AsEnumCollection::of(AlasanPinjamanKoperasi::class),
'bentuk_pembayaran_barang' => AsEnumCollection::of(BentukPembayaranKoperasi::class),
'pembayaran_selain_uang' => KetersediaanKoperasi::class,
'perhitungan_harga_pasar' => JawabanYaTidakKoperasi::class,
'posisi_dalam_koperasi' => PosisiKoperasi::class,
'skala_operasi' => SkalaOperasiKoperasi::class,
'fokus_komoditas' => FokusKomoditasKoperasi::class,
'mekanisme_pembayaran' => MekanismePembayaranKoperasi::class,
'status_perjanjian_tertulis' => PerjanjianPetaniKoperasi::class,
'praktik_sortasi' => PraktikSortasiKoperasi::class,
'praktik_pengeringan' => PraktikPengeringanKoperasi::class,
'praktik_fermentasi' => PraktikFermentasiKoperasi::class,
'sumber_pasokan' => AsEnumCollection::of(SumberPasokanKoperasi::class),
'bentuk_pembelian' => AsEnumCollection::of(BentukProdukKoperasi::class),
'tujuan_penjualan' => AsEnumCollection::of(TujuanPenjualanKoperasi::class),
'bentuk_penjualan' => AsEnumCollection::of(BentukProdukKoperasi::class),
'sifat_hubungan_bisnis' => AsEnumCollection::of(HubunganPemasokKoperasi::class),
'cara_menetapkan_harga_pasar' => AsEnumCollection::of(PenetapanHargaKoperasi::class),
'model_fermentasi' => AsEnumCollection::of(ModelFermentasiKoperasi::class),
'ad_art' => StatusAdArtKoperasi::class,
'pelatihan_produksi' => JawabanYaTidakKoperasi::class,
'pelatihan_pascapanen' => JawabanYaTidakKoperasi::class,
'pelatihan_pengolahan' => JawabanYaTidakKoperasi::class,
'pelatihan_keuangan' => JawabanYaTidakKoperasi::class,
'pelatihan_pemasaran' => JawabanYaTidakKoperasi::class,
'status_pembukuan' => StatusPembukuanKoperasi::class,
'format_pembukuan' => FormatPembukuanKoperasi::class,
'pertemuan_rutin' => FrekuensiPertemuanKoperasi::class,
'kasus_kredit_macet' => TingkatKreditMacetKoperasi::class,
'sanksi_kredit_macet' => KetersediaanKoperasi::class,
'efektivitas_sanksi' => EfektivitasSanksiKoperasi::class,
'pengolahan_lanjutan' => JawabanYaTidakKoperasi::class,
'kontrak_offtaker' => KetersediaanKoperasi::class,
'layanan_koperasi' => AsEnumCollection::of(LayananKoperasi::class),
'faktor_manajemen' => AsEnumCollection::of(FaktorManajemenKoperasi::class),
'keterlibatan_rantai_nilai' => AsEnumCollection::of(PeranRantaiNilaiKoperasi::class),
'agregasi_komoditas' => AsEnumCollection::of(KomoditasAgregasiKoperasi::class),
'fasilitas_koperasi' => AsEnumCollection::of(FasilitasKoperasi::class),
];
}
public function profilLengkap(): bool
{
return $this->exists && collect([
'nama_lengkap', 'posisi_dalam_koperasi', 'nama_koperasi', 'jenis_koperasi', 'skala_operasi',
])->every(fn ($field) => filled($this->getAttributes()[$field] ?? null));
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function desaKelurahan(): BelongsTo
{
return $this->belongsTo(DesaKelurahan::class, 'desa_kelurahan_id');
}
}