Export excel, adjust anggaran

This commit is contained in:
Pusdatin BPKD Jkt
2022-11-17 11:08:28 +07:00
parent 16afa0b405
commit d65cfe6991
10 changed files with 204 additions and 121 deletions
@@ -0,0 +1,48 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Session;
use Illuminate\Support\Facades\DB;
class PengaturanController extends Controller
{
public function __construct(){
$this->siteTitle = "Pengaturan";
parent::__construct();
}
public function index()
{
$this->setIconTitle("fa fa-cog");
return view('admin.pengaturan.index');
}
public function rekonAnggaran()
{
try{
DB::beginTransaction();
DB::raw(
"UPDATE BELANJA_REALISASI t1
SET t1.JUMLAH_ANGGARAN = (
SELECT V_ANGG_TAPD FROM VW_DPA_RSK t2
WHERE t1.KODE_RSK = t2.I_ID
) WHERE t1.TAHUN_ANGGARAN = ".getTA()
);
DB::commit();
return response()->json([
"success" => true,
"message" => "Data anggaran berhasil disesuaikan!"
]);
}catch(Throwable $e){
DB::rollBack();
return response()->json([
"success" => false,
"message" => "Data anggaran gagal disesuaikan!"
]);
}
}
}
@@ -222,7 +222,7 @@ class RealisasiBelanjaController extends Controller
$BelanjaRealisasi = $BelanjaRealisasi[0];
$this->setTitle("Realisasi Belanja");
$this->setSubtitle("Realisasi Belanja :: ".$BelanjaRealisasi->jenis_dana." ".$BelanjaRealisasi->nama_jenis_dana);
$this->setSubtitle("Realisasi Belanja :: ".$BelanjaRealisasi->jenis_dana." ".$BelanjaRealisasi->nama_subjenis_dana);
if (getRole()=="sbpk"){
$sbpkUpdate = BelanjaRealisasi::where("id", $id)->firstOrNew();
@@ -266,7 +266,7 @@ class RealisasiBelanjaController extends Controller
$vwAKB = json_decode(json_encode($vwAKB[0]), true);
$vwSPD = [];
if ($BelanjaRealisasi->jenis_dana == "DBH" && $BelanjaRealisasi->nama_jenis_dana != "CHT")
if ($BelanjaRealisasi->jenis_dana == "DBH" && $BelanjaRealisasi->nama_subjenis_dana != "CHT")
{
$vwSPD = BelanjaRealisasi::getSPD($BelanjaRealisasi->kode_sub_kegiatan,$BelanjaRealisasi->id_skpd);
}else{
@@ -305,13 +305,10 @@ class RealisasiBelanjaController extends Controller
return view('realisasi_belanja.submit_realisasi', compact("BelanjaRealisasi","BelanjaRealisasiDetail","BelanjaRealisasiRinci","jmlRealisasi1","jmlRealisasi2"));
}
public function datatable(Request $request)
public function tableFilter(Request $request)
{
$post = $request->all();
$offset = $post["start"];
$limit = $post["length"];
$src = isset($post["search"]["value"]) ? strtolower($post["search"]["value"]):"";
$ta = $post["ta"];
$JenisDana = isset($post["jenis_dana"])?$post["jenis_dana"]:"";
$SubJenisDana = isset($post["sub_jenis_dana"])?$post["sub_jenis_dana"]:"";
$skpd = isset($post["skpd"])?$post["skpd"]:"";
@@ -319,43 +316,33 @@ class RealisasiBelanjaController extends Controller
$idSPS = isset($post["id_sps"])?$post["id_sps"]:"";
$fReview = isset($post["f_review"])?$post["f_review"]:"";
$sqlStr = "SELECT x.*,z1.name as nama_subjenis_dana
FROM BELANJA_REALISASI x
LEFT JOIN NEWSIPKD.TROPD z ON x.KODE_SKPD = z.C_OPD
LEFT JOIN MST_JENIS_DANA z1 ON x.sub_jenis_dana = z1.id
WHERE x.tahun_anggaran='$ta'";
$filter=" WHERE tahun_anggaran = ".getTA();
if (getRole()=="skpd"){
$sqlStr.=" AND KODE_SKPD='".Auth::user()->nrk."'";
$filter.=" AND KODE_SKPD='".Auth::user()->nrk."'";
}elseif (getRole()=="sbpk"){
$sqlStr.=" AND z.C_WIL_SP2DPROSES=".Auth::user()->wilayah;
$filter.=" AND KODE_SKPD IN (SELECT C_OPD FROM NEWSIPKD.TROPD WHERE C_WIL_SP2DPROSES=".Auth::user()->wilayah.")";
}
if (!empty($skpd)){
$sqlStr.=" AND KODE_SKPD='".$skpd."'";
$filter.=" AND KODE_SKPD='".$skpd."'";
}
$filter="";
if (!empty($JenisDana)){
$filter.= " AND x.JENIS_DANA = '".$JenisDana."'";
$filter.= " AND JENIS_DANA = '".$JenisDana."'";
}
if (!empty($SubJenisDana)){
// CHT
$filter.= " AND x.SUB_JENIS_DANA = ".$SubJenisDana;
$filter.= " AND SUB_JENIS_DANA = ".$SubJenisDana;
}
// if (!empty($subkeg)){
// $filter.= " AND x.KODE_SUB_KEGIATAN = '".$subkeg."'";
// }
if (!empty($idSPS)){
$filter.= " AND x.id_sps = ".$idSPS;
$filter.= " AND id_sps = ".$idSPS;
}
if (!empty($fReview)){
$fReview = $fReview == 2 ? 0: $fReview;
$filter.= " AND x.f_view_sbpk = $fReview";
$filter.= " AND f_view_sbpk = $fReview";
}
if (!empty($src)){
@@ -366,40 +353,27 @@ class RealisasiBelanjaController extends Controller
kode_rsk = '".$src."' ) ";
}
$dataFilter = DB::select(DB::raw("SELECT COUNT(ID) as JML FROM ($sqlStr $filter) x"));
$dataTotal = DB::select(DB::raw("SELECT COUNT(ID) as JML FROM ($sqlStr) x"));
$data = DB::select(DB::raw("SELECT a.*,NVL(b.jml,0) as jml,
CASE WHEN a.jenis_dana = 'DBH' AND a.nama_subjenis_dana<>'CHT' THEN NVL(d.jml_spd, 0) ELSE NVL(c.jml_spd, 0) END AS jml_spd
FROM (".$sqlStr.$filter.") a
LEFT JOIN (
SELECT I_IDRSK, SUM(REALISASI_1) AS jml
FROM NEWSIPKD.VW_REALISASI_BELANJA_PERBULAN
WHERE C_ANGG_TAHUN = $ta
GROUP BY I_IDRSK
) b ON a.kode_rsk = b.I_IDRSK
LEFT JOIN (
SELECT id_rsk,count(id_rsk) as jml_spd
FROM SAMASA.belanja_realisasi_spd
WHERE TO_CHAR(TGL,'YYYY') = $ta
GROUP BY id_rsk
) c ON a.kode_rsk = c.id_rsk
LEFT JOIN (
SELECT C_OPD,C_SUBGIAT,COUNT(JML) AS jml_spd
FROM
(
SELECT C_OPD,C_SUBGIAT,SUM(V_SPD) AS JML
FROM NEWSIPKD.TMSPDRINCIBLJ x
LEFT JOIN NEWSIPKD.TMDPASUBGIAT y ON x.I_IDSUBGIAT = y.I_ID
AND x.C_ANGG_TAHUN = $ta
LEFT JOIN NEWSIPKD.TROPD z ON z.I_ID = y.I_IDOPD
WHERE C_SUBGIAT IS NOT NULL
GROUP BY C_OPD,C_SUBGIAT,I_IDSPD
) GROUP BY C_OPD,C_SUBGIAT
) d ON a.KODE_SUB_KEGIATAN = d.C_SUBGIAT AND a.KODE_SKPD = d.C_OPD
ORDER BY a.KODE_SKPD, a.KODE_RSK OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY"));
return $filter;
}
public function datatable(Request $request)
{
$post = $request->all();
$offset = $post["start"];
$limit = $post["length"];
$ta = $post["ta"];
$dataFilter = DB::select(DB::raw("SELECT COUNT(ID) as JML FROM VW_BELANJA_REALISASI ".$this->tableFilter($request)));
$dataTotal = BelanjaRealisasi::count();
if (getRole()=="skpd"){
$dataTotal = BelanjaRealisasi::whereRaw("KODE_SKPD='".Auth::user()->nrk."'")->count();
}elseif (getRole()=="sbpk"){
$dataTotal = BelanjaRealisasi::whereRaw("KODE_SKPD IN (SELECT C_OPD FROM NEWSIPKD.TROPD WHERE C_WIL_SP2DPROSES=".Auth::user()->wilayah.")");
}
$data = DB::select(DB::raw(BelanjaRealisasi::tableData($ta, $this->tableFilter($request), $offset, $limit)));
return response()->json([
"recordsTotal" => $dataTotal[0]->jml,
"recordsTotal" => $dataTotal,
"recordsFiltered" => $dataFilter[0]->jml,
"data"=> $data
]);
@@ -1003,47 +977,8 @@ class RealisasiBelanjaController extends Controller
public function download(Request $request)
{
$post = $request->all();
$sps = isset($post["sps"])?$post["sps"]:"";
$ta = $post["ta"];
$JenisDana = isset($post["jenis_dana"])?$post["jenis_dana"]:"";
$SubJenisDana = isset($post["sub_jenis_dana"])?$post["sub_jenis_dana"]:"";
$skpd = isset($post["skpd"])?$post["skpd"]:"";
$subkeg = isset($post["subkeg"])?$post["subkeg"]:"";
$fReview = isset($post["f_review"])?$post["f_review"]:"";
$data = BelanjaRealisasi::orderBy("created_at","ASC");
$filter="";
if (!empty($sps)){
$filter.= " AND id_sps = ".$sps;
}
if (getRole()=="skpd"){
$filter.=" AND KODE_SKPD='".Auth::user()->nrk."'";
}elseif (getRole()=="sbpk"){
// $filter.=" AND z.C_WIL_SP2DPROSES=".Auth::user()->wilayah;
}
if (!empty($skpd)){
$filter.=" AND KODE_SKPD='".$skpd."'";
}
if (!empty($JenisDana)){
$filter.= " AND JENIS_DANA = '".$JenisDana."'";
}
if (!empty($SubJenisDana)){
$filter.= " AND SUB_JENIS_DANA = ".$SubJenisDana;
}
if (!empty($idSPS)){
$filter.= " AND id_sps = ".$idSPS;
}
if (!empty($fReview)){
$fReview = $fReview == 2 ? 0: $fReview;
$filter.= " AND f_view_sbpk = $fReview";
}
$data = DB::select(DB::raw(BelanjaRealisasi::tableData(getTA(), $this->tableFilter($request))));
$data = json_decode(json_encode($data), true);
$fileName = 'Realisasi-belanja.xlsx';
$spreadsheet = new Spreadsheet();
@@ -1056,17 +991,17 @@ class RealisasiBelanjaController extends Controller
$sheet->setCellValue(getAlphabetCell(5).'1', 'Sub Kegiatan');
$sheet->setCellValue(getAlphabetCell(6).'1', 'Kode Rinci Sub Kegiatan');
$sheet->setCellValue(getAlphabetCell(7).'1', 'Rinci Sub Kegiatan');
$sheet->setCellValue(getAlphabetCell(6).'1', 'Kode Rekening');
$sheet->setCellValue(getAlphabetCell(7).'1', 'Nama Rekening');
$sheet->setCellValue(getAlphabetCell(8).'1', 'Anggaran');
$sheet->setCellValue(getAlphabetCell(9).'1', 'Volume');
$sheet->setCellValue(getAlphabetCell(10).'1', 'Unit');
$sheet->setCellValue(getAlphabetCell(11).'1', 'Realisasi');
$sheet->setCellValue(getAlphabetCell(12).'1', 'Volume');
$sheet->setCellValue(getAlphabetCell(13).'1', 'Unit');
$sheet->setCellValue(getAlphabetCell(8).'1', 'Kode Rekening');
$sheet->setCellValue(getAlphabetCell(9).'1', 'Nama Rekening');
$sheet->setCellValue(getAlphabetCell(10).'1', 'Anggaran');
$sheet->setCellValue(getAlphabetCell(11).'1', 'Volume');
$sheet->setCellValue(getAlphabetCell(12).'1', 'Unit');
$sheet->setCellValue(getAlphabetCell(13).'1', 'Realisasi');
$sheet->setCellValue(getAlphabetCell(14).'1', 'Volume');
$sheet->setCellValue(getAlphabetCell(15).'1', 'Unit');
$rows = 2;
foreach ($data->get() as $val){
foreach ($data as $val){
$sheet->setCellValue(getAlphabetCell(0) . $rows, $val["kode_skpd"]);
$sheet->setCellValue(getAlphabetCell(1) . $rows, $val["nama_skpd"]);
$sheet->setCellValue(getAlphabetCell(2) . $rows, $val["kode_program"]);
@@ -1075,14 +1010,14 @@ class RealisasiBelanjaController extends Controller
$sheet->setCellValue(getAlphabetCell(5) . $rows, $val["nama_sub_kegiatan"]);
$sheet->setCellValue(getAlphabetCell(6) . $rows, $val["kode_rsk"]);
$sheet->setCellValue(getAlphabetCell(7) . $rows, $val["nama_rsk"]);
$sheet->setCellValue(getAlphabetCell(6) . $rows, $val["kode_rekening"]);
$sheet->setCellValue(getAlphabetCell(7) . $rows, $val["nama_rekening"]);
$sheet->setCellValue(getAlphabetCell(8) . $rows, $val["jumlah_anggaran"]);
$sheet->setCellValue(getAlphabetCell(9) . $rows, $val["volume_satuan"]);
$sheet->setCellValue(getAlphabetCell(10) . $rows, $val["unit_satuan"]);
$sheet->setCellValue(getAlphabetCell(11) . $rows, $val["jumlah_realisasi"]);
$sheet->setCellValue(getAlphabetCell(12) . $rows, $val["volume_satuan_realisasi"]);
$sheet->setCellValue(getAlphabetCell(13) . $rows, $val["unit_satuan_realisasi"]);
$sheet->setCellValue(getAlphabetCell(8) . $rows, $val["kode_rekening"]);
$sheet->setCellValue(getAlphabetCell(9) . $rows, $val["nama_rekening"]);
$sheet->setCellValue(getAlphabetCell(10) . $rows, $val["jumlah_anggaran"]);
$sheet->setCellValue(getAlphabetCell(11) . $rows, $val["volume_satuan"]);
$sheet->setCellValue(getAlphabetCell(12) . $rows, $val["unit_satuan"]);
$sheet->setCellValue(getAlphabetCell(13) . $rows, $val["jml"]);
$sheet->setCellValue(getAlphabetCell(14) . $rows, $val["volume_satuan_realisasi"]);
$sheet->setCellValue(getAlphabetCell(15) . $rows, $val["unit_satuan_realisasi"]);
$rows++;
}
+40
View File
@@ -64,4 +64,44 @@ class BelanjaRealisasi extends Eloquent
WHERE a.C_ANGG_TAHUN = ".getTA()." ORDER BY a.D_SPDNO"
));
}
public function tableData($ta, $filter, $offset=0, $limit=0)
{
$ta = getTA();
$sqlstr = "SELECT a.*,NVL(b.jml,0) as jml,
CASE WHEN a.jenis_dana = 'DBH' AND a.nama_subjenis_dana<>'CHT'
THEN NVL(d.jml_spd, 0) ELSE NVL(c.jml_spd, 0) END AS jml_spd
FROM VW_BELANJA_REALISASI a
LEFT JOIN (
SELECT I_IDRSK, SUM(REALISASI_1) AS jml
FROM NEWSIPKD.VW_REALISASI_BELANJA_PERBULAN
WHERE C_ANGG_TAHUN = $ta
GROUP BY I_IDRSK
) b ON a.kode_rsk = b.I_IDRSK
LEFT JOIN (
SELECT id_rsk,count(id_rsk) as jml_spd
FROM SAMASA.belanja_realisasi_spd
WHERE TO_CHAR(TGL,'YYYY') = $ta
GROUP BY id_rsk
) c ON a.kode_rsk = c.id_rsk
LEFT JOIN (
SELECT C_OPD,C_SUBGIAT,COUNT(JML) AS jml_spd
FROM
(
SELECT C_OPD,C_SUBGIAT,SUM(V_SPD) AS JML
FROM NEWSIPKD.TMSPDRINCIBLJ x
LEFT JOIN NEWSIPKD.TMDPASUBGIAT y ON x.I_IDSUBGIAT = y.I_ID
AND x.C_ANGG_TAHUN = $ta
LEFT JOIN NEWSIPKD.TROPD z ON z.I_ID = y.I_IDOPD
WHERE C_SUBGIAT IS NOT NULL
GROUP BY C_OPD,C_SUBGIAT,I_IDSPD
) GROUP BY C_OPD,C_SUBGIAT
) d ON a.KODE_SUB_KEGIATAN = d.C_SUBGIAT AND a.KODE_SKPD = d.C_OPD
".$filter."
ORDER BY a.KODE_SKPD, a.KODE_RSK ";
$sqlstr.= $offset>0?"OFFSET ".$offset." ROWS FETCH NEXT ".$limit." ROWS ONLY":"";
return $sqlstr;
}
}
@@ -0,0 +1,56 @@
@php
$siteBreadcumb = [
["url"=>"/admin/MstJenisBelanja","label"=>$siteTitle],
["url"=>"/admin/MstJenisBelanja","label"=>$sitesubTitle]
];
@endphp
@extends('layouts.empty')
@section('styles')
@endsection
@section('content')
<div class="card">
<div class="card-body">
<a id="btnAdjustAnggaran" class="btn btn-sm btn-warning" href="javascript://">Penyesuian Anggaran Tahun Anggaran {{ getTA(); }}</a>
</div>
</div>
@section('scripts')
<script type="text/javascript">
$(document).ready(function(){
$("#btnAdjustAnggaran").on("click",function(){
Swal.fire({
title: 'Penyesuaian Anggaran akan di Proses?',
showDenyButton: true,
showCancelButton: false,
confirmButtonText: 'Ya',
denyButtonText: "Tidak",
icon: "warning",
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "POST",
url: "{{ URL::to("/admin/Pengaturan/adjust-anggaran") }}",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function(data){
if (data.success == true)
{
Swal.fire(data.message, '', 'success');
}else{
Swal.fire(data.message, '', 'error');
}
}
});
}
})
});
});
</script>
@endsection
@stop
+1
View File
@@ -103,6 +103,7 @@
<li class="nav-item"><a href="{{ $baseUrl }}/admin/MstJenisBelanja" class="nav-link"><i class="nav-icon fas fa-th-large nav-icon"></i><p>Jenis Belanja</p></a></li>
<li class="nav-item"><a href="{{ $baseUrl }}/admin/MstJenisDana" class="nav-link"><i class="nav-icon fas fa-th-large nav-icon"></i><p>Jenis Dana</p></a></li>
<li class="nav-item"><a href="{{ $baseUrl }}/admin/MstSatuan" class="nav-link"><i class="nav-icon fas fa-th-large nav-icon"></i><p>Satuan</p></a></li>
<li class="nav-item"><a href="{{ $baseUrl }}/admin/Pengaturan" class="nav-link"><i class="nav-icon fas fa-cogs nav-icon"></i><p>Pengaturan</p></a></li>
@endif
@if ($role == "superadmin")
<li class="nav-header">PENGATURAN</li>
@@ -36,10 +36,10 @@
$("select[name=jenis_dana]").val("{{ $realisasi_belanja->jenis_dana }}");
$('select[name=jenis_dana]').change();
let $newOptionSubJenisDana = $("<option selected='selected'></option>").val("{{ $realisasi_belanja->sub_jenis_dana }}").text("{{ $realisasi_belanja->nama_jenis_dana }}")
let $newOptionSubJenisDana = $("<option selected='selected'></option>").val("{{ $realisasi_belanja->sub_jenis_dana }}").text("{{ $realisasi_belanja->nama_subjenis_dana }}")
$("select[name=sub_jenis_dana]").val("{{ $realisasi_belanja->sub_jenis_dana }}");
$("select[name=sub_jenis_dana]").append($newOptionSubJenisDana).trigger('change');
cekInputKontrak("{{ $realisasi_belanja->nama_jenis_dana }}");
cekInputKontrak("{{ $realisasi_belanja->nama_subjenis_dana }}");
<?php if (!empty($realisasi_belanja->id_sps)) { ?>
let $newOptionSps = $("<option selected='selected'></option>").val("{{ $realisasi_belanja->id_sps }}").text("{{ $sps->name }}")
@@ -339,7 +339,7 @@
let labelGroup = index == 1 ?"JUMLAH | " + group : "TOTAL";
return $("<tr/>")
.append("<td></td>")
.append("<td colspan='4' class=\'text-left " + textmuted +"\'><strong>"+labelGroup+"</strong></td>")
.append("<td colspan='5' class=\'text-left " + textmuted +"\'><strong>"+labelGroup+"</strong></td>")
.append("<td class='text-right'><strong>"+ separateNumberIndo(sum) +"</strong></td>" )
.append("<td colspan='2'></td>")
.append("<td class='text-right'><strong>"+ separateNumberIndo(sum2) +"</strong></td>" )
@@ -63,12 +63,12 @@
$("select[name=jenis_dana]").attr("disabled", true);
$('select[name=jenis_dana]').change();
let $newOptionSubJenisDana = $("<option selected='selected'></option>").val("{{ $BelanjaRealisasi->sub_jenis_dana }}").text("{{ $BelanjaRealisasi->nama_jenis_dana }}")
let $newOptionSubJenisDana = $("<option selected='selected'></option>").val("{{ $BelanjaRealisasi->sub_jenis_dana }}").text("{{ $BelanjaRealisasi->nama_subjenis_dana }}")
$("select[name=sub_jenis_dana]").val("{{ $BelanjaRealisasi->sub_jenis_dana }}");
$("select[name=sub_jenis_dana]").append($newOptionSubJenisDana).trigger('change');
$("select[name=sub_jenis_dana]").attr("disabled", true);
cekInputKontrak("{{ $BelanjaRealisasi->nama_jenis_dana }}");
cekInputKontrak("{{ $BelanjaRealisasi->nama_subjenis_dana }}");
<?php if (!empty($BelanjaRealisasi->id_sps)) { ?>
let $newOptionSps = $("<option selected='selected'></option>").val("{{ $BelanjaRealisasi->id_sps }}").text("{{ $sps->name }}")
@@ -131,7 +131,7 @@
</div>
</div>
</div>
<?php if (strtoupper($BelanjaRealisasi->jenis_dana) == "DAK" && strtoupper($BelanjaRealisasi->nama_jenis_dana) == "FISIK") { ?>
<?php if (strtoupper($BelanjaRealisasi->jenis_dana) == "DAK" && strtoupper($BelanjaRealisasi->nama_subjenis_dana) == "FISIK") { ?>
<div class="card">
<div class="card-header">
<h2 class="card-title"><i class="fa fa-th-list mr-2"></i> KONTRAK <?= Auth::user()->can("Create Kontrak")?'[ <a class="modalButton" title="Input Kontrak" href="'.url('/realisasi-belanja/'.$BelanjaRealisasi->id.'/kontrak') .'">Tambah Kontrak</a> ]':'' ?></h2>
+3
View File
@@ -18,6 +18,7 @@ use App\Http\Controllers\Admin\MstJenisDanaController;
use App\Http\Controllers\Admin\MstJenisBelanjaController;
use App\Http\Controllers\Admin\MstSubJenisBelanjaController;
use App\Http\Controllers\Admin\MstSatuanController;
use App\Http\Controllers\Admin\PengaturanController;
use App\Http\Controllers\NotifikasiController;
Route::get('/', [AuthController::class, 'showFormLogin']);
@@ -46,6 +47,8 @@ Route::group(['middleware' => 'auth'], function () {
Route::resource('MstSubJenisBelanja', MstSubJenisBelanjaController::class);
Route::post('MstSatuan/datatable', [MstSatuanController::class,'datatable']);
Route::resource('MstSatuan', MstSatuanController::class);
Route::get('Pengaturan', [PengaturanController::class,'index']);
Route::post('Pengaturan/adjust-anggaran', [PengaturanController::class,'rekonAnggaran']);
});
Route::get('users/change-password/{userId}', [MstPenggunaController::class,'changePass'])->name("users.changepass");