Download All Salur dan Belanja

This commit is contained in:
Pusdatin BPKD Jkt
2023-01-10 11:20:41 +07:00
parent c482d85b24
commit e6f4fc9595
6 changed files with 513 additions and 220 deletions
@@ -25,14 +25,11 @@ class JadwalSalurdanaController extends Controller
return view('jadwal_salurdana.index'); return view('jadwal_salurdana.index');
} }
public function datatable(Request $request) protected function filterJadwalSalur($request)
{ {
$ta = getTA();
$post = $request->all(); $post = $request->all();
$offset = $post["start"];
$limit = $post["length"];
$src = isset($post["src"]) ? $post["src"]:"";
$ta = $post["ta"];
$dataFilter = 0;
$typeDana = isset($post["type_dana"])?$post["type_dana"]:""; $typeDana = isset($post["type_dana"])?$post["type_dana"]:"";
$idSPS = isset($post["id_sps"])?$post["id_sps"]:""; $idSPS = isset($post["id_sps"])?$post["id_sps"]:"";
$sqlstr = Sps_pendapatan::queryJadwalSalurDana($ta); $sqlstr = Sps_pendapatan::queryJadwalSalurDana($ta);
@@ -41,8 +38,6 @@ class JadwalSalurdanaController extends Controller
$sqlstr.=" AND x.KODE_REKENING='$idSPS'"; $sqlstr.=" AND x.KODE_REKENING='$idSPS'";
} }
$dataTotal = count(DB::select(DB::raw($sqlstr)));
if (!empty($typeDana)){ if (!empty($typeDana)){
if ($typeDana == "cht"){ if ($typeDana == "cht"){
$sqlstr.=" AND x.kode_rekening='4.2.01.01.01.0004'"; $sqlstr.=" AND x.kode_rekening='4.2.01.01.01.0004'";
@@ -51,6 +46,45 @@ class JadwalSalurdanaController extends Controller
} }
} }
return $sqlstr;
}
protected function filterBelanja($request, $typeDana)
{
$ta = getTA();
$post = $request->all();
$src = isset($post["src"]) ? $post["src"]:"";
$typeDanaFilter = $typeDana == "cht" ? " AND x.jenis_dana = 'DBH' AND lower(x.NAMA_SUBJENIS_DANA) = 'cht' ": " AND x.jenis_dana = 'DAK'";
$idSPS = isset($post["id_sps"])?$post["id_sps"]:"";
$skpd = isset($post["skpd"])?$post["skpd"]:"";
$sqlstr = 'SELECT x.kode_skpd, x.nama_skpd, x.kode_rsk, x.nama_rsk, x.jumlah_anggaran, y.*
FROM SAMASA.VW_BELANJA_REALISASI x
LEFT JOIN SAMASA.MV_ASYNC_AKB_REALISASI y
ON x.KODE_RSK = y.I_IDRSK AND x.TAHUN_ANGGARAN = y.C_ANGG_TAHUN
WHERE x.TAHUN_ANGGARAN = \''.$ta.'\''.$typeDanaFilter;
if (getRole()=="skpd"){
$sqlstr.=" AND KODE_SKPD='".Auth::user()->nrk."'";
}else{
if ($skpd){
$sqlstr.=" AND KODE_SKPD='$skpd'";
}
}
return $sqlstr;
}
public function datatable(Request $request)
{
$post = $request->all();
$offset = $post["start"];
$limit = $post["length"];
$sqlstr = $this->filterJadwalSalur($request);
$dataTotal = count(DB::select(DB::raw($sqlstr)));
$sqlLimit = $limit > 0?" OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY ":""; $sqlLimit = $limit > 0?" OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY ":"";
$data = DB::select(DB::raw($sqlstr.'ORDER BY x.kode_rekening '.$sqlLimit)); $data = DB::select(DB::raw($sqlstr.'ORDER BY x.kode_rekening '.$sqlLimit));
$dataFilter = count(DB::select(DB::raw($sqlstr))); $dataFilter = count(DB::select(DB::raw($sqlstr)));
@@ -64,35 +98,7 @@ class JadwalSalurdanaController extends Controller
public function index_cht_dak(Request $request, $typeDana) public function index_cht_dak(Request $request, $typeDana)
{ {
$judul = strtoupper($typeDana); return view("jadwal_salurdana.index_cht_dak", compact("typeDana"));
$this->setTitle("Jadwal Salur Dana $judul");
$filter = $typeDana == "cht" ? " AND x.jenis_dana = 'DBH' AND x.sub_jenis_dana = 3 ": " AND x.jenis_dana = 'DAK'";
if (getRole()=="skpd"){
$filter.=" AND x.kode_skpd='".Auth::user()->nrk."'";
}
$idSPS = 0;
if ($request->has("id_sps"))
{
if ($request->id_sps > 0)
{
$filter.=" AND x.kode_rekening='".$request->id_sps."'";
$idSPS = $request->id_sps;
}
}
$dataAkbRealisasi = DB::select(DB::raw("SELECT x.kode_skpd, x.nama_skpd, x.kode_rsk, x.nama_rsk, x.jumlah_anggaran, y.*
FROM SAMASA.BELANJA_REALISASI x
LEFT JOIN (".BelanjaRealisasi::akbRealisasi().") y
ON x.KODE_RSK = y.I_IDRSK
-- AND x.TAHUN_ANGGARAN = y.C_ANGG_TAHUN
WHERE x.TAHUN_ANGGARAN = ".getTa()." $filter ORDER BY x.kode_skpd,x.nama_skpd,x.kode_rsk "));
$dataAkbRealisasi = array_map(function ($value) {
return (array)$value;
}, $dataAkbRealisasi);
return view("jadwal_salurdana.index_".$typeDana, compact("dataAkbRealisasi","idSPS"));
} }
public function datatable_cht_dak(Request $request, $typeDana) public function datatable_cht_dak(Request $request, $typeDana)
@@ -100,25 +106,12 @@ class JadwalSalurdanaController extends Controller
$post = $request->all(); $post = $request->all();
$offset = $post["start"]; $offset = $post["start"];
$limit = $post["length"]; $limit = $post["length"];
// $src = $post["src"];
$ta = $post["ta"];
$typeDanaFilter = $typeDana == "cht" ? " AND x.jenis_dana = 'DBH' AND x.sub_jenis_dana = 'CHT' ": " AND x.jenis_dana = 'DAK'";
$dataFilter=0;
$sqlstr = 'SELECT x.kode_skpd, x.nama_skpd, x.kode_rsk, x.nama_rsk, x.jumlah_anggaran, y.*
FROM SAMASA.BELANJA_REALISASI x
LEFT JOIN SAMASA.MV_ASYNC_AKB_REALISASI y
ON x.KODE_RSK = y.I_IDRSK AND x.TAHUN_ANGGARAN = y.C_ANGG_TAHUN
WHERE x.TAHUN_ANGGARAN = \''.$ta.'\''.$typeDanaFilter;
if (getRole()=="skpd"){ $sqlstr = $this->filterBelanja($request, $typeDana);
$sqlstr.=" AND KODE_SKPD='".Auth::user()->nrk."'";
}
$sqlLimit = $limit > 0?" OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY ":""; $sqlLimit = $limit > 0?" OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY ":"";
$data = DB::select(DB::raw($sqlstr.' ORDER BY x.kode_skpd,x.kode_rsk '.$sqlLimit)); $data = DB::select(DB::raw($sqlstr.' ORDER BY x.kode_skpd,x.kode_rsk '.$sqlLimit));
$dataTotal = count(DB::select(DB::raw($sqlstr))); $dataTotal = count(DB::select(DB::raw($sqlstr)));
// if (!empty($src)){
//$data->whereRaw("(LOWER(NAMA_REKENING) LIKE '%".strtolower($src)."%' OR LOWER(KODE_REKENING) LIKE '%".strtolower($src)."%')");
// }
$dataFilter = count(DB::select(DB::raw($sqlstr))); $dataFilter = count(DB::select(DB::raw($sqlstr)));
return response()->json([ return response()->json([
@@ -128,33 +121,18 @@ class JadwalSalurdanaController extends Controller
]); ]);
} }
public function download(Request $request) protected function exportJadwalSalur($request)
{ {
$post = $request->all(); $sqlstr = $this->filterJadwalSalur($request);
$typeDana = isset($post["type_dana"])?$post["type_dana"]:"";
$idSPS = isset($post["id_sps"])?$post["id_sps"]:"";
$ta = $post["ta"];
$sqlstr = Sps_pendapatan::queryJadwalSalurDana($ta);
if (!empty($idSPS)){
$sqlstr.=" AND x.ID=$idSPS";
}
if (!empty($typeDana)){
if ($typeDana == "cht"){
$sqlstr.=" AND kode_rekening='4.2.01.01.01.0004'";
}else{
$sqlstr.=" AND SUBSTR(kode_rekening,1,12) IN ('4.2.01.01.03','4.2.01.01.04')";
}
}
$sqlstr .= " ORDER BY kode_rekening"; $sqlstr .= " ORDER BY kode_rekening";
$data = DB::select(DB::raw($sqlstr)); $data = DB::select(DB::raw($sqlstr));
$data = json_decode(json_encode($data),true); $data = json_decode(json_encode($data),true);
$fileName = 'Jadwal-salur-dana.xlsx';
$spreadsheet = new Spreadsheet(); $spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet(); $sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Jadwal Salur');
$sheet->setCellValue('A1', 'Kode Rekening'); $sheet->setCellValue('A1', 'Kode Rekening');
$sheet->setCellValue('B1', 'Nama Rekening'); $sheet->setCellValue('B1', 'Nama Rekening');
$alpha = range("A","Z"); $alpha = range("A","Z");
@@ -211,6 +189,101 @@ class JadwalSalurdanaController extends Controller
$sheet->setCellValue($strAlpha.$rows , "=SUM($SUMRANGE)"); $sheet->setCellValue($strAlpha.$rows , "=SUM($SUMRANGE)");
} }
return $spreadsheet;
}
public function download(Request $request)
{
$spreadsheet = $this->exportJadwalSalur($request);
$fileName = 'Jadwal-salur-dana.xlsx';
$writer = new Xlsx($spreadsheet);
$writer->save("downloadFiles/".$fileName);
$headers = [
'Content-Type' => 'application/vnd.ms-excel',
'Content-Disposition' => 'attachment;filename='.$fileName
];
return response()->download("downloadFiles/".$fileName, $fileName, $headers);
}
public function downloadAll(Request $request)
{
$post = $request->all();
$fileName = 'Jadwal-salur-belanja-'.date("Ymd").'.xlsx';
$spreadsheet = $this->exportJadwalSalur($request);
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(1);
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Akb dan Realisasi');
$sheet->setCellValue('A1', 'SKPD');
$sheet->setCellValue('B1', 'RSK');
$alpha = range("A","Z");
$colIndex = 2;
// Nama Kolom bulan
$bulans = GetBulan();
foreach($bulans as $bulan){
$sheet->setCellValue($alpha[$colIndex].'1', $bulan);
$colIndex++;
$sheet->mergeCells($alpha[$colIndex].'1'.':'.$alpha[$colIndex].'1');
$colIndex++;
}
$sheet->setCellValue(getAlphabetCell($colIndex).'1', "Total");
$sheet->mergeCells(getAlphabetCell($colIndex).'1'.':'.getAlphabetCell($colIndex+1).'1');
$sheet->mergeCells('A1:A2');
$sheet->mergeCells('B1:B2');
$colIndex++;
// Nama Kolom Jadwal dan Realisasi
$colName = "Realisasi";
for($i=2;$i<=$colIndex;$i++){
$colName = $colName == "AKB" ? "Realisasi":"AKB";
$sheet->setCellValue(getAlphabetCell($i).'2', $colName);
}
$sqlstr = $this->filterBelanja($request, $post["type_dana"]);
$data = DB::select(DB::raw($sqlstr));
$data = json_decode(json_encode($data),true);
// Data Kolom Bulan dan Realisasi
$rows = 3;
foreach ($data as $val){
$sheet->setCellValue('A' . $rows, $val["kode_skpd"]." | ".$val["nama_skpd"]);
$sheet->setCellValue('B' . $rows, $val["kode_rsk"]." | ".$val["nama_rsk"]);
$totalJadwalSalur = 0;
$totalRealisasi = 0;
$currIndex = 2;
for($i=1;$i<=12;$i++){
$sheet->setCellValue(getAlphabetCell($currIndex).$rows, $val["v_akb_".substr("00".$i,-2)]);
$totalJadwalSalur += $val["v_akb_".substr("00".$i,-2)];
$currIndex++;
$sheet->setCellValue(getAlphabetCell($currIndex).$rows, $val["v_bku_".substr("00".$i,-2)]);
$totalRealisasi += $val["v_bku_".substr("00".$i,-2)];
$currIndex++;
}
$sheet->setCellValue(getAlphabetCell($currIndex).$rows, $totalJadwalSalur);
$sheet->setCellValue(getAlphabetCell($currIndex+1).$rows, $totalRealisasi);
$rows++;
}
// TOTAL BAWAH
$sheet->setCellValue("A".$rows , "TOTAL");
$sheet->mergeCells('A'.$rows.':'.'B'.$rows);
for ($x=2;$x<=$colIndex;$x++){
$strAlpha = getAlphabetCell($x);
$SUMRANGE = $strAlpha."3:".$strAlpha.($rows-1);
$sheet->setCellValue($strAlpha.$rows , "=SUM($SUMRANGE)");
}
$spreadsheet->setActiveSheetIndex(0);
$writer = new Xlsx($spreadsheet); $writer = new Xlsx($spreadsheet);
$writer->save("downloadFiles/".$fileName); $writer->save("downloadFiles/".$fileName);
$headers = [ $headers = [
@@ -249,7 +249,7 @@ class RealisasiBelanjaController extends Controller
public function submit_akb_spd(VwBelanjaRealisasi $BelanjaRealisasi) public function submit_akb_spd(VwBelanjaRealisasi $BelanjaRealisasi)
{ {
$vwAKB = DB::select(DB::raw("SELECT * FROM (".BelanjaRealisasi::akbRealisasi().") x WHERE I_IDRSK = ".$BelanjaRealisasi->kode_rsk)); $vwAKB = DB::select(DB::raw("SELECT * FROM SAMASA.MV_ASYNC_AKB_REALISASI x WHERE I_IDRSK = ".$BelanjaRealisasi->kode_rsk));
$vwAKB = json_decode(json_encode($vwAKB[0]), true); $vwAKB = json_decode(json_encode($vwAKB[0]), true);
$vwSPD = []; $vwSPD = [];
+1 -7
View File
@@ -108,13 +108,7 @@ class BelanjaRealisasi extends Eloquent
public function akbRealisasi() public function akbRealisasi()
{ {
$ta = getTA(); $ta = getTA();
$sqlstr = "SELECT I_IDRSK,SUM(V_AKB_01) AS V_AKB_01,SUM(V_AKB_02) AS V_AKB_02,SUM(V_AKB_03) AS V_AKB_03,SUM(V_AKB_04) AS V_AKB_04,SUM(V_AKB_05) AS V_AKB_05, $sqlstr = "SELECT * FROM MV_ASYNC_AKB_REALISASI WHERE TAHUN = $ta";
SUM(V_AKB_06) AS V_AKB_06,SUM(V_AKB_07) AS V_AKB_07,SUM(V_AKB_08) AS V_AKB_08,SUM(V_AKB_09) AS V_AKB_09,SUM(V_AKB_10) AS V_AKB_10,
SUM(V_AKB_11) AS V_AKB_11,SUM(V_AKB_12) AS V_AKB_12,
SUM(V_BKU_01) AS V_BKU_01,SUM(V_BKU_02) AS V_BKU_02,SUM(V_BKU_03) AS V_BKU_03,SUM(V_BKU_04) AS V_BKU_04,SUM(V_BKU_05) AS V_BKU_05,
SUM(V_BKU_06) AS V_BKU_06,SUM(V_BKU_07) AS V_BKU_07,SUM(V_BKU_08) AS V_BKU_08,SUM(V_BKU_09) AS V_BKU_09,SUM(V_BKU_10) AS V_BKU_10,
SUM(V_BKU_11) AS V_BKU_11,SUM(V_BKU_12) AS V_BKU_12
FROM MV_ASYNC_AKB_REALISASI GROUP BY I_IDRSK";
return $sqlstr; return $sqlstr;
} }
@@ -103,12 +103,13 @@
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
<div id="search-dt"> <?php /* <div id="search-dt">
<?php if (getRole()!="skpd"){ ?> <?php if (getRole()!="skpd"){ ?>
<label class="src-skpd">SKPD: </label> <label class="src-skpd">SKPD: </label>
<?php } ?> <?php } ?>
</div> </div>
<table id="dtTableJadwalBelanja" class="table table-bordered table-striped jambo_table tblClickRow" style="width:150%"> */?>
<table id="dtTableJadwalBelanja" class="table table-bordered table-striped jambo_table nowrap" style="width:150%">
<thead> <thead>
<tr class="headings"> <tr class="headings">
<th rowspan=2>No</th> <th rowspan=2>No</th>
@@ -160,7 +161,7 @@
</thead> </thead>
<tbody> <tbody>
<?php <?php
foreach ($dataAkbRealisasi as $key => $value) { /* foreach ($dataAkbRealisasi as $key => $value) {
echo "<tr> echo "<tr>
<td>".($key+1)."</td> <td>".($key+1)."</td>
<td><div style='width:200px;'>".$value["nama_skpd"]."</div></td> <td><div style='width:200px;'>".$value["nama_skpd"]."</div></td>
@@ -186,7 +187,7 @@
} }
echo "</tr>"; echo "</tr>";
} }*/
?> ?>
</tbody> </tbody>
</table> </table>
@@ -225,11 +226,23 @@
dtTable.draw(); dtTable.draw();
}); });
$('#dtTableJadwalBelanja').DataTable( { var dtTableBelanja =$('#dtTableJadwalBelanja').DataTable( {
"processing": false, "processing": true,
"serverSide": false, "serverSide": true,
"ordering": false, "ordering": false,
"autoWidth": false, "autoWidth": false,
"ajax": {
url: "{{ $baseUrl }}/jadwal-salurdana/cht/datatable",
type: "POST",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: function (d) {
d.src = $("#src").val(),
d.ta = $("#srcTA").val(),
d.type_dana = "cht"
}
},
"columnDefs": [ "columnDefs": [
{ "width": "250px", "targets": 1 }, { "width": "250px", "targets": 1 },
{ "width": "400px", "targets": 2 } { "width": "400px", "targets": 2 }
@@ -239,6 +252,132 @@
[ "10", "25", "50", "All" ] [ "10", "25", "50", "All" ]
], ],
"paging": true, // Table pagination "paging": true, // Table pagination
"columns": [
{ "data": null},
{ "data": "nama_skpd", "width": "400px" },
{ "data": "nama_rsk", "className":"text-left" },
{ "data": "jumlah_anggaran", "className":"text-right" },
{ "data": "v_akb_01", "className":"text-right" },
{ "data": "v_bku_01", "className":"text-right text-success" },
{ "data": "v_akb_02", "className":"text-right" },
{ "data": "v_bku_02", "className":"text-right text-success" },
{ "data": "v_akb_03", "className":"text-right" },
{ "data": "v_bku_03", "className":"text-right text-success" },
{ "data": "v_akb_04", "className":"text-right" },
{ "data": "v_bku_04", "className":"text-right text-success" },
{ "data": "v_akb_05", "className":"text-right" },
{ "data": "v_bku_05", "className":"text-right text-success" },
{ "data": "v_akb_06", "className":"text-right" },
{ "data": "v_bku_06", "className":"text-right text-success" },
{ "data": "v_akb_07", "className":"text-right" },
{ "data": "v_bku_07", "className":"text-right text-success" },
{ "data": "v_akb_08", "className":"text-right" },
{ "data": "v_bku_08", "className":"text-right text-success" },
{ "data": "v_akb_09", "className":"text-right" },
{ "data": "v_bku_09", "className":"text-right text-success" },
{ "data": "v_akb_10", "className":"text-right" },
{ "data": "v_bku_10", "className":"text-right text-success" },
{ "data": "v_akb_11", "className":"text-right" },
{ "data": "v_bku_11", "className":"text-right text-success" },
{ "data": "v_akb_12", "className":"text-right" },
{ "data": "v_bku_12", "className":"text-right text-success" },
{ "data": null, "className":"text-right" },
{ "data": null, "className":"text-right text-success" },
//{ "data": null },
],
"rowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull, oSettings) {
let info = dtTableBelanja.page.info();
let numStart = info.page;
let index = (numStart * dtTableBelanja.page.len()) + iDisplayIndex + 1;
let akb = [aData["v_akb_01"],aData["v_akb_02"],aData["v_akb_03"],aData["v_akb_04"],aData["v_akb_05"],aData["v_akb_06"]
,aData["v_akb_07"],aData["v_akb_08"],aData["v_akb_09"],aData["v_akb_10"],aData["v_akb_11"],aData["v_akb_12"]];
let bku = [aData["v_bku_01"],aData["v_bku_02"],aData["v_bku_03"],aData["v_bku_04"],aData["v_bku_05"],aData["v_bku_06"]
,aData["v_bku_07"],aData["v_bku_08"],aData["v_bku_09"],aData["v_bku_10"],aData["v_bku_11"],aData["v_bku_12"]];
let total = 0;
let totalReal = 0;
let Jadwalcol=2;
$("td:eq(0)", nRow).html(index);
$("td:eq(1)", nRow).html(aData["kode_skpd"] + " | " + aData["nama_skpd"]);
$("td:eq(2)", nRow).html(aData["kode_rsk"] + " | " + aData["nama_rsk"]);
$("td:eq(3)", nRow).html(separateNumberIndo(aData["jumlah_anggaran"]));
$.each(akb, function(i,x){
Jadwalcol+=2;
n_bku = bku[i] == null ? 0:bku[i];
$("td:eq("+Jadwalcol+")", nRow).html(separateNumberIndo(akb[i]));
$("td:eq("+(Jadwalcol+1)+")", nRow).html(separateNumberIndo(n_bku));
total+=parseFloat(akb[i]);
totalReal+=parseFloat(n_bku);
})
Jadwalcol+=2;
$("td:eq("+Jadwalcol+")", nRow).html(separateNumberIndo(total));
$("td:eq("+(Jadwalcol+1)+")", nRow).html(separateNumberIndo(totalReal));
return nRow;
},
rowGroup: {
endRender: function ( rows, group, index ) {
let sumAnggaran = [];
let sum = [];
let sumReal = [];
let total = 0;
let totalReal = 0;
sumAnggaran = rows.data().pluck("jumlah_anggaran").reduce( function (a, b) {
return a + b * 1;
}, 0);
for(let x=0;x<12;x++){
xx = x+1;
sum[x] = rows.data().pluck("v_akb_"+("00"+xx).substr(-2)).reduce( function (a, b) {
return a + b * 1;
}, 0);
total += sum[x];
sumReal[x] = rows.data().pluck("v_bku_"+("00"+xx).substr(-2)).reduce( function (a, b) {
return a + b * 1;
}, 0);
totalReal += sumReal[x];
}
let textmuted = index == 1 ? "text-muted":"";
let labelGroup = index == 1 ?"JUMLAH | " + group : "TOTAL";
return $("<tr/>")
.append( "<td></td>")
.append( "<td colspan='2' class=\'text-left " + textmuted +"\'><strong>"+labelGroup+"</strong></td>")
.append( "<td class=\'text-right\'><strong>"+ separateNumberIndo(sumAnggaran) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[0]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[0]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[1]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[1]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[2]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[2]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[3]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[3]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[4]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[4]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[5]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[5]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[6]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[6]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[7]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[7]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[8]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[8]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[9]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[9]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[10]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[10]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[11]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[11]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(total) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(totalReal) +"</strong></td>" )
},
startRender: function ( rows, group, index ) {
},
dataSrc: ["tahun","kode_skpd"],
},
"language": { "language": {
"lengthMenu": "Tampilkan _MENU_ Data per Halaman", "lengthMenu": "Tampilkan _MENU_ Data per Halaman",
"zeroRecords": "Data tidak ditemukan!", "zeroRecords": "Data tidak ditemukan!",
@@ -256,30 +395,30 @@
}, },
scrollX: true, scrollX: true,
scrollY: "350px", scrollY: "350px",
initComplete: function () { // initComplete: function () {
this.api().columns([1]).every( function () { // this.api().columns([1]).every( function () {
var column = this; // var column = this;
//console.log(this); // //console.log(this);
// console.log(this.index()) // // console.log(this.index())
var select = $('<select class="form-control form-control-sm"><option value=""></option></select>') // var select = $('<select class="form-control form-control-sm"><option value=""></option></select>')
column.data().unique().sort().each( function ( d, j ) { // column.data().unique().sort().each( function ( d, j ) {
let teks = d.replace(/<\/?[^>]+(>|$)/g, ""); // let teks = d.replace(/<\/?[^>]+(>|$)/g, "");
select.append( '<option value="'+teks+'">'+teks+'</option>' ) // select.append( '<option value="'+teks+'">'+teks+'</option>' )
} ); // } );
select // select
.appendTo( $('.src-skpd') ) // .appendTo( $('.src-skpd') )
.on( 'change', function () { // .on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex( // var val = $.fn.dataTable.util.escapeRegex(
$(this).val() // $(this).val()
); // );
column // column
.search( val ? '^'+val+'$' : '', true, false ) // .search( val ? '^'+val+'$' : '', true, false )
.draw(); // .draw();
} ); // } );
}); // });
} // }
}); });
var dtTableSalur = $('#dtTableJadwalPendapatan').DataTable( { var dtTableSalur = $('#dtTableJadwalPendapatan').DataTable( {
@@ -25,7 +25,7 @@
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
<form id="frmJadwalSalur" action="{{ $baseUrl }}/jadwal-salurdana" method="post"> <form id="frmJadwalSalur" action="{{ $baseUrl }}/jadwal-salurdana/download-all" method="post">
@csrf @csrf
<div class="row"> <div class="row">
<div class="col-1"> <div class="col-1">
@@ -34,11 +34,24 @@
<input class="form-control form-control-sm" id="srcTA" name="ta" value="{{ getTA() }}" readonly> <input class="form-control form-control-sm" id="srcTA" name="ta" value="{{ getTA() }}" readonly>
</div> </div>
</div> </div>
<div class="col-11"> <div class="col-3">
<div class="form-group"> <div class="form-group">
<label for="txt_simtrad4_kotor">Kode Rekening</label> <label>Kode Rekening</label>
<input type="hidden" name="type_dana" value="dak"> <input id="type_dana" type="hidden" name="type_dana" value="{{ $typeDana }}">
<select id="txt_id_sps" name="id_sps" class="form-control form-control-sm" required></select> <select id="txt_id_sps" name="id_sps" style="width:100%" class="form-control sps_search"></select>
</div>
</div>
<?php if (getRole()!="skpd"){ ?>
<div class="col-3">
<div class="form-group">
<label>SKPD</label>
<select class="form-control" id="skpd" name="skpd"></select>
</div>
</div>
<?php } ?>
<div class="col-3 d-flex">
<div class="form-group align-self-end">
<button class="btn btn-sm btn-success" type="submit"><i class="fa fa-download"></i> Download</button>
</div> </div>
</div> </div>
</div> </div>
@@ -117,11 +130,6 @@
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
<div id="search-dt">
<?php if (getRole()!="skpd"){ ?>
<label class="src-skpd">SKPD: </label>
<?php } ?>
</div>
<table id="dtTableJadwalBelanja" class="table table-bordered table-striped"> <table id="dtTableJadwalBelanja" class="table table-bordered table-striped">
<thead> <thead>
<tr class="headings"> <tr class="headings">
@@ -172,37 +180,7 @@
<td>Realisasi</td> <td>Realisasi</td>
</tr> </tr>
</thead> </thead>
<tbody> <tbody></tbody>
<?php
foreach ($dataAkbRealisasi as $key => $value) {
echo "<tr>
<td>".($key+1)."</td>
<td><div style='width:200px;'>".$value["nama_skpd"]."</div></td>
<td><div style='width:200px;'>".$value["nama_rsk"]."</div></td>
<td class='text-right'>".number_format($value["jumlah_anggaran"])."</td>";
$flag = "bku";
$total = [];
$arrFld = ["v_akb","v_bku"];
for($i=1;$i<=12;$i++)
{
foreach($arrFld as $fld){
$fldValue = $value[$fld."_".substr("00".$i,-2)];
$total[$fld][]=floatval($fldValue);
$class = $fld == "v_bku"?"text-success":"";
echo "<td class='text-right $class'>".number_format($fldValue)."</td>";
}
}
foreach($arrFld as $fld){
$class = $fld == "v_bku"?"text-success":"";
echo "<td class='text-right $class'>".number_format(array_sum($total[$fld]))."</td>";
}
echo "</tr>";
}
?>
</tbody>
</table> </table>
</div> </div>
</div> </div>
@@ -228,54 +206,163 @@
$(document).ready(function(){ $(document).ready(function(){
var srcDate1 = null, srcDate2 = null; var srcDate1 = null, srcDate2 = null;
optionDAK = () =>{ <?php if ($typeDana=="cht"){ ?>
$.ajax({ let $newOptionSPS = $("<option selected='selected'></option>").val("4.2.01.01.01.0004").text("DBH Cukai Hasil Tembakau (CHT)");
url: '{{ $baseUrl }}/item-search-sps?ta='+$("#srcTA").val()+'&jenis=dak', $("#txt_id_sps").val("4.2.01.01.01.0004");
dataType: 'json', $("#txt_id_sps").append($newOptionSPS).trigger('change');
async: false, $("#txt_id_sps").prop("disabled", true);
success: function (data) { <?php } ?>
$('#txt_id_sps').empty();
$('#txt_id_sps').append($('<option>',{value:"",text:""}));
$.map(data, function (item) {
$('#txt_id_sps').append($('<option>', {
value: item.idx,
text : item.name
}));
})
},
});
}
optionDAK(); var dtTableBelanja =$('#dtTableJadwalBelanja').DataTable( {
$('#txt_id_sps').val("{{ $idSPS }}"); "processing": true,
"serverSide": true,
$("#src").keyup(function(e){
if (e.keyCode == 13){
e.preventDefault();
dtTable.draw();
}
});
$("#srcTA").on("change",function(e){
dtTableSalur.draw();
dtTable.draw();
optionDAK();
});
$('#dtTableJadwalBelanja').DataTable( {
"processing": false,
"serverSide": false,
"ordering": false, "ordering": false,
"autoWidth": false, "autoWidth": false,
"columnDefs": [ "ajax": {
{ "width": "250px", "targets": 1 }, url: "{{ $baseUrl }}/jadwal-salurdana/{{ $typeDana }}/datatable",
{ "width": "400px", "targets": 2 } type: "POST",
], headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: function (d) {
d.src = $("#src").val(),
d.ta = $("#srcTA").val(),
d.type_dana = $("#type_dana").val(),
d.id_sps = $("#txt_id_sps").val(),
d.skpd = $("#skpd").val()
}
},
"lengthMenu": [ "lengthMenu": [
[ 10, 25, 50, -1 ], [ 10, 25, 50,-1 ],
[ "10", "25", "50", "All" ] [ "10", "25", "50", "All" ]
], ],
"paging": true, // Table pagination "paging": true, // Table pagination
"columns": [
{ "data": null},
{ "data": "nama_skpd", "width": "400px" },
{ "data": "nama_rsk", "className":"text-left" },
{ "data": "jumlah_anggaran", "className":"text-right" },
{ "data": "v_akb_01", "className":"text-right" },
{ "data": "v_bku_01", "className":"text-right text-success" },
{ "data": "v_akb_02", "className":"text-right" },
{ "data": "v_bku_02", "className":"text-right text-success" },
{ "data": "v_akb_03", "className":"text-right" },
{ "data": "v_bku_03", "className":"text-right text-success" },
{ "data": "v_akb_04", "className":"text-right" },
{ "data": "v_bku_04", "className":"text-right text-success" },
{ "data": "v_akb_05", "className":"text-right" },
{ "data": "v_bku_05", "className":"text-right text-success" },
{ "data": "v_akb_06", "className":"text-right" },
{ "data": "v_bku_06", "className":"text-right text-success" },
{ "data": "v_akb_07", "className":"text-right" },
{ "data": "v_bku_07", "className":"text-right text-success" },
{ "data": "v_akb_08", "className":"text-right" },
{ "data": "v_bku_08", "className":"text-right text-success" },
{ "data": "v_akb_09", "className":"text-right" },
{ "data": "v_bku_09", "className":"text-right text-success" },
{ "data": "v_akb_10", "className":"text-right" },
{ "data": "v_bku_10", "className":"text-right text-success" },
{ "data": "v_akb_11", "className":"text-right" },
{ "data": "v_bku_11", "className":"text-right text-success" },
{ "data": "v_akb_12", "className":"text-right" },
{ "data": "v_bku_12", "className":"text-right text-success" },
{ "data": null, "className":"text-right" },
{ "data": null, "className":"text-right text-success" },
//{ "data": null },
],
"rowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull, oSettings) {
let info = dtTableBelanja.page.info();
let numStart = info.page;
let index = (numStart * dtTableBelanja.page.len()) + iDisplayIndex + 1;
let akb = [aData["v_akb_01"],aData["v_akb_02"],aData["v_akb_03"],aData["v_akb_04"],aData["v_akb_05"],aData["v_akb_06"]
,aData["v_akb_07"],aData["v_akb_08"],aData["v_akb_09"],aData["v_akb_10"],aData["v_akb_11"],aData["v_akb_12"]];
let bku = [aData["v_bku_01"],aData["v_bku_02"],aData["v_bku_03"],aData["v_bku_04"],aData["v_bku_05"],aData["v_bku_06"]
,aData["v_bku_07"],aData["v_bku_08"],aData["v_bku_09"],aData["v_bku_10"],aData["v_bku_11"],aData["v_bku_12"]];
let total = 0;
let totalReal = 0;
let Jadwalcol=2;
$("td:eq(0)", nRow).html(index);
$("td:eq(1)", nRow).html("<div style='width:200px;'>" + aData["kode_skpd"] + " | " + aData["nama_skpd"] + "</div>");
$("td:eq(2)", nRow).html("<div style='width:200px;'>" + aData["kode_rsk"] + " | " + aData["nama_rsk"] + "</div>");
$("td:eq(3)", nRow).html(separateNumberIndo(aData["jumlah_anggaran"]));
$.each(akb, function(i,x){
Jadwalcol+=2;
n_bku = bku[i] == null ? 0:bku[i];
$("td:eq("+Jadwalcol+")", nRow).html(separateNumberIndo(akb[i]));
$("td:eq("+(Jadwalcol+1)+")", nRow).html(separateNumberIndo(n_bku));
total+=parseFloat(akb[i]);
totalReal+=parseFloat(n_bku);
})
Jadwalcol+=2;
$("td:eq("+Jadwalcol+")", nRow).html(separateNumberIndo(total));
$("td:eq("+(Jadwalcol+1)+")", nRow).html(separateNumberIndo(totalReal));
return nRow;
},
rowGroup: {
endRender: function ( rows, group, index ) {
let sumAnggaran = [];
let sum = [];
let sumReal = [];
let total = 0;
let totalReal = 0;
sumAnggaran = rows.data().pluck("jumlah_anggaran").reduce( function (a, b) {
return a + b * 1;
}, 0);
for(let x=0;x<12;x++){
xx = x+1;
sum[x] = rows.data().pluck("v_akb_"+("00"+xx).substr(-2)).reduce( function (a, b) {
return a + b * 1;
}, 0);
total += sum[x];
sumReal[x] = rows.data().pluck("v_bku_"+("00"+xx).substr(-2)).reduce( function (a, b) {
return a + b * 1;
}, 0);
totalReal += sumReal[x];
}
let textmuted = index == 1 ? "text-muted":"";
let labelGroup = index == 1 ?"JUMLAH | " + group : "TOTAL";
return $("<tr/>")
.append( "<td></td>")
.append( "<td colspan='2' class=\'text-left " + textmuted +"\'><strong>"+labelGroup+"</strong></td>")
.append( "<td class=\'text-right\'><strong>"+ separateNumberIndo(sumAnggaran) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[0]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[0]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[1]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[1]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[2]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[2]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[3]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[3]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[4]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[4]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[5]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[5]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[6]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[6]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[7]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[7]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[8]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[8]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[9]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[9]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[10]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[10]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(sum[11]) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(sumReal[11]) +"</strong></td>" )
.append( "<td class=\'text-right " + textmuted +"\'><strong>"+ separateNumberIndo(total) +"</strong></td>" )
.append( "<td class='text-success text-right'><strong>"+ separateNumberIndo(totalReal) +"</strong></td>" )
},
startRender: function ( rows, group, index ) {
},
dataSrc: ["tahun","kode_skpd"],
},
"language": { "language": {
"lengthMenu": "Tampilkan _MENU_ Data per Halaman", "lengthMenu": "Tampilkan _MENU_ Data per Halaman",
"zeroRecords": "Data tidak ditemukan!", "zeroRecords": "Data tidak ditemukan!",
@@ -293,29 +380,6 @@
}, },
scrollX: true, scrollX: true,
scrollY: "350px", scrollY: "350px",
initComplete: function () {
this.api().columns([1]).every( function () {
var column = this;
// console.log(this.index())
var select = $('<select class="form-control form-control-sm"><option value=""></option></select>')
.appendTo( $('.src-skpd') )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
let teks = d.replace(/<\/?[^>]+(>|$)/g, "");
select.append( '<option value="'+teks+'">'+teks+'</option>' )
} );
});
}
}); });
var dtTableSalur = $('#dtTableJadwalPendapatan').DataTable( { var dtTableSalur = $('#dtTableJadwalPendapatan').DataTable( {
@@ -332,14 +396,14 @@
data: function (d) { data: function (d) {
//d.src = $("#src").val(), //d.src = $("#src").val(),
d.ta = $("#srcTA").val(), d.ta = $("#srcTA").val(),
d.type_dana = "dak", d.type_dana = "{{ $typeDana }}",
d.id_sps = $("#txt_id_sps").val() d.id_sps = $("#txt_id_sps").val()
} }
}, },
"columnDefs": [ "columnDefs": [
//{ className: "td-nowrap", "targets": [ 1 ] } //{ className: "td-nowrap", "targets": [ 1 ] }
], ],
"dom": "<\"top\" <\"row\"<\"col-md-6\"l><\"col-md-6 text-right\"B>>>rt<\"bottom\" <\"row\"<\"col-md-6\"i><\"col-md-6\"p>> ><\"clear\">", "dom": "<\"top\" <\"row\"<\"col-md-6\"l><\"col-md-6 text-right\">>>rt<\"bottom\" <\"row\"<\"col-md-6\"i><\"col-md-6\"p>> ><\"clear\">",
"lengthMenu": [ "lengthMenu": [
[ 10, 20, 50,-1 ], [ 10, 20, 50,-1 ],
[ "10", "20", "50","All" ] [ "10", "20", "50","All" ]
@@ -491,11 +555,33 @@
}); });
$('#txt_id_sps').on('change', function (e) { $('#txt_id_sps').on('change', function (e) {
//dtTableSalur.draw(); dtTableSalur.draw();
$(".dataTables_processing").show();
location.href = "?id_sps="+$(this).val();
}) })
$('#skpd').on('change', function (e) {
dtTableBelanja.draw();
})
$('#skpd').select2({
placeholder: 'Pilih SKPD',
allowClear: true,
ajax: {
url: '{{ $baseUrl }}/skpd-search?realisasi-belanja=ya&ta='+$("#srcTA").val(),
dataType: 'json',
delay: 250,
processResults: function (data) {
return {
results: $.map(data, function (item) {
return {
text: item.name,
id: item.id
}
})
};
},
cache: true
}
});
}); });
</script> </script>
@endsection @endsection
+1
View File
@@ -66,6 +66,7 @@ Route::group(['middleware' => 'auth'], function () {
Route::post('/{typeDana}/datatable', [JadwalSalurdanaController::class,'datatable_cht_dak']); Route::post('/{typeDana}/datatable', [JadwalSalurdanaController::class,'datatable_cht_dak']);
Route::get('/', [JadwalSalurdanaController::class,'index']); Route::get('/', [JadwalSalurdanaController::class,'index']);
Route::post('/datatable', [JadwalSalurdanaController::class,'datatable']); Route::post('/datatable', [JadwalSalurdanaController::class,'datatable']);
Route::post('/download-all', [JadwalSalurdanaController::class,'downloadAll']);
Route::post('/', [JadwalSalurdanaController::class,'download']); Route::post('/', [JadwalSalurdanaController::class,'download']);
}); });