Files
edata/apps/php/push/rkpd_awal.php
T
2026-06-07 14:39:54 +07:00

321 lines
16 KiB
PHP

<?php
/*******************************************************************
App. Name : SISTEM INFORMASI PERENCANAAN PEMBANGUNAN DAERAH
Module : /apps/php/push/rkpd_awal.php
Desc. : PHP - Push API RKPD Awal ke SIPD Kemendagri
Created By : Siau Pheng ([email protected]).
Created Date : October 28th, 2011.
Last Modified : August 20th, 2020.
(c) 2011 - 2020, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(dirname(__FILE__)."/../../../../../modules3/web.auth.php");
require_once(dirname(__FILE__)."/../../../../../modules3/web.table.php");
require_once(dirname(__FILE__)."/../../../../../modules3/web.form.php");
require_once(dirname(__FILE__)."/../../../../../modules3/data.json.php");
require_once(dirname(__FILE__)."/../func.sippd.php");
function Bangda_Request($apost = array(), $tahun=0) {
$api_key = "9885846625b49e88baa18d46e2df6ff6";
$str_json = json_encode($apost);
$curl_array = array(
CURLOPT_URL => "https://sipd.go.id/run/serv/push_ranwal?kodepemda=6102&tahun=".$tahun,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $str_json,
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
"Authorization: Bearer ".$api_key,
"Content-Type: application/json",
"Content-Length: " . strlen($str_json)
),
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false
);
$aresult = array('code' => 0, 'msg' => "");
$curl = curl_init();
curl_setopt_array($curl, $curl_array);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$aresult = json_decode($response, true);
return $aresult;
}
function Bangda_Data($id_rpjmd=0, $tahun=0, $id_opd=0, $aprog=array()) {
global $db, $db2, $db3, $db4;
$apost = array();
$askpd = array();
$tsql = (count($aprog)>0) ? " AND ProgID IN (". join(",", $aprog) .")" : "";
$askpd['kodepemda'] = "6102";
$askpd['tahun'] = "".$tahun;
$askpd['pilihanbidang'] = array();
// data opd
$abidu = array();
$db->Query("SELECT O.*,B.N_Bidu,U.N_Urusan FROM para90_opd O LEFT JOIN para90_bidu B ON (B.K_Bidu=O.K_Bidu1) LEFT JOIN para90_urusan U ON (B.K_Urusan=U.K_Urusan) WHERE O.OPDID='".$id_opd."'");
if ($db->Next()) {
$askpd['kodebidang'] = $db->Row("K_Bidu1");
$askpd['uraibidang'] = $db->Row("N_Bidu");
$askpd['kodeskpd'] = $db->Row("K_OPD");
$askpd['uraiskpd'] = $db->Row("N_OPD");
$askpd['uraiurusan'] = $db->Row("N_Urusan");
$askpd['pejabat'] = array(
'kepalanip'=>$db->Row("P_NIP"),
'kepalanama'=>$db->Row("P_Nama"),
'kepalajabatan'=>$db->Row("P_Jabatan"),
'kepalapangkat'=>$db->Row("P_Pangkat")
);
$abidu[] = $db->Row("K_Bidu1");
if ($db->Row("K_Bidu2")<>"0.00") $abidu[] = $db->Row("K_Bidu2");
if ($db->Row("K_Bidu3")<>"0.00") $abidu[] = $db->Row("K_Bidu3");
}
$db->Query("SELECT * FROM para90_bidu WHERE K_Bidu IN ('".implode("','", $abidu)."')");
while ($db->Next()) {
$askpd['pilihanbidang'][] = $db->Row("K_Bidu");
}
// data program
$askpd['program'] = array();
$db->Query("SELECT P.*,PO.N_Prog,B.K_Bidu,B.N_Bidu,IFNULL(S.N_Satuan,'') N_Satuan FROM (SELECT * FROM renja90_prog WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."'".$tsql.") P LEFT JOIN para90_prog PO ON (P.ProgID=PO.ProgID) LEFT JOIN para90_bidu B ON (PO.K_Bidu=B.K_Bidu) LEFT JOIN para_satuan S ON (P.Target_SatuanID=S.SatuanID) ORDER BY P.K_Prog");
while ($db->Next()) {
$aprog = array();
$aprog['kodebidang'] = ($db->Row("K_Bidu")=="X.XX") ? $askpd['kodebidang'] : $db->Row("K_Bidu");
$aprog['uraibidang'] = ($db->Row("K_Bidu")=="X.XX") ? $askpd['uraibidang'] : $db->Row("N_Bidu");
$aprog['kodeprogram'] = $db->Row("K_Prog");
$aprog['uraiprogram'] = $db->Row("N_Prog");
$aprog['prioritas'] = array();
// data indikator program
$aprog['capaian'] = array();
//$db2->Query("SELECT * FROM rpjmd_prog_indi WHERE RPJMDID='".$id_rpjmd."' AND RD_PROGINDIID IN (SELECT RD_PROGINDIID FROM renstra_detail_indi WHERE RPJMDID='".$id_rpjmd."' AND RA_PROGRAMID='".$db->Row("RA_PROGRAMID")."')");
//while ($db2->Next()) {
$aindi = array();
$aindi['kodeindikator'] = "1";
$aindi['tolokukur'] = $db->Row("Indi_Txt");
$aindi['satuan'] = $db->Row("N_Satuan");
$aindi['real_p3'] = "0";
$aindi['pagu_p3'] = "0";
$aindi['real_p2'] = "0";
$aindi['pagu_p2'] = "0";
$aindi['real_p1'] = "0";
$aindi['pagu_p1'] = "0";
$aindi['target'] = "0";//$db2->Row("Indi_T3");
$aindi['pagu'] = "0";//
$aindi['pagu_p'] = "0";
$aindi['target_n1'] = "0";//$db2->Row("Indi_T4");//todo: set auto sesuai tahun
$aindi['pagu_n1'] = "0";// ?
$aprog['capaian'][] = $aindi;
//}
// data kegiatan
$aprog['kegiatan'] = array();
$db2->Query("SELECT D.*,K.N_Keg,IFNULL(S.N_Satuan,'') N_Satuan FROM (SELECT * FROM renja90_keg WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."' AND ProgID='".$db->Row("ProgID")."') D LEFT JOIN para90_keg K ON (D.KegID=K.KegID) LEFT JOIN para_satuan S ON (D.Target_SatuanID=S.SatuanID) ORDER BY D.K_Keg");
while ($db2->Next()) {
$akeg = array();
$akeg['kodekegiatan'] = $db2->Row("K_Keg");
$akeg['uraikegiatan'] = $db2->Row("N_Keg");
$akeg['pagu'] = $db2->RowFloat("Pagu_Ini");
$akeg['pagu_p'] = 0;
$akeg['sumberdana'] = array();
$db3->Query("SELECT R.*,D.K_Dana FROM (SELECT DanaID,SUM(Pagu_Ini) Pagu_Ini FROM renja90_rinci WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."' AND K_RKA IN (SELECT K_RKA FROM renja90_sub WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."' AND ProgID='".$db->Row("ProgID")."' AND KegID='".$db2->Row("KegID")."') GROUP BY DanaID) R LEFT JOIN para_dana D ON (R.DanaID=D.DanaID)");
while ($db3->Next()) {
$akeg['sumberdana'][] = array('pagu'=>$db3->RowFloat("Pagu_Ini"),'sumberdana'=>$db3->Row("K_Dana"),'kodesumberdana'=>$db3->Row("DanaID"));
}
$akeg['prioritas'] = array();
/*$db3->Query("SELECT Txt_Misi FROM rpjmd_misi WHERE RPJMDID='".$id_rpjmd."' AND RD_MISIID IN (SELECT P.RD_MISIID FROM rpjmd_prog P LEFT JOIN rpjmd_prog_indi I ON (I.RPJMDID=P.RPJMDID AND I.RD_PROGID=P.RD_PROGID) WHERE I.RD_PROGINDIID IN (SELECT RD_PROGINDIID FROM renstra_detail_indi WHERE RPJMDID='".$id_rpjmd."' AND RA_PROGRAMID='".$db->Row("RA_PROGRAMID")."'))");
while ($db3->Next()) {
if ($db3->Row("Txt_Misi","")<>"") $akeg['prioritas'][] = array('prioritasdaerah'=>$db3->Row("Txt_Misi"));
}*/
$akeg['lokasi'] = array();//array(array('lokasi'=>$db2->Row("Lokasi"),'kodelokasi'=>"",'detaillokasi'=>""));
$akeg['indikator'] = array();
$akeg['indikator'][] = array( 'kodeindikator' => "1",
'jenis' => "KELUARAN",
'tolokukur' => $db2->Row("Indi_Txt"),
'satuan' => $db2->Row("N_Satuan"),
'real_p3' => "0",
'pagu_p3' => "0",
'real_p2' => "0",
'pagu_p2' => "0",
'real_p1' => "0",
'pagu_p1' => $db2->RowFloat("Pagu_Lalu"),
'target' => $db2->Row("Target_Ini"),
'pagu' => $db2->RowFloat("Pagu_Ini"),
'pagu_p' => "0",
'target_n1' => 0,//$db2->Row("Target_Dpn")
'pagu_n1' => $db2->RowFloat("Pagu_Dpn")
);
// data sub kegiatan
$akeg['subkegiatan'] = array();
$db3->Query("SELECT D.*,K.N_Sub,IFNULL(S.N_Satuan,'') N_Satuan FROM (SELECT * FROM renja90_sub WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."' AND ProgID='".$db->Row("ProgID")."' AND KegID='".$db2->Row("KegID")."') D LEFT JOIN para90_sub K ON (D.SubID=K.SubID) LEFT JOIN para_satuan S ON (D.Target_SatuanID=S.SatuanID) ORDER BY D.K_Sub");
while ($db3->Next()) {
$asubkeg = array();
$asubkeg['kodesubkegiatan'] = $db3->Row("K_Sub");
$asubkeg['uraisubkegiatan'] = $db3->Row("N_Sub");
$asubkeg['pagu'] = $db3->RowFloat("Pagu_Ini");
$asubkeg['pagu_p'] = "0";
$asubkeg['sumberdana'] = array();
$db4->Query("SELECT R.*,D.K_Dana FROM (SELECT DanaID,SUM(Pagu_Ini) Pagu_Ini FROM renja90_rinci WHERE Tahun='".$tahun."' AND OPDID='".$id_opd."' AND K_RKA='".$db3->Row("K_RKA")."' GROUP BY DanaID) R LEFT JOIN para_dana D ON (R.DanaID=D.DanaID)");
while ($db4->Next()) {
$asubkeg['sumberdana'][] = array('pagu'=>$db4->RowFloat("Pagu_Ini"),'sumberdana'=>$db4->Row("K_Dana"),'kodesumberdana'=>$db4->Row("DanaID"));
}
$asubkeg['prioritas'] = array();
$asubkeg['lokasi'] = array();
if ($db3->Row("Lokasi")<>"") $asubkeg['lokasi'][] = array('lokasi'=>$db3->Row("Lokasi"),'kodelokasi'=>"",'detaillokasi'=>"");//todo: kodelokasi
$asubkeg['indikator'] = array();
$asubkeg['indikator'][] = array( 'kodeindikator' => "1",
'jenis' => "KELUARAN",
'tolokukur' => $db3->Row("Indi_Txt"),
'satuan' => $db3->Row("N_Satuan"),
'real_p3' => "0",
'pagu_p3' => "0",
'real_p2' => "0",
'pagu_p2' => "0",
'real_p1' => "0",
'pagu_p1' => "0",
'target' => $db3->Row("Target_Ini"),
'pagu' => $db3->RowFloat("Pagu_Ini"),
'pagu_p' => "0",
'target_n1' => "0",
'pagu_n1' => $db3->RowFloat("Pagu_Dpn")
);
$akeg['subkegiatan'][] = $asubkeg;
}
$aprog['kegiatan'][] = $akeg;
}
$askpd['program'][] = $aprog;
}
$apost[] = $askpd;
return $apost;
}
/************************** RESPON HERE ***************************/
$db = DB();
$db2 = DB();
$db3 = DB();
$db4 = DB();
$ajson = array();
$data = Param::Get("data");
$id_rpjmd = $_SESSION['__WEB_APP']['RENC_RPJMDID'];
$tahun = $_SESSION['__WEB_APP']['RENC_THN'];
$id_opd = Param::Get("OPDID", 0);
$aprog = array();
if ( $data == "kirim" || $data == "" ) {
$alist = Param::GetArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") $aprog[] = $_key;
}
}
if ( $data == "detail-opd" || $data == "detail-prog" || $data == "kirim" ) {
$qsql = "RPJMDID='".$id_rpjmd."' AND Tahun='".$tahun."'";
$msql = "M.Aktif=1";
if ( $data == "detail-prog" ) {
$qsql .= " AND OPDID='".$id_opd."'";
}
$qbd = $qsql;
}
if ( $data == "detail-opd" ) {
$obj = new Table($db);
$obj->set_query("SELECT K.*,M.OPDID OPDID2,M.K_OPD,M.N_OPD,M.Nama_OPD,CONCAT(IFNULL(B.UDAH_PROG,0),' / ',K.ITEM_PROG) Status FROM vi_para90_opd M LEFT JOIN (SELECT OPDID,COUNT(DISTINCT ProgID) ITEM_PROG,COUNT(DISTINCT KegID) ITEM_KEG,COUNT(*) ITEM_SUB,SUM(Pagu_Ini) TOT_PAGU FROM renja90_sub WHERE ".$qsql." GROUP BY OPDID) K ON (K.OPDID=M.OPDID) LEFT JOIN (SELECT OPDID,COUNT(DISTINCT ProgID) UDAH_PROG FROM bangda_rkpd_awal WHERE ".$qsql." GROUP BY OPDID) B ON (B.OPDID=M.OPDID) WHERE ".$msql);
$obj->add_field("OPDID2", "OPD", "hid");
$obj->add_field("K_OPD", "KODE", "c");
$obj->add_field("N_OPD", "NAMA OPD", "awr");
$obj->add_field("TOT_PAGU", "PAGU", "r", "rupiah2");
$obj->add_field("ITEM_PROG", "PROG", "r", "rupiah");
$obj->add_field("ITEM_KEG", "KEG", "r", "rupiah");
$obj->add_field("ITEM_SUB", "SUB", "r", "rupiah");
$obj->add_field("Status", "Status", "c");
$obj->add_field("Nama_OPD", "Nama OPD", "hid");
$obj->set_field_order("K_OPD", "A");
$obj->add_row_btn("select", "Program", "PRKPDAwalJS.opd_select");
$obj->add_row_btn("send", "Kirim / OPD", "PRKPDAwalJS.opd_kirim");
$obj->set_func_navi("PRKPDAwalJS.data_query('detail-opd')");
$obj->set_textbtn(true);
$ajson[] = $obj->json_table("divOPD", 60);
} else if ( $data == "detail-prog" ) {
$obj = new Table($db);
$obj->set_query("SELECT K.*,IFNULL(PR.ProgID,0) ProgID,PR.K_Prog,M.N_Prog,IF(IFNULL(PO.ProgID,0)=0,'Belum','Sudah') Status,'N' Pilih FROM (SELECT ProgID,K_Prog FROM renja90_prog WHERE ".$qsql.") PR LEFT JOIN para90_prog M ON (PR.ProgID=M.ProgID) LEFT JOIN (SELECT ProgID,COUNT(DISTINCT KegID) ITEM_KEG,COUNT(*) ITEM_SUB,SUM(Pagu_Ini) TOT_PAGU FROM renja90_sub WHERE ".$qsql." GROUP BY ProgID) K ON (PR.ProgID=K.ProgID) LEFT JOIN (SELECT * FROM bangda_rkpd_awal WHERE ".$qsql.") PO ON (PR.ProgID=PO.ProgID) WHERE ".$msql);
$obj->add_field("ProgID", "ID", "hid");
$obj->add_field("K_Prog", "KODE", "c");
$obj->add_field("N_Prog", "NAMA PROGRAM", "awr");
$obj->add_field("TOT_PAGU", "PAGU", "r", "rupiah2");
$obj->add_field("ITEM_KEG", "KEG", "r", "rupiah");
$obj->add_field("ITEM_SUB", "SUB", "r", "rupiah");
$obj->add_field("Status", "Status", "l");
$obj->set_field_order("K_Prog", "A");
$obj->set_row_color("Status", "Sudah", "rblue");
$obj->add_row_checkbox("ProgID", "Pilih", array("Y","N"));
$obj->set_func_navi("PRKPDAwalJS.data_query('detail-prog')");
$obj->set_textbtn(true);
$ajson[] = $obj->json_table("divPROG", 60);
} else if ( $data == "kirim" ) {
$apost = Bangda_Data($id_rpjmd, $tahun, $id_opd, $aprog);
$api = Bangda_Request($apost, $tahun);
$tmsg = "Ada masalah dalam proses !";
if (isset($api['code'])) {
$tmsg = $api['msg'];
if ($api['code']==200) {
if (count($aprog)>0) {
foreach ($aprog as $_val) {
$db->Query("INSERT IGNORE INTO bangda_rkpd_awal SET RPJMDID='".$id_rpjmd."',Tahun='".$tahun."',OPDID='".$id_opd."',ProgID='".$_val."',DateStamp=NOW(),UserID='".user_id()."'");
}
} else {
$db->Query("INSERT IGNORE INTO bangda_rkpd_awal SELECT '".$id_rpjmd."','".$tahun."',OPDID,ProgID,NOW(),'".user_id()."' FROM renja90_prog WHERE ".$qsql." AND OPDID='".$id_opd."'");
}
}
}
$ajson['msg'] = $tmsg;
$ajson['pre'] = ($api['pre']=="") ? implode("<br>", $api['log']) : $api['pre'];
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-header custom-style">Push RKPD Awal ke SIPD Kemendagri</div><div class="card-body">
<div class="row mb-1">
<div class="col">
<div class="input-group">
<input class="form-control" id="Nama_OPD" placeholder="Nama OPD" type="text" readonly>
<input id="OPDID" type="hidden" value="0">
<span class="input-group-append">
<button class="btn btn-info btn-ganti" type="button" id="butOPD"><span><i class="c-icon cui-swap-horizontal"></span></i>OPD</button>
</span>
</div>
</div>
</div>
<div id="divOPD">&nbsp;</div>
<div id="divPROG">&nbsp;</div>
</div></div>
</div>';
} else if ( $data == "" ){
$ajson = Bangda_Data($id_rpjmd, $tahun, $id_opd, $aprog);
}
send_json($ajson);
?>