Files
2026-06-07 14:39:54 +07:00

227 lines
17 KiB
PHP

<?php
/*******************************************************************
App. Name : SISTEM INFORMASI PERENCANAAN PEMBANGUNAN DAERAH
Module : /apps/php/sim/rkpd_awal.php
Desc. : PHP - Simulasi Push RKPD Awal ke SIPD Kemendagri
Created By : Siau Pheng ([email protected]).
Created Date : March 19th, 2021.
Last Modified : April 1st, 2022.
(c) 2021 - 2022, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia4\DB\MySQL;
use siaupheng\fonia4\DB\SQL;
use siaupheng\fonia4\Web\Param;
use siaupheng\fonia4\Web\Table;
use siaupheng\fonia4\Web\Form;
function Ranwal_Tambah_Sub($tahun=0, $id_opd=0, $id_prog=0) {
global $db;
$ahasil = array(); $aopd = array();
$db->Query("SELECT O.SIPD_OPD,O.SIPD_Unit,B.BUID FROM (SELECT * FROM para90_opd WHERE OPDID='".$id_opd."' LIMIT 1) O LEFT JOIN para90_bidu B ON (B.K_Bidu=O.K_Bidu1)");
if ($db->Next()) $aopd = $db->AllRow();
$tsql = ($id_opd == 0) ? "" : " AND OPDID='".$id_opd."'";
$tsql .= ($id_prog == 0) ? "" : " AND ProgID='".$id_prog."'";
$db->Query("SELECT R.SIPD_BL,R.SIPD_SBL,S.*,R.Pagu_Ini,R.Pagu_Dpn,I.* FROM (SELECT * FROM renja90_awal_sub WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."'".$tsql." AND SIPD_SBL='') R LEFT JOIN (SELECT A1.RA_SUBID,CONCAT('&suboutput[]=',GROUP_CONCAT(A1.Txt_Indi ORDER BY A1.K_Indi SEPARATOR '&suboutput[]=')) Indi_Sub,CONCAT('&targetsuboutput[]=',GROUP_CONCAT(REPLACE(A1.Indi_Ini,',','') ORDER BY A1.K_Indi SEPARATOR '&targetsuboutput[]=')) Indi_Target,CONCAT('&satuansuboutput[]=',GROUP_CONCAT(A2.K_Satuan ORDER BY A1.K_Indi SEPARATOR '&satuansuboutput[]=')) Indi_Satuan,SUM(IF(DanaID<>2,Pagu_Ini,0)) Dana_DAU,SUM(IF(DanaID=2,Pagu_Ini,0)) Dana_DAK FROM (SELECT * FROM renja90_awal_sub_indi WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."'".$tsql.") A1 LEFT JOIN para_satuan A2 ON (A2.SatuanID=A1.SatuanID) GROUP BY RA_SUBID) I ON (I.RA_SUBID=R.RA_SUBID) LEFT JOIN (SELECT ProgID,KegID,SubID,BUID,Lama_SubID FROM para90_sipd GROUP BY Lama_SubID) S ON (S.Lama_SubID=R.SubID) ORDER BY R.K_Sub");
while ($db->Next()) {
$test = "kode_bl=&kode_sbl=&id_skpd=&id_sub_skpd=&id_unik=&is_add_sub=1&sub_skpd=".$aopd['SIPD_Unit']."&label_prov=&label_kokab=&sub_giat=".$db->Row("SubID")."&bidang_urusan_rutin=".($db->Row("BUID")==104?$aopd['BUID']:"")."&tagging[]=0&id_tag_sub[]=&lokasi=553&waktumulai=1&waktuselesai=12&pagu_sub_giat=".$db->Row("Pagu_Ini")."&pagu_next_sub_giat=".$db->Row("Pagu_Dpn")."&output_sub_giat=".$db->Row("Indi_Sub").$db->Row("Indi_Target").$db->Row("Indi_Satuan");
if ($db->RowFloat("Dana_DAK", 0) > 0) $test .= "&dana[]=420&id_dana_sub[]=&pagu_dana[]=".$db->Row("Dana_DAK");
if ($db->RowFloat("Dana_DAK", 0) == 0) $test .= "&dana[]=334&id_dana_sub[]=&pagu_dana[]=".$db->Row("Dana_DAU");
$test_post = base64_encode($test);
$test_post = str_replace("=", "@", $test_post);
$ahasil[] = "\$.ajax({url:lru17,type:'post',data:'_token=".$_SESSION['__WEB_USER']['SIPD_TOKEN']."&v1bnA1m=".$_SESSION['__WEB_USER']['SIPD_ACAK']."&xSj0S=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36&DsK121m=".$test_post."',success: function(data){if(data['result']=='error'){console.error(data['message']);}},error: function(jqXHR, textStatus, error){console.error('ERROR PARAH');}});<br>";
}
return $ahasil;
}
function Ranwal_Ubah_Sub($tahun=0, $id_opd=0, $id_prog=0) {
global $db;
$ahasil = array(); $aopd = array();
$db->Query("SELECT O.SIPD_OPD,O.SIPD_Unit,B.BUID FROM (SELECT * FROM para90_opd WHERE OPDID='".$id_opd."' LIMIT 1) O LEFT JOIN para90_bidu B ON (B.K_Bidu=O.K_Bidu1)");
if ($db->Next()) $aopd = $db->AllRow();
$tsql = ($id_opd == 0) ? "" : " AND OPDID='".$id_opd."'";
$tsql .= ($id_prog == 0) ? "" : " AND ProgID='".$id_prog."'";
$db->Query("SELECT R.SIPD_BL,R.SIPD_SBL,S.*,R.Pagu_Ini,R.Pagu_Dpn,I.* FROM (SELECT * FROM renja90_awal_sub WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."'".$tsql." AND SIPD_SBL<>'') R LEFT JOIN (SELECT A1.RA_SUBID,CONCAT('&suboutput[]=',GROUP_CONCAT(A1.Txt_Indi ORDER BY A1.K_Indi SEPARATOR '&suboutput[]=')) Indi_Sub,CONCAT('&targetsuboutput[]=',GROUP_CONCAT(REPLACE(A1.Indi_Ini,',','') ORDER BY A1.K_Indi SEPARATOR '&targetsuboutput[]=')) Indi_Target,CONCAT('&satuansuboutput[]=',GROUP_CONCAT(A2.K_Satuan ORDER BY A1.K_Indi SEPARATOR '&satuansuboutput[]=')) Indi_Satuan,SUM(IF(DanaID<>2,Pagu_Ini,0)) Dana_DAU,SUM(IF(DanaID=2,Pagu_Ini,0)) Dana_DAK FROM (SELECT * FROM renja90_awal_sub_indi WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."'".$tsql.") A1 LEFT JOIN para_satuan A2 ON (A2.SatuanID=A1.SatuanID) GROUP BY RA_SUBID) I ON (I.RA_SUBID=R.RA_SUBID) LEFT JOIN (SELECT ProgID,KegID,SubID,BUID,Lama_SubID FROM para90_sipd GROUP BY Lama_SubID) S ON (S.Lama_SubID=R.SubID) ORDER BY R.K_Sub");
while ($db->Next()) {
$test = "kode_bl=".$db->Row("SIPD_BL")."&kode_sbl=".$db->Row("SIPD_SBL")."&id_skpd=&id_sub_skpd=&id_unik=&is_add_sub=1&sub_skpd=".$aopd['SIPD_Unit']."&label_prov=&label_kokab=&sub_giat=".$db->Row("SubID")."&bidang_urusan_rutin=".($db->Row("BUID")==104?$aopd['BUID']:"")."&tagging[]=0&id_tag_sub[]=&lokasi=553&waktumulai=1&waktuselesai=12&pagu_sub_giat=".$db->Row("Pagu_Ini")."&pagu_next_sub_giat=".$db->Row("Pagu_Dpn")."&output_sub_giat=".$db->Row("Indi_Sub").$db->Row("Indi_Target").$db->Row("Indi_Satuan");
if ($db->RowFloat("Dana_DAK", 0) > 0) $test .= "&dana[]=420&id_dana_sub[]=&pagu_dana[]=".$db->Row("Dana_DAK");
if ($db->RowFloat("Dana_DAK", 0) == 0) $test .= "&dana[]=334&id_dana_sub[]=&pagu_dana[]=".$db->Row("Dana_DAU");
$test_post = base64_encode($test);
$test_post = str_replace("=", "@", $test_post);
$ahasil[] = "\$.ajax({url:lru17,type:'post',data:'_token=".$_SESSION['__WEB_USER']['SIPD_TOKEN']."&v1bnA1m=".$_SESSION['__WEB_USER']['SIPD_ACAK']."&xSj0S=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36&DsK121m=".$test_post."',success: function(data){if(data['result']=='error'){console.error(data['message']);}},error: function(jqXHR, textStatus, error){console.error('ERROR PARAH');}});<br>";
}
return $ahasil;
}
function Ranwal_Ubah_Keg($tahun=0, $id_opd=0, $id_prog=0) {
global $db; $db2 = new MySQL();
$ahasil = array(); $aopd = array();
$db->Query("SELECT O.SIPD_OPD,O.SIPD_Unit,B.BUID FROM (SELECT * FROM para90_opd WHERE OPDID='".$id_opd."' LIMIT 1) O LEFT JOIN para90_bidu B ON (B.K_Bidu=O.K_Bidu1)");
if ($db->Next()) $aopd = $db->AllRow();
$tsql = ($id_opd == 0) ? "" : " AND OPDID='".$id_opd."'";
$tsql .= ($id_prog == 0) ? "" : " AND ProgID='".$id_prog."'";
$db->Query("SELECT R.*,SH.N_Satuan Satuan_Hasil,SK.N_Satuan Satuan_Keluar FROM (SELECT * FROM renja90_awal_keg WHERE Tahun='".$tahun."'".$tsql." AND SIPD_BL<>'') R LEFT JOIN para_satuan SK ON (SK.SatuanID=R.Keluar_SatuanID) LEFT JOIN para_satuan SH ON (SH.SatuanID=R.Hasil_SatuanID) ORDER BY R.K_Keg");
while ($db->Next()) {
$adata = $db->AllRow();
$db2->Query("SELECT CONCAT('&outcometeks[]=',GROUP_CONCAT(A1.Txt_Indi ORDER BY A1.RA_PROGINDIID SEPARATOR '&outcometeks[]=')) Indi_Prog,CONCAT('&targetoutcome[]=',GROUP_CONCAT(REPLACE(A1.Indi_T4,',','') ORDER BY A1.RA_PROGINDIID SEPARATOR '&targetoutcome[]=')) Indi_Target,CONCAT('&satuanoutcome[]=',GROUP_CONCAT(A2.K_Satuan ORDER BY A1.RA_PROGINDIID SEPARATOR '&satuanoutcome[]=')) Indi_Satuan FROM (SELECT * FROM renstra_prog_indi WHERE RA_PROGINDIID IN (".($adata['A_PROGINDI']??"0").")) A1 LEFT JOIN para_satuan A2 ON (A2.SatuanID=A1.SatuanID)");
if ($db2->Next()) $adata = array_merge($adata, $db2->AllRow());
$test = "kode_bl=".$adata['SIPD_BL']."&kode_sbl=0&id_skpd=".$aopd['SIPD_OPD']."&id_sub_skpd=".$aopd['SIPD_Unit']."&id_unik=0&is_add_sub=0".$adata['Indi_Prog'].$adata['Indi_Target'].$adata['Indi_Satuan']."&id_capaian[]=&indikator_outcome_teks=&target_outcome_teks=&satuan_target_outcome=&sasaran=".$adata['Sasaran']."&label_prov=&label_kokab=&label_iku=&label_giat=&output[]=".($adata['Keluar_Txt']??$adata['Hasil_Txt'])."&targetoutput[]=".($adata['Keluar_Target']??$adata['Hasil_Target'])."&satuanoutput[]=".($adata['Satuan_Keluar']??$adata['Satuan_Hasil'])."&hasil[]=".$adata['Hasil_Txt']."&targethasil[]=".$adata['Hasil_Target']."&satuanhasil[]=".$adata['Satuan_Hasil']."&sub_giat=&bidang_urusan_rutin=&lokasi=&waktumulai=&waktuselesai=&pagu_next_sub_giat=&output_sub_giat=";
$test_post = base64_encode($test);
$test_post = str_replace("=", "@", $test_post);
$ahasil[] = "\$.ajax({url:lru17,type:'post',data:'_token=".$_SESSION['__WEB_USER']['SIPD_TOKEN']."&v1bnA1m=".$_SESSION['__WEB_USER']['SIPD_ACAK']."&xSj0S=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36&DsK121m=".$test_post."',success: function(data){if(data['result']=='error'){console.error(data['message']);}},error: function(jqXHR, textStatus, error){console.error('ERROR PARAH');}});<br>";
}
return $ahasil;
}
/************************** RESPON HERE ***************************/
$db = $db ?? new MySQL();
$ajson = array();
$data = Param::Get("data");
$mode = Param::Get("mode");
$id_rpjmd = $_SESSION['__WEB_APP']['RENC_RPJMDID'];
$thn_renja = $_SESSION['__WEB_APP']['RENC_THN'];
$id_opd = Param::Get("OPDID", 0);
$id_prog = Param::Get("ProgID", 0);
if ( $data == "tabel-opd" || $data == "tabel-prog" ) {
$qsql = "Tahun='".$thn_renja."'";
$msql = "M.Aktif=1";
if ( $data == "tabel-prog" ) {
$qsql .= " AND OPDID='".$id_opd."'";
}
}
if ( $data == "tabel-opd" ) {
$obj = new Table($db);
$obj->set_query("SELECT M.OPDID OPDID2,M.K_OPD,M.N_OPD,M.Nama_OPD,CONCAT(K.ITEM_UDAH,' / ',K.ITEM_SEMUA) Status_Sub,CONCAT(KK.ITEMK_UDAH,' / ',KK.ITEMK_SEMUA) Status_Keg,IF(IFNULL(K.ITEM_UDAH,0)=IFNULL(K.ITEM_SEMUA,0),1,0) IDO FROM vi_para90_opd M LEFT JOIN (SELECT OPDID,COUNT(*) ITEM_SEMUA,SUM(IF(SIPD_SBL='',0,1)) ITEM_UDAH FROM renja90_awal_sub WHERE ".$qsql." GROUP BY OPDID) K ON (K.OPDID=M.OPDID) LEFT JOIN (SELECT OPDID,COUNT(*) ITEMK_SEMUA,SUM(IF(SIPD_BL='',0,1)) ITEMK_UDAH FROM renja90_awal_keg WHERE ".$qsql." GROUP BY OPDID) KK ON (KK.OPDID=M.OPDID) WHERE ".$msql);
$obj->add_field("OPDID2", "OPD", "hid");
$obj->add_field("Nama_OPD", "N_OPD", "hid");
$obj->add_field("K_OPD", "Kode", "c");
$obj->add_field("N_OPD", "Nama Perangkat Daerah", "awr");
$obj->add_field("Status_Keg", "Keg", "c");
$obj->add_field("Status_Sub", "Sub", "c");
$obj->set_field_order("K_OPD", "A");
$obj->set_row_color("IDO", "1", "rsuccess");
$obj->add_row_btn("send", "+ Sub", "RKPDAwalJS.kode_tambah_sub_o");
$obj->add_row_btn("send0", "= Sub", "RKPDAwalJS.kode_ubah_sub_o");
$obj->add_row_btn("send1", "= Keg", "RKPDAwalJS.kode_ubah_keg_o");
$obj->add_row_btn("select", "Program", "RKPDAwalJS.opd_select");
$obj->set_func_navi("RKPDAwalJS.data_query('detail-opd')");
$obj->set_textbtn(true);
$ajson[] = $obj->json_table("divOPD");
} else if ( $data == "tabel-prog" ) {
$obj = new Table($db);
$obj->set_query("SELECT PR.ProgID,PR.K_Prog,M.N_Prog,CONCAT('(',PR.K_Prog,') ',M.N_Prog) Nama_Prog,CONCAT(K.ITEM_UDAH,' / ',K.ITEM_SEMUA) Status_Sub,CONCAT(KK.ITEMK_UDAH,' / ',KK.ITEMK_SEMUA) Status_Keg,IF(IFNULL(K.ITEM_UDAH,0)=IFNULL(K.ITEM_SEMUA,0),1,0) IDO FROM (SELECT * FROM renja90_awal_prog WHERE ".$qsql.") PR LEFT JOIN para90_prog M ON (PR.ProgID=M.ProgID) LEFT JOIN (SELECT ProgID,COUNT(*) ITEM_SEMUA,SUM(IF(SIPD_SBL='',0,1)) ITEM_UDAH FROM renja90_awal_sub WHERE ".$qsql." GROUP BY ProgID) K ON (PR.ProgID=K.ProgID) LEFT JOIN (SELECT ProgID,COUNT(*) ITEMK_SEMUA,SUM(IF(SIPD_BL='',0,1)) ITEMK_UDAH FROM renja90_awal_keg WHERE ".$qsql." GROUP BY ProgID) KK ON (PR.ProgID=KK.ProgID)");
$obj->add_field("ProgID", "ID", "hid");
$obj->add_field("Nama_Prog", "Nama PROG", "hid");
$obj->add_field("K_Prog", "Kode", "c");
$obj->add_field("N_Prog", "Nama Program", "awr");
$obj->add_field("Status_Keg", "Keg", "c");
$obj->add_field("Status_Sub", "Sub", "c");
$obj->set_field_order("K_Prog", "A");
$obj->set_row_color("IDO", "1", "rsuccess");
$obj->add_row_btn("send", "+ Sub", "RKPDAwalJS.kode_tambah_sub");
$obj->add_row_btn("send0", "= Sub", "RKPDAwalJS.kode_ubah_sub");
$obj->add_row_btn("send1", "= Keg", "RKPDAwalJS.kode_ubah_keg");
$obj->set_func_navi("RKPDAwalJS.data_query('tabel-prog')");
$obj->set_textbtn(true);
$ajson[] = $obj->json_table("divPROG");
} else if ( $data == "kode-tambah-sub" ) {
$ajson = Ranwal_Tambah_Sub($thn_renja, $id_opd, $id_prog);
} else if ( $data == "kode-ubah-sub" ) {
$ajson = Ranwal_Ubah_Sub($thn_renja, $id_opd, $id_prog);
} else if ( $data == "kode-ubah-keg" ) {
$ajson = Ranwal_Ubah_Keg($thn_renja, $id_opd, $id_prog);
} else if ( $data == "upload-json" || $data == "simpan-json" ) {
$ajson['result'] = 0;
if ($data == "upload-json") {
$adata = json_decode(file_get_contents($_FILES['file']['tmp_name']), true);
} else {
$adata = json_decode(stripslashes(Param::Get("Kode_JSON", "{}")), true);
}
$db->Query("TRUNCATE sipd_rkpd_sub");
foreach ($adata['data'] as $arec) {
$db->Query("INSERT INTO sipd_rkpd_sub (ID_SUB,ID_UNIT,SIPD_BL,SIPD_SBL) VALUES ('".$arec['id_sub_giat']."','".$arec['id_unit']."','".$arec['kode_bl']."','".$arec['kode_sbl']."')");
}
$db->Query("UPDATE sipd_rkpd_sub A,para90_sub B SET A.SubID=B.SubID,A.KegID=B.KegID,A.ProgID=B.ProgID WHERE A.ID_SUB=B.SubID");
$db->Query("UPDATE sipd_rkpd_sub A,para90_sipd B SET A.SubID=B.Lama_SubID,A.KegID=B.Lama_KegID,A.ProgID=B.Lama_ProgID WHERE A.ID_SUB=B.SubID AND A.SubID=0");
$db->Query("UPDATE sipd_rkpd_sub A,para90_opd B SET A.OPDID=B.OPDID WHERE A.ID_UNIT=B.SIPD_UNIT AND A.ID_UNIT>0");
//$db->Query("UPDATE renja90_awal_sub SET SIPD_BL='',SIPD_SBL='' WHERE Tahun='".$thn_renja."'");
$db->Query("UPDATE renja90_awal_sub A,sipd_rkpd_sub B SET A.SIPD_BL=B.SIPD_BL,A.SIPD_SBL=B.SIPD_SBL WHERE A.Tahun='".$thn_renja."' AND A.SubID=B.SubID AND A.KegID=B.KegID AND A.ProgID=B.ProgID AND A.OPDID=B.OPDID");
$db->Query("UPDATE renja90_awal_keg A,sipd_rkpd_sub B SET A.SIPD_BL=B.SIPD_BL WHERE A.Tahun='".$thn_renja."' AND A.KegID=B.KegID AND A.ProgID=B.ProgID AND A.OPDID=B.OPDID");
$ajson['result'] = 1;
} else if ( $data == "detail-sipd" ) {
$form = new Form($db);
$kode_token = $form->textbox("_", "Kode_Token", $_SESSION['__WEB_USER']['SIPD_TOKEN'], true, true, "text");
$kode_acak = $form->textbox("_", "Kode_Acak", $_SESSION['__WEB_USER']['SIPD_ACAK'], true, true, "text");
echo '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Kode_Token">Token</label>
<div class="col">'.$kode_token.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Kode_Acak">Acak</label>
<div class="col">'.$kode_acak.'</div>
</div>';
exit;
} else if ( $data == "simpan-sipd" ) {
$_SESSION['__WEB_USER']['SIPD_TOKEN'] = Param::Get("Kode_Token", "KODE_TOKEN");
$_SESSION['__WEB_USER']['SIPD_ACAK'] = Param::Get("Kode_Acak", "KODE_ACAK");
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-header custom-style">Push Renja Awal ke SIPD Kemendagri</div><div class="card-body">
<div class="row mb-1">
<div class="col-md-9 col-sm-12">
<div class="input-group">
<input class="form-control" id="Nama_OPD" placeholder="Nama Perangkat Daerah" type="text" readonly>
<input id="OPDID" type="hidden" value="0">
<button class="btn btn-ganti" type="button" id="butOPD"><span><i class="icon cui-swap-horizontal"></span></i>OPD</button>
</div>
</div>
<div class="col-md-3 col-sm-12 mt-2 mt-sm-0 d-flex justify-content-between">
<div class="dropdown">
<button class="btn btn-secondary shadow-none dropdown-toggle" type="button" id="dropdownMenuButton" data-coreui-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Opsi Semua Data</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#" id="opsiUpload">Upload JSON</a>
<!--<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#" id="opsiTambahSub">Tambah Sub Kegiatan</a>
<a class="dropdown-item" href="#" id="opsiUbahSub">Ubah Sub Kegiatan</a>-->
</div>
</div>
<button class="btn btn-secondary shadow-none" type="button" id="butSIPD">Setup SIPD</button>
</div>
</div>
<input id="ProgID" type="hidden" value="0">
<div id="divOPD">&nbsp;</div>
<div id="divPROG">&nbsp;</div>
</div></div>
</div>';
exit;
}
send_json($ajson, true);
?>