Develop kontrak dan BAST

This commit is contained in:
Pusdatin BPKD Jkt
2022-08-18 15:55:11 +07:00
parent be57454faa
commit d83e63e525
8 changed files with 184 additions and 74 deletions
@@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\BelanjaRealisasi;
use App\Models\BelanjaRealisasiKontrak;
use App\Models\BelanjaRealisasiBast;
use App\Models\TempRealisasiBelanja;
use App\Models\VwAkbSpdRealRsk;
use App\Models\UnitSatuan;
@@ -17,6 +18,7 @@ use App\Imports\RealisasiBelanjaImport;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\File;
class RealisasiBelanjaController extends Controller
{
@@ -48,6 +50,7 @@ class RealisasiBelanjaController extends Controller
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");
@@ -358,12 +361,13 @@ class RealisasiBelanjaController extends Controller
}
}
protected function uploadFileKontrak($request)
protected function uploadFileKontrak($request, $id)
{
$file = $request->file('file_kontrak');
if ($file){
$fileName = $file->getClientOriginalName();
$tujuan_upload = 'uploadFiles/kontrak';
$tujuan_upload = config('constants.upload_path_kontrak').$id;
File::isDirectory($tujuan_upload) or File::makeDirectory($tujuan_upload, 0777, true, true);
$file->move($tujuan_upload, $fileName);
return $fileName;
}
@@ -383,7 +387,7 @@ class RealisasiBelanjaController extends Controller
$this->validate($request, [
'file_kontrak' => 'required|mimes:pdf',
]);
$fileName = $this->uploadFileKontrak($request);
$fileName = $this->uploadFileKontrak($request, $id);
BelanjaRealisasiKontrak::where("belanja_realisasi_id",$id)->where("nomor_kontrak",$req["nomor_kontrak"])->firstOrNew()->delete();
$data["belanja_realisasi_id"] = $id;
@@ -391,7 +395,7 @@ class RealisasiBelanjaController extends Controller
$data["tgl_kontrak"] = ConvertIndoDate($req["tgl_kontrak"]);
$data["nominal_kontrak"] = replaceMoney($req["nominal_kontrak"]);
$data["file_kontrak"] = $fileName;
$data["nomor_bast"] = $req["nomor_bast"];
$data["nomor_bast"] = "";
$data["created_by"] = Auth::user()->id;
BelanjaRealisasiKontrak::create($data);
@@ -421,8 +425,8 @@ class RealisasiBelanjaController extends Controller
$data["nomor_kontrak"] = $req["nomor_kontrak"];
$data["tgl_kontrak"] = ConvertIndoDate($req["tgl_kontrak"]);
$data["nominal_kontrak"] = replaceMoney($req["nominal_kontrak"]);
$data["nomor_bast"] = $req["nomor_bast"];
$fileName = $this->uploadFileKontrak($request);
$data["nomor_bast"] = "";
$fileName = $this->uploadFileKontrak($request, $BelanjaRealisasi->id);
if ($fileName){
$data["file_kontrak"] = $fileName;
}
@@ -443,14 +447,25 @@ class RealisasiBelanjaController extends Controller
public function destroyKontrak($id)
{
try{
DB::beginTransaction();
$BelanjaRealisasiKontrak = BelanjaRealisasiKontrak::where("id",$id)->firstorNew();
$alamatFile = "uploadFiles/kontrak/".$BelanjaRealisasiKontrak->file_kontrak;
$alamatFile = config('constants.upload_path_kontrak').$BelanjaRealisasiKontrak->belanja_realisasi_id."/".$BelanjaRealisasiKontrak->file_kontrak;
if (file_exists($alamatFile)){
unlink($alamatFile);
}
$basts = BelanjaRealisasiBast::where("id_kontrak",$id)->get();
foreach($basts as $bast)
{
$this->delBast($bast->id);
}
BelanjaRealisasiKontrak::where("id",$id)->delete();
DB::commit();
return redirect(URL::to("/realisasi-belanja/".$BelanjaRealisasiKontrak->belanja_realisasi_id."/submit"))
->with('success','Data Kontrak Realisasi Belanja berhasil dihapus!');
@@ -471,18 +486,19 @@ class RealisasiBelanjaController extends Controller
'Content-Disposition' => 'attachment;filename='.$BelanjaRealisasiKontrak->file_kontrak
];
if ($BelanjaRealisasiKontrak){
return response()->download("uploadFiles/kontrak/".$BelanjaRealisasiKontrak->file_kontrak, $BelanjaRealisasiKontrak->file_kontrak, $headers);
return response()->download(config('constants.upload_path_kontrak').$BelanjaRealisasiKontrak->file_kontrak, $BelanjaRealisasiKontrak->file_kontrak, $headers);
}else{
echo "File tidak ditemukan!";
}
}
protected function uploadFileBast($request)
protected function uploadFileBast($request, $id)
{
$file = $request->file('file_bast');
if ($file){
$fileName = $file->getClientOriginalName();
$tujuan_upload = 'uploadFiles/kontrak/bast';
$tujuan_upload = config('constants.upload_path_kontrak').$id."/bast";
File::isDirectory($tujuan_upload) or File::makeDirectory($tujuan_upload, 0777, true, true);
$file->move($tujuan_upload, $fileName);
return $fileName;
}
@@ -491,10 +507,17 @@ class RealisasiBelanjaController extends Controller
public function bast(Request $request, $id)
{
$BelanjaRealisasi = BelanjaRealisasi::where("id", $id)->firstOrNew();
$kontrak = BelanjaRealisasiKontrak::where("id", $id)->firstOrNew();
$BelanjaRealisasiBast = BelanjaRealisasiBast::where("id_kontrak",$id)->get();
return view('realisasi_belanja.list_bast',compact("BelanjaRealisasiBast","kontrak"));
}
public function bastCreate(Request $request, $idKontrak)
{
$req = $request->all();
$redirect = "/realisasi-belanja/".$id."/submit";
$action = "/realisasi-belanja/".$id."/bast";
$kontrak = BelanjaRealisasiKontrak::where("id", $idKontrak)->firstOrNew();
$redirect = "/realisasi-belanja/".$kontrak->belanja_realisasi_id."/submit";
$action = "/realisasi-belanja/".$idKontrak."/bast/add";
// var_dump("WOY"); exit;
if ($request->isMethod('post')) {
try{
@@ -502,16 +525,15 @@ class RealisasiBelanjaController extends Controller
$this->validate($request, [
'file_bast' => 'required|mimes:pdf',
]);
$fileName = $this->uploadFileBast($request);
BelanjaRealisasiKontrak::where("id_kontrak",$id)->where("nomor_bast",$req["nomor_bast"])->firstOrNew()->delete();
$data["belanja_realisasi_id"] = $id;
$data["nomor_bast"] = $req["nomor_kontrak"];
$data["tgl_bast"] = ConvertIndoDate($req["tgl_kontrak"]);
$data["nominal_bast"] = replaceMoney($req["nominal_kontrak"]);
$fileName = $this->uploadFileBast($request, $kontrak->belanja_realisasi_id);
BelanjaRealisasiBast::where("id_kontrak",$idKontrak)->where("nomor_bast",$req["nomor_bast"])->firstOrNew()->delete();
$data["id_kontrak"] = $idKontrak;
$data["nomor_bast"] = $req["nomor_bast"];
$data["tgl_bast"] = ConvertIndoDate($req["tgl_bast"]);
$data["nominal_bast"] = replaceMoney($req["nominal_bast"]);
$data["file_bast"] = $fileName;
$data["created_by"] = Auth::user()->id;
BelanjaRealisasiKontrak::create($data);
BelanjaRealisasiBast::create($data);
DB::commit();
@@ -523,51 +545,25 @@ class RealisasiBelanjaController extends Controller
}
}
return view('realisasi_belanja.form_kontrak',compact("BelanjaRealisasi","action"));
return view('realisasi_belanja.form_bast',compact("kontrak","action"));
}
public function bastUpdate(Request $request, $idBast)
protected function delBast($id)
{
$BelanjaRealisasiBast = BelanjaRealisasiBast::where("id",$idBast)->firstorNew();
// $BelanjaRealisasi = BelanjaRealisasi::where("id", $BelanjaRealisasiKontrak->belanja_realisasi_id)->firstOrNew();
$req = $request->all();
$redirect = "/realisasi-belanja/".$BelanjaRealisasiKontrak->belanja_realisasi_id."/submit";
$action = "/realisasi-belanja/".$idKontrak."/bast";
if ($request->isMethod('put')) {
try{
DB::beginTransaction();
$data["nomor_kontrak"] = $req["nomor_kontrak"];
$data["tgl_kontrak"] = ConvertIndoDate($req["tgl_kontrak"]);
$data["nominal_kontrak"] = replaceMoney($req["nominal_kontrak"]);
$data["nomor_bast"] = $req["nomor_bast"];
$fileName = $this->uploadFileKontrak($request);
if ($fileName){
$data["file_kontrak"] = $fileName;
}
$BelanjaRealisasiKontrak->update($data);
DB::commit();
return redirect($redirect)->with('success','Data BAST berhasil di input!');
}catch(\Exception $e){
throw new \Exception($e->getMessage());
DB::rollBack();
return redirect($redirect)->with('error',$e->getMessage());
}
$BelanjaRealisasiBast = BelanjaRealisasiBast::where("id",$id)->firstorNew();
$BelanjaRealisasiKontrak = BelanjaRealisasiKontrak::where("id",$BelanjaRealisasiBast->id_kontrak)->firstorNew();
$alamatFile = config('constants.upload_path_kontrak').$BelanjaRealisasiKontrak->belanja_realisasi_id."/bast/".$BelanjaRealisasiBast->file_bast;
if (file_exists($alamatFile)){
unlink($alamatFile);
}
return view('realisasi_belanja.form_kontrak',compact("BelanjaRealisasi","BelanjaRealisasiKontrak","action"));
return BelanjaRealisasiBast::where("id",$id)->delete();
}
public function destroyBast($id)
{
try{
DB::beginTransaction();
$BelanjaRealisasiKontrak = BelanjaRealisasiKontrak::where("id",$id)->firstorNew();
$alamatFile = "uploadFiles/kontrak/".$BelanjaRealisasiKontrak->file_kontrak;
if (file_exists($alamatFile)){
unlink($alamatFile);
}
BelanjaRealisasiKontrak::where("id",$id)->delete();
$this->delBast($id);
DB::commit();
return redirect(URL::to("/realisasi-belanja/".$BelanjaRealisasiKontrak->belanja_realisasi_id."/submit"))
->with('success','Data BAST Realisasi Belanja berhasil dihapus!');
@@ -589,7 +585,7 @@ class RealisasiBelanjaController extends Controller
'Content-Disposition' => 'attachment;filename='.$BelanjaRealisasiKontrak->file_kontrak
];
if ($BelanjaRealisasiKontrak){
return response()->download("uploadFiles/kontrak/".$BelanjaRealisasiKontrak->file_kontrak, $BelanjaRealisasiKontrak->file_kontrak, $headers);
return response()->download(config('constants.upload_path_kontrak').$BelanjaRealisasiKontrak->file_kontrak, $BelanjaRealisasiKontrak->file_kontrak, $headers);
}else{
echo "File tidak ditemukan!";
}
+2 -2
View File
@@ -15,8 +15,8 @@ class BelanjaRealisasiBast extends Eloquent
"id_kontrak",
"nomor_bast",
"tgl_bast",
"nominal_kontrak",
"file_kontrak",
"nominal_bast",
"file_bast",
"created_by"
];
}
+13
View File
@@ -0,0 +1,13 @@
<?php
return [
'upload_path' => "uploadFiles/",
'upload_path_kontrak' => "uploadFiles/kontrak/",
'download_path' => "downloadFiles/",
'options' => [
'option_attachment' => '13',
'option_email' => '14',
'option_monetery' => '15',
'option_ratings' => '16',
'option_textarea' => '17',
]
];
@@ -0,0 +1,35 @@
<form id="frmKontrak" action="{{ url($action) }}" method="POST" autocomplete="off" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<label>Nomor BAST</label>
<input type="text" id="nomor_bast" required class="form-control" name="nomor_bast" value="{{ isset($BelanjaRealisasiKontrak)?$BelanjaRealisasiKontrak->nomor_bast:"" }}" placeholder="Nomor BAST">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<label>Tgl BAST</label>
<input type="text" id="tgl_bast" required class="form-control indo_date" name="tgl_bast" value="{{ isset($BelanjaRealisasiKontrak)?date("d/m/Y",strtotime($BelanjaRealisasiKontrak->tgl_bast)):"" }}" placeholder="Tanggal BAST">
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-6">
<div class="form-group">
<label>Nominal BAST</label>
<input type="text" id="nominal_bast" required class="form-control number-separator-indo" name="nominal_bast" value="{{ isset($BelanjaRealisasiKontrak)?separateNumberIndo($BelanjaRealisasiKontrak->nominal_bast):"" }}" placeholder="Nominal BAST">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<label>File Kontrak (*.pdf)</label>
<input class="form-control" type="file" name="file_bast" required>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<button type="submit" class="btn btn-sm btn-success"><i class="fa fa-paper-plane"></i> Simpan</button>
<a class='btn btn-danger btn-sm modalButton' href='{{ $baseUrl }}/realisasi-belanja/{{ $kontrak->id }}/bast' title='BAST' modal-target="modal-lg">Batal</a>
</div>
</div>
</form>
<script type="text/javascript">
</script>
@@ -22,12 +22,6 @@
<input type="text" id="nominal_kontrak" required class="form-control number-separator-indo" name="nominal_kontrak" value="{{ isset($BelanjaRealisasiKontrak)?separateNumberIndo($BelanjaRealisasiKontrak->nominal_kontrak):"" }}" placeholder="Nominal Kontrak">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<label>Nomor BAST</label>
<input type="text" id="nomor_bast" required class="form-control" name="nomor_bast" value="{{ isset($BelanjaRealisasiKontrak)?$BelanjaRealisasiKontrak->nomor_bast:"" }}" placeholder="Nomor BAST">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<label>File Kontrak (*.pdf)</label>
@@ -0,0 +1,40 @@
<a class='btn btn-success btn-sm modalButton mb-2' href='{{ $baseUrl }}/realisasi-belanja/{{ $kontrak->id }}/bast/add' title='Tambah BAST'><i class='fa fa-plus'></i> Tambah</a>
<table class="table table-sm table-striped">
<thead>
<th>No</th>
<th>Nomor BAST</th>
<th class="text-center">Tanggal</th>
<th class="text-right">Jumlah</th>
<th class="text-center">File</th>
<?php if (Auth::user()->can("Create Kontrak")){ ?>
<th class="text-center"></th>
<?php } ?>
</thead>
<tbody>
<?php
$totalBast = 0;
foreach($BelanjaRealisasiBast as $key=>$bast){ ?>
<tr data-widget="expandable-table" aria-expanded="false">
<td>{{ $key+1 }}</td>
<td class="text-left">{{ $bast->nomor_bast }}</td>
<td class="text-center">{{ date("d-m-Y",strtotime($bast->tgl_bast)) }}</td>
<td class="text-right">{{ separateNumberIndo($bast->nominal_bast) }}</td>
<td class="text-center"><?= empty($bast->file_bast)?"-":"<a href='".url("/realisasi-belanja/".$bast->id_kontrak.'__'.$bast->id ."/download-bast")."'>".$bast->file_bast."</a>" ?></td>
<?php if (Auth::user()->can("Create Kontrak")){ ?>
<td class="text-center">
<form class='form-delete' action='{{ $baseUrl }}/realisasi-belanja/{{ $bast->id }}/bast' method='POST'>
<input type='hidden' name='_token' id='csrf-token' value='{{ Session::token() }}' />
<input type='hidden' name='_method' value='DELETE'>
<button type="submit" class="btn btn-danger btn-sm" name="btnSubmit"><i class="fa fa-trash"></i></button>
</form>
</td>
<?php } ?>
</tr>
<?php $totalBast+=floatVal($bast->nominal_bast); } ?>
<tr >
<td colspan="3"><strong>TOTAL BAST</strong></td>
<td class="text-right"><strong>{{ separateNumberIndo($totalBast) }}</strong></td>
<td colspan="2">&nbsp;</td>
</tr>
</tbody>
</table>
@@ -39,10 +39,19 @@
</div>
</div>
<div class="card">
<div class="card-header">
<h2 class="card-title"><i class="fa fa-th-list mr-2"></i> AKB vs REALISASI</h2>
<div class="card-tools">
{{-- @if(auth()->user()->can('Tambah SKPP')) --}}
<button type="button" class="btn btn-tool" data-card-widget="collapse" title="Collapse">
<i class="fas fa-minus"></i>
</button>
{{-- @endif --}}
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-6">
<strong><i class="fa fa-th-list mr-2"></i> AKB vs REALISASI</strong><hr style="margin-bottom: 0 !important;">
<div class="row">
<div class='col-12'>
<table class="table table-striped">
@@ -131,8 +140,17 @@
</div>
<?php if (strtoupper($BelanjaRealisasi->jenis_dana) == "DAK" && strtoupper($BelanjaRealisasi->sub_jenis_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>
<div class="card-tools">
{{-- @if(auth()->user()->can('Tambah SKPP')) --}}
<button type="button" class="btn btn-tool" data-card-widget="collapse" title="Collapse">
<i class="fas fa-minus"></i>
</button>
{{-- @endif --}}
</div>
</div>
<div class="card-body">
<strong><i class="fa fa-th-list mr-2"></i> KONTRAK</strong> <?= Auth::user()->can("Create Kontrak")?'[ <a class="modalButton" title="Input Kontrak" href="'.url('/realisasi-belanja/'.$BelanjaRealisasi->id.'/kontrak') .'">Tambah Kontrak</a> ]':'' ?><hr style="margin-bottom: 0 !important;">
<table class="table table-sm table-striped">
<thead>
<th>No</th>
@@ -140,7 +158,6 @@
<th class="text-center">Tanggal</th>
<th class="text-right">Jumlah</th>
<th class="text-center">File</th>
<th>Nomor BAST</th>
<?php if (Auth::user()->can("Create Kontrak")){ ?>
<th class="text-center"></th>
<?php } ?>
@@ -149,20 +166,20 @@
<?php
$totalKontrak = 0;
foreach($BelanjaRealisasiKontrak as $key=>$kontrak){ ?>
<tr>
<tr data-widget="expandable-table" aria-expanded="false">
<td>{{ $key+1 }}</td>
<td class="text-left">{{ $kontrak->nomor_kontrak }}</td>
<td class="text-center">{{ date("d-m-Y",strtotime($kontrak->tgl_kontrak)) }}</td>
<td class="text-right">{{ separateNumberIndo($kontrak->nominal_kontrak) }}</td>
<td class="text-center"><?= empty($kontrak->file_kontrak)?"-":"<a href='".url("/realisasi-belanja/".$BelanjaRealisasi->id.'__'.$kontrak->id ."/download-kontrak")."'>".$kontrak->file_kontrak."</a>" ?></td>
<td class="text-left">{{ $kontrak->nomor_bast }}</td>
<?php if (Auth::user()->can("Create Kontrak")){ ?>
<td class="text-center">
<form class='form-delete' action='{{ $baseUrl }}/realisasi-belanja/{{ $kontrak->id }}/kontrak' method='POST'>
<input type='hidden' name='_token' id='csrf-token' value='{{ Session::token() }}' />
<input type='hidden' name='_method' value='DELETE'>
<a class='btn btn-default btn-sm modalButton' href='{{ $baseUrl }}/realisasi-belanja/{{ $kontrak->id }}/kontrak/update' title='Ubah Kontrak'><i class='fa fa-edit'></i></a>
<button type="submit" class="btn btn-default btn-sm" name="btnSubmit"><i class="fa fa-trash"></i></button>
<button type="submit" class="btn btn-danger btn-sm" name="btnSubmit"><i class="fa fa-trash"></i></button>
<a class='btn btn-default btn-sm modalButton' href='{{ $baseUrl }}/realisasi-belanja/{{ $kontrak->id }}/bast' title='BAST' modal-target="modal-lg"><i class='fa fa-file'></i></a>
</form>
</td>
<?php } ?>
@@ -179,8 +196,17 @@
</div>
<?php } ?>
<div class="card">
<div class="card-header">
<h2 class="card-title"><i class="fa fa-th-list mr-2"></i> REALISASI</h2>
<div class="card-tools">
{{-- @if(auth()->user()->can('Tambah SKPP')) --}}
<button type="button" class="btn btn-tool" data-card-widget="collapse" title="Collapse">
<i class="fas fa-minus"></i>
</button>
{{-- @endif --}}
</div>
</div>
<div class="card-body">
<strong><i class="fa fa-th-list mr-2"></i> REALISASI</strong><hr style="margin-bottom: 0 !important;">
<div class="form-group">
<label class="col-form-label label-align" for="sk">Jumlah Realisasi</label>
<input type="text" class="form-control" name="jml_realisasi" disabled value="{{ separateNumberIndo($totalSP2D) }}">
+7 -1
View File
@@ -74,13 +74,19 @@ Route::group(['middleware' => 'auth'], function () {
Route::get('/{id}/inputRealisasi', [RealisasiBelanjaController::class,'inputRealisasi']);
Route::post('/{id}/inputRealisasi', [RealisasiBelanjaController::class,'inputRealisasi']);
Route::delete('/delete-detail/{id}', [RealisasiBelanjaController::class,'deleteDetail']);
Route::post('/download', [RealisasiBelanjaController::class,'download']);
Route::get('/{id}/kontrak', [RealisasiBelanjaController::class,'kontrak']);
Route::post('/{id}/kontrak', [RealisasiBelanjaController::class,'kontrak']);
Route::delete('/{id}/kontrak', [RealisasiBelanjaController::class,'destroyKontrak']);
Route::get('/{idKontrak}/kontrak/update', [RealisasiBelanjaController::class,'kontrakUpdate']);
Route::put('/{idKontrak}/kontrak', [RealisasiBelanjaController::class,'kontrakUpdate']);
Route::get('/{kode}/download-kontrak', [RealisasiBelanjaController::class,'downloadKontrak']);
Route::post('/download', [RealisasiBelanjaController::class,'download']);
Route::get('/{idKontrak}/bast', [RealisasiBelanjaController::class,'bast']);
Route::delete('/{idKontrak}/bast', [RealisasiBelanjaController::class,'destroyBast']);
Route::get('/{idKontrak}/bast/add', [RealisasiBelanjaController::class,'bastCreate']);
Route::post('/{idKontrak}/bast/add', [RealisasiBelanjaController::class,'bastCreate']);
});
Route::resource('realisasi-belanja', RealisasiBelanjaController::class);