276 lines
14 KiB
PHP
276 lines
14 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
App. Name : SISTEM INFORMASI PERENCANAAN PEMBANGUNAN DAERAH
|
|
Module : /apps/php/repo/usul_desa.php
|
|
Desc. : PHP - Laporan Daftar Usulan / Desa
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : March 21st, 2014.
|
|
Last Modified : June 6th, 2024.
|
|
|
|
(c) 2014 - 2024, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
ini_set("pcre.backtrack_limit", 100000000);
|
|
|
|
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
|
require_once(__DIR__."/../func/report.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\Web\Param;
|
|
use siaupheng\fonia3\Web\Form;
|
|
|
|
$db = (is_resource($db)) ? $db : new MySQL();
|
|
$ajson = [];
|
|
$data = Param::Get("data");
|
|
$tahun = Param::Get("Tahun", $_SESSION['__WEB_APP']['RENC_THN']);
|
|
$id_kec = Param::Get("KecID", 0);
|
|
$id_kel = Param::Get("KelID", 0);
|
|
$tipe = Param::Get("Tipe", "D");
|
|
|
|
if ( $data == "print" || $data == "xls") {
|
|
$adesa = array();
|
|
if ($id_kel > 0) {
|
|
$db->Query("SELECT * FROM vi_para_desa WHERE DesaID='".$id_kel."' LIMIT 1");
|
|
if ($db->Next()) $adesa = $db->AllRow();
|
|
}
|
|
|
|
$tsql = " Tahun='".$tahun."' AND JU IN (0,2)";
|
|
$tsql .= ($id_kec==0) ? "" : " AND KecID='".$id_kec."'";
|
|
$tsql .= ($id_kel==0) ? "" : " AND KelID='".$id_kel."'";
|
|
|
|
// proses rekap database
|
|
Report_Empty("mus_bel");
|
|
$db->Query("INSERT INTO rep_mus_bel SELECT T.Tahun,T.KelID,T.BelID,SUM(T.Rupiah),'".user_unix()."','".user_id()."' FROM (SELECT * FROM mus_usulan_desa WHERE".$tsql.") T GROUP BY T.BelID");
|
|
|
|
if ($tipe == "D") {
|
|
$db->Query("SELECT T.*,B.K_Belanja,B.N_Belanja,CONCAT(T.Volume,' ',S.N_Satuan) Vol_Satuan,O.S_OPD,RB.* FROM (SELECT * FROM mus_usulan_desa WHERE".$tsql.") T LEFT JOIN para_belanja B ON (B.BelID=T.BelID) LEFT JOIN para_satuan S ON (S.SatuanID=T.SatuanID) LEFT JOIN para90_opd O ON (O.OPDID=T.OPDID) LEFT JOIN rep_mus_bel RB ON (T.KelID=RB.KelID AND T.BelID=RB.BelID AND T.Tahun=RB.Tahun AND RB.UserID='".user_id()."' AND RB.Unix='".user_unix()."') ORDER BY B.K_Belanja,T.Kode");
|
|
} else {// REKAP
|
|
$db->Query("SELECT RB.*,B.K_Belanja,B.N_Belanja FROM (SELECT * FROM rep_mus_bel WHERE Tahun='".$tahun."' AND KelID='".$id_kel."' AND Unix='".user_unix()."' AND UserID='".user_id()."') RB LEFT JOIN para_belanja B ON (RB.BelID=B.BelID) ORDER BY B.K_Belanja");
|
|
}
|
|
}
|
|
|
|
if ( $data == "print" ) {
|
|
if ($tipe == "D") {
|
|
$t_head = '<div><p class="judul">REKAP USULAN RKP DESA TAHUN '.($tahun-1).'<br>UNTUK MUSRENBANG KECAMATAN TAHUN '.$tahun.'</p></div>
|
|
<table><tr><td width="150">DESA</td><td>'.$adesa['N_Desa'].'</td></tr><tr><td>KECAMATAN</td><td>'.$adesa['N_Kec'].'</td></tr><tr><td>KABUPATEN</td><td>SAMBAS</td></tr></table>
|
|
<div><table class="garis" autosize="1"><thead><tr><th colspan="2">Usulan Kegiatan</th><th>Lokasi</th><th>Volume</th><th>Sasaran</th><th>Waktu</th><th>Jumlah</th><th>OPD</th></tr></thead><tbody>';
|
|
$t_foot = '</tbody></table></div>';
|
|
$_line = '<tr><td class="c">%s</td><td>%s</td><td>%s</td><td class="r">%s</td><td>%s</td><td class="r">%s</td><td class="r">%s</td><td>%s</td></tr>';
|
|
$_sub = '<tr class="bel"><td class="b c">%s</td><td colspan="5" class="b">%s</td><td class="b r">%s</td><td class="b"> </td></tr>';
|
|
|
|
$body = $t_head;
|
|
|
|
$kbel = "";
|
|
while ($db->Next()) {
|
|
if ($kbel <> $db->Row("K_Belanja")) {
|
|
$body .= sprintf($_sub, $db->Row("K_Belanja"), $db->Row("N_Belanja"), rupiah($db->Row("BEL_RUPIAH")));
|
|
$kbel = $db->Row("K_Belanja");
|
|
}
|
|
$body .= sprintf($_line, $db->Row("Kode"), $db->Row("Usulan"), $db->Row("Lokasi"), $db->Row("Vol_Satuan"), $db->Row("Sasaran"), $db->Row("Waktu"), rupiah($db->Row("Rupiah")), $db->Row("S_OPD"));
|
|
}
|
|
$body .= sprintf($t_foot);
|
|
|
|
} else {// REKAP
|
|
$t_head = '<div><p class="judul">REKAP USULAN RKP DESA TAHUN '.($tahun-1).'<br>UNTUK MUSRENBANG KECAMATAN TAHUN '.$tahun.'</p></div>
|
|
<table><tr><td width="150">DESA</td><td>'.$adesa['N_Desa'].'</td></tr><tr><td>KECAMATAN</td><td>'.$adesa['N_Kec'].'</td></tr><tr><td>KABUPATEN</td><td>SAMBAS</td></tr></table>
|
|
<div><table class="garis" autosize="1"><thead><tr><th>Kode</th><th>Jenis Belanja</th><th>Jumlah</th></tr></thead><tbody>';
|
|
$t_foot = '</tbody></table></div>';
|
|
$_line = '<tr><td class="c">%s</td><td>%s</td><td class="r">%s</td></tr>';
|
|
$_sub = '<tr><td colspan="2" class="b c">%s</td><td class="b r">%s</td></tr>';
|
|
|
|
$body = $t_head;
|
|
|
|
$tot_rupiah = 0;
|
|
while ($db->Next()) {
|
|
$body .= sprintf($_line, $db->Row("K_Belanja"), $db->Row("N_Belanja"), rupiah($db->Row("BEL_RUPIAH")));
|
|
$tot_rupiah += $db->Row("BEL_RUPIAH");
|
|
}
|
|
$body .= sprintf($_sub, "JUMLAH USULAN KEGIATAN ".$adesa['N_Desa'], rupiah($tot_rupiah));
|
|
$body .= sprintf($t_foot);
|
|
}
|
|
echo $html . $body;
|
|
|
|
} else if ( $data == "xls") {
|
|
\PhpOffice\PhpSpreadsheet\Cell\Cell::setValueBinder( new \PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder() );
|
|
|
|
$styleTxt = [
|
|
'numberFormat' => ['formatCode' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_TEXT]
|
|
];
|
|
$styleNum = [
|
|
'numberFormat' => ['formatCode' => \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED2]
|
|
];
|
|
|
|
$ssheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
|
|
$ssheet->getProperties()
|
|
->setCreator($_SESSION['__WEB_APP']['APP_NAME']." v".$_SESSION['__WEB_APP']['APP_VER'])
|
|
->setLastModifiedBy($_SESSION['__WEB_APP']['APP_NAME']." v".$_SESSION['__WEB_APP']['APP_VER'])
|
|
->setTitle("Rekap Usulan RKP Desa Tahun ".$tahun)
|
|
->setCategory("Rekap Usulan RKP Desa")
|
|
->setSubject("Rekap Usulan RKP Desa")
|
|
->setDescription("Rekap Usulan RKP Desa")
|
|
->setCompany("Bappeda Kabupaten Sambas");
|
|
$sheet = $ssheet->getActiveSheet();
|
|
$sheet->setTitle("USULAN DESA");
|
|
|
|
// header
|
|
$styleHeader = [
|
|
'font' => ['bold' => true],
|
|
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER]
|
|
];
|
|
$styleTableH = [
|
|
'font' => ['bold' => true],
|
|
'alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER, 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER, 'wrapText' => true],
|
|
'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => ['rgb'=>"D0D0D0"]],
|
|
'borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, 'color' => ['rgb'=>"C0C0C0"]]]
|
|
];
|
|
|
|
$sheet->setCellValue("A1", "REKAP USULAN RKP DESA TAHUN ".($tahun-1));
|
|
$sheet->setCellValue("A2", "UNTUK MUSRENBANG KECAMATAN TAHUN ".$tahun);
|
|
|
|
$sheet->setCellValue("A3", "DESA : ".$adesa['N_Desa']);
|
|
$sheet->setCellValue("A4", "KECAMATAN : ".$adesa['N_Kec']);
|
|
$sheet->setCellValue("A5", "KABUPATEN : SAMBAS");
|
|
|
|
if ($tipe == "D") {
|
|
$sheet->mergeCells('A1:H1');
|
|
$sheet->mergeCells('A2:H2');
|
|
$sheet->getStyle('A1:H2')->applyFromArray($styleHeader);
|
|
// table header
|
|
$sheet->getColumnDimension('A')->setWidth(10);
|
|
$sheet->getColumnDimension('B')->setWidth(50);
|
|
$sheet->getColumnDimension('C')->setWidth(30);
|
|
$sheet->getColumnDimension('D')->setWidth(20);
|
|
$sheet->getColumnDimension('E')->setWidth(30);
|
|
$sheet->getColumnDimension('F')->setWidth(10);
|
|
$sheet->getColumnDimension('G')->setWidth(18);
|
|
$sheet->getColumnDimension('H')->setWidth(22);
|
|
|
|
$sheet->setCellValue("A6", "Usulan Kegiatan");
|
|
$sheet->mergeCells('A6:B6');
|
|
$sheet->setCellValue("C6", "Lokasi");
|
|
$sheet->setCellValue("D6", "Volume");
|
|
$sheet->setCellValue("E6", "Sasaran");
|
|
$sheet->setCellValue("F6", "Waktu");
|
|
$sheet->setCellValue("G6", "Jumlah");
|
|
$sheet->setCellValue("H6", "OPD");
|
|
$sheet->getStyle('A6:H6')->applyFromArray($styleTableH);
|
|
|
|
$baris = 7; $kbel = "";
|
|
$styleBEL = [
|
|
'font' => ['bold' => true],
|
|
'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => ['rgb'=>"A2FFFF"]]
|
|
];
|
|
while ($db->Next()) {
|
|
if ($kbel <> $db->Row("K_Belanja")) {
|
|
$sheet->setCellValue("A".$baris, $db->Row("K_Belanja"));
|
|
$sheet->setCellValue("B".$baris, $db->Row("N_Belanja"));
|
|
$sheet->mergeCells('B'.$baris.':F'.$baris);
|
|
$sheet->setCellValue("G".$baris, $db->RowFloat("BEL_RUPIAH"));
|
|
$sheet->getStyle('G'.$baris.':G'.$baris)->applyFromArray($styleNum);
|
|
$sheet->getStyle('A'.$baris.':H'.$baris)->applyFromArray($styleBEL);
|
|
$baris++;
|
|
$kbel = $db->Row("K_Belanja");
|
|
}
|
|
$sheet->setCellValue("A".$baris, $db->Row("Kode"));
|
|
$sheet->setCellValue("B".$baris, $db->Row("Usulan"));
|
|
$sheet->setCellValue("C".$baris, $db->Row("Lokasi"));
|
|
$sheet->setCellValue("D".$baris, $db->Row("Vol_Satuan"));
|
|
$sheet->setCellValue("E".$baris, $db->Row("Sasaran"));
|
|
$sheet->setCellValue("F".$baris, $db->Row("Waktu"));
|
|
$sheet->setCellValue("G".$baris, $db->RowFloat("Rupiah"));
|
|
$sheet->setCellValue("H".$baris, $db->Row("S_OPD"));
|
|
$sheet->getStyle('G'.$baris.':G'.$baris)->applyFromArray($styleNum);
|
|
$baris++;
|
|
}
|
|
$sheet->getStyle('A7:H'.($baris-1))->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]]]);
|
|
|
|
} else {// REKAP
|
|
$sheet->mergeCells('A1:C1');
|
|
$sheet->mergeCells('A2:C2');
|
|
$sheet->getStyle('A1:C2')->applyFromArray($styleHeader);
|
|
// table header
|
|
$sheet->getColumnDimension('A')->setWidth(10);
|
|
$sheet->getColumnDimension('B')->setWidth(70);
|
|
$sheet->getColumnDimension('C')->setWidth(18);
|
|
|
|
$sheet->setCellValue("A6", "Kode");
|
|
$sheet->setCellValue("B6", "Jenis Belanja");
|
|
$sheet->setCellValue("C6", "Jumlah");
|
|
$sheet->getStyle('A6:C6')->applyFromArray($styleTableH);
|
|
|
|
$baris = 7; $tot_rupiah = 0;
|
|
$styleBEL = [
|
|
'font' => ['bold' => true],
|
|
'fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID, 'startColor' => ['rgb'=>"A2FFFF"]]
|
|
];
|
|
while ($db->Next()) {
|
|
$sheet->setCellValue("A".$baris, $db->Row("K_Belanja"));
|
|
$sheet->setCellValue("B".$baris, $db->Row("N_Belanja"));
|
|
$sheet->setCellValue("C".$baris, $db->RowFloat("BEL_RUPIAH"));
|
|
$sheet->getStyle('C'.$baris.':C'.$baris)->applyFromArray($styleNum);
|
|
$baris++;
|
|
$tot_rupiah += $db->Row("BEL_RUPIAH");
|
|
}
|
|
$sheet->setCellValue("B".$baris, "JUMLAH USULAN KEGIATAN ".$adesa['N_Desa']);
|
|
$sheet->setCellValue("C".$baris, $tot_rupiah);
|
|
$sheet->getStyle('C'.$baris.':C'.$baris)->applyFromArray($styleNum);
|
|
$sheet->getStyle('A'.$baris.':C'.$baris)->applyFromArray(['font' => ['bold' => true]]);
|
|
$baris++;
|
|
|
|
$sheet->getStyle('A7:C'.($baris-1))->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]]]);
|
|
|
|
}
|
|
|
|
$sheet->getSheetView()->setZoomScale(75);
|
|
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
header('Content-Disposition: attachment;filename="Usulan Desa '.$adesa['N_Desa'].'.xlsx"');
|
|
header('Cache-Control: max-age=0');
|
|
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($ssheet, 'Xlsx');
|
|
$writer->save('php://output');
|
|
$ssheet->disconnectWorksheets();
|
|
unset($ssheet);
|
|
unset($writer);
|
|
|
|
} else if ( $data == "option-kel" ) {
|
|
$aoption = ['type' => "option", 'id' => "KelID", 'value' => 0, 'avalue' => []];
|
|
$db->Query("SELECT * FROM para_lokasi WHERE Aktif=1 AND Level=2 AND IndukID='".$id_kec."' ORDER BY K_Lokasi");
|
|
if ($db->RecordCount()<>1) $aoption['avalue'][] = ['value'=>0, 'html'=>""];
|
|
while ($db->Next()) {
|
|
if ($db->RecordCount()==1) $aoption['value'] = $db->Row("LokasiID");
|
|
$aoption['avalue'][] = ['value'=>$db->Row("LokasiID"), 'html'=>$db->Row("N_Lokasi")];
|
|
}
|
|
$ajson[] = $aoption;
|
|
|
|
} else if ( $data == "default") {
|
|
$q_kec = ($_SESSION['__WEB_USER']['Level']==2) ? " AND LokasiID IN (".$_SESSION['__WEB_USER']['AK_KEC'].")": " AND Level=1 AND LokasiID>2";
|
|
|
|
$form = new Form($db);
|
|
$ttipe = $form->radio("_", "Tipe", "D", true, true, array('D'=>"Detail",'R'=>"Rekap"));
|
|
$ttahun = $form->option_db("_", "Tahun", $tahun, true, true, "para_periode", array("Tahun","Tahun"), "Tahun BETWEEN '".$_SESSION['__WEB_APP']['Tahun_Min']."' AND '".$_SESSION['__WEB_APP']['Tahun_Max']."'");
|
|
$tkec = $form->option_db("_", "KecID", 0, true, true, "para_lokasi", array("LokasiID","N_Lokasi"), "Aktif=1".$q_kec." ORDER BY N_Lokasi", array(0," "), null, "RepoUsulDesaJS.oc_Kec()");
|
|
$tkel = $form->option("_", "KelID", 0, true, true, array());
|
|
echo '
|
|
<div class="row mb-1">
|
|
<label class="col-sm-4 col-lg-3 col-form-label" for="Tahun">Tahun Data</label>
|
|
<div class="col-sm-4 col-lg-5">'.$ttahun.'</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-4 col-lg-3 col-form-label" for="KecID">Nama Kecamatan</label>
|
|
<div class="col-sm-8 col-lg-9">'.$tkec.'</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-4 col-lg-3 col-form-label" for="KelID">Nama Desa</label>
|
|
<div class="col-sm-8 col-lg-9">'.$tkel.'</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-4 col-lg-3 col-form-label" for="Tipe">Jenis Laporan</label>
|
|
<div class="col-sm-8 col-lg-9">'.$ttipe.'</div>
|
|
</div>';
|
|
}
|
|
|
|
send_json($ajson);
|
|
?>
|