From c90535b5ba301f9b13e0ce958f7bea6949a196d9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 20:12:56 +0700 Subject: [PATCH] Tambahkan fitur pembayaran dan perbaikan tampilan terkait - Tambah file migration untuk update tabel `persetujuan_penawaran` dengan relasi baru. - Tambah fungsi baru di controller pembayaran: `edit`, `store`, `update`, dan `approval`. - Perbarui view daftar pembayaran dan tambahkan form pembayaran baru. - Tambah endpoint dan breadcrumbs untuk fitur pembayaran di routes. --- app/Http/Controllers/PembayaranController.php | 167 +++++++++++------- ...100_update_persetujuan_penawaran_table.php | 33 ++++ resources/views/pembayaran/form.blade.php | 108 +++++++++++ resources/views/pembayaran/index.blade.php | 148 ++++++---------- routes/breadcrumbs_registrasi.php | 5 + routes/registrasi.php | 17 +- 6 files changed, 317 insertions(+), 161 deletions(-) create mode 100644 database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php create mode 100644 resources/views/pembayaran/form.blade.php diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index 5978e19..a5eccb5 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -9,8 +9,13 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Validator; use Maatwebsite\Excel\Facades\Excel; - // use Modules\Lpj\Models\JenisPenilaian; + use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest; + use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Permohonan; + use Modules\Lpj\Models\PersetujuanPenawaran; + + // use Modules\Lpj\Models\JenisPenilaian; + // use Modules\Lpj\Models\Regions; class PembayaranController extends Controller @@ -22,27 +27,108 @@ return view('lpj::pembayaran.index'); } + public function approval() {} + + public function dataApprovalForDatatables(Request $request) {} + + function edit($id) + { + $permohonan = Permohonan::find($id); + return view('lpj::pembayaran.form', compact('permohonan')); + } + + public function store(PersetujuanPenawaranRequest $request) + { + $validated = $request->validated(); + $validated['created_by'] = Auth::id(); + $validated['status'] = '0'; + + if (isset($validated['penawaran_id'])) { + $persetujuanPenawaran = PersetujuanPenawaran::create( + ['penawaran_id' => $validated['penawaran_id']], + $validated, + ); + } else { + $persetujuanPenawaran = PersetujuanPenawaran::create( + $validated + ); + } + + $folderPath = 'persetujuan_penawaran/' . $validated['penawaran_id']; + + if ($request->hasFile('bukti_bayar')) { + $persetujuanPenawaran->bukti_bayar = $request->file('bukti_bayar')->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 = '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' => 'noc', + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); + // andy add, update status penawaran.status='spk' + + } + + return redirect() + ->route('pembayaran.index')->with('success', 'Pembayaran berhasil disimpan.'); + } + + public function update(Request $request, $id) + : JsonResponse { + // init + $data = []; + $dataku = []; + $tindakan = null; + if (request()->ajax()) { + try { + $dataku = [ + 'approve_bayar_by' => Auth::id(), + 'approve_bayar_at' => now(), + ]; + + if ($request->keterangan) { + $dataku['approve_keterangan_bayar'] = $request->keterangan; + } + + $data['dataku'] = $dataku; + + $modal = Permohonan::find($id); + $modal->update($dataku); + // + $data['status'] = 'success'; + $data['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan']; + } catch (Exception $e) { + $data['status'] = 'error'; + $data['message'] = ['Otorisasi gagal di lakukan.']; + } + } + return response()->json($data); + } + public function dataForDatatables(Request $request) { - if (is_null($this->user) || !$this->user->can('debitur.view')) { // abort(403, 'Sorry! You are not allowed to view users.'); } - - /* - // Tentukan status berdasarkan otorisator - $status = match ($otorisator) { - 'Pelaporan' => 'proses-laporan', - 'Pembayaran' => 'proses', - 'Pembatalan' => 'batal', - 'SLA' => 'freeze', - default => '', - }; - */ - - $query = Permohonan::query()->whereIn('status_bayar', ['sudah_bayar']); - /* + $query = Permohonan::query()->where(['status_bayar' => 'belum_bayar', 'jenis_penilaian_id' => 1]) + ->whereNotIn('id', function($subquery) { + $subquery->select('permohonan_id') + ->from('persetujuan_penawaran') + ->whereNotNull('permohonan_id'); + }); + // Pencarian berdasarkan parameter search if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); @@ -51,18 +137,11 @@ $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } - */ - - // Filter berdasarkan region user yang login - // $query->whereHas('region.teams.teamsUsers', function ($q) { - // $q->where('user_id', Auth::id()); - // }); - // Sorting berdasarkan sortField dan sortOrder if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { @@ -91,7 +170,7 @@ $filteredRecords = $query->count(); // Ambil data dengan relasi - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'jenisPenilaian'])->get(); // Hitung jumlah halaman @@ -110,41 +189,5 @@ 'totalCount' => $totalRecords, 'data' => $data, ]); - } - - public function update(Request $request, $id) - : JsonResponse { - // init - $data = []; - $dataku = []; - $tindakan = null; - if (request()->ajax()) { - - try { - - $dataku = [ - 'approve_bayar_by' => Auth::id(), - 'approve_bayar_at' => now(), - ]; - - if ($request->keterangan) { - $dataku['approve_keterangan_bayar'] = $request->keterangan; - } - - $data['dataku'] = $dataku; - - $modal = Permohonan::find($id); - $modal->update($dataku); - // - $data['status'] = 'success'; - $data['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan']; - } catch (Exception $e) { - $data['status'] = 'error'; - $data['message'] = ['Otorisasi gagal di lakukan.']; - } - - } - return response()->json($data); - } -} \ No newline at end of file + } diff --git a/database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php b/database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php new file mode 100644 index 0000000..3c76d5d --- /dev/null +++ b/database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php @@ -0,0 +1,33 @@ +unsignedBigInteger('penawaran_id')->change()->nullable(); + $table->unsignedBigInteger('permohonan_id')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('persetujuan_penawaran', function (Blueprint $table) { + $table->unsignedBigInteger('penawaran_id')->change()->nullable(false); + $table->dropForeign('persetujuan_penawaran_permohonan_id_foreign'); + $table->dropColumn('permohonan_id'); + }); + } +}; diff --git a/resources/views/pembayaran/form.blade.php b/resources/views/pembayaran/form.blade.php new file mode 100644 index 0000000..f02d011 --- /dev/null +++ b/resources/views/pembayaran/form.blade.php @@ -0,0 +1,108 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+
+
+ Pembayaran +
+
+ Back +
+
+
+
+ @csrf + + + +
+ +
+ + @error('nomor_registrasi') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('debitur') + {{ $message }} + @enderror +
+
+ + +
+ +
+ + @error('nominal_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('bukti_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('catatan') + {{ $message }} + @enderror +
+
+ +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/pembayaran/index.blade.php b/resources/views/pembayaran/index.blade.php index 506560a..eb70e4c 100644 --- a/resources/views/pembayaran/index.blade.php +++ b/resources/views/pembayaran/index.blade.php @@ -6,8 +6,8 @@ @section('content')
-
+

Daftar Pembayaran @@ -27,49 +27,39 @@
+ data-datatable-table="true"> - - - - - - - - + + + + + + + + - - - - - - + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - -
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Status Bayar + + - Status Approve - - - Status Bayar - - Action
Action
@@ -93,8 +83,7 @@ @push('scripts')