dalev: update skpd gabung dg upt

This commit is contained in:
2026-06-08 13:47:38 +07:00
parent 74f29bf756
commit d2ac90b14b
2 changed files with 93 additions and 112 deletions
+87 -112
View File
@@ -110,115 +110,35 @@ function sinkron_dalev_prog($db = null) {
function ambil_dalev_prog($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$aopd = [];
$aopd = ['OPDID' => "0"];
$twulan = 1;//todo: auto from config !
$tahun = Param::Get("tahun", 0);
$daftar_skpd = json_decode(stripslashes(Param::Get("daftar_skpd", "[]")), true);
if (count($daftar_skpd) > 0) {
$db->Query("SELECT GROUP_CONCAT(OPDID) OPDID FROM para90_opd WHERE K_OPD IN ('".join("','", $daftar_skpd)."')");
if ($db->Next()) $aopd = $db->AllRow();
}
$data_prog = [];
$tsql = " AND OPDID='".$aopd['OPDID']."'";
$db->Query("SELECT P.*,D.*,IFNULL(RPI.Indi_Status,'') Status_Renstra FROM (SELECT TipeDataID,Status_Indi Status_Renja,Real_TW1,Real_TW2,Real_TW3,Real_TW4,SIPD_PROG_INDI FROM dpa_prog_indi WHERE Tahun='".$tahun."'".$tsql.") P LEFT JOIN (SELECT * FROM dpa_dalev_prog WHERE Tahun='".$tahun."'".$tsql.") D ON (D.SIPD_PROG_INDI=P.SIPD_PROG_INDI) LEFT JOIN renstra_prog_indi RPI ON (RPI.SIPD_UNIK=P.SIPD_PROG_INDI) WHERE D.SIPD_PROG_INDI IS NOT NULL ORDER BY D.K_Prog");
while ($db->Next()) {
/*$_tri_kin = []; $_tri_keu = []; $_thn_kin = 0; $_thn_keu = 0;
for ($_tri = 1; $_tri <= 4; $_tri++) {
$_tri_kin['triwulan_kinerja_'.$_tri] = ($_tri <= $twulan) ? $db->Row("RealF_TW".$_tri) : "";
$_tri_keu['triwulan_keuangan_'.$_tri] = ($_tri <= $twulan) ? (float)$db->Row("RealK_TW".$_tri) : 0;
$_thn_kin += ($_tri <= $twulan) ? (float)$db->Row("RealF_TW".$_tri) : 0;
$_thn_keu += ($_tri <= $twulan) ? (float)$db->Row("RealK_TW".$_tri) : 0;
}
//komulatif / positif / negatif / rata-rata
switch ($db->Row("Status", "komulatif")) {
case "komulatif":
break;
case "rata-rata":
$_thn_kin = $_thn_kin / $twulan;
break;
default:
$_thn_kin = (float)$db->Row("RealK_TW".$twulan);
}*/
/* coding js
$atriw = [];
//for ($_tri = 1; $_tri <= 4; $_tri++) {
$atriw['triwulan_1'] = $db->Row("Real_TW1");
//}
$real_thn = $db->Row("Real_TW1");//todo: hitung utk tw berikutnya
$tipe_data = ($db->Row("TipeDataID")==0 ? "numeric" : ($db->Row("TipeDataID")==2 ? "rasio" : "enumv2"));
const tahun = $('#modal-realisasi').data('current-tahun') || tahun_sekarang;
const info = rowData;
const tipeData = info.tipe_data || 'numeric';
const isNumeric = isNumericTipeData(tipeData);
const triwulan = {};
for (let i = 1; i <= 4; i++) {
if (tipeData === 'rasio') {
// Rasio: dua input dengan separator ":"
const valBawah = $(`#triwulan_${i}_bawah`).val();
const valAtas = $(`#triwulan_${i}_atas`).val();
// Hanya kirim jika user benar-benar mengisi (minimal salah satu ada nilai)
// Jika salah satu kosong, gunakan '0' sebagai fallback
// Jika keduanya kosong, tidak akan masuk ke sini (hasil: tidak kirim)
if (valBawah || valAtas) {
triwulan[`triwulan_${i}`] = `${valBawah || '0'}:${valAtas || '0'}`;
}
} else if (isNumeric) {
// Numeric dan range: 1 input dengan format angka
const rawVal = $(`#triwulan_${i}`).val();
// Hanya kirim jika user benar-benar mengisi
if (rawVal !== null && rawVal !== '') {
const val = unformatRupiahRealisasi(rawVal);
triwulan[`triwulan_${i}`] = val;
}
} else {
// enum_v2 dan lainnya
const raw = $(`#triwulan_${i}`).val();
// Hanya kirim jika ada nilai
if (raw !== null && raw !== undefined && raw !== '') {
triwulan[`triwulan_${i}`] = raw.toString();
}
}
$atahun = [0 => 2025, 1 => 2026, 2 => 2027, 3 => 2028, 4 => 2029, 5 => 2030]; //todo: bisa automatis
$atarget = [];
foreach ($atahun as $idx => $thn) {
$atarget['target_'.$idx] = $db->Row("Target_".$idx);
$atarget['target_'.$thn] = $db->Row("Target_".$idx);
$atarget['realisasi_'.$thn] = ($thn == 2026 ? $real_thn : "");
}
let realisasiTahunan = '';
const selectedFormula = $('#info-status-kinerja').val() || (isNumeric ? 'komulatif' : 'positif');
if (isNumeric) {
realisasiTahunan = calculateNumericRealisasiByFormula(selectedFormula, triwulan);
} else {
// non-numeric: set from last non-empty triwulan as string
realisasiTahunan = getLastNonEmptyTriwulanString();
}
const targetRealisasi = {};
years.forEach((year, idx) => {
targetRealisasi[`target_${year}`] = $(`#target_${year}`).val();
const rVal = $(`#realisasi_${year}`).val();
if (tipeData === 'rasio') {
// Untuk rasio: kirim sebagai string dengan format "pembilang:pembanding"
// Jika kosong, kirim empty string (bukan '0:0')
targetRealisasi[`realisasi_${year}`] = (rVal != null && rVal !== '') ? rVal.toString() : '';
} else if (isNumeric) {
// Untuk numeric: jika kosong, kirim empty string (bukan 0)
// Jika user benar-benar input 0, tetap kirim 0 (nilai valid)
if (rVal == null || rVal === '') {
targetRealisasi[`realisasi_${year}`] = '';
} else {
const numVal = unformatRupiahRealisasi(rVal);
targetRealisasi[`realisasi_${year}`] = numVal;
}
} else {
targetRealisasi[`realisasi_${year}`] = rVal != null ? rVal.toString() : '';
}
targetRealisasi[`target_${idx}`] = $(`#target_${year}`).val();
});
const statusRenstraSubmit = $('#info-status-renstra').val(),
statusRkpdSubmit = statusRenstraSubmit === 'negatif' ? 'negatif' : $('#info-status-kinerja').val();
const payload = {
tahun: tahun,
kodeskpd: info.kodeskpd,
kodebidang: info.kodebidang || '',
kodeprogram: info.kodeprogram,
idoutcome: info.idoutcome || info.id || '',
kodeprogram_indikator: info.kodeindikator_program || '',
uraiprogram_indikator: info.uraiindikator_program || '',
formula: statusRkpdSubmit,
status: statusRkpdSubmit,
status_rkpd: statusRkpdSubmit,
status_renstra: statusRenstraSubmit,
baseline: $('#info-baseline').val(),
satuan: $('#info-satuan').val(),
tipe_data: info.tipe_data || 'numeric',
target_realisasi: targetRealisasi,
triwulan: triwulan,
realisasi_tahunan: realisasiTahunan
};
*/
$data_prog[] = [
'tahun' => $tahun,
'kodeskpd' => $db->Row("K_OPD"),
@@ -228,15 +148,15 @@ const tahun = $('#modal-realisasi').data('current-tahun') || tahun_sekarang;
'formula' => $db->Row("Status"), //#info-status-kinerja
'status' => $db->Row("Status"), //#info-status-kinerja
'status_rkpd' => $db->Row("Status"), //#info-status-kinerja
//'status_renstra' => "komulatif", //#info-status-renstra
'baseline' => $_tri_kin, //#info-baseline ?
'satuan' => $_tri_keu, //#info-satuan ?
'tipe_data' => $_thn_kin, // ? || 'numeric',
'target_realisasi' => 0, // ?
'triwulan' => 0, // ?
'realisasi_tahunan' => 0, // ?
'status_renstra' => ($db->Row("Status_Renstra")=="negatif" ? "negatif" : $db->Row("Status")), //#info-status-renstra
'baseline' => $db->Row("Baseline"),
'satuan' => $db->Row("Satuan"),
'tipe_data' => $tipe_data,
'target_realisasi' => $atarget,
'triwulan' => $atriw,
'realisasi_tahunan' => $real_thn,
'kodeprogram_indikator' => $db->Row("SIPD_PROG_INDI"),
'uraiprogram_indikator' => "",
'uraiprogram_indikator' => $db->Row("Indikator"),
];
}
@@ -247,4 +167,59 @@ const tahun = $('#modal-realisasi').data('current-tahun') || tahun_sekarang;
return $aret;
}
/* DALEV FAKTOR PENDUKUNG */
/*function sinkron_dalev_dukung($db = null) {//not yet
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
$adata = json_decode(stripslashes(html_entity_decode($_POST['prog'])), true);
foreach ($adata as $_key1 => $prog) {
fastInsert("dpa_dalev_prog", $prog);
}
$db->Query("UPDATE dpa_dalev_prog A,para90_opd B SET A.OPDID=B.OPDID WHERE A.K_OPD=B.K_OPD");
return $aret;
}*/
function ambil_dalev_dukung($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$aopd = ['OPDID' => "0"];
$tahun = Param::Get("tahun", 0);
$daftar_skpd = json_decode(stripslashes(Param::Get("daftar_skpd", "[]")), true);
if (count($daftar_skpd) > 0) {
$db->Query("SELECT GROUP_CONCAT(OPDID) OPDID FROM para90_opd WHERE K_OPD IN ('".join("','", $daftar_skpd)."')");
if ($db->Next()) $aopd = $db->AllRow();
}
$data_dukung = [];
$tsql = " AND OPDID='".$aopd['OPDID']."'";
$db->Query("SELECT * FROM dpa_dalev_renja WHERE Tahun='".$tahun."'".$tsql);
while ($db->Next()) {
$afaktor = [];
for ($_tri = 1; $_tri <= 4; $_tri++) {
$afaktor[$_tri] = [
'faktor_pendorong' => $db->Row("Pendorong_TW".$_tri),
'faktor_penghambat' => $db->Row("Penghambat_TW".$_tri),
'tindaklanjut' => $db->Row("Lanjut_TW".$_tri),
'tindaklanjut_rkpd' => $db->Row("Lanjut_RKPD_TW".$_tri),
];
}
$data_dukung[] = [
'tahun' => $tahun,
'kodeskpd' => $db->Row("K_OPD"),//jika rkpd tidak ada isi
'kodeprogram' => "",
'id_topik_psn' => 0,
'faktor' => $afaktor,
];
}
if (!empty($data_dukung)) {
$aret['data'] = $data_dukung;
}
return $aret;
}
?>