388 lines
16 KiB
PHP
388 lines
16 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
use Illuminate\Database\Seeder;
|
|
use App\Models\MasterParameter;
|
|
use App\Models\BuildingFunction;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Carbon\Carbon;
|
|
|
|
class MasterParameterSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$now = Carbon::now();
|
|
|
|
// 1. General Parameters (Parameter Umum)
|
|
$generalParameters = [
|
|
[
|
|
'parameter_code' => 'luas_bangunan',
|
|
'parameter_name' => 'Luas Bangunan',
|
|
'default_value' => 0.000000,
|
|
'unit' => 'm²',
|
|
'description' => 'Luas total bangunan dalam meter persegi'
|
|
],
|
|
[
|
|
'parameter_code' => 'tarif_dasar',
|
|
'parameter_name' => 'Tarif Dasar',
|
|
'default_value' => 7035000.000000,
|
|
'unit' => 'Rupiah',
|
|
'description' => 'Tarif dasar retribusi per meter persegi (7.035.000)'
|
|
],
|
|
[
|
|
'parameter_code' => 'koefisien_dasar',
|
|
'parameter_name' => 'Koefisien Dasar',
|
|
'default_value' => 1.000000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Koefisien dasar perhitungan'
|
|
]
|
|
];
|
|
|
|
// 2. IP Ketinggian Parameters per Lantai (Data dari tabel)
|
|
$floorHeightParameters = [
|
|
[
|
|
'parameter_code' => 'ip_ketinggian_1',
|
|
'parameter_name' => 'IP Ketinggian Lantai 1',
|
|
'default_value' => 1.000000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks ketinggian untuk lantai 1'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_ketinggian_2',
|
|
'parameter_name' => 'IP Ketinggian Lantai 2',
|
|
'default_value' => 1.090000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks ketinggian untuk lantai 2'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_ketinggian_3',
|
|
'parameter_name' => 'IP Ketinggian Lantai 3',
|
|
'default_value' => 1.120000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks ketinggian untuk lantai 3'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_ketinggian_4',
|
|
'parameter_name' => 'IP Ketinggian Lantai 4',
|
|
'default_value' => 1.135000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks ketinggian untuk lantai 4'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_ketinggian_5',
|
|
'parameter_name' => 'IP Ketinggian Lantai 5',
|
|
'default_value' => 1.162000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks ketinggian untuk lantai 5'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_ketinggian_6',
|
|
'parameter_name' => 'IP Ketinggian Lantai 6',
|
|
'default_value' => 1.197000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks ketinggian untuk lantai 6'
|
|
]
|
|
];
|
|
|
|
// 3. Building Function Specific Parameters (Data dari tabel)
|
|
$buildingFunctionParameters = [
|
|
// FUNGSI KEAGAMAAN - Bebas retribusi
|
|
[
|
|
'parameter_code' => 'fungsi_keagamaan',
|
|
'parameter_name' => 'Fungsi Bangunan Keagamaan',
|
|
'default_value' => 0.000000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi bangunan keagamaan (bebas retribusi)'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_keagamaan',
|
|
'parameter_name' => 'IP Permanen Keagamaan',
|
|
'default_value' => 0.000000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk bangunan keagamaan'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_keagamaan',
|
|
'parameter_name' => 'IP Kompleksitas Keagamaan',
|
|
'default_value' => 0.000000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk bangunan keagamaan'
|
|
],
|
|
|
|
// FUNGSI SOSIAL BUDAYA - 0.3
|
|
[
|
|
'parameter_code' => 'fungsi_sosial_budaya',
|
|
'parameter_name' => 'Fungsi Bangunan Sosial Budaya',
|
|
'default_value' => 0.300000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi bangunan sosial budaya'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_sosial_budaya',
|
|
'parameter_name' => 'IP Permanen Sosial Budaya',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk bangunan sosial budaya'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_sosial_budaya',
|
|
'parameter_name' => 'IP Kompleksitas Sosial Budaya',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk bangunan sosial budaya'
|
|
],
|
|
|
|
// CAMPURAN KECIL - 0.6
|
|
[
|
|
'parameter_code' => 'fungsi_campuran_kecil',
|
|
'parameter_name' => 'Fungsi Bangunan Campuran Kecil',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi bangunan campuran kecil'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_campuran_kecil',
|
|
'parameter_name' => 'IP Permanen Campuran Kecil',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk bangunan campuran kecil'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_campuran_kecil',
|
|
'parameter_name' => 'IP Kompleksitas Campuran Kecil',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk bangunan campuran kecil'
|
|
],
|
|
|
|
// CAMPURAN BESAR - 0.8
|
|
[
|
|
'parameter_code' => 'fungsi_campuran_besar',
|
|
'parameter_name' => 'Fungsi Bangunan Campuran Besar',
|
|
'default_value' => 0.800000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi bangunan campuran besar'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_campuran_besar',
|
|
'parameter_name' => 'IP Permanen Campuran Besar',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk bangunan campuran besar'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_campuran_besar',
|
|
'parameter_name' => 'IP Kompleksitas Campuran Besar',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk bangunan campuran besar'
|
|
],
|
|
|
|
// UMKM - 0.5
|
|
[
|
|
'parameter_code' => 'fungsi_umkm',
|
|
'parameter_name' => 'Fungsi Bangunan UMKM',
|
|
'default_value' => 0.500000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi bangunan UMKM'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_umkm',
|
|
'parameter_name' => 'IP Permanen UMKM',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk bangunan UMKM'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_umkm',
|
|
'parameter_name' => 'IP Kompleksitas UMKM',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk bangunan UMKM'
|
|
],
|
|
|
|
// USAHA BESAR - 0.7
|
|
[
|
|
'parameter_code' => 'fungsi_usaha_besar',
|
|
'parameter_name' => 'Fungsi Bangunan Usaha Besar',
|
|
'default_value' => 0.700000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi bangunan usaha besar'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_usaha_besar',
|
|
'parameter_name' => 'IP Permanen Usaha Besar',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk bangunan usaha besar'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_usaha_besar',
|
|
'parameter_name' => 'IP Kompleksitas Usaha Besar',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk bangunan usaha besar'
|
|
],
|
|
|
|
// HUNIAN SEDERHANA - 0.15
|
|
[
|
|
'parameter_code' => 'fungsi_hunian_sederhana',
|
|
'parameter_name' => 'Fungsi Hunian Sederhana',
|
|
'default_value' => 0.150000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi hunian sederhana'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_hunian_sederhana',
|
|
'parameter_name' => 'IP Permanen Hunian Sederhana',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk hunian sederhana'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_hunian_sederhana',
|
|
'parameter_name' => 'IP Kompleksitas Hunian Sederhana',
|
|
'default_value' => 0.300000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk hunian sederhana (0.3)'
|
|
],
|
|
|
|
// HUNIAN TIDAK SEDERHANA - 0.17
|
|
[
|
|
'parameter_code' => 'fungsi_hunian_tidak_sederhana',
|
|
'parameter_name' => 'Fungsi Hunian Tidak Sederhana',
|
|
'default_value' => 0.170000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Parameter fungsi hunian tidak sederhana'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_permanen_hunian_tidak_sederhana',
|
|
'parameter_name' => 'IP Permanen Hunian Tidak Sederhana',
|
|
'default_value' => 0.400000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Permanen untuk hunian tidak sederhana'
|
|
],
|
|
[
|
|
'parameter_code' => 'ip_kompleksitas_hunian_tidak_sederhana',
|
|
'parameter_name' => 'IP Kompleksitas Hunian Tidak Sederhana',
|
|
'default_value' => 0.600000,
|
|
'unit' => 'decimal',
|
|
'description' => 'IP Kompleksitas untuk hunian tidak sederhana'
|
|
]
|
|
];
|
|
|
|
// 4. Indeks Lokalitas Parameters
|
|
$localityParameters = [
|
|
[
|
|
'parameter_code' => 'indeks_lokalitas_03',
|
|
'parameter_name' => 'Indeks Lokalitas 0.3%',
|
|
'default_value' => 0.003000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks lokalitas 0.3% (untuk bangunan tertentu)'
|
|
],
|
|
[
|
|
'parameter_code' => 'indeks_lokalitas_04',
|
|
'parameter_name' => 'Indeks Lokalitas 0.4%',
|
|
'default_value' => 0.004000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks lokalitas 0.4% (untuk hunian sederhana dan tidak sederhana)'
|
|
],
|
|
[
|
|
'parameter_code' => 'indeks_lokalitas_05',
|
|
'parameter_name' => 'Indeks Lokalitas 0.5%',
|
|
'default_value' => 0.005000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Indeks lokalitas 0.5% (untuk bangunan komersial)'
|
|
]
|
|
];
|
|
|
|
// 5. Multiplier Parameters
|
|
$multiplierParameters = [
|
|
[
|
|
'parameter_code' => 'multiplier_prasarana',
|
|
'parameter_name' => 'Multiplier Prasarana',
|
|
'default_value' => 0.500000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Multiplier untuk perhitungan prasarana (50%)'
|
|
],
|
|
[
|
|
'parameter_code' => 'multiplier_ketinggian',
|
|
'parameter_name' => 'Multiplier Ketinggian',
|
|
'default_value' => 0.500000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Multiplier untuk indeks ketinggian dalam formula (0.5)'
|
|
]
|
|
];
|
|
|
|
// 4. Additional Parameters (Parameter Tambahan)
|
|
$additionalParameters = [
|
|
[
|
|
'parameter_code' => 'asumsi_prasarana',
|
|
'parameter_name' => 'Asumsi Prasarana',
|
|
'default_value' => 0.500000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Persentase asumsi prasarana dalam perhitungan retribusi'
|
|
],
|
|
[
|
|
'parameter_code' => 'multiplier_ketinggian',
|
|
'parameter_name' => 'Multiplier Ketinggian',
|
|
'default_value' => 0.500000,
|
|
'unit' => 'decimal',
|
|
'description' => 'Multiplier untuk perhitungan ketinggian (0.5 dalam rumus Excel)'
|
|
]
|
|
];
|
|
|
|
// Combine all parameters
|
|
$allParameters = array_merge(
|
|
$generalParameters,
|
|
$floorHeightParameters,
|
|
$buildingFunctionParameters,
|
|
$localityParameters,
|
|
$multiplierParameters,
|
|
$additionalParameters
|
|
);
|
|
|
|
// Insert parameters
|
|
foreach ($allParameters as $param) {
|
|
DB::table('master_parameters')->updateOrInsert(
|
|
['parameter_code' => $param['parameter_code']],
|
|
array_merge($param, [
|
|
'created_at' => $now,
|
|
'updated_at' => $now
|
|
])
|
|
);
|
|
}
|
|
|
|
// Summary output
|
|
$this->command->info('Master Parameters seeded successfully!');
|
|
$this->command->info('=== SUMMARY ===');
|
|
$this->command->info('General Parameters: ' . count($generalParameters));
|
|
$this->command->info('Floor Height Parameters: ' . count($floorHeightParameters));
|
|
$this->command->info('Building Function Parameters: ' . count($buildingFunctionParameters));
|
|
$this->command->info('Locality Parameters: ' . count($localityParameters));
|
|
$this->command->info('Multiplier Parameters: ' . count($multiplierParameters));
|
|
$this->command->info('Additional Parameters: ' . count($additionalParameters));
|
|
$this->command->info('Total Parameters: ' . count($allParameters));
|
|
|
|
// Display parameter mapping
|
|
$this->command->info('=== BUILDING FUNCTION PARAMETER MAPPING ===');
|
|
$this->command->info('KEAGAMAAN: Fungsi=0.000, IP_Permanen=0.000, IP_Kompleksitas=0.000');
|
|
$this->command->info('SOSIAL_BUDAYA: Fungsi=0.300, IP_Permanen=0.400, IP_Kompleksitas=0.600');
|
|
$this->command->info('CAMPURAN_KECIL: Fungsi=0.600, IP_Permanen=0.400, IP_Kompleksitas=0.600');
|
|
$this->command->info('CAMPURAN_BESAR: Fungsi=0.800, IP_Permanen=0.400, IP_Kompleksitas=0.600');
|
|
$this->command->info('UMKM: Fungsi=0.500, IP_Permanen=0.400, IP_Kompleksitas=0.600');
|
|
$this->command->info('USAHA_BESAR: Fungsi=0.700, IP_Permanen=0.400, IP_Kompleksitas=0.600');
|
|
$this->command->info('HUNIAN_SEDERHANA: Fungsi=0.150, IP_Permanen=0.400, IP_Kompleksitas=0.300');
|
|
$this->command->info('HUNIAN_TIDAK_SEDERHANA: Fungsi=0.170, IP_Permanen=0.400, IP_Kompleksitas=0.600');
|
|
|
|
$this->command->info('=== IP KETINGGIAN PER LANTAI ===');
|
|
$this->command->info('Lantai 1: 1.000, Lantai 2: 1.090, Lantai 3: 1.120');
|
|
$this->command->info('Lantai 4: 1.135, Lantai 5: 1.162, Lantai 6: 1.197');
|
|
}
|
|
}
|