107 lines
7.1 KiB
PHP
107 lines
7.1 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
use Illuminate\Database\Seeder;
|
|
use App\Models\MasterFormula;
|
|
use App\Models\MasterParameter;
|
|
use App\Models\FormulaParameter;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Carbon\Carbon;
|
|
|
|
class MasterFormulaSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$now = Carbon::now();
|
|
|
|
// 1. Master Formulas
|
|
$formulas = [
|
|
[
|
|
'formula_code' => 'RETRIBUSI_DASAR',
|
|
'formula_name' => 'Formula Retribusi Dasar',
|
|
'formula_expression' => '{koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_bangunan} * ({ip_permanen} + {ip_kompleksitas} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})',
|
|
'formula_category' => 'basic',
|
|
'description' => 'Formula dasar untuk perhitungan retribusi PBG tanpa prasarana',
|
|
'usage_notes' => 'Menggunakan rumus: 1*D5*(N5*tarif_dasar*H5*1) dimana H5=E5*(F5+G5+(0.5*H3))'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_DENGAN_PRASARANA',
|
|
'formula_name' => 'Formula Retribusi dengan Prasarana',
|
|
'formula_expression' => '({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_bangunan} * ({ip_permanen} + {ip_kompleksitas} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})) + ({asumsi_prasarana} * ({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_bangunan} * ({ip_permanen} + {ip_kompleksitas} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})))',
|
|
'formula_category' => 'complete',
|
|
'description' => 'Formula lengkap retribusi PBG termasuk prasarana',
|
|
'usage_notes' => 'Formula utama: (dasar) + (prasarana * dasar). Sesuai rumus Excel yang diberikan'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_BEBAS',
|
|
'formula_name' => 'Formula Retribusi Bebas',
|
|
'formula_expression' => '0',
|
|
'formula_category' => 'free',
|
|
'description' => 'Formula untuk bangunan yang bebas retribusi',
|
|
'usage_notes' => 'Digunakan untuk bangunan keagamaan dan MBR'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_PER_LANTAI',
|
|
'formula_name' => 'Formula Perhitungan per Lantai (H5)',
|
|
'formula_expression' => '{fungsi_bangunan} * ({ip_permanen} + {ip_kompleksitas} + ({multiplier_ketinggian} * {ip_ketinggian}))',
|
|
'formula_category' => 'component',
|
|
'description' => 'Formula untuk menghitung nilai per lantai (H5 dalam Excel)',
|
|
'usage_notes' => 'Rumus: E5*(F5+G5+(0.5*H3)) - komponen perhitungan per lantai'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_HUNIAN_SEDERHANA',
|
|
'formula_name' => 'Formula Retribusi Hunian Sederhana',
|
|
'formula_expression' => '({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_hunian_sederhana} * ({ip_permanen_hunian_sederhana} + {ip_kompleksitas_hunian_sederhana} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})) + ({asumsi_prasarana} * ({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_hunian_sederhana} * ({ip_permanen_hunian_sederhana} + {ip_kompleksitas_hunian_sederhana} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})))',
|
|
'formula_category' => 'residential',
|
|
'description' => 'Formula khusus untuk hunian sederhana dengan IP kompleksitas 0.3',
|
|
'usage_notes' => 'Menggunakan parameter khusus hunian sederhana'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_HUNIAN_TIDAK_SEDERHANA',
|
|
'formula_name' => 'Formula Retribusi Hunian Tidak Sederhana',
|
|
'formula_expression' => '({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_hunian_tidak_sederhana} * ({ip_permanen_hunian_tidak_sederhana} + {ip_kompleksitas_hunian_tidak_sederhana} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})) + ({asumsi_prasarana} * ({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_hunian_tidak_sederhana} * ({ip_permanen_hunian_tidak_sederhana} + {ip_kompleksitas_hunian_tidak_sederhana} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})))',
|
|
'formula_category' => 'residential',
|
|
'description' => 'Formula khusus untuk hunian tidak sederhana',
|
|
'usage_notes' => 'Menggunakan parameter khusus hunian tidak sederhana'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_SOSIAL_BUDAYA',
|
|
'formula_name' => 'Formula Retribusi Sosial Budaya',
|
|
'formula_expression' => '({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_sosial_budaya} * ({ip_permanen_sosial_budaya} + {ip_kompleksitas_sosial_budaya} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})) + ({asumsi_prasarana} * ({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_sosial_budaya} * ({ip_permanen_sosial_budaya} + {ip_kompleksitas_sosial_budaya} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})))',
|
|
'formula_category' => 'social',
|
|
'description' => 'Formula khusus untuk bangunan sosial budaya',
|
|
'usage_notes' => 'Menggunakan parameter fungsi sosial budaya'
|
|
],
|
|
[
|
|
'formula_code' => 'RETRIBUSI_USAHA',
|
|
'formula_name' => 'Formula Retribusi Usaha',
|
|
'formula_expression' => '({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_usaha_besar} * ({ip_permanen_usaha_besar} + {ip_kompleksitas_usaha_besar} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})) + ({asumsi_prasarana} * ({koefisien_dasar} * {luas_bangunan} * ({indeks_lokalitas} * {tarif_dasar} * ({fungsi_usaha_besar} * ({ip_permanen_usaha_besar} + {ip_kompleksitas_usaha_besar} + ({multiplier_ketinggian} * {ip_ketinggian}))) * {koefisien_dasar})))',
|
|
'formula_category' => 'commercial',
|
|
'description' => 'Formula khusus untuk bangunan usaha',
|
|
'usage_notes' => 'Menggunakan parameter fungsi usaha besar'
|
|
]
|
|
];
|
|
|
|
foreach ($formulas as $formula) {
|
|
DB::table('master_formulas')->updateOrInsert(
|
|
['formula_code' => $formula['formula_code']],
|
|
array_merge($formula, [
|
|
'created_at' => $now,
|
|
'updated_at' => $now
|
|
])
|
|
);
|
|
}
|
|
|
|
$this->command->info('Master Formulas seeded successfully!');
|
|
$this->command->info('=== FORMULA SUMMARY ===');
|
|
foreach ($formulas as $formula) {
|
|
$this->command->info($formula['formula_code'] . ': ' . $formula['formula_name']);
|
|
}
|
|
}
|
|
}
|