first commit

This commit is contained in:
2026-06-07 14:39:54 +07:00
commit 74f29bf756
104 changed files with 26026 additions and 0 deletions
+90
View File
@@ -0,0 +1,90 @@
<?php
/*******************************************************************
Module : /apps/php/api/asmas
Created By : Siau Pheng ([email protected]).
Created Date : January 31st, 2026.
(c) 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\Web\Param;
function singkron_asmas($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
$aasmas = [];
$tahun = Param::Get("tahun_anggaran", 0);
$id_asmas = Param::Get("id_asmas", 0);
$adata = json_decode(stripslashes(html_entity_decode($_POST['asmas'])), true);
if ($id_asmas > 0) {
$db->Query("SELECT * FROM para_asmas WHERE SIPD_UserID='".$id_asmas."' LIMIT 1");
if ($db->Next()) $aasmas = $db->AllRow();
}
//ambil dari db : alamat, koefisien, masalah, kamusid
$aasmas_db = [];
$db->Query("SELECT U.UsulanLID,MD5(CONCAT(IFNULL(J.N_Jalan,U.Lokasi),' RT. ',U.RT,', ',U.Dusun,U.Masalah,IFNULL(K.KamusID,0))) Kode_MD5 FROM (SELECT * FROM mus_usulan WHERE Tahun='".$tahun."' AND KecID='".$aasmas['KecID']."' AND KelID='".$aasmas['KelID']."') U LEFT JOIN para_jalan J ON (J.JalanID=U.JalanID) LEFT JOIN (SELECT * FROM i_submap WHERE Tahun='".$tahun."') M ON (M.Lama_SubID=U.SubID) LEFT JOIN (SELECT * FROM mus_kamus WHERE Tahun='".$tahun."') K ON (K.OPDID=U.OPDID AND K.ProgID=M.ProgID) ORDER BY U.Kode");
while ($db->Next()) {
$aasmas_db[$db->Row("UsulanLID")] = $db->Row("Kode_MD5");
}
// tanpa : koefisien
foreach ($adata as $_key1 => $ausul) {
$tmp_md5 = md5($ausul['alamat_teks'].$ausul['masalah'].$ausul['id_kamus']);
foreach ($aasmas_db as $id_usul => $k_md5) {
if ($tmp_md5 === $k_md5) {
fastUpdate("mus_usulan", ['SIPD_UsulanID'=>$ausul['id_usulan']], ['UsulanLID'=>$id_usul]);
break;
}
}
}
return $aret;
}
function ambil_asmas($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$aasmas = [];
$tahun = Param::Get("tahun_anggaran", 0);
$id_asmas = Param::Get("id_asmas", 0);
if ($id_asmas > 0) {
$db->Query("SELECT * FROM para_asmas WHERE SIPD_UserID='".$id_asmas."' LIMIT 1");
if ($db->Next()) $aasmas = $db->AllRow();
}
$data_asmas = [];
$tsql = (count($aasmas)==0) ? "" : " AND KecID='".$aasmas['KecID']."' AND KelID='".$aasmas['KelID']."'";
$db->Query("SELECT U.Kode,U.Masalah,M.ProgID,M.Lama_ProgID,O.SIPD_Unit,O.N_OPD,K.KamusID,K.Uraian N_Kamus,K.Bidu N_Bidu,D.SIPD_DESA,D.SIPD_KEC,CONCAT(IFNULL(J.N_Jalan,U.Lokasi),' RT. ',U.RT,', ',U.Dusun) Alamat,U.Volume,S.N_Satuan,K.IsuID,U.SIPD_UsulanID FROM (SELECT OPDID,SubID,KelID,JalanID,Lokasi,RT,Dusun,Masalah,Volume,SatuanID,Kode,SIPD_UsulanID FROM mus_usulan WHERE Tahun='".$tahun."'".$tsql.") U LEFT JOIN para_jalan J ON (J.JalanID=U.JalanID) LEFT JOIN (SELECT * FROM i_submap WHERE Tahun='".$tahun."') M ON (M.Lama_SubID=U.SubID) LEFT JOIN (SELECT * FROM mus_kamus WHERE Tahun='".$tahun."') K ON (K.OPDID=U.OPDID AND K.ProgID=M.ProgID) LEFT JOIN vi_para_desa D ON (D.DesaID=U.KelID) LEFT JOIN para90_opd O ON (O.OPDID=U.OPDID) LEFT JOIN para_satuan S ON (U.SatuanID=S.SatuanID) ORDER BY U.Kode");
while ($db->Next()) {
$data_asmas[] = [
'kode' => $db->Row("Kode"),
'id_usulan' => $db->Row("SIPD_UsulanID"),
'id_kamus' => $db->Row("KamusID"),
'nama_kamus' => $db->Row("N_Kamus"),
'nama_bidang_urusan' => $db->Row("N_Bidu"),
'id_program' => $db->Row("IsuID"),//update program_id
'id_skpd' => $db->Row("SIPD_Unit"),
'nama_skpd' => $db->Row("N_OPD"),
'alamat_teks' => substr(str_replace("'","\'",$db->Row("Alamat")), 0, 255),
'volume' => $db->Row("Volume"),
'satuan' => $db->Row("N_Satuan"),
'id_kecamatan' => $db->Row("SIPD_KEC"),
'id_kelurahan' => $db->Row("SIPD_DESA"),
'masalah' => substr($db->Row("Masalah"), 0, 255)
];
}
if (!empty($data_asmas)) {
$aret['data'] = $data_asmas;
}
return $aret;
}
?>
+250
View File
@@ -0,0 +1,250 @@
<?php
/*******************************************************************
Module : /apps/php/api/dalev.php
Created By : Siau Pheng ([email protected]).
Created Date : January 31st, 2026.
(c) 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\Web\Param;
/* DALEV SUB KEGIATAN */
function sinkron_dalev_subkeg($db = null) {//oke
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
$adata = json_decode(stripslashes(html_entity_decode($_POST['subkeg'])), true);
foreach ($adata as $_key1 => $subkeg) {
fastInsert("dpa_dalev_sub", $subkeg);
}
$db->Query("UPDATE dpa_dalev_sub A,para90_opd B SET A.OPDID=B.OPDID WHERE A.K_OPD=B.K_OPD");
return $aret;
}
function ambil_dalev_subkeg($db = null) {//oke
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$aopd = [];
$twulan = 1;//todo: auto from config !
$tahun = Param::Get("tahun", 0);
$kode_skpd = Param::Get("kode_skpd", "");
if ($kode_skpd <> "") {
$db->Query("SELECT * FROM para90_opd WHERE K_OPD='".$kode_skpd."' LIMIT 1");
if ($db->Next()) $aopd = $db->AllRow();
}
$data_subkeg = [];
$tsql = (count($aopd)==0) ? "" : " AND OPDID='".$aopd['OPDID']."'";
$db->Query("SELECT * FROM (SELECT OPDID,SubID,K_Sub,RealK_TW1,RealK_TW2,RealK_TW3,RealK_TW4 FROM dpa_sub WHERE Tahun='".$tahun."'".$tsql.") S LEFT JOIN (SELECT OPDID,SubID,Satuan_Output Satuan,Real_TW1 RealF_TW1,Real_TW2 RealF_TW2,Real_TW3 RealF_TW3,Real_TW4 RealF_TW4 FROM dpa_sub_output WHERE Tahun='".$tahun."'".$tsql.") O ON (O.OPDID=S.OPDID AND O.SubID=S.SubID) LEFT JOIN (SELECT * FROM dpa_dalev_sub WHERE Tahun='".$tahun."'".$tsql.") D ON (D.OPDID=S.OPDID AND D.K_Sub=S.K_Sub) WHERE D.SIPD_OUTCOME IS NOT NULL ORDER BY S.K_Sub");
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);
}
$data_subkeg[] = [
'tahun' => $tahun,
'kodeskpd' => $db->Row("K_OPD"),
'kodebidang' => $db->Row("K_Bidu"),
'kodeprogram' => $db->Row("K_Prog"),
'kodekegiatan' => $db->Row("K_Keg"),
'kodesubkegiatan' => $db->Row("K_Sub"),
'satuan' => $db->Row("Satuan"),
'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
//'target_realisasi_kinerja' => $targetRealisasiKinerjaData,
//'target_realisasi_keuangan' => $targetRealisasiKeuanganData,
'triwulan_kinerja' => $_tri_kin,
'triwulan_keuangan' => $_tri_keu,
'realisasi_kinerja_tahunan' => $_thn_kin,
'realisasi_keuangan_tahunan' => $_thn_keu,
'idoutcome' => $db->Row("SIPD_OUTCOME"),
'idoutput' => $db->Row("SIPD_OUTPUT"),
'kodesubkegiatan_indikator' => $db->Row("SIPD_SUBKEG_INDI"),
'uraisubkegiatan_indikator' => "",
];
}
if (!empty($data_subkeg)) {
$aret['data'] = $data_subkeg;
}
return $aret;
}
/* DALEV PROGRAM */
function sinkron_dalev_prog($db = null) {
$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_prog($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$aopd = [];
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
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();
}
}
}
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"),
'kodebidang' => $db->Row("K_Bidu"),
'kodeprogram' => $db->Row("K_Prog"),
'idoutcome' => $db->Row("SIPD_OUTCOME"),
'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, // ?
'kodeprogram_indikator' => $db->Row("SIPD_PROG_INDI"),
'uraiprogram_indikator' => "",
];
}
if (!empty($data_prog)) {
$aret['data'] = $data_prog;
}
return $aret;
}
?>
+14
View File
@@ -0,0 +1,14 @@
<?php
require_once(dirname(__FILE__)."/../../../../../modules3/db.mysqli.php");
$db = DB();
$tahun = 2022;
$adata = json_decode(file_get_contents("kamus.json"), true);
foreach ($adata['data'] as $arec) {
$db->Query("UPDATE para90_kamus SET No_Kamus='".$arec['no']."',Satuan='".$arec['satuan']."',SIPD_ID='".$arec['id']."' WHERE Satuan='".$arec['kodeskpd']."' AND Uraian='".$arec['urai']."'");
}
echo "import kamus done.";
?>
+15
View File
@@ -0,0 +1,15 @@
<?php
require_once(dirname(__FILE__)."/../../../../../modules3/db.mysqli.php");
$db = DB();
$tahun = 2022;
$adata = json_decode(file_get_contents("rekening.json"), true);
$db->Query("DELETE FROM i_rekening WHERE Tahun='".$tahun."'");
foreach ($adata['data'] as $arec) {
$db->Query("INSERT INTO i_rekening SET tahun='".$arec['tahun']."',id_akun='".$arec['id_akun']."',kode_akun='".$arec['kode_akun']."',nama_akun='".$arec['nama_akun']."',id_unik='".$arec['id_unik']."',is_pendapatan='".$arec['is_pendapatan']."',is_bl='".$arec['is_bl']."',is_biaya='".$arec['is_biaya']."',is_gaji_asn='".$arec['is_gaji_asn']."',is_barjas='".$arec['is_barjas']."',is_bunga='".$arec['is_bunga']."',is_subsidi='".$arec['is_subsidi']."',is_bagi_hasil='".$arec['is_bagi_hasil']."',set_input='".$arec['set_input']."'");
}
echo "import rekening done.";
?>
+3940
View File
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
+99
View File
@@ -0,0 +1,99 @@
<?php
/*******************************************************************
Module : /apps/php/api/master.php
Desc. : PHP - Fungsi MASTER
Created By : Siau Pheng ([email protected]).
Created Date : December 18th, 2025.
(c) 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\Web\Param;
function simpan_master_subkeg($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Master Sub Kegiatan !'];
if (empty($_POST['subgiat'])) return $aret;
$tahun = Param::Get("tahun_anggaran", 0);
$adata = json_decode(stripslashes(html_entity_decode($_POST['subgiat'])), true);
if ($tahun == 0) {
$aret['message'] = "Tahun Anggaran Tidak Ada !";
return $aret;
}
// hapus sesuai tahun
if (empty($_POST['page']) || (!empty($_POST['page']) && $_POST['page'] == 1)) {
$db->Query("DELETE FROM i_submap WHERE Tahun='".$tahun."'");
}
foreach ($adata as $_key1 => $asub) {
if ($asub['set_kab_kota'] == 0) continue;
if (!(in_array($asub['id_daerah'], [0,553]) || in_array($asub['id_daerah_khusus'], [0,553]))) continue;
$apull = [ 'Tahun' => $tahun,
'UrusanID' => $asub['id_urusan'],
'BUID' => $asub['id_bidang_urusan'],
'ProgID' => $asub['id_program'],
'KegID' => $asub['id_giat'],
'SubID' => $asub['id_sub_giat'],
'K_Urusan' => $asub['kode_urusan'],
'N_Urusan' => $asub['nama_urusan'],
'K_Bidu' => $asub['kode_bidang_urusan'],
'N_Bidu' => $asub['nama_bidang_urusan'],
'K_Prog' => $asub['kode_program'],
'N_Prog' => $asub['nama_program'],
'K_Keg' => $asub['kode_giat'],
'N_Keg' => $asub['nama_giat'],
'K_Sub' => $asub['kode_sub_giat'],
'N_Sub' => $asub['nama_sub_giat'],
'Indikator' => $asub['indikator'],
'Satuan' => $asub['satuan']
];
fastInsert("i_submap", $apull);
}
return $aret;
}
function simpan_master_akun($db = null) {
$aret = ['status' => 'success', 'message' => 'Berhasil export Akun Rekening Belanja!'];
if (empty($_POST['akun'])) return $aret;
$tahun = Param::Get("tahun_anggaran", 0);
$akun = json_decode(stripslashes(html_entity_decode($_POST['akun'])), true);
// hapus sesuai tahun
if (empty($_POST['page']) || (!empty($_POST['page']) && $_POST['page'] == 1)) {
$db->Query("DELETE FROM i_akun WHERE Tahun='".$tahun."'");
}
foreach ($akun as $k => $v) {
if ($v['set_kab_kota'] == 0) continue;
$apull = [
'Tahun' => $tahun,
'AkunID' => $v['id_akun'],
'K_Akun' => $v['kode_akun'],
'N_Akun' => $v['nama_akun'],
'Is_Pend' => $v['is_pendapatan'],
'Is_BL' => $v['is_bl'],
'Is_Biaya' => $v['is_pembiayaan'],
'Is_Gaji' => $v['is_gaji_asn'],
'Is_Barjas' => $v['is_barjas'],
'Is_Bunga' => $v['is_bunga'],
'Is_Subsidi' => $v['is_subsidi'],
'Is_Bagi_Hasil' => $v['is_bagi_hasil'],
'Set_Input' => $v['set_input']
];
fastInsert("i_akun", $apull);
}
return $aret;
}
?>
+101
View File
@@ -0,0 +1,101 @@
<?php
/*******************************************************************
Module : /apps/php/api/pokir
Created By : Siau Pheng ([email protected]).
Created Date : January 31st, 2026.
(c) 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\Web\Param;
function singkron_pokir($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil singkron data!'];
$adewan = [];
$tahun = Param::Get("tahun_anggaran", 0);
$id_dewan = Param::Get("id_dewan", 0);
$adata = json_decode(stripslashes(html_entity_decode($_POST['pokir'])), true);
if ($id_dewan > 0) {
$db->Query("SELECT * FROM para_dprd WHERE SIPD_UserID='".$id_dewan."' LIMIT 1");
if ($db->Next()) $adewan = $db->AllRow();
}
//ambil master kamus
$akamus = [];
$db->Query("SELECT * FROM pok_kamus WHERE Tahun='".$tahun."'");;
while ($db->Next()) {
$akamus[$db->Row("KamusID")] = $db->Row("Uraian");
}
//ambil dari db : alamat, koefisien, masalah, kamusid
$apokir_db = [];
//$db->Query("SELECT U.UsulanDID,MD5(CONCAT(IFNULL(J.N_Jalan,U.Lokasi),' RT. ',U.RT,', ',U.Dusun,U.Volume,' ',IFNULL(S.N_Satuan,''),U.Masalah,IFNULL(K.KamusID,0))) Kode_MD5 FROM (SELECT * FROM pok_usulan WHERE Tahun='".$tahun."' AND DPRDID='".$adewan['DPRDID']."') U LEFT JOIN para_jalan J ON (J.JalanID=U.JalanID) LEFT JOIN (SELECT * FROM i_submap WHERE Tahun='".$tahun."') M ON (M.Lama_SubID=U.SubID) LEFT JOIN (SELECT * FROM pok_kamus WHERE Tahun='".$tahun."') K ON (K.OPDID=U.OPDID AND K.ProgID=M.ProgID) LEFT JOIN para_satuan S ON (U.SatuanID=S.SatuanID) ORDER BY U.Kode");
$db->Query("SELECT U.UsulanDID,MD5(CONCAT(IFNULL(J.N_Jalan,U.Lokasi),' RT. ',U.RT,', ',U.Dusun,U.Masalah,IFNULL(K.KamusID,0))) Kode_MD5 FROM (SELECT * FROM pok_usulan WHERE Tahun='".$tahun."' AND DPRDID='".$adewan['DPRDID']."') U LEFT JOIN para_jalan J ON (J.JalanID=U.JalanID) LEFT JOIN (SELECT * FROM i_submap WHERE Tahun='".$tahun."') M ON (M.Lama_SubID=U.SubID) LEFT JOIN (SELECT * FROM pok_kamus WHERE Tahun='".$tahun."') K ON (K.OPDID=U.OPDID AND K.ProgID=M.ProgID) LEFT JOIN para_satuan S ON (U.SatuanID=S.SatuanID) ORDER BY U.Kode");
while ($db->Next()) {
$apokir_db[$db->Row("UsulanDID")] = $db->Row("Kode_MD5");
}
foreach ($adata as $_key1 => $ausul) {
//untuk data dari monitor
$ausul['id_kamus'] = array_search($ausul['nama_kamus'], $akamus);
//$tmp_md5 = md5($ausul['alamat_teks'].$ausul['koefisien'].$ausul['masalah'].$ausul['id_kamus']);
$tmp_md5 = md5($ausul['alamat_teks'].$ausul['masalah'].$ausul['id_kamus']);
foreach ($apokir_db as $id_usul => $k_md5) {
if ($tmp_md5 === $k_md5) {
fastUpdate("pok_usulan", ['SIPD_UsulanID'=>$ausul['id_usulan'],'SIPD_Unix'=>$ausul['id_unik']], ['UsulanDID'=>$id_usul]);
break;
}
}
}
return $aret;
}
function ambil_pokir($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$adewan = [];
$tahun = Param::Get("tahun_anggaran", 0);
$id_dewan = Param::Get("id_dewan", 0);
if ($id_dewan > 0) {
$db->Query("SELECT * FROM para_dprd WHERE SIPD_UserID='".$id_dewan."' LIMIT 1");
if ($db->Next()) $adewan = $db->AllRow();
}
$data_pokir = [];
$tsql = (count($adewan)==0) ? "" : " AND DPRDID='".$adewan['DPRDID']."'";
$db->Query("SELECT U.Kode,U.Masalah,M.ProgID,O.SIPD_Unit,O.N_OPD,K.KamusID,K.Uraian N_Kamus,K.Bidu N_Bidu,D.SIPD_DESA,D.SIPD_KEC,CONCAT(IFNULL(J.N_Jalan,U.Lokasi),' RT. ',U.RT,', ',U.Dusun) Alamat,U.Volume,S.N_Satuan,K.IsuID,U.SIPD_UsulanID FROM (SELECT OPDID,SubID,KelID,JalanID,Lokasi,RT,Dusun,Masalah,Volume,SatuanID,Kode,SIPD_UsulanID FROM pok_usulan WHERE Tahun='".$tahun."'".$tsql.") U LEFT JOIN para_jalan J ON (J.JalanID=U.JalanID) LEFT JOIN (SELECT * FROM i_submap WHERE Tahun='".$tahun."') M ON (M.Lama_SubID=U.SubID) LEFT JOIN (SELECT * FROM pok_kamus WHERE Tahun='".$tahun."') K ON (K.OPDID=U.OPDID AND K.ProgID=M.ProgID) LEFT JOIN vi_para_desa D ON (D.DesaID=U.KelID) LEFT JOIN para90_opd O ON (O.OPDID=U.OPDID) LEFT JOIN para_satuan S ON (U.SatuanID=S.SatuanID) ORDER BY U.Kode");
while ($db->Next()) {
$data_pokir[] = [
'kode' => $db->Row("Kode"),
'id_usulan' => $db->Row("SIPD_UsulanID"),
'id_kamus' => $db->Row("KamusID"),
'nama_kamus' => $db->Row("N_Kamus"),
'nama_bidang_urusan' => $db->Row("N_Bidu"),
'id_program' => $db->Row("IsuID"),//update program_id
'id_skpd' => $db->Row("SIPD_Unit"),
'nama_skpd' => $db->Row("N_OPD"),
'alamat_teks' => substr(str_replace("'","\'",$db->Row("Alamat")), 0, 255),
'volume' => $db->Row("Volume"),
'satuan' => $db->Row("N_Satuan"),
'id_kecamatan' => $db->Row("SIPD_KEC"),
'id_kelurahan' => $db->Row("SIPD_DESA"),
'masalah' => substr($db->Row("Masalah"), 0, 255)
];
}
if (!empty($data_pokir)) {
$aret['data'] = $data_pokir;
}
return $aret;
}
?>
+118
View File
@@ -0,0 +1,118 @@
<?php
/*******************************************************************
Module : /apps/php/api/renja.php
Desc. : PHP - Fungsi RENJA
Created By : Siau Pheng ([email protected]).
Created Date : January 31st, 2026.
(c) 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\Web\Param;
function ambil_renja($db = null) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
$tahun = Param::Get("tahun_anggaran", 0);
$id_skpd = Param::Get("id_skpd", 0);
$id_sub_skpd = fastQueryArray("SELECT OPDID FROM para90_opd WHERE SIPD_OPD='".$id_skpd."'", 0);
//$where = ' AND set_kab_kota=1';
//para90_submap -> i_submap : sementara
$master_bidang_urusan = [];
$db->Query("SELECT DISTINCT K_Bidu,N_Bidu FROM i_submap WHERE Tahun='".$tahun."'");
while ($db->Next()) {
$master_bidang_urusan[$db->Row("K_Bidu")] = $db->AllRow();
}
$data_sub_giat = [];
// kode_skpd, nama_skpd, pagu_keg, kode_bl
$db->Query("SELECT *,CONCAT(B.id_skpd,'.',B.id_sub_skpd,'.',C.id_program,'.',C.id_giat,'.',C.id_sub_giat) kode_sbl FROM (SELECT RK_PROGID,RK_KEGID,OPDID,ProgID,SubID,553 id_lokasi,Waktu1 waktu_awal,Waktu2 waktu_akhir,Pagu_Ini pagu,Pagu_Dpn pagu_n_depan,Txt_Indi,Satuan_Indi,Target_Indi FROM renja_sub WHERE Tahun='".$tahun."' AND OPDID IN (".implode(",",$id_sub_skpd).")) A LEFT JOIN (SELECT OPDID,K_Bidu1,K_OPD kode_skpd_asli,N_OPD nama_sub_skpd,SIPD_OPD id_skpd,SIPD_Unit id_sub_skpd FROM para90_opd WHERE OPDID IN(".implode(",",$id_sub_skpd).")) B ON (A.OPDID=B.OPDID) LEFT JOIN (SELECT ProgID,SubID,Lama_ProgID,Lama_SubID,UrusanID id_urusan,BUID id_bidang_urusan,ProgID id_program,KegID id_giat,SubID id_sub_giat,K_Urusan kode_urusan,K_Bidu kode_bidang_urusan,K_Prog kode_program,K_Keg kode_giat,K_Sub kode_sub_giat,N_Urusan nama_urusan,N_Bidu nama_bidang_urusan,N_Prog nama_program,CONCAT(K_Keg,' ',N_Keg) nama_giat,CONCAT(K_Sub,' ',N_Sub) nama_sub_giat FROM i_submap WHERE Tahun='".$tahun."') C ON (A.ProgID=C.Lama_ProgID AND A.SubID=C.Lama_SubID) WHERE C.ProgID IS NOT NULL ORDER BY C.kode_sub_giat");
while ($db->Next()) {
$data_sub_giat[] = $db->AllRow();
}
foreach ($data_sub_giat as $k => $sub) {
$sub['kode_sub_skpd'] = $sub['kode_skpd_asli'];
$data_sub_giat[$k]['kode_sub_skpd'] = $sub['kode_skpd_asli'];
if ($sub['kode_bidang_urusan'] == 'X.XX') {
$urusan_utama = $sub['K_Bidu1'];
if (!empty($master_bidang_urusan[$urusan_utama])) {
$data_sub_giat[$k]['kode_bidang_urusan'] = $master_bidang_urusan[$urusan_utama]['K_Bidu'];
$data_sub_giat[$k]['nama_bidang_urusan'] = $master_bidang_urusan[$urusan_utama]['N_Bidu'];
}
}
/*if (!empty($sub['kode_sbl_lama'])) {
$data_sub_giat[$k]['sub_keg_lama'] = array();
$kode_sbl_lama = explode('|', $sub['kode_sbl_lama']);
foreach ($kode_sbl_lama as $kd_lama) {
$data_lama = $wpdb->get_row($wpdb->prepare("
SELECT
sk.*
FROM data_sub_keg_bl_lokal sk
WHERE kode_sbl=%s
AND sk.tahun_anggaran=%d
", $kd_lama, $tahun_anggaran), ARRAY_A);
if ($data_lama['kode_bidang_urusan'] == 'X.XX') {
$urusan_utama_lama = explode('.', $data_lama['kode_sub_skpd']);
$urusan_utama_lama = $urusan_utama_lama[0] . '.' . $urusan_utama_lama[1];
if (!empty($master_bidang_urusan[$urusan_utama_lama])) {
$data_lama['kode_bidang_urusan'] = $master_bidang_urusan[$urusan_utama_lama]['kode_bidang_urusan'];
$data_lama['nama_bidang_urusan'] = $master_bidang_urusan[$urusan_utama_lama]['nama_bidang_urusan'];
}
}
$data_sub_giat[$k]['sub_keg_lama'][] = $data_lama;
}
}*/
$data_sub_giat[$k]['sumber_dana'] = [];
$data_sub_giat[$k]['lokasi'] = [];
$data_sub_giat[$k]['indikator'] = [];
$data_sub_giat[$k]['indikator_kegiatan'] = [];
$data_sub_giat[$k]['indikator_program'] = [];
$data_sub_giat[$k]['indikator_hasil'] = [];
$db->Query("SELECT * FROM (SELECT * FROM renja_keg WHERE Tahun='".$tahun."' AND RK_KEGID='".$sub['RK_KEGID']."') A LEFT JOIN renstra_output B ON (B.RA_OUTPUTID=A.RA_OUTPUTID)");
if ($db->Next()) {
//data_keg_indikator_hasil_lokal
$data_sub_giat[$k]['indikator_hasil'][] = ['hasilteks' => $db->Row("Txt_Output"), 'satuanhasil' => $db->Row("Hasil_Satuan","%"), 'targethasil' => $db->Row("Hasil_Target",100), 'targethasilteks' => $db->Row("Hasil_Target",100)." ".$db->Row("Hasil_Satuan","%")];
//data_output_giat_sub_keg_lokal
$data_sub_giat[$k]['indikator_kegiatan'][] = ['outputteks' => $db->Row("Keluar_Txt"), 'satuanoutput' => $db->Row("Keluar_Satuan"), 'targetoutput' => $db->Row("Keluar_Target"), 'targetoutputteks' => $db->Row("Keluar_Target")." ".$db->Row("Keluar_Satuan")];
$data_sub_giat[$k]['sasaran'] = $db->Row("Sasaran");
}
//data_capaian_prog_sub_keg_lokal
//todo: pastikan T --> sesuai periode rpjmd
$indikator_program = [];
$db->Query("SELECT Txt_Indi capaianteks,Indi_Satuan satuancapaian,Indi_T2 targetcapaian,CONCAT(Indi_T2,' ',Indi_Satuan) targetcapaianteks FROM renstra_prog_indi WHERE RD_OUTCOMEID IN (SELECT RD_OUTCOMEID FROM renja_prog WHERE RK_PROGID='".$sub['RK_PROGID']."')");
while ($db->Next()) {
$data_sub_giat[$k]['indikator_program'][] = $db->AllRow();
}
//data_dana_sub_keg_lokal
$data_sumber_dana = ['kodedana' => "1.1", 'iddana' => 2, 'pagudana' => $sub['pagu']];
$data_sub_giat[$k]['sumber_dana'][] = $data_sumber_dana;
//data_lokasi_sub_keg_lokal
$data_lokasi = ['idcamat' => 0, 'idkabkota' => 553];
$data_sub_giat[$k]['lokasi'][] = $data_lokasi;
//data_sub_keg_indikator_lokal
$data_sub_keg_indikator = ['outputteks' => $sub['Txt_Indi'], 'targetoutput' => $sub['Target_Indi'], 'satuanoutput' => $sub['Satuan_Indi']];
$data_sub_giat[$k]['indikator'][] = $data_sub_keg_indikator;
unset ($data_sub_giat[$k]['Txt_Indi'], $data_sub_giat[$k]['Satuan_Indi'], $data_sub_giat[$k]['Target_Indi']);
}
if (!empty($data_sub_giat)) {
$aret['data'] = $data_sub_giat;
}
return $aret;
}
?>
+283
View File
@@ -0,0 +1,283 @@
<?php
/*******************************************************************
Module : /apps/php/api/rpjmd.php
Desc. : PHP - Fungsi RPJMD
Created By : Siau Pheng ([email protected]).
Created Date : December 18th, 2025.
(c) 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
use siaupheng\fonia3\Web\Param;
$id_rpjmd = $_SESSION['__WEB_APP']['RENC_RPJMDID'];
$thn_submap = map_tahun_submap($id_rpjmd);
function simpan_renstra_tujuan($db = null, $adata = []) {//oke
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Tujuan RENSTRA !'];
foreach ($adata as $_key1 => $atujuan) {
$apull = [ 'RPJMDID' => $id_rpjmd,
'OPDID' => 0,
'A_RDSASAR' => "0",
'A_BU' => "'X.XX'",
'No_Tujuan' => $atujuan['No_Tujuan'],
'Txt_Tujuan' => $atujuan['Txt_Tujuan'],
'SIPD_UNIK' => $atujuan['SIPD_UNIK']
];
// bidang urusan
$_tbu = [];
foreach ($atujuan['A_BU'] as $_key_bu => $arec_bu) {
$_tbu[] = $arec_bu;
}
$apull['A_BU'] = "'". implode("','", $_tbu) ."'";
// sasaran rpjmd
if (count($atujuan['A_RDSASAR']) > 0) {
$_tsa = [];
foreach ($atujuan['A_RDSASAR'] as $_key_sa => $arec_sa) {
$db->Query("SELECT RD_SASARID FROM rpjmd_sasaran WHERE SIPD_SASAR='".$arec_sa."' LIMIT 1");
if ($db->Next()) $_tsa[] = $db->Row("RD_SASARID", 0);
}
$apull['A_RDSASAR'] = implode(",", $_tsa);
}
// opd
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$atujuan['K_OPD']."' LIMIT 1");
if ($db->Next()) $apull['OPDID'] = $db->Row("OPDID", 0);
$id_opd = $apull['OPDID'];
$ra_tujid = fastInsert("renstra_tujuan", $apull);
// indikator
foreach ($atujuan['indikator'] as $_key2 => $arec) {
$apull = [ 'OPDID' => $id_opd,
'RA_TUJID' => $ra_tujid,
'RPJMDID' => $id_rpjmd,
'No_Indi' => $arec['No_Indi'],
'Txt_Indi' => $arec['Txt_Indi'],
'Indi_Satuan' => $arec['Indi_Satuan'],
'Indi_Status' => $arec['Indi_Status'],
'Indi_Awal' => $arec['Indi_Awal'],
'Indi_T1' => $arec['Indi_T1'],
'Indi_T2' => $arec['Indi_T2'],
'Indi_T3' => $arec['Indi_T3'],
'Indi_T4' => $arec['Indi_T4'],
'Indi_T5' => $arec['Indi_T5'],
'Indi_Akhir' => $arec['Indi_Akhir'],
'Tipe_Data' => $arec['Tipe_Data'],
'SIPD_UNIK' => $arec['SIPD_UNIK']
];
fastInsert("renstra_tujuan_indi", $apull);
}
}
return $aret;
}
function simpan_renstra_sasaran($db = null, $adata = []) {//oke
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Sasaran RENSTRA !'];
foreach ($adata as $_key1 => $asasar) {
$apull = [ 'RPJMDID' => $id_rpjmd,
'RA_TUJID' => 0,
'OPDID' => 0,
'No_Sasaran' => $asasar['No_Sasaran'],
'Txt_Sasaran' => $asasar['Txt_Sasaran'],
'SIPD_UNIK' => $asasar['SIPD_UNIK']
];
// tujuan renstra
$db->Query("SELECT RA_TUJID FROM renstra_tujuan WHERE SIPD_UNIK='".$asasar['SIPD_TUJ']."' LIMIT 1");
if ($db->Next()) $apull['RA_TUJID'] = $db->Row("RA_TUJID", 0);
// opd
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$asasar['K_OPD']."' LIMIT 1");
if ($db->Next()) $apull['OPDID'] = $db->Row("OPDID", 0);
$id_opd = $apull['OPDID'];
$ra_sasarid = fastInsert("renstra_sasaran", $apull);
// indikator
foreach ($asasar['indikator'] as $_key2 => $arec) {
$apull = [ 'OPDID' => $id_opd,
'RA_SASARID' => $ra_sasarid,
'RPJMDID' => $id_rpjmd,
'No_Indi' => $arec['No_Indi'],
'Txt_Indi' => $arec['Txt_Indi'],
'Indi_Satuan' => $arec['Indi_Satuan'],
'Indi_Status' => $arec['Indi_Status'],
'Indi_Awal' => $arec['Indi_Awal'],
'Indi_T1' => $arec['Indi_T1'],
'Indi_T2' => $arec['Indi_T2'],
'Indi_T3' => $arec['Indi_T3'],
'Indi_T4' => $arec['Indi_T4'],
'Indi_T5' => $arec['Indi_T5'],
'Indi_Akhir' => $arec['Indi_Akhir'],
'Tipe_Data' => $arec['Tipe_Data'],
'SIPD_UNIK' => $arec['SIPD_UNIK']
];
fastInsert("renstra_sasaran_indi", $apull);
}
}
return $aret;
}
function simpan_renstra_program($db = null, $adata = []) {
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Program / Kegiatan / Sub Kegiatan RENSTRA !'];
foreach ($adata as $_key1 => $aoutcome) {
$acome = [ 'RD_OUTCOMEID' => 0,
'RD_PROGID' => 0,
'OPDID' => 0,
'ProgID' => 0,
'A_RASASAR' => 0
];
// outcome rpjmd
$db->Query("SELECT RD_OUTCOMEID,RD_PROGID,A_RASASAR FROM rpjmd_outcome WHERE RPJMDID='".$id_rpjmd."' AND SIPD_UNIK='".$aoutcome['SIPD_UNIK']."' LIMIT 1");
if ($db->Next()) $acome = array_merge($acome, $db->AllRow());
// program rpjmd
$db->Query("SELECT BUID,ProgID,K_Bidu,K_Prog FROM rpjmd_prog WHERE RPJMDID='".$id_rpjmd."' AND RD_PROGID='".$acome['RD_PROGID']."' LIMIT 1");
if ($db->Next()) $acome = array_merge($acome, $db->AllRow());
// opd
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$aoutcome['K_OPD']."' LIMIT 1");
if ($db->Next()) $acome = array_merge($acome, $db->AllRow());
// sasaran renstra
if (count($aoutcome['A_RASASAR']) > 0) {
$_tsa = explode(",", $acome['A_RASASAR']);
foreach ($aoutcome['A_RASASAR'] as $_key_sa => $arec_sa) {
$db->Query("SELECT RA_SASARID FROM renstra_sasaran WHERE SIPD_UNIK='".$arec_sa."' LIMIT 1");
if ($db->Next()) {
if (!in_array($db->Row("RA_SASARID", 0), $_tsa)) $_tsa[] = $db->Row("RA_SASARID", 0);
}
}
$_tsa = array_diff($_tsa, [0]);
$acome['A_RASASAR'] = (count($_tsa)==0) ? "0" : implode(",", $_tsa);
}
fastUpdate("rpjmd_outcome", ['A_RASASAR'=>$acome['A_RASASAR']], ['RD_OUTCOMEID'=>$acome['RD_OUTCOMEID']]);
$apull = [ 'RPJMDID' => $id_rpjmd,
'OPDID' => $acome['OPDID'],
'RD_PROGID' => $acome['RD_PROGID'],
'RD_OUTCOMEID' => $acome['RD_OUTCOMEID'],
'A_RASASAR' => $acome['A_RASASAR'],
'ProgID' => $acome['ProgID'],
'K_Prog' => $acome['K_Prog']
];
$ra_progid = fastInsert("renstra_prog", $apull);
// indikator outcome (ke tabel renstra_prog_indi)
foreach ($aoutcome['indikator'] as $_key2 => $aindi) {
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_PROGID' => $ra_progid,
'RD_OUTCOMEID' => $acome['RD_OUTCOMEID'],
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'No_Indi' => $aindi['No_Indi'],
'Txt_Indi' => $aindi['Txt_Indi'],
'Indi_Satuan' => $aindi['Indi_Satuan'],
'Indi_Status' => $aindi['Indi_Status'],
'Indi_Awal' => $aindi['Indi_Awal'],
'Indi_T1' => $aindi['Indi_T1'],
'Indi_T2' => $aindi['Indi_T2'],
'Indi_T3' => $aindi['Indi_T3'],
'Indi_T4' => $aindi['Indi_T4'],
'Indi_T5' => $aindi['Indi_T5'],
'Indi_Akhir' => $aindi['Indi_Akhir'],
'Tipe_Data' => $aindi['Tipe_Data'],
'SIPD_UNIK' => $aindi['SIPD_UNIK']
];
fastInsert("renstra_prog_indi", $apull);
}
// kegiatan
foreach ($aoutcome['kegiatan'] as $_key3 => $akeg) {
// master kegiatan
$id_keg = 0;
$db->Query("SELECT KegID FROM para90_submap WHERE Tahun='".$thn_submap."' AND ProgID='".$acome['ProgID']."' AND K_Keg LIKE '%".substr($akeg['K_Keg'],4)."' GROUP BY KegID LIMIT 1");
if ($db->Next()) $id_keg = $db->Row("KegID", 0);
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_PROGID' => $ra_progid,
'RD_OUTCOMEID' => $acome['RD_OUTCOMEID'],
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'KegID' => $id_keg,
'K_Keg' => $akeg['K_Keg']
];
$ra_kegid = fastInsert("renstra_keg", $apull);
// output kegiatan
foreach ($akeg['output'] as $_key4 => $aoutput) {
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_KEGID' => $ra_kegid,
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'KegID' => $id_keg,
'No_Output' => $aoutput['No_Output'],
'Txt_Output' => $aoutput['Txt_Output'],
'SIPD_UNIK' => $aoutput['SIPD_UNIK']
];
$ra_outid = fastInsert("renstra_output", $apull);
if (count($aoutput['subkeg']) == 0) $aret['message'] .= $akeg['K_Keg']." - ";
// sub kegiatan
foreach ($aoutput['subkeg'] as $_key5 => $asub) {
// master sub kegiatan
$id_sub = 0;
$db->Query("SELECT SubID FROM para90_submap WHERE Tahun='".$thn_submap."' AND KegID='".$id_keg."' AND K_Sub LIKE '%".substr($asub['K_Sub'],4)."' LIMIT 1");
if ($db->Next()) $id_sub = $db->Row("SubID", 0);
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_OUTPUTID' => $ra_outid,
'RA_KEGID' => $ra_kegid,
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'KegID' => $id_keg,
'SubID' => $id_sub,
'K_Sub' => $asub['K_Sub'],
'Pagu_T1' => $asub['Pagu_T1'],
'Pagu_T2' => $asub['Pagu_T2'],
'Pagu_T3' => $asub['Pagu_T3'],
'Pagu_T4' => $asub['Pagu_T4'],
'Pagu_T5' => $asub['Pagu_T5'],
'No_Indi' => $asub['No_Indi'],
'Txt_Indi' => $asub['Txt_Indi'],
'Indi_Satuan' => $asub['Indi_Satuan'],
'Indi_Status' => $asub['Indi_Status'],
'Indi_Awal' => $asub['Indi_Awal'],
'Indi_T1' => $asub['Indi_T1'],
'Indi_T2' => $asub['Indi_T2'],
'Indi_T3' => $asub['Indi_T3'],
'Indi_T4' => $asub['Indi_T4'],
'Indi_T5' => $asub['Indi_T5'],
'Indi_Akhir' => $asub['Indi_Akhir'],
'Kinerja' => $asub['Kinerja'],
'MIndiID' => $asub['ID_Indi'],
//'Tipe_Data' => $asub['Tipe_Data'],
//'SIPD_UNIK' => $asub['SIPD_UNIK']
];
fastInsert("renstra_sub", $apull);
}
}
}
}
// update sub -> output
$db->Query("UPDATE renstra_output A, (SELECT OPDID,RA_OUTPUTID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_sub WHERE RPJMDID='".$id_rpjmd."' GROUP BY OPDID,RA_OUTPUTID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RA_OUTPUTID=B.RA_OUTPUTID AND A.OPDID=B.OPDID AND A.RPJMDID='".$id_rpjmd."'");
// update sub -> keg
$db->Query("UPDATE renstra_keg A, (SELECT OPDID,RA_KEGID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_sub WHERE RPJMDID='".$id_rpjmd."' GROUP BY OPDID,RA_KEGID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RA_KEGID=B.RA_KEGID AND A.OPDID=B.OPDID AND A.RPJMDID='".$id_rpjmd."'");
// update keg -> prog
$db->Query("UPDATE renstra_prog A, (SELECT OPDID,RA_PROGID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_keg WHERE RPJMDID='".$id_rpjmd."' GROUP BY OPDID,RA_PROGID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RA_PROGID=B.RA_PROGID AND A.OPDID=B.OPDID AND A.RPJMDID='".$id_rpjmd."'");
// update prog -> outcome rpjmd
$db->Query("UPDATE rpjmd_outcome A, (SELECT RD_OUTCOMEID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_prog WHERE RPJMDID='".$id_rpjmd."' GROUP BY RD_OUTCOMEID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RD_OUTCOMEID=B.RD_OUTCOMEID AND A.RPJMDID='".$id_rpjmd."'");
return $aret;
}
?>
+811
View File
@@ -0,0 +1,811 @@
<?php
/*******************************************************************
Module : /apps/php/api/renja.php
Desc. : PHP - Fungsi RENJA
Created By : Siau Pheng ([email protected]).
Created Date : January 31st, 2026.
(c) 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
/*function ambil_renja($db = null, $tahun = 0, $id_skpd = 0) {
$aret = ['status' => "success", 'message' => 'Berhasil mendapatkan data!', 'action' => $_POST['action'], 'run' => $_POST['run'], 'data' => []];
*/
function singkron_rka() {
global $wpdb;
$ret = array(
'action' => $_POST['action'],
'kode_sbl' => $_POST['kode_sbl'],
'status' => 'success',
'message' => 'Berhasil export RKA!'
);
if (!empty($_POST)) {
if (!empty($_POST['api_key']) && $_POST['api_key'] == get_option('_crb_api_key_extension')) {
$kodeunit = '';
if (!empty($_POST['data_unit'])) {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$data_unit = json_decode(stripslashes(html_entity_decode($_POST['data_unit'])), true);
$data_unit = $data_unit[0];
$kodeunit = $data_unit['kode_unit'];
$_POST['nama_skpd'] = $data_unit['nama_skpd'];
$_POST['kode_sub_skpd'] = $data_unit['kode_skpd'];
} else {
$data_unit = $_POST['data_unit'];
$kodeunit = $data_unit['kodeunit'];
$_POST['nama_skpd'] = $data_unit['namaunit'];
$_POST['kode_sub_skpd'] = $data_unit['kodeunit'];
}
//$data_unit = $_POST['data_unit'];
} else if ($ret['status'] != 'error') {
$ret['status'] = 'error';
$ret['message'] = 'Format data Unit Salah!';
}
if (!isset($_POST['idsubbl'])) {
$_POST['idsubbl'] = '';
}
if (!isset($_POST['idbl'])) {
$_POST['idbl'] = '';
}
$_POST['idsubbl'] = (int) $_POST['idsubbl'];
$_POST['idbl'] = (int) $_POST['idbl'];
if (!empty($_POST['dataBl']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataBl = json_decode(stripslashes(html_entity_decode($_POST['dataBl'])), true);
} else {
$dataBl = $_POST['dataBl'];
}
foreach ($dataBl as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_sub_keg_bl
where tahun_anggaran=%d
AND kode_sbl=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl']));*/
$kode_program = $v['kode_bidang_urusan'] . substr($v['kode_program'], 4, strlen($v['kode_program']));
$kode_giat = $v['kode_bidang_urusan'] . substr($v['kode_giat'], 4, strlen($v['kode_giat']));
$kode_sub_giat = $v['kode_bidang_urusan'] . substr($v['kode_sub_giat'], 4, strlen($v['kode_sub_giat']));
// die($kode_giat);
if (!isset($v['id_sub_bl'])) {
$v['id_sub_bl'] = '';
}
if (!isset($v['id_bl'])) {
$v['id_bl'] = '';
}
if (!isset($v['idsubbl'])) {
$v['idsubbl'] = '';
}
if (!isset($v['idbl'])) {
$v['idbl'] = '';
}
if (!isset($v['id_lokasi'])) {
$v['id_lokasi'] = '';
}
if (!isset($v['nama_dana'])) {
$v['nama_dana'] = '';
}
if (!isset($v['nama_lokasi'])) {
$v['nama_lokasi'] = '';
}
if (!isset($v['id_dana'])) {
$v['id_dana'] = '';
}
if (!isset($v['id_label_kokab'])) {
$v['id_label_kokab'] = 0;
}
if (!isset($v['no_program'])) {
$v['no_program'] = '';
}
if (!isset($v['target_1'])) {
$v['target_1'] = '';
}
if (!isset($v['target_2'])) {
$v['target_2'] = '';
}
if (!isset($v['target_3'])) {
$v['target_3'] = '';
}
if (!isset($v['target_4'])) {
$v['target_4'] = '';
}
if (!isset($v['target_5'])) {
$v['target_5'] = '';
}
if (!isset($v['nama_bidang_urusan'])) {
$v['nama_bidang_urusan'] = '';
}
if (!isset($v['no_giat'])) {
$v['no_giat'] = '';
}
if (!isset($v['id_label_prov'])) {
$v['id_label_prov'] = 0;
}
if (!isset($v['label_prov'])) {
$v['label_prov'] = '';
}
if (!isset($v['output_sub_giat'])) {
$v['output_sub_giat'] = '';
}
if (!isset($v['sasaran'])) {
$v['sasaran'] = '';
}
if (!isset($v['indikator'])) {
$v['indikator'] = '';
}
if (!isset($v['pagu_n_depan'])) {
$v['pagu_n_depan'] = 0;
}
if (!isset($v['satuan'])) {
$v['satuan'] = '';
}
if (!isset($v['id_rpjmd'])) {
$v['id_rpjmd'] = 0;
}
if (!isset($v['id_giat'])) {
$v['id_giat'] = 0;
}
if (!isset($v['id_label_pusat'])) {
$v['id_label_pusat'] = '';
}
if (!isset($_POST['nama_skpd'])) {
$_POST['nama_skpd'] = '';
}
if (!isset($v['kode_skpd'])) {
$v['kode_skpd'] = '';
}
if (!isset($v['label_pusat'])) {
$v['label_pusat'] = '';
}
if (!isset($v['label_kokab'])) {
$v['label_kokab'] = '';
}
$opsi = array(
'id_sub_skpd' => $v['id_sub_skpd'],
'id_lokasi' => $v['id_lokasi'],
'id_label_kokab' => $v['id_label_kokab'],
'nama_dana' => $v['nama_dana'],
'no_sub_giat' => $v['no_sub_giat'],
'kode_giat' => $kode_giat,
'id_program' => $v['id_program'],
'nama_lokasi' => $v['nama_lokasi'],
'waktu_akhir' => $v['waktu_akhir'],
'pagu_n_lalu' => $v['pagu_n_lalu'],
'id_urusan' => $v['id_urusan'],
'id_unik_sub_bl' => $v['id_unik_sub_bl'],
'id_sub_giat' => $v['id_sub_giat'],
'label_prov' => $v['label_prov'],
'kode_program' => $kode_program,
'kode_sub_giat' => $kode_sub_giat,
'no_program' => $v['no_program'],
'kode_urusan' => $v['kode_urusan'],
'kode_bidang_urusan' => $v['kode_bidang_urusan'],
'nama_program' => $v['nama_program'],
'target_4' => $v['target_4'],
'target_5' => $v['target_5'],
'id_bidang_urusan' => $v['id_bidang_urusan'],
'nama_bidang_urusan' => $v['nama_bidang_urusan'],
'target_3' => $v['target_3'],
'no_giat' => $v['no_giat'],
'id_label_prov' => $v['id_label_prov'],
'waktu_awal' => $v['waktu_awal'],
'pagu' => $v['pagu'],
'pagumurni' => $v['pagumurni'],
'output_sub_giat' => $v['output_sub_giat'],
'sasaran' => $v['sasaran'],
'indikator' => $v['indikator'],
'id_dana' => $v['id_dana'],
'nama_sub_giat' => $v['nama_sub_giat'],
'pagu_n_depan' => $v['pagu_n_depan'],
'satuan' => $v['satuan'],
'id_rpjmd' => $v['id_rpjmd'],
'id_giat' => $v['id_giat'],
'id_label_pusat' => $v['id_label_pusat'],
'nama_giat' => $v['nama_giat'],
'kode_skpd' => $_POST['kode_skpd'],
'nama_skpd' => $_POST['nama_skpd'],
'kode_sub_skpd' => $_POST['kode_sub_skpd'],
'id_skpd' => $v['id_skpd'],
'id_sub_bl' => $v['id_sub_bl'],
'nama_sub_skpd' => $v['nama_sub_skpd'],
'target_1' => $v['target_1'],
'nama_urusan' => $v['nama_urusan'],
'target_2' => $v['target_2'],
'label_kokab' => $v['label_kokab'],
'label_pusat' => $v['label_pusat'],
'pagu_keg' => $_POST['pagu'],
'id_bl' => $v['id_bl'],
'kode_bl' => $_POST['kode_bl'],
'kode_sbl' => $_POST['kode_sbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
// print_r($opsi); die($wpdb->last_query);
/*if (!empty($cek)) {
$wpdb->update('data_sub_keg_bl', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_sub_keg_bl', $opsi);
//}
//$nama_page = $_POST['tahun_anggaran'] . ' | ' . $kodeunit . ' | ' . $kode_giat . ' | ' . $v['nama_giat'];
//$url_kegiatan = $this->generatePage($nama_page, $_POST['tahun_anggaran'], '[tampilrka kode_bl="' . $_POST['kode_bl'] . '" tahun_anggaran="' . $_POST['tahun_anggaran'] . '"]');
$ret['message'] .= ' URL OK';// . $url_kegiatan;
}
} else if ($ret['status'] != 'error') {
$ret['status'] = 'error';
$ret['message'] = 'Format data BL Salah!';
}
if ($_POST['total_page'] == $_POST['no_page']) {
if (!empty($_POST['dataOutput']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataOutput = json_decode(stripslashes(html_entity_decode($_POST['dataOutput'])), true);
} else {
$dataOutput = $_POST['dataOutput'];
}
/*$wpdb->update('data_sub_keg_indikator', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataOutput as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_sub_keg_indikator
where tahun_anggaran=%d
AND kode_sbl=%s
AND idoutputbl=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['idoutputbl']));*/
$opsi = array(
'outputteks' => $v['outputteks'],
'targetoutput' => $v['targetoutput'],
'satuanoutput' => $v['satuanoutput'],
'idoutputbl' => $v['idoutputbl'],
'targetoutputteks' => $v['targetoutputteks'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_sub_keg_indikator', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'idoutputbl' => $v['idoutputbl'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_sub_keg_indikator', $opsi);
//}
}
}
if (!empty($_POST['dataHasil']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataHasil = json_decode(stripslashes(html_entity_decode($_POST['dataHasil'])), true);
} else {
$dataHasil = $_POST['dataHasil'];
}
/*$wpdb->update('data_keg_indikator_hasil', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataHasil as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_keg_indikator_hasil
where tahun_anggaran=%d
AND kode_sbl=%s
AND hasilteks=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['hasilteks']));*/
$opsi = array(
'hasilteks' => $v['hasilteks'],
'satuanhasil' => $v['satuanhasil'],
'targethasil' => $v['targethasil'],
'targethasilteks' => $v['targethasilteks'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_keg_indikator_hasil', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'hasilteks' => $v['hasilteks'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_keg_indikator_hasil', $opsi);
//}
}
}
if (!empty($_POST['dataTag']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataTag = json_decode(stripslashes(html_entity_decode($_POST['dataTag'])), true);
} else {
$dataTag = $_POST['dataTag'];
}
/*$wpdb->update('data_tag_sub_keg', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataTag as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_tag_sub_keg
where tahun_anggaran=%d
AND kode_sbl=%s
AND idtagbl=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['idtagbl']));*/
$opsi = array(
'idlabelgiat' => $v['idlabelgiat'],
'namalabel' => $v['namalabel'],
'idtagbl' => $v['idtagbl'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_tag_sub_keg', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'idtagbl' => $v['idtagbl'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_tag_sub_keg', $opsi);
//}
}
}
if (!empty($_POST['dataCapaian']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataCapaian = json_decode(stripslashes(html_entity_decode($_POST['dataCapaian'])), true);
} else {
$dataCapaian = $_POST['dataCapaian'];
}
/*$wpdb->update('data_capaian_prog_sub_keg', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataCapaian as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_capaian_prog_sub_keg
where tahun_anggaran=%d
AND kode_sbl=%s
AND capaianteks=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['capaianteks']));*/
$opsi = array(
'satuancapaian' => $v['satuancapaian'],
'targetcapaianteks' => $v['targetcapaianteks'],
'capaianteks' => $v['capaianteks'],
'targetcapaian' => $v['targetcapaian'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_capaian_prog_sub_keg', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'capaianteks' => $v['capaianteks'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_capaian_prog_sub_keg', $opsi);
//}
}
}
if (!empty($_POST['dataOutputGiat']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataOutputGiat = json_decode(stripslashes(html_entity_decode($_POST['dataOutputGiat'])), true);
} else {
$dataOutputGiat = $_POST['dataOutputGiat'];
}
/*$wpdb->update('data_output_giat_sub_keg', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataOutputGiat as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_output_giat_sub_keg
where tahun_anggaran=%d
AND kode_sbl=%s
AND outputteks=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['outputteks']));*/
$opsi = array(
'outputteks' => $v['outputteks'],
'satuanoutput' => $v['satuanoutput'],
'targetoutput' => $v['targetoutput'],
'targetoutputteks' => $v['targetoutputteks'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_output_giat_sub_keg', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'outputteks' => $v['outputteks'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_output_giat_sub_keg', $opsi);
//}
}
}
if (!empty($_POST['dataDana']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataDana = json_decode(stripslashes(html_entity_decode($_POST['dataDana'])), true);
} else {
$dataDana = $_POST['dataDana'];
}
/*$wpdb->update('data_dana_sub_keg', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataDana as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_dana_sub_keg
where tahun_anggaran=%d
AND kode_sbl=%s
AND iddanasubbl=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['iddanasubbl']));*/
$opsi = array(
'namadana' => $v['namadana'],
'kodedana' => $v['kodedana'],
'iddana' => $v['iddana'],
'iddanasubbl' => $v['iddanasubbl'],
'pagudana' => $v['pagudana'],
'is_locked' => $v['is_locked'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_dana_sub_keg', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'iddanasubbl' => $v['iddanasubbl'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_dana_sub_keg', $opsi);
//}
}
}
if (!empty($_POST['dataLokout']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataLokout = json_decode(stripslashes(html_entity_decode($_POST['dataLokout'])), true);
} else {
$dataLokout = $_POST['dataLokout'];
}
/*$wpdb->update('data_lokasi_sub_keg', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($dataLokout as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_lokasi_sub_keg
where tahun_anggaran=%d
AND kode_sbl=%s
AND iddetillokasi=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['iddetillokasi']));*/
$opsi = array(
'camatteks' => $v['camatteks'],
'daerahteks' => $v['daerahteks'],
'idcamat' => $v['idcamat'],
'iddetillokasi' => $v['iddetillokasi'],
'idkabkota' => $v['idkabkota'],
'idlurah' => $v['idlurah'],
'lurahteks' => $v['lurahteks'],
'kode_sbl' => $_POST['kode_sbl'],
'idsubbl' => $_POST['idsubbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek)) {
$wpdb->update('data_lokasi_sub_keg', $opsi, array(
'kode_sbl' => $_POST['kode_sbl'],
'iddetillokasi' => $v['iddetillokasi'],
'tahun_anggaran' => $_POST['tahun_anggaran']
));
} else {*/
$wpdb->insert('data_lokasi_sub_keg', $opsi);
//}
}
}
if (!empty($_POST['realisasi']) && $ret['status'] != 'error') {
$realisasi = $_POST['realisasi'];
/*$wpdb->update('data_realisasi_akun_sipd', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
));*/
foreach ($realisasi as $k => $v) {
/*$cek_id = $wpdb->get_var($wpdb->prepare("
SELECT
kode_sbl
from data_realisasi_akun_sipd
where tahun_anggaran=%d
AND kode_sbl=%s
AND kode_akun=%s
", $_POST['tahun_anggaran'], $_POST['kode_sbl'], $v['kode_akun']));*/
$opsi = array(
'id_unit' => $v['id_unit'],
'id_skpd' => $v['id_skpd'],
'id_sub_skpd' => $v['id_sub_skpd'],
'id_program' => $v['id_program'],
'id_giat' => $v['id_giat'],
'id_sub_giat' => $v['id_sub_giat'],
'id_daerah' => $v['id_daerah'],
'lokus_akun_teks' => $v['lokus_akun_teks'],
'id_akun' => $v['id_akun'],
'kode_akun' => $v['kode_akun'],
'nama_akun' => $v['nama_akun'],
'is_locked' => $v['is_locked'],
'nilai' => $v['nilai'],
'action' => $v['action'],
'realisasi' => $v['realisasi'],
'kode_sbl' => $_POST['kode_sbl'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
/*if (!empty($cek_id)) {
$wpdb->update('data_realisasi_akun_sipd', $opsi, array(
'id' => $cek_id
));
} else {*/
$wpdb->insert('data_realisasi_akun_sipd', $opsi);
//}
}
}
}
$iddana = false;
if (!empty($_POST['dataDana'])) {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$dataDana = json_decode(stripslashes(html_entity_decode($_POST['dataDana'])), true);
} else {
$dataDana = $_POST['dataDana'];
}
foreach ($dataDana as $k => $v) {
if (
empty($iddana)
&& !empty($v['iddana'])
) {
$iddana = $v['iddana'];
}
}
}
if (empty($iddana)) {
$iddana = get_option('_crb_default_sumber_dana');
}
if (!empty($_POST['rka']) && $ret['status'] != 'error') {
if (!empty($_POST['type']) && $_POST['type'] == 'ri') {
$rka = json_decode(stripslashes($_POST['rka']), true);
} else {
$rka = $_POST['rka'];
if ($rka == 0) {
$rka = array();
}
}
if (
(
empty($rka)
&& $_POST['no_page'] == 0
)
|| (
!empty($_POST['no_page'])
&& $_POST['no_page'] == 1
)
) {
$wpdb->update('data_rka', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
), array('%d', '%s'));
}
foreach ($rka as $k => $v) {
/*$cek = $wpdb->get_var($wpdb->prepare("
SELECT
id_rinci_sub_bl
from data_rka
where tahun_anggaran=%d
AND id_rinci_sub_bl=%s
AND kode_sbl=%s
", $_POST['tahun_anggaran'], $v['id_rinci_sub_bl'], $_POST['kode_sbl']));*/
$opsi = array(
'created_user' => $v['created_user'],
'createddate' => $v['createddate'],
'createdtime' => $v['createdtime'],
'harga_satuan' => $v['harga_satuan'],
'harga_satuan_murni' => $v['harga_satuan_murni'],
'id_daerah' => $v['id_daerah'],
'id_rinci_sub_bl' => $v['id_rinci_sub_bl'],
'id_standar_nfs' => $v['id_standar_nfs'],
'is_locked' => $v['is_locked'],
'jenis_bl' => $v['jenis_bl'],
'ket_bl_teks' => $v['ket_bl_teks'],
'kode_akun' => $v['kode_akun'],
'koefisien' => $v['koefisien'],
'koefisien_murni' => $v['koefisien_murni'],
'lokus_akun_teks' => $v['lokus_akun_teks'],
'nama_akun' => $v['nama_akun'],
'nama_komponen' => $v['nama_komponen'],
'spek_komponen' => $v['spek_komponen'],
'satuan' => $v['satuan'],
'sat1' => $v['sat1'],
'sat2' => $v['sat2'],
'sat3' => $v['sat3'],
'sat4' => $v['sat4'],
'volum1' => $v['volum1'],
'volum2' => $v['volum2'],
'volum3' => $v['volum3'],
'volum4' => $v['volum4'],
'volume' => $v['volume'],
'volume_murni' => $v['volume_murni'],
'spek' => $v['spek'],
'subs_bl_teks' => $v['subs_bl_teks']['subs_asli'],
'substeks' => $v['subs_bl_teks']['substeks'],
'id_dana' => $v['subs_bl_teks']['sumber_dana']['id_dana'],
'nama_dana' => $v['subs_bl_teks']['sumber_dana']['nama_dana'],
'is_paket' => $v['subs_bl_teks']['sumber_dana']['is_paket'],
'kode_dana' => $v['subs_bl_teks']['sumber_dana']['kode_dana'],
'subtitle_teks' => $v['subs_bl_teks']['sumber_dana']['subtitle_teks'],
'total_harga' => $v['total_harga'],
'rincian' => $v['rincian'],
'rincian_murni' => $v['rincian_murni'],
'totalpajak' => $v['totalpajak'],
'pajak' => $v['pajak'],
'pajak_murni' => $v['pajak_murni'],
'updated_user' => $v['updated_user'],
'updateddate' => $v['updateddate'],
'updatedtime' => $v['updatedtime'],
'user1' => $this->replace_char($v['user1']),
'user2' => $this->replace_char($v['user2']),
'idbl' => $_POST['idbl'],
'idsubbl' => $_POST['idsubbl'],
'kode_bl' => $_POST['kode_bl'],
'kode_sbl' => $_POST['kode_sbl'],
'idkomponen' => $v['idkomponen'],
'idketerangan' => $v['idketerangan'],
'idsubtitle' => $v['subs_bl_teks']['sumber_dana']['id_subtitle'],
'ssh_locked' => $v['ssh_locked'],
'akun_locked' => $v['akun_locked'],
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
if (
!empty($v['id_penerima'])
|| !empty($v['id_prop_penerima'])
|| !empty($v['id_camat_penerima'])
|| !empty($v['id_kokab_penerima'])
|| !empty($v['id_lurah_penerima'])
) {
$opsi['id_prop_penerima'] = $v['id_prop_penerima'];
$opsi['id_camat_penerima'] = $v['id_camat_penerima'];
$opsi['id_kokab_penerima'] = $v['id_kokab_penerima'];
$opsi['id_lurah_penerima'] = $v['id_lurah_penerima'];
$opsi['id_penerima'] = $v['id_penerima'];
}
/*if (!empty($cek)) {
$wpdb->update('data_rka', $opsi, array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'id_rinci_sub_bl' => $v['id_rinci_sub_bl'],
'kode_sbl' => $_POST['kode_sbl']
));
} else {*/
$wpdb->insert('data_rka', $opsi);
//}
// print_r($opsi); print_r($wpdb->last_query);
if (!empty($v['id_rinci_sub_bl'])) {
$cek_id = $wpdb->get_var($wpdb->prepare(
'
select
id
from data_mapping_sumberdana
where tahun_anggaran=%d
and id_rinci_sub_bl=%d
and active=1',
$_POST['tahun_anggaran'],
$v['id_rinci_sub_bl']
));
$opsi = array(
'id_rinci_sub_bl' => $v['id_rinci_sub_bl'],
'id_sumber_dana' => $iddana,
'user' => 'Singkron SIPD Merah',
'active' => 1,
'update_at' => current_time('mysql'),
'tahun_anggaran' => $_POST['tahun_anggaran']
);
$update = false;
if (!empty($v['subs_bl_teks']['sumber_dana']['id_dana'])) {
$update = true;
$opsi['id_sumber_dana'] = $v['subs_bl_teks']['sumber_dana']['id_dana'];
}
if (empty($cek_id)) {
$wpdb->insert('data_mapping_sumberdana', $opsi);
} else if ($update) {
$wpdb->update('data_mapping_sumberdana', $opsi, array(
'id' => $cek_id
));
}
}
}
} else if ($ret['status'] != 'error') {
// untuk menghapus rka subkeg yang dihapus di perubahan
if ($_POST['rka'] == 0) {
$wpdb->update('data_rka', array('active' => 0), array(
'tahun_anggaran' => $_POST['tahun_anggaran'],
'kode_sbl' => $_POST['kode_sbl']
), array('%d', '%s'));
} else {
$ret['status'] = 'error';
$ret['message'] = 'Format RKA Salah!';
}
}
if (
get_option('_crb_singkron_simda') == 1
&& get_option('_crb_tahun_anggaran_sipd') == $_POST['tahun_anggaran']
&& $_POST['total_page'] == $_POST['no_page']
) {
$debug = false;
if (get_option('_crb_singkron_simda_debug') == 1) {
$debug = true;
}
$this->simda->singkronSimda(array(
'return' => $debug
));
}
} else {
$ret['status'] = 'error';
$ret['message'] = 'APIKEY tidak sesuai!';
}
} else {
$ret['status'] = 'error';
$ret['message'] = 'Format Salah!';
}
return $aret;
}
?>
+89
View File
@@ -0,0 +1,89 @@
<?php
/*******************************************************************
Module : /apps/php/api/rpjmd.php
Desc. : PHP - Fungsi RPJMD
Created By : Siau Pheng ([email protected]).
Created Date : December 18th, 2025.
(c) 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
use siaupheng\fonia3\Web\Param;
$id_rpjmd = $_SESSION['__WEB_APP']['RENC_RPJMDID'];
$thn_submap = map_tahun_submap($id_rpjmd);
function simpan_rpjmd_prog($db = null, $adata = []) {
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Program RPJMD !'];
foreach ($adata as $_key1 => $aprog) {
$apull = [ 'RPJMDID' => $id_rpjmd,
'BUID' => 0,
'ProgID' => 0,
'K_Bidu' => $aprog['K_Bidu'],
'K_Prog' => $aprog['K_Prog'],
'Pagu_T1' => $aprog['Pagu_T1'],
'Pagu_T2' => $aprog['Pagu_T2'],
'Pagu_T3' => $aprog['Pagu_T3'],
'Pagu_T4' => $aprog['Pagu_T4'],
'Pagu_T5' => $aprog['Pagu_T5']
];
// program rpjmd
$db->Query("SELECT BUID,ProgID FROM para90_submap WHERE Tahun='".$thn_submap."' AND K_Prog='".$aprog['K_Prog']."' LIMIT 1");
if ($db->Next()) $apull = array_merge($apull, $db->AllRow());
$rd_progid = fastInsert("rpjmd_prog", $apull);
// outcome
foreach ($aprog['outcome'] as $_key2 => $arec) {
$apull = [ 'RD_PROGID' => $rd_progid,
'RPJMDID' => $id_rpjmd,
'No_Outcome' => $arec['No_Outcome'],
'Txt_Outcome' => $arec['Txt_Outcome'],
'A_OPD' => "0",
'A_RDSASAR' => "0",
'Limit_T1' => $arec['Limit_T1'],
'Limit_T2' => $arec['Limit_T2'],
'Limit_T3' => $arec['Limit_T3'],
'Limit_T4' => $arec['Limit_T4'],
'Limit_T5' => $arec['Limit_T5'],
'SIPD_UNIK' => $arec['SIPD_UNIK']
];
// sasaran rpjmd
if (count($arec['A_RDSASAR']) > 0) {
$_tsa = "";
foreach ($arec['A_RDSASAR'] as $_key_sa => $arec_sa) {
$db->Query("SELECT RD_SASARID FROM rpjmd_sasaran WHERE SIPD_SASAR='".$arec_sa."' LIMIT 1");
if ($db->Next()) $_tsa .= ",".$db->Row("RD_SASARID", 0)."";
}
$apull['A_RDSASAR'] = substr($_tsa, 1);
}
// opd
if (count($arec['A_OPD']) > 0) {
$_topd = "";
foreach ($arec['A_OPD'] as $_key_opd => $arec_opd) {
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$arec_opd."' LIMIT 1");
if ($db->Next()) $_topd .= ",".$db->Row("OPDID", 0)."";
}
$apull['A_OPD'] = substr($_topd, 1);
}
fastInsert("rpjmd_outcome", $apull);
}
}
// update yg buid = 0 dan progid = 0
$db->Query("UPDATE rpjmd_prog SET ProgID=(SELECT ProgID FROM para90_submap WHERE Tahun='".$thn_submap."' AND UrusanID=20 GROUP BY ProgID) WHERE ProgID=0 AND RPJMDID='".$id_rpjmd."'");
$db->Query("UPDATE rpjmd_prog A, (SELECT K_Bidu,BUID FROM para90_submap WHERE Tahun='".$thn_submap."' GROUP BY K_Bidu) B SET A.BUID=B.BUID WHERE A.K_Bidu=B.K_Bidu AND A.RPJMDID='".$id_rpjmd."'");
return $aret;
}
?>
+57
View File
@@ -0,0 +1,57 @@
<?php
require_once(dirname(__FILE__)."/../../../../../modules3/db.mysqli.php");
$db = DB();
$tahun = 0;
function API_SalingBantu() {
$curl_array = array(
CURLOPT_URL => "https://salingbantu.mempawahkab.go.id/api/api_bansos?api_key=6a8f0d2e3f47b53c5e687d9b45f10a98b2e33c9a7d4e6f5a3c2d1e0b8765f4c3",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
"Content-Type: application/json",
),
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
);
$curl = curl_init();
curl_setopt_array($curl, $curl_array);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$aresult[] = $err;
} else {
$aresult = json_decode($response, true);
}
return $aresult;
}
$adata = API_SalingBantu();
echo count($adata)." record<br>";
$db->Query("TRUNCATE i_salingbantu");
foreach ($adata as $arec) {
$arec['nama_pengaju'] = $db->SafeSQL($arec['nama_pengaju']);
$arec['judul'] = $db->SafeSQL($arec['judul']);
$arec['latar_belakang'] = $db->SafeSQL($arec['latar_belakang']);
$arec['maksud_tujuan'] = $db->SafeSQL($arec['maksud_tujuan']);
$arec['alamat'] = $db->SafeSQL($arec['alamat']);
$db->Query("INSERT INTO i_salingbantu (Tahun,Kode,Organisasi,Judul,Latar,Maksud,Alamat,Rupiah,Tipe,Level_Tahap,Tahapan,N_OPD,DateStamp) VALUES ('".$arec['tahun']."','".$arec['id']."','".$arec['nama_pengaju']."','".$arec['judul']."','".$arec['latar_belakang']."','".$arec['maksud_tujuan']."','".$arec['alamat']."','".$arec['nilai']."','".$arec['type']."','".$arec['level_tahap']."','".$arec['tahapan']."','".$arec['opd']."',NOW())");
$tahun = $arec['tahun'];
}
//$db->Query("update i_salingbantu a,para90_opd b set a.opdid=b.opdid where a.n_opd=b.n_opd");
$db->Query("INSERT INTO pok_salingbantu (Tahun,Kode,Organisasi,Judul,Latar,Maksud,Alamat,Rupiah,Tipe,Level_Tahap,Tahapan,DateStamp) SELECT Tahun,Kode,Organisasi,Judul,Latar,Maksud,Alamat,Rupiah,Tipe,Level_Tahap,Tahapan,DateStamp FROM i_salingbantu WHERE Tahun='".$tahun."' AND Kode NOT IN (SELECT Kode FROM pok_salingbantu WHERE Tahun='".$tahun."')");
echo "import done.";
?>
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
<?php
require_once(dirname(__FILE__)."/../../../../../modules3/db.mysqli.php");
$db = DB();
$adata = json_decode(file_get_contents("test.json"), true);
foreach ($adata as $arec) {
// indikator program
$db->Query("INSERT INTO renstra_prog_indi_copy (rpjmdid,opdid,progid,txt_indi,indi_satuan,indi_awal,indi_t1,indi_t2,indi_akhir,sipd_rpjmd,sipd_prog,sipd_sasar) VALUES (3,'".$arec['id_unit']."','".$arec['id_program']."','".$arec['indikator']."','".$arec['satuan']."','".$arec['target_awal']."','".$arec['target_1']."','".$arec['target_2']."','".$arec['target_akhir']."','".$arec['id_unik_indikator']."','".$arec['id_unik']."','".$arec['kode_sasaran']."')");
//$db->Query("INSERT INTO para90_opd_copy (k_opd,n_opd,p_nip,p_nama,p_jabatan,p_pangkat,sipd_opd,sipd_unit,sipd_unik) VALUES ('".$arec['kode_skpd']."','".$arec['nama_skpd']."','".$arec['nip_kepala']."','".$arec['nama_kepala']."','".$arec['status_kepala']."','".$arec['pangkat_kepala']."','".$arec['id_skpd']."','".$arec['id_unit']."','".$arec['id_unik']."')");
}
echo "import done.";
?>