From e6f4fc95955f75b771f21a871effdceefb21bc9b Mon Sep 17 00:00:00 2001 From: Pusdatin BPKD Jkt Date: Tue, 10 Jan 2023 11:20:41 +0700 Subject: [PATCH] Download All Salur dan Belanja --- .../Controllers/JadwalSalurdanaController.php | 219 ++++++++----- .../RealisasiBelanjaController.php | 2 +- app/Models/BelanjaRealisasi.php | 8 +- .../jadwal_salurdana/index_cht.blade.php | 197 +++++++++-- ..._dak.blade.php => index_cht_dak.blade.php} | 306 +++++++++++------- routes/web.php | 1 + 6 files changed, 513 insertions(+), 220 deletions(-) rename resources/views/jadwal_salurdana/{index_dak.blade.php => index_cht_dak.blade.php} (63%) diff --git a/app/Http/Controllers/JadwalSalurdanaController.php b/app/Http/Controllers/JadwalSalurdanaController.php index f276b50..b0cb3a3 100644 --- a/app/Http/Controllers/JadwalSalurdanaController.php +++ b/app/Http/Controllers/JadwalSalurdanaController.php @@ -25,14 +25,11 @@ class JadwalSalurdanaController extends Controller return view('jadwal_salurdana.index'); } - public function datatable(Request $request) + protected function filterJadwalSalur($request) { + $ta = getTA(); + $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"]:""; $idSPS = isset($post["id_sps"])?$post["id_sps"]:""; $sqlstr = Sps_pendapatan::queryJadwalSalurDana($ta); @@ -41,8 +38,6 @@ class JadwalSalurdanaController extends Controller $sqlstr.=" AND x.KODE_REKENING='$idSPS'"; } - $dataTotal = count(DB::select(DB::raw($sqlstr))); - if (!empty($typeDana)){ if ($typeDana == "cht"){ $sqlstr.=" AND x.kode_rekening='4.2.01.01.01.0004'"; @@ -50,7 +45,46 @@ class JadwalSalurdanaController extends Controller $sqlstr.=" AND SUBSTR(x.kode_rekening,1,12) IN ('4.2.01.01.03','4.2.01.01.04')"; } } + + 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 ":""; $data = DB::select(DB::raw($sqlstr.'ORDER BY x.kode_rekening '.$sqlLimit)); $dataFilter = count(DB::select(DB::raw($sqlstr))); @@ -64,35 +98,7 @@ class JadwalSalurdanaController extends Controller public function index_cht_dak(Request $request, $typeDana) { - $judul = strtoupper($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")); + return view("jadwal_salurdana.index_cht_dak", compact("typeDana")); } public function datatable_cht_dak(Request $request, $typeDana) @@ -100,25 +106,12 @@ class JadwalSalurdanaController extends Controller $post = $request->all(); $offset = $post["start"]; $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.=" AND KODE_SKPD='".Auth::user()->nrk."'"; - } + + $sqlstr = $this->filterBelanja($request, $typeDana); + $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)); $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))); return response()->json([ @@ -128,33 +121,18 @@ class JadwalSalurdanaController extends Controller ]); } - public function download(Request $request) + protected function exportJadwalSalur($request) { - $post = $request->all(); - $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 = $this->filterJadwalSalur($request); $sqlstr .= " ORDER BY kode_rekening"; + $data = DB::select(DB::raw($sqlstr)); $data = json_decode(json_encode($data),true); - $fileName = 'Jadwal-salur-dana.xlsx'; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); + $sheet->setTitle('Jadwal Salur'); + $sheet->setCellValue('A1', 'Kode Rekening'); $sheet->setCellValue('B1', 'Nama Rekening'); $alpha = range("A","Z"); @@ -211,6 +189,101 @@ class JadwalSalurdanaController extends Controller $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->save("downloadFiles/".$fileName); $headers = [ diff --git a/app/Http/Controllers/RealisasiBelanjaController.php b/app/Http/Controllers/RealisasiBelanjaController.php index 058914d..413fa7b 100644 --- a/app/Http/Controllers/RealisasiBelanjaController.php +++ b/app/Http/Controllers/RealisasiBelanjaController.php @@ -249,7 +249,7 @@ class RealisasiBelanjaController extends Controller 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); $vwSPD = []; diff --git a/app/Models/BelanjaRealisasi.php b/app/Models/BelanjaRealisasi.php index 63c4265..870b911 100644 --- a/app/Models/BelanjaRealisasi.php +++ b/app/Models/BelanjaRealisasi.php @@ -108,13 +108,7 @@ class BelanjaRealisasi extends Eloquent public function akbRealisasi() { $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, - 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"; + $sqlstr = "SELECT * FROM MV_ASYNC_AKB_REALISASI WHERE TAHUN = $ta"; return $sqlstr; } diff --git a/resources/views/jadwal_salurdana/index_cht.blade.php b/resources/views/jadwal_salurdana/index_cht.blade.php index 76f03b4..3e8da60 100644 --- a/resources/views/jadwal_salurdana/index_cht.blade.php +++ b/resources/views/jadwal_salurdana/index_cht.blade.php @@ -103,12 +103,13 @@
-
+
- + */?> +
@@ -160,7 +161,7 @@ $value) { + /* foreach ($dataAkbRealisasi as $key => $value) { echo " @@ -186,7 +187,7 @@ } echo ""; - } + }*/ ?>
No
".($key+1)."
".$value["nama_skpd"]."
@@ -225,11 +226,23 @@ dtTable.draw(); }); - $('#dtTableJadwalBelanja').DataTable( { - "processing": false, - "serverSide": false, + var dtTableBelanja =$('#dtTableJadwalBelanja').DataTable( { + "processing": true, + "serverSide": true, "ordering": 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": [ { "width": "250px", "targets": 1 }, { "width": "400px", "targets": 2 } @@ -239,6 +252,132 @@ [ "10", "25", "50", "All" ] ], "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 $("") + .append( "") + .append( ""+labelGroup+"") + .append( ""+ separateNumberIndo(sumAnggaran) +"" ) + .append( ""+ separateNumberIndo(sum[0]) +"" ) + .append( ""+ separateNumberIndo(sumReal[0]) +"" ) + .append( ""+ separateNumberIndo(sum[1]) +"" ) + .append( ""+ separateNumberIndo(sumReal[1]) +"" ) + .append( ""+ separateNumberIndo(sum[2]) +"" ) + .append( ""+ separateNumberIndo(sumReal[2]) +"" ) + .append( ""+ separateNumberIndo(sum[3]) +"" ) + .append( ""+ separateNumberIndo(sumReal[3]) +"" ) + .append( ""+ separateNumberIndo(sum[4]) +"" ) + .append( ""+ separateNumberIndo(sumReal[4]) +"" ) + .append( ""+ separateNumberIndo(sum[5]) +"" ) + .append( ""+ separateNumberIndo(sumReal[5]) +"" ) + .append( ""+ separateNumberIndo(sum[6]) +"" ) + .append( ""+ separateNumberIndo(sumReal[6]) +"" ) + .append( ""+ separateNumberIndo(sum[7]) +"" ) + .append( ""+ separateNumberIndo(sumReal[7]) +"" ) + .append( ""+ separateNumberIndo(sum[8]) +"" ) + .append( ""+ separateNumberIndo(sumReal[8]) +"" ) + .append( ""+ separateNumberIndo(sum[9]) +"" ) + .append( ""+ separateNumberIndo(sumReal[9]) +"" ) + .append( ""+ separateNumberIndo(sum[10]) +"" ) + .append( ""+ separateNumberIndo(sumReal[10]) +"" ) + .append( ""+ separateNumberIndo(sum[11]) +"" ) + .append( ""+ separateNumberIndo(sumReal[11]) +"" ) + .append( ""+ separateNumberIndo(total) +"" ) + .append( ""+ separateNumberIndo(totalReal) +"" ) + }, + startRender: function ( rows, group, index ) { + }, + dataSrc: ["tahun","kode_skpd"], + }, "language": { "lengthMenu": "Tampilkan _MENU_ Data per Halaman", "zeroRecords": "Data tidak ditemukan!", @@ -256,30 +395,30 @@ }, scrollX: true, scrollY: "350px", - initComplete: function () { - this.api().columns([1]).every( function () { - var column = this; - //console.log(this); - // console.log(this.index()) - var select = $('') - column.data().unique().sort().each( function ( d, j ) { - let teks = d.replace(/<\/?[^>]+(>|$)/g, ""); - select.append( '' ) - } ); + // initComplete: function () { + // this.api().columns([1]).every( function () { + // var column = this; + // //console.log(this); + // // console.log(this.index()) + // var select = $('') + // column.data().unique().sort().each( function ( d, j ) { + // let teks = d.replace(/<\/?[^>]+(>|$)/g, ""); + // select.append( '' ) + // } ); - select - .appendTo( $('.src-skpd') ) - .on( 'change', function () { - var val = $.fn.dataTable.util.escapeRegex( - $(this).val() - ); + // select + // .appendTo( $('.src-skpd') ) + // .on( 'change', function () { + // var val = $.fn.dataTable.util.escapeRegex( + // $(this).val() + // ); - column - .search( val ? '^'+val+'$' : '', true, false ) - .draw(); - } ); - }); - } + // column + // .search( val ? '^'+val+'$' : '', true, false ) + // .draw(); + // } ); + // }); + // } }); var dtTableSalur = $('#dtTableJadwalPendapatan').DataTable( { diff --git a/resources/views/jadwal_salurdana/index_dak.blade.php b/resources/views/jadwal_salurdana/index_cht_dak.blade.php similarity index 63% rename from resources/views/jadwal_salurdana/index_dak.blade.php rename to resources/views/jadwal_salurdana/index_cht_dak.blade.php index 77f4faf..7e92154 100644 --- a/resources/views/jadwal_salurdana/index_dak.blade.php +++ b/resources/views/jadwal_salurdana/index_cht_dak.blade.php @@ -25,7 +25,7 @@
-
+ @csrf
@@ -34,11 +34,24 @@
-
+
- - - + + + +
+
+ +
+
+ + +
+
+ +
+
+
@@ -117,11 +130,6 @@
-
- - - -
@@ -172,37 +180,7 @@ - - $value) { - echo " - - - - "; - - $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 ""; - } - } - - foreach($arrFld as $fld){ - $class = $fld == "v_bku"?"text-success":""; - echo ""; - } - - echo ""; - } - ?> - +
Realisasi
".($key+1)."
".$value["nama_skpd"]."
".$value["nama_rsk"]."
".number_format($value["jumlah_anggaran"])."".number_format($fldValue)."".number_format(array_sum($total[$fld]))."
@@ -228,54 +206,163 @@ $(document).ready(function(){ var srcDate1 = null, srcDate2 = null; - optionDAK = () =>{ - $.ajax({ - url: '{{ $baseUrl }}/item-search-sps?ta='+$("#srcTA").val()+'&jenis=dak', - dataType: 'json', - async: false, - success: function (data) { - $('#txt_id_sps').empty(); - $('#txt_id_sps').append($('").val("4.2.01.01.01.0004").text("DBH Cukai Hasil Tembakau (CHT)"); + $("#txt_id_sps").val("4.2.01.01.01.0004"); + $("#txt_id_sps").append($newOptionSPS).trigger('change'); + $("#txt_id_sps").prop("disabled", true); + - optionDAK(); - $('#txt_id_sps').val("{{ $idSPS }}"); - - $("#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, + var dtTableBelanja =$('#dtTableJadwalBelanja').DataTable( { + "processing": true, + "serverSide": true, "ordering": false, "autoWidth": false, - "columnDefs": [ - { "width": "250px", "targets": 1 }, - { "width": "400px", "targets": 2 } - ], + "ajax": { + url: "{{ $baseUrl }}/jadwal-salurdana/{{ $typeDana }}/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 = $("#type_dana").val(), + d.id_sps = $("#txt_id_sps").val(), + d.skpd = $("#skpd").val() + } + }, "lengthMenu": [ - [ 10, 25, 50, -1 ], + [ 10, 25, 50,-1 ], [ "10", "25", "50", "All" ] ], "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 $("") + .append( "") + .append( ""+labelGroup+"") + .append( ""+ separateNumberIndo(sumAnggaran) +"" ) + .append( ""+ separateNumberIndo(sum[0]) +"" ) + .append( ""+ separateNumberIndo(sumReal[0]) +"" ) + .append( ""+ separateNumberIndo(sum[1]) +"" ) + .append( ""+ separateNumberIndo(sumReal[1]) +"" ) + .append( ""+ separateNumberIndo(sum[2]) +"" ) + .append( ""+ separateNumberIndo(sumReal[2]) +"" ) + .append( ""+ separateNumberIndo(sum[3]) +"" ) + .append( ""+ separateNumberIndo(sumReal[3]) +"" ) + .append( ""+ separateNumberIndo(sum[4]) +"" ) + .append( ""+ separateNumberIndo(sumReal[4]) +"" ) + .append( ""+ separateNumberIndo(sum[5]) +"" ) + .append( ""+ separateNumberIndo(sumReal[5]) +"" ) + .append( ""+ separateNumberIndo(sum[6]) +"" ) + .append( ""+ separateNumberIndo(sumReal[6]) +"" ) + .append( ""+ separateNumberIndo(sum[7]) +"" ) + .append( ""+ separateNumberIndo(sumReal[7]) +"" ) + .append( ""+ separateNumberIndo(sum[8]) +"" ) + .append( ""+ separateNumberIndo(sumReal[8]) +"" ) + .append( ""+ separateNumberIndo(sum[9]) +"" ) + .append( ""+ separateNumberIndo(sumReal[9]) +"" ) + .append( ""+ separateNumberIndo(sum[10]) +"" ) + .append( ""+ separateNumberIndo(sumReal[10]) +"" ) + .append( ""+ separateNumberIndo(sum[11]) +"" ) + .append( ""+ separateNumberIndo(sumReal[11]) +"" ) + .append( ""+ separateNumberIndo(total) +"" ) + .append( ""+ separateNumberIndo(totalReal) +"" ) + }, + startRender: function ( rows, group, index ) { + }, + dataSrc: ["tahun","kode_skpd"], + }, "language": { "lengthMenu": "Tampilkan _MENU_ Data per Halaman", "zeroRecords": "Data tidak ditemukan!", @@ -293,29 +380,6 @@ }, scrollX: true, scrollY: "350px", - initComplete: function () { - this.api().columns([1]).every( function () { - var column = this; - // console.log(this.index()) - var 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( '' ) - } ); - - }); - } }); var dtTableSalur = $('#dtTableJadwalPendapatan').DataTable( { @@ -332,14 +396,14 @@ data: function (d) { //d.src = $("#src").val(), d.ta = $("#srcTA").val(), - d.type_dana = "dak", + d.type_dana = "{{ $typeDana }}", d.id_sps = $("#txt_id_sps").val() } }, "columnDefs": [ //{ 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": [ [ 10, 20, 50,-1 ], [ "10", "20", "50","All" ] @@ -491,11 +555,33 @@ }); $('#txt_id_sps').on('change', function (e) { - //dtTableSalur.draw(); - $(".dataTables_processing").show(); - location.href = "?id_sps="+$(this).val(); + dtTableSalur.draw(); }) + $('#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 + } + }); }); @endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 58a1f68..43c8f32 100644 --- a/routes/web.php +++ b/routes/web.php @@ -66,6 +66,7 @@ Route::group(['middleware' => 'auth'], function () { Route::post('/{typeDana}/datatable', [JadwalSalurdanaController::class,'datatable_cht_dak']); Route::get('/', [JadwalSalurdanaController::class,'index']); Route::post('/datatable', [JadwalSalurdanaController::class,'datatable']); + Route::post('/download-all', [JadwalSalurdanaController::class,'downloadAll']); Route::post('/', [JadwalSalurdanaController::class,'download']); });