332 lines
14 KiB
PHP
332 lines
14 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Models\BelanjaRealisasi;
|
|
use App\Models\BelanjaRealisasiDetail;
|
|
use App\Models\TempRealisasiBelanja;
|
|
use App\Models\VwAkbSpdRealRsk;
|
|
use App\Models\UnitSatuan;
|
|
use App\Models\Sp2d;
|
|
use App\Imports\RealisasiBelanjaImport;
|
|
|
|
class RealisasiBelanjaController extends Controller
|
|
{
|
|
public function __construct(){
|
|
$this->siteTitle = "Realisasi Belanja";
|
|
parent::__construct();
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
return view('realisasi_belanja.index');
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
}
|
|
|
|
public function edit(BelanjaRealisasi $realisasi_belanja)
|
|
{
|
|
}
|
|
|
|
public function update(Request $request, BelanjaRealisasi $realisasi_belanja)
|
|
{
|
|
}
|
|
|
|
public function submit(Request $request, $id)
|
|
{
|
|
$BelanjaRealisasi = BelanjaRealisasi::where("id", $id)->firstOrNew();
|
|
// var_dump($BelanjaRealisasi->kode_rsk,$BelanjaRealisasi->kode_sub_kegiatan); exit;
|
|
$this->setTitle("Realisasi Belanja ".$BelanjaRealisasi->jenis_dana." ".$BelanjaRealisasi->sub_jenis_dana);
|
|
$this->setSubtitle("Detail Data");
|
|
$vwAKB = VwAkbSpdRealRsk::where("I_IDRSK",$BelanjaRealisasi->kode_rsk)->firstorNew();
|
|
|
|
$vwSPD = DB::select(DB::raw(
|
|
'SELECT x.I_SPDNO_DOK,x.D_SPDNO,sum(y.V_SPD) AS JML
|
|
FROM NEWSIPKD.TMSPD x
|
|
LEFT JOIN NEWSIPKD.TMSPDRINCIBLJ y
|
|
ON x.I_ID = y.I_IDSPD
|
|
LEFT JOIN NEWSIPKD.TMDPASUBGIAT z
|
|
ON y.I_IDSUBGIAT = z.I_ID
|
|
LEFT JOIN NEWSIPKD.TROPD a
|
|
ON x.I_IDOPD = a.I_ID
|
|
WHERE z.C_SUBGIAT = \''.$BelanjaRealisasi->kode_sub_kegiatan.'\'
|
|
AND a.C_OPD = \''.$BelanjaRealisasi->kode_skpd.'\'
|
|
AND x.C_ANGG_TAHUN = \''.$BelanjaRealisasi->tahun_anggaran.'\'
|
|
GROUP BY x.I_SPDNO_DOK,x.D_SPDNO
|
|
ORDER BY x.D_SPDNO '
|
|
));
|
|
|
|
$vwSP2D = DB::select(DB::raw('SELECT x.I_ID as IDSP2D, x.I_IDOPD,x.I_SP2DNO_DOK,
|
|
TO_CHAR(x.D_SP2D_SAH,\'DD-MM-YYYY\') AS D_SP2D_SAH,x.V_SPP
|
|
FROM NEWSIPKD.TMSP2D x
|
|
LEFT JOIN NEWSIPKD.TMSPPRINCIBLJRSK y
|
|
ON x.I_IDSPP = y.I_IDSPP
|
|
WHERE y.I_IDRSK='.$BelanjaRealisasi->kode_rsk.' ORDER BY x.D_SP2D_SAH ' )
|
|
);
|
|
|
|
return view('realisasi_belanja.submit', compact("BelanjaRealisasi","vwAKB","vwSPD","vwSP2D"));
|
|
}
|
|
|
|
public function datatable(Request $request)
|
|
{
|
|
$post = $request->all();
|
|
$offset = $post["start"];
|
|
$limit = $post["length"];
|
|
$src = isset($post["search"])?$post["search"]["value"]:"";
|
|
|
|
$dataFilter=0;
|
|
$data = DB::select(DB::raw('SELECT x.*,y.JML_REALISASI_SP2D FROM BELANJA_REALISASI x
|
|
LEFT JOIN (
|
|
SELECT I_IDRSK,SUM(y.V_SPP) AS JML_REALISASI_SP2D
|
|
FROM NEWSIPKD.TMSP2D x
|
|
LEFT JOIN NEWSIPKD.TMSPPRINCIBLJRSK y
|
|
ON x.I_IDSPP = y.I_IDSPP
|
|
GROUP BY I_IDRSK
|
|
) y ON x.KODE_RSK = y.I_IDRSK'));
|
|
|
|
if (!empty($src)){
|
|
$data->whereRaw("(LOWER(jenis_belanja) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(sub_jenis_belanja) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_program) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_skpd) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_kegiatan) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_sub_kegiatan) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_rsk) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_rekening) LIKE '%".strtolower($src)."%')");
|
|
}
|
|
|
|
$dataFilter = count($data);
|
|
$dataTotal = BelanjaRealisasi::count();
|
|
|
|
return response()->json([
|
|
"recordsTotal" => $dataTotal,
|
|
"recordsFiltered" => $dataFilter,
|
|
"data"=> $data
|
|
]);
|
|
}
|
|
|
|
public function destroy(BelanjaRealisasi $realisasi_belanja)
|
|
{
|
|
try{
|
|
DB::beginTransaction();
|
|
$realisasi_belanja->delete();
|
|
DB::commit();
|
|
return redirect('/realisasi-pendapatan')
|
|
->with('success','Data Realisasi Pendapatan berhasil dihapus!');
|
|
|
|
}catch(Throwable $e){
|
|
|
|
DB::rollBack();
|
|
return redirect('/realisasi-pendapatan')
|
|
->with('error','Data Realisasi Pendapatan gagal dihapus.');
|
|
}
|
|
}
|
|
|
|
public function show(BelanjaRealisasi $realisasi_belanja)
|
|
{
|
|
// if (!Auth::user()->can("Lihat SKPP")){
|
|
// abort(403, 'Youre not allowed to visit this page!');
|
|
// }
|
|
$this->setSubtitle("Detail Data");
|
|
return view('realisasi_belanja.show',compact("realisasi_belanja"));
|
|
}
|
|
|
|
public function upload(Request $request, $typeDana)
|
|
{
|
|
$method = $request->method();
|
|
$this->setTitle("Upload Rencana Belanja ".strtoupper($typeDana));
|
|
$this->setSubtitle("Upload File");
|
|
if ($request->isMethod('post')) {
|
|
$req = $request->all();
|
|
try{
|
|
$this->validate($request, [
|
|
'file' => 'required|mimes:xls,xlsx',
|
|
]);
|
|
|
|
$file = $request->file('file');
|
|
$subJenisDana = $request->optJenisDana;
|
|
// echo 'File Name: '.$file->getClientOriginalName();
|
|
// echo 'File Extension: '.$file->getClientOriginalExtension();
|
|
// echo 'File Real Path: '.$file->getRealPath();
|
|
// echo 'File Size: '.$file->getSize();
|
|
// echo 'File Mime Type: '.$file->getMimeType();
|
|
$tujuan_upload = 'uploadFiles';
|
|
$file->move($tujuan_upload,$file->getClientOriginalName());
|
|
// var_dump($file->getRealPath()); exit;
|
|
DB::beginTransaction();
|
|
TempRealisasiBelanja::where("userid",Auth::user()->id)->truncate();
|
|
Excel::import(new RealisasiBelanjaImport(strtoupper($typeDana),$subJenisDana), $tujuan_upload."/".$file->getClientOriginalName());
|
|
DB::commit();
|
|
return redirect('/upload-realisasi-belanja/'.$typeDana)->with('success','Data Rencana belanja berhasil diupload, Silahkan validasi data!');
|
|
}catch(\Exception $e){
|
|
throw new \Exception($e->getMessage());
|
|
DB::rollBack();
|
|
return redirect('/upload-realisasi-belanja/'.$typeDana)->with('error',$e->getMessage());
|
|
}
|
|
}
|
|
$this->siteTitle = "Rencana Belanja";
|
|
return view('realisasi_belanja.upload',compact("typeDana"));
|
|
}
|
|
|
|
public function uploadDatatable(Request $request)
|
|
{
|
|
$post = $request->all();
|
|
$offset = $post["start"];
|
|
$limit = $post["length"];
|
|
$src = isset($post["search"])?$post["search"]["value"]:"";
|
|
|
|
$dataFilter=0;
|
|
$data = TempRealisasiBelanja::orderBy("id","ASC");
|
|
if (!empty($src)){
|
|
$data->whereRaw("(LOWER(jenis_belanja) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(sub_jenis_belanja) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_program) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_skpd) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_kegiatan) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_sub_kegiatan) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_rsk) LIKE '%".strtolower($src)."%'
|
|
OR LOWER(nama_rekening) LIKE '%".strtolower($src)."%'
|
|
)");
|
|
}
|
|
$dataFilter = $data->count();
|
|
$dataTotal = TempRealisasiBelanja::count();
|
|
|
|
return response()->json([
|
|
"recordsTotal" => $dataTotal,
|
|
"recordsFiltered" => $dataFilter,
|
|
"data"=> $data->skip($offset)->take($limit)->get()
|
|
]);
|
|
}
|
|
|
|
public function uploadValidate(Request $request, $typeDana)
|
|
{
|
|
try{
|
|
DB::beginTransaction();
|
|
$datas = TempRealisasiBelanja::orderBy("id","ASC")->get();
|
|
for($i=0;$i<$datas->count();$i++){
|
|
$cekData = BelanjaRealisasi::where([
|
|
"kode_rsk"=>$datas[$i]["kode_rsk"],
|
|
// "kode_rekening"=>$datas[$i]["kode_rekening"]
|
|
])->firstOrNew();
|
|
|
|
if (!$cekData==null){
|
|
$cekData->delete();
|
|
// BelanjaRealisasi::where(["kode_rsk"=>$datas[$i]["kode_rsk"],"kode_rekening"=>$datas[$i]["kode_rekening"]])->delete();
|
|
}
|
|
$input = [
|
|
"tahun_anggaran"=>$datas[$i]["tahun_anggaran"],
|
|
"jenis_belanja"=>$datas[$i]["jenis_belanja"],
|
|
"sub_jenis_belanja"=>$datas[$i]["sub_jenis_belanja"],
|
|
"kode_program"=>$datas[$i]["kode_program"],
|
|
"nama_program"=>$datas[$i]["nama_program"],
|
|
"kode_skpd"=>$datas[$i]["kode_skpd"],
|
|
"nama_skpd"=>$datas[$i]["nama_skpd"],
|
|
"kode_kegiatan"=>$datas[$i]["kode_kegiatan"],
|
|
"nama_kegiatan"=>$datas[$i]["nama_kegiatan"],
|
|
"kode_sub_kegiatan"=>$datas[$i]["kode_sub_kegiatan"],
|
|
"nama_sub_kegiatan"=>$datas[$i]["nama_sub_kegiatan"],
|
|
"kode_rsk"=>$datas[$i]["kode_rsk"],
|
|
"nama_rsk"=>$datas[$i]["nama_rsk"],
|
|
"jumlah_anggaran"=>$datas[$i]["jumlah_anggaran"],
|
|
"volume_satuan"=>$datas[$i]["volume_satuan"],
|
|
"unit_satuan"=>$datas[$i]["unit_satuan"],
|
|
"jenis_dana"=>$datas[$i]["jenis_dana"],
|
|
"sub_jenis_dana"=>$datas[$i]["sub_jenis_dana"],
|
|
"created_by"=>$datas[$i]["userid"]
|
|
];
|
|
BelanjaRealisasi::create($input);
|
|
}
|
|
TempRealisasiBelanja::truncate();
|
|
DB::commit();
|
|
return redirect('/upload-realisasi-belanja/'.$typeDana)->with('success','Data Realisasi belanja berhasil diupload.');
|
|
}catch(\Exception $e){
|
|
throw new \Exception($e->getMessage());
|
|
DB::rollBack();
|
|
return redirect('/upload-realisasi-belanja/'.$typeDana)->with('error',$e->getMessage());
|
|
}
|
|
return view('realisasi_belanja.upload');
|
|
}
|
|
|
|
public function inputRealisasi(Request $request, $id)
|
|
{
|
|
$BelanjaRealisasi = BelanjaRealisasi::where("id", $id)->firstOrNew();
|
|
$req = $request->all();
|
|
$redirect = isset($req["redirect_link"])?$req["redirect_link"]:"realisasi-belanja";
|
|
if ($request->isMethod('post')) {
|
|
try{
|
|
DB::beginTransaction();
|
|
$data["volume_satuan_realisasi"] = $req["vol_realisasi"];
|
|
$data["unit_satuan_realisasi"] = $req["unit_realisasi"];
|
|
$data["realisasi_by"] = Auth::user()->id;
|
|
$BelanjaRealisasi->update($data);
|
|
DB::commit();
|
|
|
|
return redirect($redirect)->with('success','Data Realisasi berhasil di input!');
|
|
}catch(\Exception $e){
|
|
throw new \Exception($e->getMessage());
|
|
DB::rollBack();
|
|
return redirect($redirect)->with('error',$e->getMessage());
|
|
}
|
|
}
|
|
|
|
$unitSatuan = UnitSatuan::orderBy("id")->get();
|
|
return view('realisasi_belanja.form_input_realisasi',compact("BelanjaRealisasi", "unitSatuan","redirect"));
|
|
}
|
|
|
|
public function datatableInputRealisasi(Request $request)
|
|
{
|
|
$post = $request->all();
|
|
$offset = $post["start"];
|
|
$limit = $post["length"];
|
|
$src = isset($post["search"])?$post["search"]["value"]:"";
|
|
|
|
$dataFilter=0;
|
|
//$data = BelanjaRealisasiDetail::where(["DBH_BELANJA_REALISASI_ID"=>$request->id])->orderBy("id","ASC");
|
|
$data = DB::select(
|
|
DB::raw('SELECT x.I_ID as IDSP2D, x.I_IDOPD,x.I_SP2DNO_DOK,TO_CHAR(x.D_SP2D_SAH,\'DD-MM-YYYY\') AS D_SP2D_SAH,x.V_SPP,
|
|
a.no_sp2d,a.jumlah_realisasi,a.VOLUME_SATUAN_REALISASI,a.UNIT_SATUAN_REALISASI,a.ID
|
|
FROM NEWSIPKD.TMSP2D x
|
|
LEFT JOIN NEWSIPKD.TMSPPRINCIBLJRSK y
|
|
ON x.I_IDSPP = y.I_IDSPP
|
|
LEFT JOIN SAMASA.DBH_BELANJA_REALISASI_DETAIL a
|
|
ON x.I_SP2DNO_DOK = a.NO_SP2D
|
|
WHERE y.I_IDRSK = '.$request->id.' ORDER BY x.D_SP2D_SAH ' )
|
|
);
|
|
$dataFilter = count($data);
|
|
$dataTotal = $dataFilter;
|
|
|
|
return response()->json([
|
|
"recordsTotal" => $dataTotal,
|
|
"recordsFiltered" => $dataFilter,
|
|
"data"=> $data
|
|
]);
|
|
}
|
|
|
|
public function deleteDetail($id)
|
|
{
|
|
$data = BelanjaRealisasiDetail::where('id', $id)->firstorNew();
|
|
try{
|
|
DB::beginTransaction();
|
|
$data->delete();
|
|
DB::commit();
|
|
return redirect('/realisasi-belanja/'.$data->dbh_belanja_realisasi_id."/submit")->with('success','Data detail Realisasi belanja berhasil dihapus!');
|
|
|
|
}catch(Throwable $e){
|
|
|
|
DB::rollBack();
|
|
return redirect('/realisasi-belanja/'.$data->dbh_belanja_realisasi_id."/submit")->with('error','Data detail Realisasi belanja gagal dihapus.');
|
|
}
|
|
}
|
|
}
|