setTitle("Jadwal Salur Dana"); $this->setIconTitle("fa fa-calendar-alt"); } public function index() { return view('jadwal_salurdana.index'); } protected function queryJadwalSalurDana($ta) { $sqlstr = 'SELECT x.kode_rekening,x.nama_rekening,spsbulan1,spsbulan2,spsbulan3,spsbulan4, spsbulan5,spsbulan6,spsbulan7,spsbulan8,spsbulan9,spsbulan10,spsbulan11,spsbulan12, SUBSTR(x.KODE_REKENING,1,12) AS kodegrup,SUBSTR(x.KODE_REKENING,1,9) AS groupall, NVL("1",0) AS "REAL1",NVL("2",0) AS "REAL2",NVL("3",0) AS "REAL3", NVL("4",0) AS "REAL4",NVL("5",0) AS "REAL5",NVL("6",0) AS "REAL6", NVL("7",0) AS "REAL7",NVL("8",0) AS "REAL8",NVL("9",0) AS "REAL9", NVL("10",0) AS "REAL10",NVL("11",0) AS "REAL11",NVL("12",0) AS "REAL12" FROM PROKSI.SPS_PENDAPATAN x LEFT JOIN ( SELECT * FROM ( SELECT ID_SPS,extract(month from RKUD_TGL) AS BULAN,RKUD_JUMLAH FROM SAMASA.PENDAPATAN_REALISASI WHERE TAHUN=\''.$ta.'\' ) PIVOT ( SUM(RKUD_JUMLAH) FOR BULAN IN(1,2,3,4,5,6,7,8,9,10,11,12) ) )y ON x.ID = y.ID_SPS '; if (getRole()=="skpd"){ $sqlstr .= ' LEFT JOIN SAMASA.MAPPING_DBH_SKPD z ON x.id=z.id_sps WHERE z.KODE_SKPD=\''.Auth::user()->nrk.'\''; }else{ $sqlstr .= " WHERE 1=1 "; } $sqlstr .= ' AND x.TAHUN = '.$ta.' AND x.SKPD_ID=980 AND SUBSTR(x.KODE_REKENING,1,3)=\'4.2\''; return $sqlstr; } public function datatable(Request $request) { $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 = $this->queryJadwalSalurDana($ta); if (!empty($idSPS)){ $sqlstr.=" AND x.ID=$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'"; }else{ $sqlstr.=" AND SUBSTR(x.kode_rekening,1,12) IN ('4.2.01.01.03','4.2.01.01.04')"; } } $data = DB::select(DB::raw($sqlstr.'ORDER BY x.kode_rekening OFFSET '.$offset.' ROWS FETCH NEXT '.$limit.' ROWS ONLY')); $dataFilter = count(DB::select(DB::raw($sqlstr))); return response()->json([ "recordsTotal" => $dataTotal, "recordsFiltered" => $dataFilter, "data"=> $data ]); } public function index_cht_dak(Request $request, $typeDana) { $judul = strtoupper($typeDana); $this->setTitle("Jadwal Salur Dana $judul"); return view("jadwal_salurdana.index_".$typeDana); } public function datatable_cht_dak(Request $request, $typeDana) { $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 ( SELECT * FROM ( SELECT IDRSK, NVL(V_BKU_01,0) AS V_BKU_01, NVL(V_BKU_02,0) AS V_BKU_02, NVL(V_BKU_03,0) AS V_BKU_03, NVL(V_BKU_04,0) AS V_BKU_04, NVL(V_BKU_05,0) AS V_BKU_05, NVL(V_BKU_06,0) AS V_BKU_06, NVL(V_BKU_07,0) AS V_BKU_07, NVL(V_BKU_08,0) AS V_BKU_08, NVL(V_BKU_09,0) AS V_BKU_09, NVL(V_BKU_10,0) AS V_BKU_10, NVL(V_BKU_11,0) AS V_BKU_11, NVL(V_BKU_12,0) AS V_BKU_12, TOTAL AS TOTAL_REALISASI FROM ( SELECT x.*,SUM (V_REALISASI) OVER ( PARTITION BY IDRSK ) AS Total FROM ( SELECT IDRSK, extract(month FROM TO_DATE(D_POSTING, \'YYYYMMDD\')) AS BULAN, SUM (REALISASI) AS V_REALISASI FROM NEWSIPKD.VW_BKU_REALISASI_RSK WHERE TAHUN_ANGGARAN = \''.$ta.'\' GROUP BY IDRSK,D_POSTING ) x ) PIVOT ( SUM(V_REALISASI) FOR BULAN IN( 1 AS V_BKU_01, 2 AS V_BKU_02, 3 AS V_BKU_03, 4 AS V_BKU_04, 5 AS V_BKU_05, 6 AS V_BKU_06, 7 AS V_BKU_07, 8 AS V_BKU_08, 9 AS V_BKU_09, 10 AS V_BKU_10, 11 AS V_BKU_11, 12 AS V_BKU_12 ) ) ) xx LEFT JOIN ( SELECT RSK_BELANJARINCI_ID, sum(BULAN1) AS V_AKB_01, sum(BULAN2) AS V_AKB_02, sum(BULAN3) AS V_AKB_03, sum(BULAN4) AS V_AKB_04, sum(BULAN5) AS V_AKB_05, sum(BULAN6) AS V_AKB_06, sum(BULAN7) AS V_AKB_07, sum(BULAN8) AS V_AKB_08, sum(BULAN9) AS V_AKB_09, sum(BULAN10) AS V_AKB_10, sum(BULAN11) AS V_AKB_11, sum(BULAN12) AS V_AKB_12 FROM BAPEDA_BUDGETING.P_SPB_BELANJARINCIAKB@EBUDGETING WHERE TAHUN = \''.$ta.'\' GROUP BY RSK_BELANJARINCI_ID ) yy ON xx.IDRSK = yy.RSK_BELANJARINCI_ID ) y ON x.KODE_RSK = y.IDRSK WHERE x.TAHUN_ANGGARAN = \''.$ta.'\''.$typeDanaFilter; if (getRole()=="skpd"){ $sqlstr.=" AND KODE_SKPD='".Auth::user()->nrk."'"; } $data = DB::connection('oracle')->select(DB::raw($sqlstr.' ORDER BY x.kode_skpd,x.kode_rsk OFFSET '.$offset.' ROWS FETCH NEXT '.$limit.' ROWS ONLY')); $dataTotal = count(DB::connection('oracle')->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::connection('oracle')->select(DB::raw($sqlstr))); return response()->json([ "recordsTotal" => $dataTotal, "recordsFiltered" => $dataFilter, "data"=> $data ]); } public function download(Request $request) { $post = $request->all(); $typeDana = isset($post["type_dana"])?$post["type_dana"]:""; $idSPS = isset($post["id_sps"])?$post["id_sps"]:""; $ta = $post["ta"]; $sqlstr = $this->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"; $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->setCellValue('A1', 'Kode Rekening'); $sheet->setCellValue('B1', 'Nama Rekening'); $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 == "Jadwal" ? "Realisasi":"Jadwal"; $sheet->setCellValue(getAlphabetCell($i).'2', $colName); } // Data Kolom Bulan dan Realisasi $rows = 3; foreach ($data as $val){ $sheet->setCellValue('A' . $rows, $val["kode_rekening"]); $sheet->setCellValue('B' . $rows, $val["nama_rekening"]); $totalJadwalSalur = 0; $totalRealisasi = 0; $currIndex = 2; for($i=1;$i<=12;$i++){ $sheet->setCellValue(getAlphabetCell($currIndex).$rows, $val["spsbulan".$i]); $totalJadwalSalur += $val["spsbulan".$i]; $currIndex++; $sheet->setCellValue(getAlphabetCell($currIndex).$rows, $val["real".$i]); $totalRealisasi += $val["real".$i]; $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)"); } $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); } }