From b2cfffc5d531f776ebe00aa5cab0c474cbcdbbe9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 12 Nov 2025 17:42:45 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(lpj):=20Tambah=20peran=20admin?= =?UTF-8?q?,=20sesuaikan=20alur=20status,=20dan=20peningkatan=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ringkas: perluas akses untuk peran admin , rapikan alur status permohonan/pembayaran/SPK, pindahkan sumber LPJ ke relasi penilai, perbaiki parsing/formatting rupiah, dan tambah konten cetak “Catatan yang Perlu Diperhatikan”. - Perizinan & akses - Izinkan admin melewati filter cabang pada listing Debitur dan Permohonan. - Tambah peran admin pada konfigurasi module.json di beberapa menu/fitur. - Izinkan admin membuat Debitur dan mengakses aksi yang sebelumnya eksklusif untuk administrator dan pemohon-ao . - Alur bisnis & status - Ubah status setelah proses pembatalan/penanganan pembayaran dari done menjadi proses-laporan agar konsisten dengan alur pelaporan. - Nonaktifkan blokir navigasi saat status proses-laporan di PenilaiController (redirect/JSON error dikomentari) agar proses lanjutan tetap bisa diakses bila diperlukan. - Setelah generate SPK, set Permohonan.status dan PenawaranTender.status menjadi registrasi-final untuk menandai finalisasi registrasi. - Pada pembuatan permohonan, jika pengguna admin , tetapkan status = preregister untuk proses pra-registrasi. - Hapus set default branch_id dari PermohonanRequest sehingga pengisian cabang dilakukan eksplisit melalui form (terutama untuk admin). - Data LPJ & referensi relasi - Sumber data LPJ dipindah dari permohonan->penilaian->lpj ke permohonan->penilai->lpj baik di controller ( PenilaianController ) maupun view ( penilaian/otorisator/show.blade.php ) untuk menyesuaikan struktur relasi terbaru. - Dokumen pembayaran - Ubah cara deteksi “Bukti Bayar” dari documents menjadi dokumenjaminan dan ambil detail berdasarkan name = 'Bukti Bayar' , lalu gunakan dokumen_jaminan yang terenkode JSON sebagai sumber pemrosesan berikutnya. - Pada UI approval pembayaran, benahi rendering nominal_bayar (hindari pemutusan baris) dan tampilkan tombol otorisator jika status_bayar !== 'sudah_bayar' || !approve_bayar . - UI & formatting rupiah - Perbaiki fungsi calculateTotal() pada form-penilai.blade.php agar parsing angka mendukung pemisah ribuan titik dan desimal koma, serta formatting konsisten dengan id-ID . - Aktifkan kembali fallback tampilan status utama di penilai/index.blade.php . - Tambahkan blok “Catatan yang Perlu Diperhatikan” pada print-out-sederhana.blade.php , mendukung input string/array dan memformat poin dengan awalan “- ”. Perubahan berkas (ringkas): - app/Http/Controllers/DebitureController.php : tambah peran admin pada pengecualian filter cabang. - app/Http/Controllers/PembayaranController.php : set status = 'proses-laporan' dalam proses terkait pembayaran. - app/Http/Controllers/PenilaiController.php : longgarkan blokir saat proses-laporan (redirect/JSON error dikomentari). - app/Http/Controllers/PenilaianController.php : gunakan permohonan->penilai->lpj untuk menghitung NPW. - app/Http/Controllers/PermohonanController.php : - set status = 'preregister' untuk user admin saat create, - tambah peran admin pada pengecualian filter cabang, - ubah pencarian “Bukti Bayar” ke dokumenjaminan dan gunakan dokumen_jaminan (JSON). - app/Http/Controllers/SpkController.php : set status = 'registrasi-final' pada Permohonan dan PenawaranTender setelah generate SPK. - app/Http/Requests/PermohonanRequest.php : hilangkan set default branch_id . - module.json : tambahkan admin pada beberapa daftar roles . - resources/views/component/form-penilai.blade.php : dukungan parsing/formatting rupiah dengan pemisah lokal. - resources/views/debitur/components/debitur.blade.php : perluas akses cabang untuk admin di form Debitur. - resources/views/debitur/index.blade.php : izinkan admin membuat Debitur. - resources/views/pembayaran/approval.blade.php : perbaiki render nominal dan visibilitas tombol otorisator. - resources/views/penilai/components/print-out-sederhana.blade.php : tambah bagian “Catatan yang Perlu Diperhatikan”. - resources/views/penilai/index.blade.php : gunakan data.status sebagai fallback tampilan status. - resources/views/penilaian/otorisator/show.blade.php : konsisten gunakan permohonan->penilai->lpj . - resources/views/permohonan/form.blade.php : penataan ulang kelas Tailwind dan penambahan field Cabang untuk administrator / admin . --- app/Http/Controllers/DebitureController.php | 2 +- app/Http/Controllers/PembayaranController.php | 2 +- app/Http/Controllers/PenilaiController.php | 6 +-- app/Http/Controllers/PenilaianController.php | 2 +- app/Http/Controllers/PermohonanController.php | 16 ++++-- app/Http/Controllers/SpkController.php | 13 +++++ app/Http/Requests/PermohonanRequest.php | 1 - module.json | 6 ++- .../views/component/form-penilai.blade.php | 9 +++- .../debitur/components/debitur.blade.php | 2 +- resources/views/debitur/index.blade.php | 2 +- resources/views/pembayaran/approval.blade.php | 5 +- .../components/print-out-sederhana.blade.php | 50 +++++++++++++++++++ resources/views/penilai/index.blade.php | 2 +- .../views/penilaian/otorisator/show.blade.php | 8 ++- resources/views/permohonan/form.blade.php | 43 +++++++++++++--- resources/views/permohonan/index.blade.php | 2 +- 17 files changed, 137 insertions(+), 34 deletions(-) diff --git a/app/Http/Controllers/DebitureController.php b/app/Http/Controllers/DebitureController.php index c8b6c8b..98a76fe 100644 --- a/app/Http/Controllers/DebitureController.php +++ b/app/Http/Controllers/DebitureController.php @@ -129,7 +129,7 @@ // Retrieve data from the database $query = Debiture::query(); - if (!Auth::user()->hasAnyRole(['administrator'])) { + if (!Auth::user()->hasAnyRole(['administrator','admin'])) { $query = $query->where('branch_id', Auth::user()->branch_id); } diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index 16fd2b9..9cdea71 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -245,7 +245,7 @@ class PembayaranController extends Controller $permohonan->approve_bayar_by = null; $permohonan->approve_bayar_at = null; - $permohonan->status = 'done'; + $permohonan->status = 'proses-laporan'; $permohonan->save(); } else { $persetujuanPenawaran = PersetujuanPenawaran::create( diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 01d6f76..46900bd 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -157,7 +157,7 @@ class PenilaiController extends Controller $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); if ($permohonan->status == 'proses-laporan') { - return redirect()->back()->with('error', 'Masih dalam proses laporan'); + //return redirect()->back()->with('error', 'Masih dalam proses laporan'); } $basicData = $this->surveyorController->getCommonData(); @@ -841,10 +841,10 @@ class PenilaiController extends Controller $permohonan = Permohonan::findOrFail($id); if ($permohonan->status === 'proses-laporan') { - return response()->json([ + /*return response()->json([ 'success' => false, 'message' => 'Masih proses laporan', - ], 400); + ], 400);*/ } if ($permohonan->status === 'proses-paparan') { diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 142dea2..38ebae1 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -518,7 +518,7 @@ class PenilaianController extends Controller $status = 'done'; $approvalField = null; - $lpj_ = optional(json_decode($permohonan->penilaian->lpj)); + $lpj_ = optional(json_decode($permohonan->penilai->lpj)); $npw = $lpj_->total_nilai_pasar_wajar ?? 0; $npw = str_replace('.', '', $npw); diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 6fc8e56..cf911e3 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -50,6 +50,9 @@ { $validate = $request->validated(); if ($validate) { + if(auth()->user()->hasRole('admin')){ + $validate['status'] = "preregister"; + } try { // Process file upload $filePath = null; @@ -172,7 +175,7 @@ // Retrieve data from the database $query = Permohonan::query(); - if (!Auth::user()->hasAnyRole(['administrator'])) { + if (!Auth::user()->hasAnyRole(['administrator','admin'])) { $query = $query->where('branch_id', Auth::user()->branch_id); } @@ -371,14 +374,21 @@ } if ($permohonan->status == 'sudah_dibayar') { - $buktiBayar = $permohonan->documents->filter(function ($doc) { - return $doc->detail && $doc->detail->nama === 'Bukti Bayar'; + + $documents = $permohonan->dokumenjaminan->first(function ($doc) { + return $doc->detail && $doc->detail->contains('name', 'Bukti Bayar'); }); + $buktiBayar = $documents->detail->filter(function ($detail) { + return $detail->name == 'Bukti Bayar'; + })->first() ?? null; + if ($buktiBayar->isEmpty()) { return redirect()->route('authorization.show', $id)->with('error', 'Bukti Bayar harus diunggah'); } + $dokumenJaminan = json_decode($buktiBayar->dokumen_jaminan); + $persetujuanPenawaran = PersetujuanPenawaran::firstOrCreate( ['permohonan_id' => $id], [ diff --git a/app/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index 2d9530a..1800e0c 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -345,6 +345,19 @@ use Illuminate\Support\Facades\Auth; $content = $pdf->download()->getOriginalContent(); Storage::put('public/'.$newFileNameWithPath,$content); + $permohonanModel = Permohonan::where('nomor_registrasi', $penawaran->nomor_registrasi)->first(); + if ($permohonanModel) { + $permohonanModel->status = 'registrasi-final'; + $permohonanModel->save(); + } + + $persetujuanPenawaran = PenawaranTender::where('id', $penawaran->id)->first(); + if ($persetujuanPenawaran) { + $persetujuanPenawaran->status = 'registrasi-final'; + $persetujuanPenawaran->save(); + } + + $data1['status'] = 'success'; $data1['spkpenawaran_path'] = $spkpenawaran_path; $data1['message']['message_success'] = array('Generate SPK PDF successfully'); diff --git a/app/Http/Requests/PermohonanRequest.php b/app/Http/Requests/PermohonanRequest.php index a3a579f..909987f 100644 --- a/app/Http/Requests/PermohonanRequest.php +++ b/app/Http/Requests/PermohonanRequest.php @@ -48,7 +48,6 @@ ), 'tanggal_permohonan' => date('Y-m-d'), 'user_id' => auth()->user()->id, - 'branch_id' => auth()->user()->branch_id, 'status' => 'order' ]); } diff --git a/module.json b/module.json index 4e073af..8185608 100644 --- a/module.json +++ b/module.json @@ -308,7 +308,8 @@ "permission": "", "roles": [ "administrator", - "pemohon-ao" + "pemohon-ao", + "admin" ] }, { @@ -320,7 +321,8 @@ "permission": "", "roles": [ "administrator", - "pemohon-ao" + "pemohon-ao", + "admin" ] }, { diff --git a/resources/views/component/form-penilai.blade.php b/resources/views/component/form-penilai.blade.php index d3103aa..148682d 100644 --- a/resources/views/component/form-penilai.blade.php +++ b/resources/views/component/form-penilai.blade.php @@ -438,13 +438,18 @@ function calculateTotal() { const parseInput = (value) => { if (!value) return 0; - return parseFloat(value.replace(/[^0-9]/g, '')) || 0; + // keep the dot as decimal separator, remove thousand separators + const cleaned = value.replace(/[^0-9.,]/g, '').replace(/\./g, '').replace(/,/g, '.'); + return parseFloat(cleaned) || 0; }; // Function to format currency function formatCurrency(value) { // Ensure we have a valid number to format - const num = parseFloat(value.replace(/[^0-9]/g, '')) || 0; + //const num = parseFloat(value.replace(/[^0-9]/g, '')) || 0; + //return num.toLocaleString('id-ID'); + let num = value.replace(/[^0-9.,]/g, '').replace(/\./g, '').replace(/,/g, '.'); + num = parseFloat(num) || 0; return num.toLocaleString('id-ID'); } diff --git a/resources/views/debitur/components/debitur.blade.php b/resources/views/debitur/components/debitur.blade.php index 348235f..724cfcd 100644 --- a/resources/views/debitur/components/debitur.blade.php +++ b/resources/views/debitur/components/debitur.blade.php @@ -10,7 +10,7 @@ *
- @if(auth()->user()->hasRole('administrator')) + @if(auth()->user()->hasRole('administrator','admin')) +
+ +
+ @if (auth()->user()->hasRole(['administrator','admin'])) + + @else + + + @endif + @error('branch_id') + {{ $message }} + @enderror +
+
+ @php $formFields = [ 'tujuan_penilaian_id' => ['label' => 'Tujuan Penilaian', 'type' => 'select', 'options' => $tujuanPenilaian], @@ -65,7 +92,7 @@ @endphp @foreach($formFields as $field => $config) -
+
@if($config['type'] === 'select') @@ -85,14 +112,14 @@ value="{{ old($field, $permohonan->$field ?? '') }}"> @endif @error($field) - {{ $message }} + {{ $message }} @enderror
@endforeach @if(isset($permohonan) && $permohonan->status == 'revisi') -
+
Catatan :
{{ $permohonan->keterangan }} {{ $permohonan->registrasi_catatan }}
diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 15b57e2..0bd3892 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -22,7 +22,7 @@
Export to Excel - @if(auth()->user()->hasAnyRole(['administrator', 'pemohon-ao'])) + @if(auth()->user()->hasAnyRole(['administrator', 'pemohon-ao','admin'])) Tambah Permohonan @endif