diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 51364d9..2e14fdf 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -327,18 +327,21 @@ $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); - $legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true); + $legalitas=''; + if($_jenisJaminan) { + $legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true); - $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn( - 'id', - $document->detail->pluck('jenis_legalitas_jaminan_id')->toArray(), - )->get(); + $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn( + 'id', + $document->detail->pluck('jenis_legalitas_jaminan_id')->toArray(), + )->get(); - // Remove values from $legalitasJaminan that are in $currentLegalitasJaminan - $legalitasJaminan = array_diff($legalitasJaminan, $currentLegalitasJaminan->pluck('code')->toArray()); + // Remove values from $legalitasJaminan that are in $currentLegalitasJaminan + $legalitasJaminan = array_diff($legalitasJaminan, $currentLegalitasJaminan->pluck('code')->toArray()); - $legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get(); + $legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get(); + } $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); $hubunganPemilik = HubunganPemilikJaminan::all(); diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php new file mode 100644 index 0000000..b4dd9cc --- /dev/null +++ b/app/Http/Controllers/NocController.php @@ -0,0 +1,201 @@ +validated(); + $validated['updated_by'] = Auth::id(); + if (request()->get('status_bayar') == "sudah_bayar") { + $validated['status'] = '1'; + $status = "spk"; + } else { + $status = "persetujuan-penawaran"; + } + + + $persetujuanPenawaran = PersetujuanPenawaran::updateOrCreate( + ['penawaran_id' => $validated['penawaran_id']], + $validated, + ); + + $folderPath = 'noc/' . $validated['penawaran_id']; + + if ($request->hasFile('bukti_ksl')) { + $persetujuanPenawaran->bukti_ksl = $request->file('bukti_ksl')->store( + $folderPath, + 'public', + ); + } + + $persetujuanPenawaran->save(); + + // Update the status of the related permohonan to 'spk' + $permohonan = Permohonan::find(request()->get('permohonan_id')); + if ($permohonan) { + $permohonan->status_bayar = request()->get('status_bayar'); + $permohonan->status = $status; + $permohonan->save(); + + // andy add, update status penawaran.status='spk' + // $penawaran = PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi)->first(); + PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->update([ + 'status' => $status, + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); + // andy add, update status penawaran.status='spk' + } + + return redirect() + ->route('noc.index')->with('success', 'Penyelesaian KSL berhasil disimpan.'); + } + + /** + * Update the specified resource in storage. + */ + public function update(NocRequest $request, PersetujuanPenawaran $persetujuanPenawaran) + { + $validated = $request->validated(); + $validated['updated_by'] = Auth::id(); + + $persetujuanPenawaran->update($validated); + + return redirect() + ->route('noc.index')->with('success', 'Persetujuan Penawaran updated successfully'); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + return view('lpj::noc.create'); + } + + /** + * Display the specified resource. + */ + public function show($id) {} + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + $persetujuanPenawaran = PersetujuanPenawaran::where('id', $id)->with( + ['penawaran.detail', 'penawaran.permohonan.debiture'], + )->first(); + return view('lpj::noc.form', compact('persetujuanPenawaran')); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(PersetujuanPenawaran $persetujuanPenawaran) + { + $persetujuanPenawaran->delete(); + + return redirect() + ->route('noc.index')->with('success', 'Persetujuan Penawaran deleted successfully'); + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('noc.view')) { + //abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.'); + } + + // Retrieve data from the database + $query = PersetujuanPenawaran::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', "%$search%"); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query + ->with( + [ + 'penawaran.permohonan.debiture', + 'penawaran.permohonan.branch', + 'penawaran.detail', + 'penawaran.persetujuan', + ], + )->get(); + + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 1); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + } diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 20a379b..0d6ebb0 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -179,7 +179,7 @@ // Retrieve data from the database $query = Permohonan::query(); - + $query = $query->orderBy('nomor_registrasi', 'desc'); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); diff --git a/app/Http/Controllers/PersetujuanPenawaranController.php b/app/Http/Controllers/PersetujuanPenawaranController.php index be5896f..6172030 100644 --- a/app/Http/Controllers/PersetujuanPenawaranController.php +++ b/app/Http/Controllers/PersetujuanPenawaranController.php @@ -6,10 +6,10 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest; -use Modules\Lpj\Models\PenawaranDetailTender; -use Modules\Lpj\Models\PenawaranDetailTenderLog; -use Modules\Lpj\Models\PenawaranTender; -use Modules\Lpj\Models\Permohonan; + use Modules\Lpj\Models\PenawaranDetailTender; + use Modules\Lpj\Models\PenawaranDetailTenderLog; + use Modules\Lpj\Models\PenawaranTender; + use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\PersetujuanPenawaran; class PersetujuanPenawaranController extends Controller @@ -38,6 +38,7 @@ use Modules\Lpj\Models\Permohonan; { $validated = $request->validated(); $validated['created_by'] = Auth::id(); + $validated['status'] = '0'; $persetujuanPenawaran = PersetujuanPenawaran::updateOrCreate( ['penawaran_id' => $validated['penawaran_id']], @@ -70,16 +71,16 @@ use Modules\Lpj\Models\Permohonan; $permohonan = Permohonan::find(request()->get('permohonan_id')); if ($permohonan) { $permohonan->status_bayar = request()->get('status_bayar'); - $permohonan->status = 'spk'; + $permohonan->status = 'noc'; $permohonan->save(); // andy add, update status penawaran.status='spk' // $penawaran = PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi)->first(); - PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi) - ->update(['status'=>'spk', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); + PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->update([ + 'status' => 'noc', + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); // andy add, update status penawaran.status='spk' } @@ -88,6 +89,20 @@ use Modules\Lpj\Models\Permohonan; ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran berhasil disimpan.'); } + /** + * Update the specified resource in storage. + */ + public function update(PersetujuanPenawaranRequest $request, PersetujuanPenawaran $persetujuanPenawaran) + { + $validated = $request->validated(); + $validated['updated_by'] = Auth::id(); + + $persetujuanPenawaran->update($validated); + + return redirect() + ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran updated successfully'); + } + /** * Show the form for creating a new resource. */ @@ -101,8 +116,8 @@ use Modules\Lpj\Models\Permohonan; */ public function show($id) { - $permohonan = Permohonan::find($id); - $permohonan->status='tender'; + $permohonan = Permohonan::find($id); + $permohonan->status = 'tender'; $dataDetailPenawaranLog = []; // andy add update status penawaran @@ -110,50 +125,45 @@ use Modules\Lpj\Models\Permohonan; // update penawaran => penawaran.status ="tender", penawaran.updated_at, penawaran.updated_by // update permohonan => permohonan.status ="tender", permohonan.updated_at, permohonan.updated_by // insert detail_permohonan_log - $penawaran = PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi)->first(); + $penawaran = PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->first(); // dd($penawaran->id); - PenawaranDetailTender::where('penawaran_id', $penawaran->id) - ->update(['status' => 1, - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - PenawaranTender::where('id', $penawaran->id) - ->update(['status'=>'tender', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]); - - $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $penawaran->id) - ->distinct() - ->get(); - - // log - if(sizeof($detailPenawaran)>0) - { + PenawaranDetailTender::where('penawaran_id', $penawaran->id)->update([ + 'status' => 1, + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); + PenawaranTender::where('id', $penawaran->id)->update([ + 'status' => 'tender', + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); + + $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $penawaran->id)->distinct()->get(); + + // log + if (sizeof($detailPenawaran) > 0) { foreach ($detailPenawaran as $model) { array_push($dataDetailPenawaranLog, [ - 'detail_penawaran_id' =>$model->id, - 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id, - 'penawaran_id' =>$model->penawaran_id, - 'no_proposal' =>$model->no_proposal, - 'tgl_proposal' =>$model->tgl_proposal, - 'biaya_penawaran' =>$model->biaya_penawaran, - 'attachment' =>$model->attachment, - 'dokumen_persetujuan' =>$model->dokumen_persetujuan, - 'status' =>$model->status, - 'authorized_status' =>$model->authorized_status, - 'authorized_at' =>$model->authorized_at, - 'authorized_at' =>$model->authorized_at, - 'created_at' =>$model->created_at, - 'updated_at' =>$model->updated_at, - 'deleted_at' =>$model->deleted_at, - 'created_by' =>$model->created_by, - 'updated_by' =>$model->updated_by, - 'deleted_by' =>$model->deleted_by + 'detail_penawaran_id' => $model->id, + 'kjpp_rekanan_id' => $model->kjpp_rekanan_id, + 'penawaran_id' => $model->penawaran_id, + 'no_proposal' => $model->no_proposal, + 'tgl_proposal' => $model->tgl_proposal, + 'biaya_penawaran' => $model->biaya_penawaran, + 'attachment' => $model->attachment, + 'dokumen_persetujuan' => $model->dokumen_persetujuan, + 'status' => $model->status, + 'authorized_status' => $model->authorized_status, + 'authorized_at' => $model->authorized_at, + 'authorized_at' => $model->authorized_at, + 'created_at' => $model->created_at, + 'updated_at' => $model->updated_at, + 'deleted_at' => $model->deleted_at, + 'created_by' => $model->created_by, + 'updated_by' => $model->updated_by, + 'deleted_by' => $model->deleted_by, ]); - } PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); @@ -174,20 +184,6 @@ use Modules\Lpj\Models\Permohonan; return view('lpj::persetujuan_penawaran.form', compact('permohonan')); } - /** - * Update the specified resource in storage. - */ - public function update(PersetujuanPenawaranRequest $request, PersetujuanPenawaran $persetujuanPenawaran) - { - $validated = $request->validated(); - $validated['updated_by'] = Auth::id(); - - $persetujuanPenawaran->update($validated); - - return redirect() - ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran updated successfully'); - } - /** * Remove the specified resource from storage. */ diff --git a/app/Http/Controllers/RegistrasiFinalController.php b/app/Http/Controllers/RegistrasiFinalController.php index 305310f..435496b 100644 --- a/app/Http/Controllers/RegistrasiFinalController.php +++ b/app/Http/Controllers/RegistrasiFinalController.php @@ -88,7 +88,7 @@ // Get the data for the current page //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - $data = $query->with(['permohonan'])->get(); + $data = $query->with(['permohonan.debiture'])->get(); // dd($data); $i = 0; foreach ($data as $obj) { diff --git a/app/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index 9074567..d0bc5f6 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -207,8 +207,8 @@ use Illuminate\Support\Facades\Auth; $persetujuan_sla_final = '...'; if(null !==$penawaran->persetujuan) { - $sla_resume_text = $penawaran->persetujuan->sla_resume; - $sla_final_text = $penawaran->persetujuan->sla_final; + $sla_resume_text = ceil($data->sla/2); + $sla_final_text = $data->sla; $sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text)); $sla_final_text_terbilang = ucfirst(terbilang($sla_final_text)); @@ -324,8 +324,11 @@ use Illuminate\Support\Facades\Auth; $persetujuan_sla_final = '...'; if(null !==$penawaran->persetujuan) { - $sla_resume_text = $penawaran->persetujuan->sla_resume; - $sla_final_text = $penawaran->persetujuan->sla_final; + //$sla_resume_text = $penawaran->persetujuan->sla_resume; + //$sla_final_text = $penawaran->persetujuan->sla_final; + + $sla_resume_text = ceil($data->sla/2); + $sla_final_text = $data->sla; $sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text)); $sla_final_text_terbilang = ucfirst(terbilang($sla_final_text)); diff --git a/app/Http/Requests/NocRequest.php b/app/Http/Requests/NocRequest.php new file mode 100644 index 0000000..0cb7e66 --- /dev/null +++ b/app/Http/Requests/NocRequest.php @@ -0,0 +1,23 @@ + 'nullable|exists:penawaran,id', + 'nominal_bayar' => 'nullable|numeric|min:0', + 'bukti_ksl' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:10240', + 'status' => 'nullable|boolean', + ]; + } + } diff --git a/app/Http/Requests/PersetujuanPenawaranRequest.php b/app/Http/Requests/PersetujuanPenawaranRequest.php index 5f85f6e..cc8a03d 100644 --- a/app/Http/Requests/PersetujuanPenawaranRequest.php +++ b/app/Http/Requests/PersetujuanPenawaranRequest.php @@ -23,6 +23,7 @@ 'file_persetujuan_penawaran' => 'nullable|file|mimes:pdf,doc,docx|max:10240', 'surat_representasi' => 'nullable|file|mimes:pdf,doc,docx|max:10240', 'bukti_bayar' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:10240', + 'nominal_bayar' => 'nullable|numeric|min:0', 'status' => 'nullable|boolean', 'authorized_status' => 'boolean', 'authorized_at' => 'nullable|date', diff --git a/app/Models/PersetujuanPenawaran.php b/app/Models/PersetujuanPenawaran.php index 6a58bc2..ebaf8af 100644 --- a/app/Models/PersetujuanPenawaran.php +++ b/app/Models/PersetujuanPenawaran.php @@ -19,6 +19,7 @@ 'file_persetujuan_penawaran', 'surat_representasi', 'bukti_bayar', + 'nominal_bayar', 'status', 'authorized_status', 'authorized_at', diff --git a/database/migrations/2024_12_19_040336_update_persetujuan_penawaran_table.php b/database/migrations/2024_12_19_040336_update_persetujuan_penawaran_table.php new file mode 100644 index 0000000..1c7fd29 --- /dev/null +++ b/database/migrations/2024_12_19_040336_update_persetujuan_penawaran_table.php @@ -0,0 +1,28 @@ +double('nominal_bayar')->nullable()->after('bukti_bayar'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('persetujuan_penawaran', function (Blueprint $table) { + $table->dropColumn('nominal_bayar'); + }); + } +}; diff --git a/database/migrations/2024_12_19_043209_update_persetujuan_penawaran_table.php b/database/migrations/2024_12_19_043209_update_persetujuan_penawaran_table.php new file mode 100644 index 0000000..a11d8df --- /dev/null +++ b/database/migrations/2024_12_19_043209_update_persetujuan_penawaran_table.php @@ -0,0 +1,31 @@ +string('bukti_ksl')->nullable()->after('nominal_bayar'); + $table->string('catatan_noc')->nullable()->after('bukti_ksl'); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + : void + { + Schema::table('persetujuan_penawaran', function (Blueprint $table) { + $table->dropColumn('bukti_ksl'); + $table->dropColumn('catatan_noc'); + }); + } + }; diff --git a/module.json b/module.json index fd7fbed..762ae31 100644 --- a/module.json +++ b/module.json @@ -38,6 +38,18 @@ "pemohon-ao" ] }, + { + "title": "NOC", + "path": "noc", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "noc" + ] + }, { "title": "Registrasi", "path": "registrasi", diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index 4d5266e..f38772e 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -167,10 +167,14 @@
@foreach($permohonan->debiture->documents as $dokumen) -
+
- + +
+ @if(isset($document->id)) + @php $n = 0; @endphp + @foreach($document->detail as $detail) + +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+
+ + + +
+
+
+ + @if(isset($detail->dokumen_jaminan)) + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp +
+ @foreach($dokumen_jaminan as $index => $dokumen) +
+ @if(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + +
+ @endforeach +
+ @endif + @endif +
+
+ + @if($detail->details) + @if($detail->jenisLegalitasJaminan->custom_field) + @php $custom_field = json_decode($detail->details,true) @endphp +
+ +
+ +
+
+ @endif + + @else + @if($detail->jenisLegalitasJaminan->custom_field) +
+ +
+ @if($detail->jenisLegalitasJaminan->custom_field_type === "text") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "number") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "date") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea") + + @else + + @endif +
+
+ @endif + @endif + +
+ +
+ +
+
+ @php $n++; @endphp + @endforeach + @if($legalitas) + @foreach($legalitas as $item) +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+
+
+ + + +
+
+
+
+
+ + @if($item->custom_field) +
+ +
+ @if($item->custom_field_type === "text") + + @elseif($item->custom_field_type === "number") + + @elseif($item->custom_field_type === "date") + + @elseif($item->custom_field_type === "textarea") + + @else + + @endif +
+
+ @endif + +
+ +
+ +
+
+ @php $n++; @endphp + @endforeach + @endif + @endif +
+
+ +
+
+
+@endsection diff --git a/resources/views/noc/index.blade.php b/resources/views/noc/index.blade.php new file mode 100644 index 0000000..3483629 --- /dev/null +++ b/resources/views/noc/index.blade.php @@ -0,0 +1,183 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('noc') }} +@endsection + +@section('content') +
+
+
+

+ Daftar NOC +

+
+
+ +
+ +
+
+ + +
+
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Nama Debitur + + + Cabang + + + Tanggal KSL + + + Nominal bayar + + + Bukti KSL + + + Tanggal Penyelesaian + + Action
+
+
+
+ @endsection + + @push('scripts') + + + + @endpush diff --git a/resources/views/persetujuan_penawaran/form.blade.php b/resources/views/persetujuan_penawaran/form.blade.php index 6d56cb2..c27c4e8 100644 --- a/resources/views/persetujuan_penawaran/form.blade.php +++ b/resources/views/persetujuan_penawaran/form.blade.php @@ -40,31 +40,6 @@ @enderror
- -
- -
- - @error('sla_resume') - {{ $message }} - @enderror -
-
- -
- -
- - @error('sla_final') - {{ $message }} - @enderror -
-
-
+
+ +
+ + @error('nominal_bayar') + {{ $message }} + @enderror +
+
+
-